J2ME音频播放
今天上午做了一个播放音乐的小程序,代码如下:
import java.io.*;
import javax.microedition.media.*;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class AudioPlayerMidlet extends MIDlet implements CommandListener,PlayerListener{
private static final String EDN_OF_MEDIA = null;
Player p=null;
private Command play1Command=new Command("paly jar audio",Command.ITEM,2);
private Command stopCommand=new Command("stop",Command.ITEM,2);
private Command exitCommand=new Command("exit",Command.EXIT,1);
private Form f;
private Display dis;
private Ticker ticker;
public AudioPlayerMidlet() {
// TODO Auto-generated constructor stub
}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
// TODO Auto-generated method stub
}
protected void pauseApp() {
// TODO Auto-generated method stub
}
protected void startApp() throws MIDletStateChangeException {
// TODO Auto-generated method stub
dis=Display.getDisplay(this);
f=new Form("PlayAudioDemo″)");
f.addCommand(play1Command);
f.addCommand(stopCommand);
f.addCommand(exitCommand);
f.setCommandListener(this);
ticker=new Ticker("waiting......");
f.setTicker(ticker);
dis.setCurrent(f);
}
public void playJarAudio()
{
InputStream is=getClass().getResourceAsStream("/jk.mid");
try {
p=Manager.createPlayer(is,"audio/midi");
p.addPlayerListener(this);
p.realize();
p.prefetch();
p.start();
System.out.println("start.......");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MediaException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void commandAction(Command c, Displayable s) {
// TODO Auto-generated method stub
if(c==play1Command)
playJarAudio();
if(c==stopCommand)
{
try {
p.stop();
p.close();
p=null;
} catch (MediaException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(c==exitCommand)
{
try {
destroyApp(false);
notifyDestroyed();
} catch (MIDletStateChangeException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public void playerUpdate(Player p, String event, Object eventData) {
// TODO Auto-generated method stub
if(event==EDN_OF_MEDIA)
{
ticker.setString("over");
}
if(event==this.STARTED)
{
ticker.setString("playing");
}
if(event==this.STOPPED)
{
ticker.setString("stoped");
}
}
}
说明:由于WTK 2.2 MIDP 2.0 Platform包含的MIDP2.0只是MMAPI的子集,因此,本章示例的运行并不都是运行在WTK 2.2 MIDP 2.0 Platform上,其中有些示例必须运行在一个包含完整MMAPI实现的平台(如Sony Ericssion K750 Platform)上。
我是用WTK中的模拟器测试的,本程序是可以正常播放音乐的。一开始我播放的是mp3格式,声音播放不出来,整了半天也整不好,后来换成了mid格式的,竟然成功了,可能是我用的WTK模拟器不支持mp3格式的缘故吧!不过我还有一点不是很明白,手机游戏不是在任何手机上都可以播放声音吗,他们是怎样实现的呢?
- jk.rar (24.5 KB)
- 描述: jk.mid
- 下载次数: 5
分享到:
相关推荐
在J2ME中处理音频是开发者经常遇到的任务,而“J2ME音频测试工具”就是为了帮助开发者更好地理解和调试音频功能而创建的。这个工具可能包含了各种功能,比如播放、暂停、停止音频,调整音量,以及对不同音频格式的...
J2ME中的`MIDP 2.0`引入了`JSR-135`,即Java Media Framework (JMF) for Mobile Devices,用于处理音频和视频。这是在J2ME上播放视频的基础。你需要确保你的设备或模拟器支持这个规范。 3. **加载和解析视频**: ...
在Java 2 Micro Edition(J2ME)平台上开发应用程序时,音乐播放是一个常见的需求,尤其对于手机游戏或者音乐播放器应用。"j2me实现播放多首音乐的例子"旨在解决如何在有限的资源和内存环境下,高效流畅地播放多首...
在音乐播放器中,我们可能需要使用` javax.microedition.media`包,它提供了媒体管理和服务的接口和类,以便播放音频文件。 ### 3. 媒体管理 在J2ME中,`Player`类是核心的多媒体播放组件。通过实例化`Player`,...
在 J2ME 中实现视频播放功能是一项挑战,因为资源有限且平台支持的技术有限。下面将详细讨论如何在 J2ME 中实现视频播放,并涵盖相关知识点。 首先,了解 J2ME 的架构是至关重要的。J2ME 包含配置(Configurations...
在Java 2 Micro Edition (J2ME)环境中,开发移动应用时可能会涉及到播放声音的需求。J2ME 提供了 Mobile Media API (MMAPI) 来处理多媒体内容,包括音频。MMAPI 是MIDP (Mobile Information Device Profile) 1.0 的...
在Java ME(J2ME)平台上开发移动应用时,实现音乐和音效的同时播放是一项挑战。J2ME的多媒体支持相对较弱,特别是对于早期的设备,但随着技术的发展,一些新机型如N73、W810C、L6以及步步高手机等提供了更强大的...
- 播放池是管理媒体资源的技术,确保多个音频或视频流可以并发播放。在J2ME中,这可能需要自定义实现,因为标准API可能不支持多任务播放。 - 可能需要维护一个媒体对象池,每个对象负责一个视频流的解码和播放,...
4. **音频播放**:J2ME提供了一些简单的音频API,如MIDlet的startAppSound和stopAppSound方法,用于播放预加载的声音效果。 六、打包与部署 J2ME应用通常打包为JAR(Java Archive)文件和jad(Java Application ...
6. **线程管理**:音频播放通常在后台线程进行,以免阻塞主应用程序。这涉及到线程同步和通信,以确保用户界面的响应性和流畅性。 7. **性能优化**:由于J2ME平台资源有限,优化代码以减少内存占用和CPU使用是必要...
4. 播放引擎:管理解码器和设备音频/视频硬件的交互。 三、StreamingDemo示例分析 StreamingDemo是展示J2ME流媒体播放思路的实例,它可能包括以下关键部分: 1. URL连接:使用J2ME的`HttpConnection`或`Socket...
5. **图形与多媒体**:J2ME支持丰富的图形和多媒体处理,教程会讲解如何使用Graphics类进行绘图,以及如何播放音频和视频。 6. **存储管理**:由于移动设备的存储资源有限,教程会讲述如何有效地使用RecordStore...
8. **优化与性能**:由于J2ME针对的是资源有限的设备,因此需要关注代码效率,避免内存泄漏,优化图形绘制和音频播放等。 通过这个"手机跳舞机"项目,学习者可以全面地了解J2ME开发过程,包括设计、编码、调试和...
6. **资源管理**:在有限的内存和处理器资源下,如何有效地加载和管理图像、音频等资源是游戏开发中的重要一环。 7. **网络通信**:J2ME支持HTTP和WAP协议,可以实现在线游戏、数据同步等功能。 8. **设备适配**:...
j2ME的MIDP提供了一个简单的音频API,支持播放单声道的MIDI和WAV音频文件。开发者需要预先加载音频资源,并通过Sound类控制播放。 七、性能优化 由于j2ME运行环境资源有限,性能优化至关重要。这包括减少内存分配...
标题中的"sd.rar_J2me 流媒体_j2me_j2me play_j2me streaming_流媒体 j2me"表明我们关注的核心是J2ME流媒体播放功能。 J2ME流媒体技术的实现涉及到多个关键组件和步骤。首先,我们需要理解J2ME的Media Player API,...
音频处理则可以通过MIDP的Sound类,播放预录制的声音文件或生成简单音效。 五、优化与性能 由于J2ME设备资源有限,优化至关重要。这包括减少内存占用、精简代码、使用高效算法以及优化图形和音频加载。此外,考虑到...
5. **音频处理**:J2ME支持简单的音频播放,如使用`Player`类加载和播放音乐或音效。 6. **游戏逻辑**:设计游戏规则,包括角色移动、碰撞检测、计分系统等,通常需要一些基本的数学和算法知识。 7. **性能优化**...