BlackBerry 应用程序开发者指南 第一卷:基础–第5章 支持的媒体内容(Media Content)
5
第5章 支持的媒体内容(Media Content)
PME内容
播放媒体内容
监听媒体内容事件
创建定制的连接
PME内容
BlackBerry设备支持PME格式的富(rich)媒体内容。
开发者可以使用Plazmic Content Developer’s Kit for BlackBerry来创建PME内容。这个工具,以及附带的文档可以在Plazmic网站(www.plazmic.com)找到。
Media Engine API(在net.rim.plazmic.mediaengine 和 net.rim.plazmic.mediaengine.io包中)允许应用程序获取和播放存储在BlackBerry设备上或网络上的PME内容. Media Engine API支持媒体格式application/x-vnd.rim.pme. Web服务器必须为application/x-vnd.rim.pme设置MIME类型。
PME API概览
下面3个主要类(在net.rim.plazmic.mediaengine包里)提供了加载和播放PME媒体内容的能力。
类
描述
MediaManager
提供从本地或网络上加载媒体内容的方法。
MediaPlayer
提供播放PME媒体的方法。
MediaException
为获取或播放媒体的错误提供异常代码。
媒体加载
Media Engine API允许应用程序使用下面4种协议种的一种加载媒体内容:
协议
描述
http://
http协议从一个使用HTTP连接网络Web服务器下载内容。这个协议需要一个带有BlackBerry MDS服务的BES(BlackBerry Enterprise Server,BlackBerry企业服务器).
https://
https协议从一个使用HTTPS连接网络Web服务器下载内容。这个协议需要一个带有BlackBerry MDS服务的BES(BlackBerry Enterprise Server,BlackBerry企业服务器).
Jar:///<pme_file>
jar协议加载存储在本地BlackBerry设备上的jar文件。
jar:///sample.pme
注意:开始的斜线(/)是需要的。
在BlackBerry IDE中,.jar文件必须加入到调用应用程序或应用程序依赖的库的相同项目中。
cod://<module><pme_file>
cod协议加载存储在本地BlackBerry设备上的cod文件。
cod://mediasample/sample.pme
为使用其他协议,实现定制的Connector。为获得更多信息,参看91页的“创建定制的Connector”.
播放状态(Playback states)
为了获取MediaPlayer的当前状态,调用MediaPlayer.getState().
状态
描述
UNREALIZED
MediaPlayer未准备播放媒体。为了转到REALIZED状态,调用MediaPlayer.setMedia().
REALIZED
MediaPlayer准备好播放媒体。为了开始播放,并转到STARTED状态,调用MediaPlayer.start().
STARTED
MediaPlayer正在播放媒体。为了停止播放和返回到REALIZED状态,调用MediaPlayer.stop().
异常
MediaEngine和MediaManager类的方法抛出一个MediaException异常,这个异常包含了一个标准的HTTP响应代码或者下面异常代码之一。为了获取与异常相联系的错误代码,调用MediaException.getCode().
异常代码
描述
INVALID_HEADER
媒体格式无效。
REQUEST_TIMED_OUT
请求超时。
INTERRUPTED_DOWNLOAD
应用程序调用MediaManager.cancel()来取消下载。
UNSUPPORTED_TYPE
媒体类型(MIME类型)不支持。
UPGRADE_PALYER
媒体引擎的版本和请求的内容不兼容。
UPGRADE_MEDIA
媒体引擎的版本不在支持请求的内容。
CHECKSUM_MISMACTH
求和校验失败,因此媒体内容不能读取。
OUT_OF_BOUNDS
数组出界,或应用程序试图访问一个文件结尾后的输入流。
事件
MediaListener接口允许应用程序接受或响应下面的事件:
事件
描述
MEDIA_REQUEST
媒体已请求加载,当animation自动请求新内容或当用户点击媒体内容的超连接时,事件发生。
MEDIA_REALIZED
媒体已经创建播放了。当MediaManager.createMediaManager()已经调用时发生。
MEDIA_COMPLETE
媒体已经加载,并成功播放。
MEDIA_TO
媒体正在加载。
为获得更多信息,参考85页的“监听Media Engine事件”.
播放媒体内容
为了获取BlackBerry设备或网络上的PME内容,使用MediaManager的方法。为了播放已经下载到BlackBerry设备的PME内容,使用MediaPlayer类的方法。
下载内容
为下载PME内容,创建一个MediaManager对象,然后调用MediaManager.createMedia().
try
{
Object media = manager.createMedia("http://webserver/sample.pme");
}
catch (IOException ioe)
{
System.out.println("Error: requested content was not downloaded.");
}
catch (MediaException me)
{
System.out.println("Error: “ + me.getCode());
}
注:下面缺省的协议会被支持:http://,https://.jar://,和cod://.为获得更多信息,参看81页的“媒体加载”。
第一次调用MediaManager.createMedia(),URL必须是绝对路径,除非首先调用MediaManager.setProperty(“URI_BASE”,<base_url>)设置基URL路径。当你之后调用createMedia()时,前面的URL作为基URL。
播放PME内容
为播放设置PME对象
调用MedialPlayer.setMedia().
MediaPlayer player [...]
Confach发表于 April 22, 2008 9:57 pm | 留言 |文档
最新留言
- 高超:还有我按照http://www.52blackberry.com/thread-291671-1-1.html这个网站的方法实验过,还是不可以,不知道哪里做的不对
- 高超:说实话我没有看懂说的是什么,但是我很想像楼主那样使用SB的应用,我想楼主详细的告诉我应该怎么操作才能使用。谢谢 另:我没有使用移动的SB,那又点贵,不知道楼主的方法是不是需要移动推入,我使用的是blackberry的8520,支持WIFI 等待回复谢谢
- nio:ESS和MDS设置完毕之后,还是无法接收邮件,请较如下: MDS设置中的 Email.userId是写邮箱登陆用户名? Email.address需要修改么? Email.personal需要修改么? ESS设置中的 Email.personal跟MDS中的Email.personal有关系吗? Email.address跟MDS中的Email.address有关系吗? 以上两项应该设置成什么? ps:我用的是126的邮箱,用本地的outlook没有问题~
- 涂鸦:姜还是老的辣。
- Kirsten30MG:A lot of professors demand to examine the writing technique, hence, people have to choose dissertation service to buy free dissertation. In such way people show academic level. And as well you should get thesis.
