用法:
将需要播放的音乐都罗列在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();
}
}
}
分享到:
相关推荐
郭可华J2ME实战教程:ppt和对应源码,非常好的入门材料!
J2ME游戏编程:TP319:G899 W511.iso 随书光盘,欢迎大家下载 大家共享^A^
这个游戏是基于是男人就下100层的理念,这是本人在j2me开发的学习过程中的一点心得体会。本资源用JBuilder可直接打开,并且注释齐全。其中还有打好的jar包,可直接放入手机运行,分辨率为240*320,提供给大家学习...
/* * 一个简单的俄罗斯方块游戏代码,代码中主要包含3个类: *TerrisMIDlet——MIDlet类 *GameCanvas——游戏界面类 *GameEngine——游戏逻辑类 *已经使用WTK2.5.2运行通过. */
分享:J2ME游戏代码 分享:J2ME游戏代码 分享:J2ME游戏代码分享:J2ME游戏代码 分享:J2ME游戏代码 分享:J2ME游戏代码分享:J2ME游戏代码 分享:J2ME游戏代码 分享:J2ME游戏代码分享:J2ME游戏代码 分享:J2ME...
J2ME开发的ppt,很实用,可以自学!
$兩小時精通Android開發之界面篇! 教你如何快速的開發Android遊戲~ 如果有J2me的底子,可以交妳怎麼移植J2me的遊戲
第一次运行JB2006开如J2ME时出现 ALERT: java/lang/ClassFormatError: Bad version information.错误 点“启动”就会出错 我现在找到了答案 请你们下去看
J2ME工具篇.rar
没有什么描述的就是这么一个自己整理的 就是这样了啊太麻烦了
j2me入门:J2ME程序开发新手入门九大要点
J2ME源码:连连看 看到了就快下载吧,我不希望由于你的没下载而后悔!
实用J2ME记录库工具类,在很多代码中都要用到
j2me教程,比较基础,容易掌握,很容易上手,对初学者很有帮助。。
J2ME游戏 旧的简单J2ME游戏
J2me实用工具20合1
ToolME-0.2.0.zip j2me开发工具类
j2me引擎J2ME 平台的游戏引擎
j2me网络类,http协议传输j2me网络类,http协议传输j2me网络类,http协议传输
J2ME-Loader Android application which runs J2ME apps http://4pda.ru/forum/index.php?showtopic=824201