快速业务通道

使用J2ME MMAPI开发移动多媒体应用技术 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18
er createPlayer(InputStream stream, String type) throws IOException, MediaException

第一个版本实现通过URL字符串指定的协议和数据位置的信息创建一个Player对象,其中locator的格式如下:

Manager将对createPlayer函数中提供的URL字符串参数进行分析,创建一个Data Source对象,由该对象完成对媒体数据的传输工作,并从数据中获取该媒体的数据内容类型,Manager将根据这个媒体数据类型创建相应的Player对象,如果Manager无法确定DataSource的内容类型,它将抛出一个MediaException异常。

例:创建一个控制某网站MP3音频的Player对象。

Player pMP3 = Manager.createPlayer( "http://www.XXX.com/111.mp3");

第二版本实现通过已知的DataSource对象创建Player对象。

第三版本实现通过InputStream流创建Player对象。

我们根据应用实际的情况选择使用那种版本来创建Player对象。有了一个Player对象以后,接下来要通过这个Player对象提供的方法去控制媒体流。下面我们列出常用的方法:

Player.start():重放媒体流。

Player.stop():停止媒体流。

Player.setMediaTime(long now):设置媒体时间。

Player.close():关闭媒体流并释放资源。

Player.getState():获取Player的当前状态。

每个Player对象中都存在着一个状态变量,用于表示该Player对象的生命周期。当Player第一次被建立时处于UNREALIZED状态;当为该Player设置了媒体数据的位置后,它处于REALIZED状态(如Player正在从一个服务器的HTTP连接下载并解释数据的时或Player在Http请求已经发送到服务器,收到HTTP响应后,而且DataSource准备好接收媒体数据的时);当该Player已经读到足够的数据而开始解释和运算时,处于PREFETCHED状态;当数据在运算完毕后,该Player的状态变成了STARTED。我们在使用Player对象的方法对媒体流进行控制时,应注意它们可能影响到Player状态的改变,可以使用getState函数获取当前Player的状态。图三展示了Player对象的状态转换图。

使用J2ME MMAPI开发移动多媒体应用技术 - 编程入门网

图三:状态转换图

使用J2ME MMAPI开发移动多媒体应用技术(3)

时间:2011-03-06

四、播放常见媒体的方法

1.播放单音与序列音

如果要播放一个单音一次,可使用:

Manager.playTone(note,duration,volume);

如果要播放序列音,则必须使用ToneControl。使用一个特别的定位器来创建一个 Player对象,获得ToneControl,设置其命令序列,然后启动播放器,如:

Player p = Manager.createPlayer(Manger.TONE_DEVICE_LOCATOR); p.realize(); ToneControl tc = (ToneControl)(player.getControl("ToneControl")); tc.setSequence(new byte[] {ToneControl.C4,8 ToneControl.C4+2,8}); p.start();

2.播放声讯和MIDI

声讯是指如WAV这样的声音格式,在这种格式中,数据是各种声讯样本的一个流,它代表着该声讯每一秒钟的片断。MIDI则是一系列的命令,用作多乐器的某种"虚拟合成器"。

如要播放一段能够通过HTTP访问的声音文件,请使用:

Player p = Manager.createPlayer("http://something.com/somefile.wav");

p.start();

如要播放一段已经被置于MIDlet的JAR文件中的声音文件,需要先了解其MIME类型(如,"audio/x-wav"),然后,使用:

InputStream is = getClass().getResourceAsStream("/somefile.wav"); Player p = Manager.createPlayer(is,"audio/x-wav"); p.start(); 如要播放一段置于RMS中的声音文件,请使用: RecordStore rs = RecordStore.open("name"); byte[] data = rs.getRecord(id); ByteArrayInputStream is = new ByteArrayInputStream(data); Player p = Manager.createPlayer(is,"audio/x-w

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号