BlackBerry的多媒体支持

BlackBerry Java提供的多媒体支持包括MMAPI (JSR 135) Plazmic Media Engine。

首先来介绍一下MMAPI,Playerjavax.microedition.media包。它为媒体资源播放,控制播放,和管理播放状态提供了一些列方法。

一个Player有五个状态:UNREALIZED, REALIZED, PREFETCHED, STARTED, CLOSED 设计这些状态目的是为消耗时间和资源的操作提供更好的控制。

Player被创建后的初始状态是UNREALIZED。在这个状态下,Player实例不知道媒体文件的任何信息,不能播放媒体文件。

Player.realize()方法会把Player的状体从UNREALIZED变为REALIZED状态。这个方法会访问媒体文件或媒体资源来获取必要的媒体信息为播放做准备。

Player.prefetch()方法会把Player的状态变为PREFETCHED。在这个状态下,Player会进一步获取媒体资源必要信息并装载部分媒体资源为播放媒体做好准备。

Player.start()方法会把Player的状态变为STARTEDPlayer将会立即开始播放媒体资源。

Player如果没有经过realize()prefetch()是不可能开始播放的。start()方法会间接的呼叫prefetch(0),也就是realize(),在媒体播放开始之前。直接呼叫start()来播放会对媒体播放造成延迟。

Player播放媒体内容完毕或者Player.stop()方法被叫时, player会从STARTED状态 变为PREFETECHED状态。在PREFECTED状态的Player可以随时再次播放或循环播放。

在除CLOSED状态以外的任何状态都可以呼叫close()方法,player状态变为CLOSED,这时player释放媒体资源,不再可用。

Player.deallocate()只能在PREFETCHEDREALIZED状态下呼叫,它使player返回前一个状态。

Player的五个状态和状态之间的转换如下图所示:

介绍了Player,它的方法和状态,下面让我们来为BlackBerry创建第一个媒体播放程序。

1.  引入需要的类

import javax.microedition.media.Manager;

import javax.microedition.media.Player;

import java.io.IOException;

 

 

2.  通过Manager.createPlayer()方法获得Player实例

 

3.  呼叫Player.realize()方法来为播放做准备,应用程序获取需要的媒体信息。

 

4.  呼叫Player.prefetch()使BlackBerry应用程序获取必要的媒体信息,装载部分媒体内容为开始播放做好准备。

 

5.  呼叫Player.start()开始播放。

 

Player p = Manager.createPlayer("http://www.test.rim.net/abc.wav");

 

/**

 * 指向媒体文件的abc.wavURL作为一个URI参数传入Manager.createPlayer()

 *

 * 最好规范是先叫realize(), 然后prefetch(), start()。按照这个持续可以减少   

 * 播放延迟。

 *

 * 直接呼叫start()其实是先呼叫prefetch(0)也就是realize(),在开始播放。

 */

p.start();

 

6.  呼叫Player.stop()来停止播放。

 

7.  呼叫Player.close()使Player进入CLOSED状态,player实例不再可用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值