栏目分类
开源技术 | Hibernate | JUnit | Tomcat | JBoss | eclipse | Spring | ANT | Struts
java新手入门 | 基础入门 | 开发工具 | JDK | oop面向对象 | 安全配置
J2EE | mvcwea | 应用服务器 | Rmi/Corba/Jini | J2ee核心 | Servlet/JSP | EJB | JDBC/JDO
J2ME | 核心技术 | 嵌入式 | 无线开发
XML | WebServices | XMLBeans
高级技术 | 多线程 | 设计模式 | ULM/OO | p2p/Jxta | JavaSecurity
核心技术 | SwingAwtApplet | 高级编程 | 网络编程 | Jvm技术 | JavaMedia
其它技术 | 资讯动态
排行榜
·J2ME基础入门教程
·熟练使用J2ME在实际开发中的可选包MMAPI
·新手入门之j2me学习方法总结--摘录篇
·J2ME程序开发新手入门九大要点
·J2ME综合:如何在MIDP中实现图片放缩
·J2ME与WebService-KSOAP快速上手
·如何使用“月蚀”进行J2ME开发
·J2ME概述
·J2ME进度条与线程化模型实例解析
·J2ME实现可伸展目录树TreeList(图)
·J2ME的现状与发展
·告诉你J2ME是什么
·知己知彼——J2ME技术详
·Java思路开发易于移植的J2ME游戏
·关于J2ME——MIDP1.0中的碰撞检测
·J2ME工具:使用j2meunit进行游戏测试
·在J2ME中读取各种格式的文本文件
·如何搭建J2ME的开发环境之一二
·J2ME学习系列之如何将J2ME与XML集成
·使用J2ME中的page进行编码转化

    您现在的位置: Linux宝库 >> Java >> J2ME >> 核心技术 >> 文章正文
了解J2ME在实际开发中的可选包MMAPI
Linux宝库 收集整理  作者:Linux宝库  时间:2007-12-31  收藏本站
来自:http://doc.linuxpk.com/45922.html
联系:linuxmine#gmail.com
分类:[核心技术]
  在MIDP1.0(JSR 37)并没有提供对声音和视频处理的支持,因此有些厂商就独立开发了API来弥补这样的不足。在MIDP2.0中(JSR 118)中提供了对多媒体处理的支持,但是它只是Mobile Media API(JSR 135)的一个子集。本文将主要对MMAPI做整体介绍。

  首先我们关注一下MMAPI的特性。

  支持单音,重复播放和记录基于时间的多媒体文件

  以CLDC为目标

  设计小巧,目的为了节省资源

  MMAPI并非针对任何内容类型和协议

  可以只实现MMAPI的子集,这就是为什么MIDP2.0中能够只实现其子集的原因

  扩展性强,MMAPI在不修改原来的功能的情况下可以添加新的功能

  选择性实现,实现者可以只实现部分功能

  通常在多媒体的处理过程中有两个重要的环节,一是处理数据传输的协议另一个是处理媒体的数据类型。在MMAPI中提供了DataSource和Player来完成这两步重要的内容。DataSource对数据传输协议进行封装不管它是从哪里过来的,可以是流、文件或者服务器资源等等。Player则负责解码工作,并传输给外设比如显示屏和扬声器,MMAPI的入口点是Manager类,通过它我们可以得到Player的实例。请看下图:

  

  通过如下方法我们可以得到一个Player的实例:

  public static Player

  createPlayer(String locator)

  throws IOException,

  MediaException

  public static Player

  createPlayer(DataSource source)

  throws IOException,

  MediaException

  public static Player

  createPlayer(InputStream stream, String type)

  throws IOException,

  MediaException

  当创建一个Player的时候,它处于UNREALIZED的状态,当Player已经定位了它目标数据后就进入了REALIZED状态,接下来Player对数据进行缓冲这样可以确保播放的流畅,这个状态叫做PREFETCHED。当Player开始播放数据的时候是STARTED状态。Player对数据流提供了基本的控制,通过如下方法可以实现:

  Player.realize()

  Player.prefetch()

  Player.start()

  Player.setMediaTime(long time)

  同时Player也允许对数据流进行详尽的控制,并且针对不同的类型提供不同的控制,通过如下方法我们可以获得Control

  Control[] Player.getControls()

  Control Player.getControl

  (String controlType)

  MMAPI提供了一些系统属性供查询,我们可以使用方法System.getProperty(String key)得到属性值。关于这些属性值得说明请参考MMAPI DOC。

  supports.mixing

  supports.audio.capture

  supports.video.capture

  supports.recording

  audio.encodings

  video.encodings

  video.snapshot.encodings

  通常我们想知道我们的机器是否支持某些特定的数据类型和传输协议,但是由于MMAPI规范中并没有规定这些,因此我们只能在运行时得到这些数据,可以调用Manager的getSupportedContentTypes()和getSupportedProtocols()。如果Player播放不能解释的数据或者处理不支持的协议的时候会抛出异常。

  总结:

  MMAPI的设计相当灵活,在使用MMAPI之前,理解他的结构和规范是非常重要的。
本文来自:http://doc.linuxpk.com/45922.html
 
     最新更新
·深入了解J2ME的几个重要概念
·J2ME学习笔记(6)—连接MIDlet到文本文件
·J2ME学习笔记(5)—MIDlets中的图形编程
·J2ME学习笔记(4)—用MIDPAPI开发MIDlets
·J2ME学习笔记(3)—初次接触MIDlets
·J2ME学习笔记(2)—平台体系结构详解
·J2ME学习笔记(1)—平台介绍及简单实例
·J2METimer-更简单的实现多任务调度执行
·J2ME基础知识
·J2MEMIDP提供的最重要的图形元素
·精通J2ME中的HelloWorld
·J2METimer使用指南
·请关注J2MEWTK2.2的新特性
·详细介绍并掌握J2ME的安全结构
·如何使用“月蚀”进行J2ME开发
·如何搭建J2ME的开发环境之一二
·J2ME编程实例---之数字键的测试
·利用J2ME与ASP建立数据库连接
·J2ME平台构件及开发应用程序示例
·J2ME(CLDC/MIDP)简介
·关于J2MEMIDP1.0.3中的安全问题简述
·学习在J2ME中使用代码
·J2ME的起源和发展历程
·认识了解“J2ME”
·探索J2ME:用GCF通信
·探索J2ME:使用记录管理系统
·探索J2ME:对记录进行排序
·浅析J2EE、J2SE和J2ME
·J2ME应用基础
·探索J2ME:创建开销细节表单