|
如何使用Player
一旦你成功建立了一个Player对象,下一步该做些什么呢?最简单的行动就是开始用start方法重放。然而,只是为了学到比入门更深层次的东西,这有利于帮助理解一个Player的生命周期。这个周期由四个状态组成。
当一个Player第一次被建立,它的状态是UNREALIZED。在为这个Player设置了媒体数据的位置以后,它的状态是REALIZED。
如果Player正在从一个服务器的HTTP连接下载并解释数据的时候,比如Player在Http请求已经发送到服务器,收到HTTP响应后,而且DataSource准备好接收audio数据的时候。下一个状态是PREFETCHED,获得该状态的时机是该player已经读到足够的数据而开始解释和运算了。最后,当数据在运算完毕后,Player的状态变成了STARTED.
Player接口提供了状态转换的方法,在状态循环中,无论前进还是后退都有描述。其原因是为了提供给应用程序一个可操作控制。控制可能会占用一段时间。举个例子,你可能要将Player的REALIZED状态推到PREFETCHED状态,为了一段声音可以马上播放,以响应用户的操作。
在java Platform的MMAPI
MMAPI在在java 2 platform中适用于什么样的情况呢?答案是几乎任何地方。尽管当初MMAPI的设计仅仅是基于CLDC,但它可以在 CLDC和CDC软件上都可以运行得很好。事实上,MMAPI可以作为轻量选择用j2se实现到java media Framework。
可以支持那些类型的Media文件?
如果你的装置支持MMAPI的话,那么这个装置可以播放什么类型的媒体数据呢?支持什么数据传输协议?MMAPI并不要求任何指定的content type或协议,但你能在运行时找出程序支持什么类型的数据,通过调用Manager类的getSupportedContentTypes()方法和getSupportedProtocols()方法。可能发生的最糟糕的事情是什么呢?如果你通过Manager给Player一种不支持的数据类型或协议,它会抛出个exception。 你的程序应该试图去从这样的例外中恢复过来,可以显示些礼貌的信息提示给用户。
MIDP 2.0的媒体
MIDP 2.0规范包括了一个MMAPI的子集。它向上兼容所有API。MIDP 2.0子集有如下特性: 1。只支持音频回放(录制)。不包含video控制接口。 2。多Player不能被同步 3。DataSource类和javax.microedition.media.protocol包的其他类没有被包括进来;应用程序不能实现他们自己的协议。 4。Manager类是被简化的。 MIDP要求支持乐音产生和采样,WAV音频播放。
总结
MMAPI为从java应用在移动设备行运行使用多媒体提供了一套简洁的,可扩充的和规范的API。
|