BlackBerry在北美市场有很高的占有率,如果你的客户北美地区的,那么只要涉及到手机平台的选择,BlackBerry/iPhone/Android是肯定要支持的。虽然目前BlackBerry的手机份额在北美地区有所下降,但是庞大的用户群是你无法忽视的。
BlackBerry开发资料很少,国内就更少了,目前开发者遇到问题都选择在BlackBerry的官方论坛上去寻求帮助。黑莓开发工具用两种,一种是Eclipse + 插件,另外一种是用BlackBerry提供的JDE。虽然Eclipse在易用性上大于BlackBerry JDE,但是配置复杂,调试麻烦,最终还是选择了BlackBerry JDE作为开发环境。
在BlackBerry开发的过程中,如果用到受限的API,需要进行签名。可以在BlackBerry的官方网站上申请,好像是25美刀。如果只是在模拟器上玩玩,不需要。
下面重点说下遇到的难题:
由于BlackBerry平台不支持JNI,所以没办法进行软解码。也不是不行,如果你已经移植Java版本的264解码器就没问题。如果你的设备是MPEG4的,网上有开源的解码器,可以试试看效率怎么样。
这里不得不说下,BlackBerry的开放性的确很差,很多的函数都不支持,不知道是否是出于安全原因的考虑。这也直接导致了黑莓的开发者很少,精品的应用程序更少。
既然软解码行不通,那就考虑能不能调用系统的硬件解码。
1.黑莓的部分手机支持H264解码。途径有通过RTSP或者播放MP4文件
通过RTSP串流的确可以播放,系统使用的是UDP传输,可能存在丢包的情况。最要命的是不支持用户认证命令,如果要这样做,只能绕个弯进行用户的验证,但是治标不治本,只要抓下包,即可破解。
通过播放MP4文件也是可以播放,但是MP4文件的格式比较复杂,并且需要将时间信息等数据先写入到文件里面才可以播放,不支持边下载边播放。既然不支持,那我就写一个一个的MP4文件,然后顺序送进去播放。这样存在一个问题,切换文件的时候会造成黑屏,用户没办法接受
2.直接用系统的DataSource/SourceStream 进行播放。
网上有个强人实现了,但是试了很多办法,都没解决问题,提供个链接给大家,看看有没有人能解决这个问题,解决了别忘了告诉我一声,重金收购啊。
3.最终的解决办法还是选择了JPEG流播放。唉..无奈啊。要是能用系统的硬件解码,可以播放25FPS. 上图看看最终完成的情况。
Any question: ppnext@163.com