专注于Blackberry

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 | 留言 |文档