实现移动媒体的API研讨.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实现移动媒体的API研讨

MIDP1.0与MMAPI MIDP1.0缺乏对多媒体的支持,哪怕是简单的音频播放都不支持,移动多媒体API彻底解决了J2ME平台对多媒体支持的不足,提供了一个功能强大、设计灵活,且使用简单的框架来处理音频和视频。 MMAPI主要针对具有高级声音和多媒体能力的J2ME设备 MMAPI特性 支持单音,重复播放和记录基于时间的多媒体文件 以CLDC为目标 设计小巧,目的为了节省资源 MMAPI并非针对任何内容类型和协议 可以只实现MMAPI的子集,这就是为什么MIDP2.0中能够只实现其子集的原因 扩展性强,MMAPI在不修改原来的功能的情况下可以添加新的功能,更重要的是,可以轻松支持额外的格式,API框架为额外的控制预留了位置。 选择性实现? 实现者可以只实现部分功能 MMAPI的主要任务 处理数据传输协议 意义在在于把数据源从文件、流媒体服务器或者设备的摄像头等位置读入到媒体处理系统中。 处理数据内容 意义在于将数据解析、解码并绘制到输出设备上,如扬声器或者手机屏幕上。 这两个任务主要由Player和DataSource类分别来完成的, DataSource屏蔽数据来源的细节,不管它是从哪里过来的,可以是流、文件或者服务器资源等等。而Player则负责解码工作,绘制DataSource提供的数据到输出设备上。 当首次构造一个Player时,它处于UNREAIZED阶段。 可以使用realize()方法将Player对象从UNREALIZED阶段转换到REALIZED阶段。 在这个转换过程中,Player对象查找播放多媒体内容所需的资源。 当您准备播放内容时,可以使用prefetch()方法将Player对象从REALIZED阶段转移到PREFETCHED阶段。 您可以使用start()方法来播放内容。 当调用start()方法时,Player对象转移到STARTED阶段。 当调用stop()方法或Player 对象遇到多媒体内容的结尾时,Player对象将停止播放多媒体内容。 在这两种情况下,Player对象从STARTED阶段转移到PREFETCED阶段。 您还可以调用close()方法来结束Player生命周期并将它送至CLOSED阶段。 您可以根根据要求在Player对象的不同阶段之间进行切换。 因此,Player对象的生命周期中的不同阶段可以帮助您有效地管理移动设备的内存和资源。 例如,在播放多媒体内容之前,可以使Player保持在UNREALIZED阶段,从而节省将播放器保持在REALIZED和STARTED阶段所需的内存开销。 代码 tonePlayer = Manager.createPlayer(Manager.TONE_DEVICE_LOCATOR); tonePlayer.setLoopCount(1); // Loop only once tonePlayer.realize(); ToneControl tc = (ToneControl)tonePlayer.getControl(javax.microedition.media.control.ToneControl); 创建了一个Player对象并提供了用来处理播放器音调的控件 代码 以下的代码段通过调用一个循环中的playTone()方法来播放一连串的声音: for(int counter=0; counter 100; counter.++){ int NOTE= (int) (System.currentTimeMillis() % 127); Manager.playTone(NOTE, 100, 100); //Move the clock forward Thread.currentThread().sleep(10); } 上一段代码调用了playTone()方法100次来播放一连串的曲调。 根据当前的系统时间来计算不同的NOTE参数值,该值的测量单位是毫秒并将它除以127来得到位于0到127之间的余数。将音量和持续时间参数指定为100。 播放一个带有.WAV扩展名的声音文件 int id; // play back from a record store try { InputStream istream = getClass().getResourceAsStream(audio.wav); Player WAVplayer = Manager.createPlayer(istream, audio/X-wav); WAVplayer.start(); } catch (IOException ioe) { } catch (MediaExce

文档评论(0)

ddf55855 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档