j2me工具类:声音播放类SoundUtil

用法:
将需要播放的音乐都罗列在name,type数组中,需要的时候像下面这样调用:
SoundUtil sound=new SoundUtil();
sound.start(musicIndex);


import java.io.IOException;
import java.io.InputStream;

import javax.microedition.media.Manager;
import javax.microedition.media.MediaException;
import javax.microedition.media.Player;
import javax.microedition.media.control.ToneControl;
import javax.microedition.media.control.VolumeControl;


public class SoundUtil {

String[] name={"rank001.mid","rank002.mid","rank003.mid"};
String[] type={"audio/midi","audio/midi","audio/midi"};//audio/x-wav
Player p=null;
VolumeControl vc;
int level=50;
SoundUtil(){

}

private void init(int index){
InputStream is=this.getClass().getResourceAsStream("/"+name[index]);
try {
p=Manager.createPlayer(is, type[index]);
p.realize();
p.prefetch();
p.setMediaTime(0);
p.setLoopCount(-1);
vc=(VolumeControl)p.getControl("VolumeControl");
if(vc!=null)
vc.setLevel(getLevel());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MediaException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void play(int index){
close();
init(index);
start();
}
public void start(){
if(p!=null){
try {
p.start();
} catch (MediaException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public void stop(){
if(p!=null){
try {
p.stop();
} catch (MediaException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public void rePlay(int index){
play(index);
}
public void close(){
if(p!=null){
p.close();
p=null;
}
}
//增加、减小音量
public void controlVolume(boolean isHigher) {
if (vc != null) {
if (isHigher) {//响
level += 20;
if (level > 100)
level = 100;
} else {
level -= 20;
if (level < 0)
level = 0;
}
vc.setLevel(level);
}
}

//静音\非静音
public void quitVolume(boolean isQuit) {
if (vc != null){
if(isQuit){
vc.setLevel(0);
}else{
vc.setLevel(level);
}
}
}

public int getLevel(){
return level;
}

//简单的播放一个音调
public void playTone(){
try {
Manager.playTone(ToneControl.C4,1000,100);
} catch (MediaException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值