WEB开发网      濠电姷鏁告繛鈧繛浣冲洤纾瑰┑鐘宠壘閻ょ偓銇勯幇鍫曟闁稿鍠愰妵鍕冀閵娧佲偓鎺楁⒒閸曨偄顏柡宀嬬畱铻e〒姘煎灡绗戦梻浣筋嚙濮橈箓顢氳濠€浣糕攽閻樿宸ュΔ鐘叉啞缁傚秹宕滆绾惧ジ寮堕崼娑樺缂佹宀搁弻鐔风暋閻楀牆娈楅梺璇″枓閺呯姴鐣疯ぐ鎺濇晝闁靛牆妫欓蹇旂節閻㈤潧浠﹂柛銊ョ埣楠炴劙骞橀鑲╋紱闂佽宕樼粔顔裤亹閹烘挸浜归梺缁樺灦閿曗晛螞閸曨垱鈷戦柟鑲╁仜婵″ジ鎮楀☉鎺撴珖缂侇喖顑呴鍏煎緞濡粯娅囬梻浣瑰缁诲倿寮绘繝鍥ㄦ櫇闁稿本绋撻崢鐢告煟鎼淬垻鈯曢柨姘舵煟韫囥儳绋荤紒缁樼箖缁绘繈宕橀妸褌绱濋梻浣筋嚃閸ㄤ即宕弶鎴犳殾闁绘梻鈷堥弫鍌炴煕閳锯偓閺呮瑧妲愬Ο琛℃斀闁绘劕妯婇崵鐔封攽椤旇棄鍔ら摶鐐烘煕閺囥劌澧柛娆忕箻閺屽秹宕崟顒€娅g紓浣插亾濠㈣泛顑囩粻楣冩煙鐎涙ḿ绠橀柨娑樼У椤ㄣ儵鎮欓鍕紙闂佽鍠栫紞濠傜暦閹偊妲诲┑鈩冨絻椤兘寮诲☉銏犖╅柕澶堝労閸斿绱撴担绋库偓鍝ョ矓瑜版帒鏋侀柟鍓х帛閺呮悂鏌ㄩ悤鍌涘 ---闂傚倸鍊烽悞锔锯偓绗涘厾娲煛閸涱厾顔嗛梺璺ㄥ櫐閹凤拷
开发学院软件开发Java 了解J2ME可选包MMAPI 阅读

了解J2ME可选包MMAPI

 2007-12-23 12:34:07 来源:WEB开发网 闂傚倸鍊风欢姘缚瑜嶈灋闁圭虎鍠栫粻顖炴煥閻曞倹瀚�闂傚倸鍊风粈渚€骞夐敓鐘插瀭闁汇垹鐏氬畷鏌ユ煙閹殿喖顣奸柛搴$У閵囧嫰骞掗幋婵冨亾閻㈢ǹ纾婚柟鐐灱濡插牊绻涢崱妤冃℃繛宀婁簽缁辨捇宕掑鎵佹瀸闂佺懓鍤栭幏锟�濠电姷鏁告慨顓㈠箯閸愵喖宸濇い鎾寸箘閹规洟姊绘笟鈧ḿ褍煤閵堝悿娲Ω閳轰胶鍔﹀銈嗗笂閼冲爼鍩婇弴銏$厪闁搞儮鏅涙禒褏绱掓潏鈺佷槐闁轰焦鎹囬弫鎾绘晸閿燂拷闂傚倸鍊风欢姘缚瑜嶈灋闁圭虎鍠栫粻顖炴煥閻曞倹瀚�  闂傚倸鍊烽懗鑸电仚缂備胶绮〃鍛村煝瀹ュ鍗抽柕蹇曞У閻庮剟姊虹紒妯哄妞ゆ劗鍘ч埥澶娢熼柨瀣偓濠氭⒑瑜版帒浜伴柛鎾寸☉閳绘柨顫濋懜纰樻嫼闂佸憡绋戦オ鏉戔枔閺冣偓缁绘稓浠﹂崒姘瀳闂佸磭绮幑鍥嵁鐎n亖鏀介柟閭﹀墯椤斿倹淇婇悙顏勨偓鏍ь潖婵犳艾鍌ㄧ憸蹇涘箟閹绢喗鏅搁柨鐕傛嫹
核心提示: 在MIDP1.0(JSR 37)并没有提供对声音和视频处理的支持,因此有些厂商就独立开发了API来弥补这样的不足,了解J2ME可选包MMAPI,在MIDP2.0中(JSR 118)中提供了对多媒体处理的支持,但是它只是Mobile Media API(JSR 135)的一个子集,在使用MMAPI之前,理解他的结构和

   在MIDP1.0(JSR 37)并没有提供对声音和视频处理的支持,因此有些厂商就独立开发了API来弥补这样的不足。在MIDP2.0中(JSR 118)中提供了对多媒体处理的支持,但是它只是Mobile Media API(JSR 135)的一个子集。本文将主要对MMAPI做整体介绍。

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

  1. 支持单音,重复播放和记录基于时间的多媒体文件
  2. 以CLDC为目标
  3. 设计小巧,目的为了节省资源
  4. MMAPI并非针对任何内容类型和协议
  5. 可以只实现MMAPI的子集,这就是为什么MIDP2.0中能够只实现其子集的原因
  6. 扩展性强,MMAPI在不修改原来的功能的情况下可以添加新的功能
  7. 选择性实现  实现者可以只实现部分功能

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

通过如下方法我们可以得到一个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之前,理解他的结构和规范是非常重要的。在后续的文章中我们将讲述如何使用MMAPI并提供具体的实例。

(出处:http://www.cncms.com)


Tags:了解 JME MMAPI

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接