用法:
将需要播放的音乐都罗列在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游戏编程:TP319:G899 W511.iso 随书光盘,欢迎大家下载 大家共享^A^
10. **调试与优化**:掌握使用J2ME的调试工具和技巧,以及如何优化代码以提高性能和电池寿命。 教程中的每个`.rar`文件可能代表不同的章节或主题,例如,日期可能是文件创建或更新的日期。通过逐步学习这些PPT,你...
**J2ME简介** J2ME(Java 2 Micro Edition)是Java平台的一个子集,专为嵌入式设备和移动设备设计。它提供了一种轻量级的、高效的环境来开发应用程序,如手机、电视、冰箱等智能家电以及各种手持设备。J2ME由一组...
这个游戏是基于是男人就下100层的理念,这是本人在j2me开发的学习过程中的一点心得体会。本资源用JBuilder可直接打开,并且注释齐全。其中还有打好的jar包,可直接放入手机运行,分辨率为240*320,提供给大家学习...
/* * 一个简单的俄罗斯方块游戏代码,代码中主要包含3个类: *TerrisMIDlet——MIDlet类 *GameCanvas——游戏界面类 *GameEngine——游戏逻辑类 *已经使用WTK2.5.2运行通过. */
"android_game android J2ME site:en.pudn.c"这部分标签揭示了该资源可能包含的内容,即关于Android游戏开发的知识,以及可能与J2ME(Java 2 Micro Edition)平台的迁移或转换相关的指导。 【描述】提到的“$兩小時...
分享:J2ME游戏代码 分享:J2ME游戏代码 分享:J2ME游戏代码分享:J2ME游戏代码 分享:J2ME游戏代码 分享:J2ME游戏代码分享:J2ME游戏代码 分享:J2ME游戏代码 分享:J2ME游戏代码分享:J2ME游戏代码 分享:J2ME...
在Java 2 Micro Edition (J2ME)环境中,开发移动应用时可能会涉及到播放声音的需求。J2ME 提供了 Mobile Media API (MMAPI) 来处理多媒体内容,包括音频。MMAPI 是MIDP (Mobile Information Device Profile) 1.0 的...
这个错误表明Java虚拟机(JVM)遇到了一个它无法识别或者处理的类文件版本。在JBuilder 2006环境下开发J2ME应用时,如果你遇到了这个错误,可能是由于以下原因导致的: 1. **JDK版本不匹配**:JBuilder 2006可能与...
**J2ME(Java 2 Micro Edition)工具篇** J2ME是Java平台的一个子集,主要用于嵌入式设备和移动设备,如手机、PDA等。开发J2ME应用程序时,选择合适的工具至关重要,这些工具能够提升开发效率,简化调试过程,并...
3. **MIDP API**:这是J2ME游戏开发的关键,包括Canvas类用于绘制游戏画面,Graphics对象进行图形绘制,以及键盘和触摸事件的处理。 4. **用户界面(UI)设计**:MIDP提供了一些基本的UI组件,如ChoiceGroup、...
- **J2ME**:通过 `Canvas` 类的 `getHeight()` 和 `getWidth()` 方法获取。 - **Android**:通过 `WindowManager.getDefaultDisplay()` 获取屏幕对象,然后调用 `getWidth()` 和 `getHeight()` 方法获取屏幕宽度...
"j2me的一些工具类"这个压缩包可能包含了一些开发者自定义的实用工具类,这些类可以提高代码的复用性和可维护性。 首先,让我们了解一下J2ME的基本结构。J2ME通常由配置(Configuration)、特性(Profile)和包...
1. **Canvas类**:J2ME游戏通常基于Canvas类构建,这是一个可以进行图形绘制的空白画布。开发者可以重写Canvas的`paint()`方法来实现游戏的渲染。 2. **Graphics对象**:在Canvas上绘图使用Graphics对象,它可以...
- MIDP GUI组件:J2ME中的用户界面主要通过Canvas类构建,Canvas是绘制自定义图形的基础类。此外,可能还会用到Form和Item等组件。 - LCDUI(Limited Conformance Display User Interface):这是MIDP的一部分,...
1. **J2ME音频API**:J2ME提供了两种主要的音频API来处理游戏声音:MIDP的javax.microedition.media.Player类和M3G的javax.microedition.media.control.SoundClipControl类。Player类适用于播放音乐背景,可以支持...
【ToolME-0.2.0.zip】是一个包含J2ME(Java 2 Micro Edition)开发工具类的压缩包。J2ME是Java平台的一个子集,主要用于移动设备、嵌入式系统等资源有限的环境。这个压缩包的版本号为0.2.0,表明这可能是该工具类库...
实用J2ME记录库工具类,在很多代码中都要用到
J2ME中的键盘和触摸事件处理通常基于 MIDP 的Command和GameCanvas类。 3. **游戏逻辑**:实现五子棋的核心算法,包括检查棋局合法性(确保没有棋子在同一位置上)、判断胜负(检查是否有五个连续的棋子)以及AI...
总的来说,j2me-engine是J2ME平台上开发游戏的得力工具,它降低了开发门槛,提高了开发效率,使开发者能够专注于创造有趣且引人入胜的游戏体验。虽然现代移动设备更多地转向了更强大如Android和iOS的平台,但对J2ME...