《手机音效开发》课件

PPT
  • 阅读 110 次
  • 下载 0 次
  • 页数 29 页
  • 大小 288.863 KB
  • 2022-12-05 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档15.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
《手机音效开发》课件
可在后台配置第一页与第二页中间广告代码
《手机音效开发》课件
可在后台配置第二页与第三页中间广告代码
《手机音效开发》课件
可在后台配置第三页与第四页中间广告代码
《手机音效开发》课件
《手机音效开发》课件
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 29
  • 收藏
  • 违规举报
  • © 版权认领
下载文档15.00 元 加入VIP免费下载
文本内容

【文档说明】《手机音效开发》课件.ppt,共(29)页,288.863 KB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-92567.html

以下为本文档部分文字说明:

J2ME编程入门之手机音效开发现在能播放音乐的手机已经是很常见的了,同时手机游戏也需要声音来增加动感效果,所以手机音效也成为了开发热点。J2ME针对多种媒体格式,提供了一套播放接口,那就是:MMAPI(MobileM

ediaAPI)。1MMAPI体系结构现在多媒体的格式很多,要顺利地播放这些不同格式的音乐,一种比较好的方式就是把这些不同格式的数据都转换为统一的格式,然后统一使用一个播放器接口类来播放。在MMAPI中,首先从数据源(如一

个文件、一个捕获装置或一个流式服务)上读取媒体数据内容后,然后传输给专门的处理程序进行处理。处理过程主要是由DataSource类和Player类完成。DataSource类的作用就是读取和转换多媒体数据,Player类的作用就是播放这类数据。

然后提供一系列的播放、暂停、停止等播放器相关功能,DataSource类和Player类的工作过程如图所示。数据流图2Player接口要使用MMAPI进行音效开发,首先需要导入相关的开发包,例如:

importjavax.microedition.media.*使用Player接口来播放音频的步骤1、通过Manager.createPlayer()方法创建一个播放器2、调用prefetch()

方法开始获取音频并减少滞后3、调用start()方法开始回放4、如果需要的话,调用stop()方法停止回放5、调用close()方法关闭播放器1.UNREALIZED状态2.REALIZED状态3.PREFETCHED

状态4.STARTED状态5.CLOSED状态播放器的五种状态状态之间的转换1、播放器开始处于UNREALIZED状态;2、当播放器具备了开始获取媒体资源所需的一切的时候,播放器进入REALIZED状态;3、当获取到媒体资源并准备回放的时候,播放器进入了PR

EFETCHED状态;4、当回放开始的时候,播放器进入了STARTED状态;状态之间的转换5、当回放结束的时候,播放器返回到PREFETCHED状态;6、当播放器关闭的时候,播放器进入CLOSED状态。状态转换图player接口中的一些重要方法reali

ze()—实现没有获取媒体资源的播放器(通常不需要显式调用);prefetch()—获取媒体资源以便减小回放滞后(调用它来首次初始化播放器);getState()—获取播放器状态;setLoopCount()—设置播放声音的循环次

数(必须在调用start()之前调用);start()—开始播放声音;stop()—停止播放声音;getDuration()—获取声音持续时间(单位:毫秒);getMediaTime()—获取当前的媒体时间(单位:毫秒);setMediaTime()—设置当前的媒体时间(单位:

毫秒);close()—关闭播放器。3在手机游戏中播放声波声音在手机中播放声波声音并不难,你只需要知道声音来自于哪里即可。更具体地说,声波文件是存储在一个MIDlet的JAR文件中,还是通过网络可以访问到。显然,通过MIDle

t的JAR文件来访问一个声波文件要高效很多,因此,这也是大多数手机游戏所采用的方式。从一个JAR文件播放声波要通过一个MIDlet的JAR文件访问声波声音,你必须先确保在构建这个MIdlet的时候声波文件添加到了JAR文件中。只要你把声波文件放置

到主MIDlet目录下的res文件夹中,当你在kToolbar开发工具中编译MIDlet的时候,声波文件就会自动地包含到JAR文件中。之后简单的几行代码就可以播放这个声音了。示例try{Playergam

ePlayer;InputStreamis=getClass().getResourceAsStream("game.wav");//创建一个基于声波文件的输入流,作为创建播放器的基础gamePlayer=Manager.createP

layer(is,"audio/X-wav");gamePlayer.prefetch();gamePlayer.start();}catch(IOExceptionioe){}catch(MediaExceptione){

}当声波文件的名字被传递给getResourceAsStream()方法的时候,这个方法在getClass()方法所访问的对象的运行时调用。尽管获得输入流需要一点技巧,但是当你得到以后,你只需要把它和声波声音的MIME

类型一起传递给Manager.createPlayer()方法就可以了。为了确保声音已经准备好以最小的滞后播放,我们需要调用prefetch()方法。最后,调用start()方法来开始播放声波声音。由于这些方法中都可能抛出异常

,所有的这些调用都要包含在异常处理子句中。当需要重复播放声音时,可以选择多次调用start()方法。可是,当一个声音仍在播放的时候调用start()方法并不能重新开始播放声音。要重新开始播放声音,必须调用setMediaTime()方法并把0传递给该方法,这表示你希望把媒体时间

设置到声音的开始处:gamePlayer.setMediaTime(0);对于声音的媒体时间,你可以使用getDuration()和getMediaTime()方法来确定声音已经播放了多少。这两个方法都会以毫秒为单位返回一个时

间量:getDuration()方法告诉你一个声音的总的持续时间,而getMediaTime()方法则告诉你声音已经播放了多少。在前面的方法中,还有一个setLoopCount()方法,这是用来设置音乐循环次

数的方法,也是一个很重要的方法。缺省情况下,循环计数是1,也就是音乐只播放一次。在很多情况下,我们希望游戏的音乐能够无限循环,这时候对于这个方法的调用就很关键了。实现方法是:gamePlayer.setLo

opCount(-1);//传递-1这个值就能使音乐无限循环下去。要注意,这个方法必须在start()方法调用前调用!之后,调用close()方法就能关闭播放器。这就是成功地播放存储在一个JAR文件中的

声波声音所需要的所有工作。这也是大多数手机游戏推荐的方法,因为这样声音可以相当快速地载入而没有滞后。播放来自一个URL的声波在一些情况下,你可能需要通过一个网络连接来播放声波声音。例如,也许你的游戏要播放动态生成的声音,而这些声音必须通过一个网络服务器获得。这

时,播放器需要从一个URL中获得声波。示例try{PlayergamePlayer;gamePlayer=Manager.createPlayer("http://ser/game.wav");g

amePlayer.prefetch();gamePlayer.start();}catch(IOExceptionioe){}catch(MediaExceptione){}很明显,这段代码要更为简单,因为不需要为声波文件创建一个输入流。但是,使用这种方法载入声音可能会有明显地滞后。当然,这一

切取决于声波文件的大小以及网络连接的速度。当然,手机所支持的音频不只声波一种,比如还有MIDI、MP3音乐等,我们在播放这些声音时,只需将Manager.createPlayer(is,"audio/*");

中的*部分进行替换即可。例如:midi—MIDI音乐mpeg—MP3音频谢谢!

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 25747
  • 被下载 7
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?