最近看了《j2me开发精解》跟《javaME核心技术与最佳实践》的MMAPI的内容,根据书上的内容把音乐播放器,视频播放器,录音,跟拍照的功能实现了一次,这里写一下对这些实现的心得。
首先我介绍一下MMAPI的内容。其实MMAPI可以分为四部分内容:播放器(Player)、数据源(DataSource)、控制器(Control)还有管理它们的管理器(Manager)。播放器负责处理各种多媒体数据,数据源负责提取数据,控制器负责管理播放器,例如,可以控制声音的大小。概括起来就是从数据源读取数据,然后交给播放器播放,控制器能够控制播放器播放,它们是由管理器管理的。
接着我介绍怎么创建一个简单的播放器(Player)。
通过调用Manager.createPlayer(InputStream stream, String type)可以创建一个播放器的实例。stream是一个指向多媒体文件的输入流,type指定媒体的格式。
还可以调用Manager.createPlayer( String locator)方法创建播放器实例,locator是一个定位符,能够从web服务器读取多媒体文件。
Player有四个状态,它们按顺序分别是unrealized--realized--perfetched--started四个状态,当Player创建的时候处于unrealized状态,在这个状态中,Player还没有获得媒体文件的信息,然后调用Player的realize()方法就能使它过度到realized状态,在此状态中Player已经获得媒体文件的大部分信息,在这个状态中能够调用getControl(Sting tye)方法获得Control的实例,从而对媒体文件的控制(在unrealized状态调用此方法会报错,因为Player还没有获得足够资源),然后调用perfetch()方法进入perfetched状态,书上说在这个状态播放器做好播放的所有准备,我对这个状态还不清楚什么意思,不过不要紧,这个不影响我们程序的编写。最后调用start()播放器就会播放文件了。
现在介绍一下如何播放一个mp3文件。这里我只实现的思想。
首先读mp3文件,例如读取本地文件getResourceAsStream(String path)
然后创建一个Player的实例Manager.createPlayer(InputStream stream, String type)
接着可以进入realezed状态,获得Control的实例控制媒体文件的播放getControl(String type)
最后调用start的方法进行播放start()
这样就能实现一个媒体文件的播放。
播放视频文件
大致内容跟播放mp3一样,但是比mp3文件多了一样就是显示视频。当取得Control对象后,调用Control对象的initDisplayMode(int modle,object arg)方法.这个方法的modle参数有两个选择,一个是VideoControl.USE_GUI_PRIMITIVE另一个是VideoControl.USE_DIRECT_VIDEO,当你modle的参数为VideoControl.USE_GUI_PRIMITIVE的时候,第二个参数org为null,这个方法就会返回一个form的对象,把这个对象添加到Display()对象里面就能够播放视频。当第一个参数为VideoControl.USE_DIRECT_VIDEO的时候,第二个参数为一个实现了Canvas类的实例,然后系统就会自动在这个实例中添加视频播放的功能。
录音功能
1,创建一个Player对象Manager.createPlayer("capture://audio");
2,创建一个Control的实例Manager.createPlayer("capture://audio"),在这个实例里面,设置播放录音的长度,把录到的录音保存的数组里面(创建一个数组对象,调用setRecordStream(byte[])),这样就能在录制完录音后把录音播放出来。还有录音的时候要开启一个新的线程。
3,开始录音,先调用Player的start()方法,再调用Control的startRecord()发法。
拍照功能
1,创建一个Player对象Manager.createPlayer("capture://video")
2,创建一个Control的实例getControl("VideoControl"),通过这个实例可以调用initDisplayMode(int modle,object arg)来获得摄像头所拍到的图片,具体用法跟视频播放相识。
3,调用Control的getSnapShot(String arg)方法,参数可以指定所拍照的格式,长宽,例如encoding=jepg所拍的相片就以jpeg格式存储,这个方法返回的是一个字节数组。将这个数组转换为图片的格式显示出来即可
分享到:
相关推荐
本章介绍Windows多媒体的两种传统编程接口——高层的MCI和底层的MMAPI,主要讨论MCI的命令串和命令消息方式编程和MMAPI中的MMIO与MIDI编程。 MCI和MMAPI都没有被封装入MFC,为Windows SDK中的API。在Visual Studio ...
完整的mmapi介绍,是学习j2me多媒体开发的好助手。
本章介绍Windows多媒体的两种传统编程接口——高层的MCI和底层的MMAPI,主要讨论MCI的命令串和命令消息方式编程和MMAPI中的MMIO与MIDI编程。
mmapi-1[1].2-mrel2-spec.zip J2ME的API中文文档--Mobile Media API (JSR-135)
介绍Windows多媒体的两种传统编程接口——高层的MCI和底层的MMAPI,主要讨论MCI的命令串和命令消息方式编程和MMAPI中的MMIO与MIDI编程
用MMAPI开发手机摄像头程序.doc 用MMAPI开发手机摄像头程序.doc
使用J2ME MMAPI开发移动多媒体应用技术.doc
J2ME中用MMAPI开发手机摄像头程序,真的值得一看的哟,不看浪费。
Pro Java ME MMAPI Mobile Media API for Java Micro Edition
第12章多媒体开发与MCI与MMAPI编程.pdf
j2me多媒体j2me多媒体j2me多媒体j2me多媒体j2me多媒体
mm_api-多发性骨髓瘤数据服务的API 描述 这是一个小型Web服务,为多发性骨髓瘤服务提供数据。
BlackBerry 5.0 平台以及之前的版本对多媒体的支持依赖于JSR 135,也就是标准J2ME平台的MMAPI。BlackBerry手机上录制视频也依靠MMAPI,支持3gpp视频格式,支持的视频编码包括 MPEG-4, H263, H264, 音频编码包括 AAC,...
mes Java原始码Apress源代码 该存储库由Vikram Goyal陪同(Apress,2006年)。 使用绿色按钮将文件下载为zip格式,或使用Git将存储库克隆到您的计算机上。 发行版 版本v1.0对应于已出版书籍中的代码,没有更正或更新...
Test1---http连接 Test2---Socket连接 Test3---DatagramSocket连接 Test4---MMAPI Test5---多客户端服务器 Test6---MMAPI2 Test7---WMAServer
包括P800/802, T610/618等索爱手机的开发包,支持MMAPI。
j2me API 帮助文档 ,带有j2me-rpc,j2me-xml,midp,mmapi
三星的API规范,包括: mmapi samung api wma api 用户指导手册 wmaBridge 开发三星程序必备的工具
本章介绍BlackBerry 系统属性,包括CLDC/MIDP/JTWI,MMAPI,PDAP,LAPI,SATSA,CHAPI,I18N,Bluetooth,WMA, JAX-RPC,JAXP,Browser。列表1 列出各系统属性类别。 CLDC/MIDP/JTWI 的系统属性 使用 System....
3 概述 移动多媒体包括使用移动终端播放音乐,视频,拍照,录制视频,和在线影音。...BlackBerry Java 提供的多媒体支持包括MMAPI-JSR 135 和Plazmic Media Engine。本章主要介绍 MMAPI 在BlackBerry 平台上的应用。