分享
 
 
 

Mobile Media API概述

王朝java/jsp·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

作者:than Knudsen 编译:Sean

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取得媒体数据。

如何使用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。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有