13,100
社区成员
发帖
与我相关
我的任务
分享
/**
* 类说明:音乐的控制
* ware audio files audio/x-wav
* au audio/basic
* mp3 audio/mpeg
* midi audio/midi
* tone audio/x-tone-sep
* mpeg video/mpeg
* @author 作者: User
* @version 创建时间:2011-3-22 下午10:02:59
*/
import java.io.InputStream;
import javax.microedition.media.Manager;
import javax.microedition.media.MediaException;
import javax.microedition.media.Player;
import javax.microedition.media.control.VolumeControl;
public class Music {
private static Music instance;
private Player player;// 创建一个音乐播放器
private VolumeControl volumeControl = null;// 声音控制
private int volume = 50;// 音量的初始值
private static final int MAX = 100;// 音量最大值
private static final int MIN = 0;// 音量最小值
private boolean isplay = false;//是否真正播放
private Music() {
}
// 采用单例模式 返回本类对象
static Music getInstance() {
if (instance == null) {
instance = new Music();
}
return instance;
}
// 播放音乐
public void playMusic() {
player = createPlayer("/city.mid", "audio/midi");// 创建音乐播放器
volumeControl = (VolumeControl) player.getControl("VolumeControl");// 得到音乐控制器
isplay = true;
startPlayer(player);// 开始播放音乐
}
// 停止音乐播放
public void stopMusic() {
try {
if (player != null)
player.stop();
player = null;
isplay = false;
} catch (Exception e) {
e.printStackTrace();
}
}
// 加大音量
public void addVolume() {
if (volumeControl != null) {
volume += 10;
if (volume > MAX)
volume = MAX;
volumeControl.setLevel(volume);
}
}
public boolean isPlay() {
return isplay;
}
// 减小音量
public void subVolume() {
if (volumeControl != null) {
volume -= 10;
if (volume < MIN)
volume = MIN;
volumeControl.setLevel(volume);
}
}
// 设置音量
public void setVolume(int volue) {
if (volumeControl != null) {
volumeControl.setLevel(volue);
}
}
// 开始播放
private void startPlayer(Player p) {
if (p != null) {
try {
p.stop();
p.setLoopCount(-1);
p.start();
} catch (MediaException me) {
me.printStackTrace();
}
}
}
// 创建音乐播放器
private Player createPlayer(String filename, String format) {
Player p = null;
try {
InputStream is = getClass().getResourceAsStream(filename);// 得到音乐文件输入流
p = Manager.createPlayer(is, format);
p.prefetch();
} catch (Exception ioe) {
ioe.printStackTrace();
}
return p;
}
}