|
Mobile Media API (MMAPI)为多媒体开发提供了一个强大,可扩充以及简单的接口。它有一套规范的播放和录制audio或video的接口。这篇文章是MMAPI概念的一个概观以及其类和接口使用的一个快速教程。
Mobile Media API的体系结构
MMAPI基于四个基本概念:
1。一个player知道如何去解释媒体数据。举个例子,某种类型的player知道如何根据mp3媒体数据产生声音。另外一个player知道如何播放一端QuickTime的movie。javax.microedition.media.Player接口的实现(implement)既是这里说的player。
2。你能用一个或多个controls来调整player的行为。你可以在player从媒体转换数据的时候从一个player实例取得并且使用controls。比如,你能用一个VolumeControl来调节一个采样音频的声音大小。Controls是javax.microedition.media.Control接口的实现。详细的Control子接口在javax.microedition.media.control包中
3。一个data source知道如何从它的原始位置读取到媒体数据给player。媒体数据可以被保存在不同的位置,从远程服务器到资源文件或者RMS数据库。媒体数据可以从原始位置通过HTTP,像RTP一样的流式传输协议,或者其他机制传输到player。 javax.microedition.media.protocol.DataSource是MMAPI中所有data source类的抽象父类。
4。最后,manager把每一个部件捆绑起来,并且为API提供了切入点。javax.microedition.media.Manager 类包含了得到Player或DataSource的静态方法。
使用MMAPI
你能使用Manager做到的最简单的事情是用下面的方法播放一段乐音(tone):
public static void playTone(int note, int duration, int volume) throws MediaException
播放时间按毫秒定义好,音量范围则从0(无声)到100(最大声)。音符用一个数字定义,像MIDI一样,60代表中音C调,69则是一个440赫兹的A调。音符的范围可以从0到127。playTone()方法适合播放一个单一的音调或是很短的模进音。更长的单声道模进音,你可以用默认的乐音播放器,它可以播放一全部模进乐音。
MMAPI最迷人的的地方体现在Manager的createPlayer方法上,该方法有如下三个不同的版本:
public static Player createPlayer(String locator) throws IOException, MediaException public static Player createPlayer(DataSource source) throws IOException, MediaException public static Player createPlayer(InputStream stream, String type) throws IOException, MediaException 得到一个Player最简单的方法是使用第一个createPlayer方法,仅仅传递一个代表媒体数据的字符串就可以了。
举个例子,你可以指定一个网站上的音频文件: Player p = Manager.createPlayer("http://webserver/music.mp3"); 其他createPlayer方法允许你从一个DataSource或一个InputStream流创建Player。如果你考虑使用Player,这三个方法是真正的三种不同的方式取得media数据。一个InputStream是个最简单的对象,仅仅是一个字节流。而DataSource就更高级了点,是一个选择协议去访问媒体数据的对象。传递一个位置字符串是个最好的捷径:MMAPI会搞清楚用何种协议并为player取得媒体数据。
|