モバイル メディア API ( MMAPI )は、携帯電話などのJava MEプラットフォームCDCおよびCLDCデバイス用のAPI仕様です。実装方法に応じて、API を使用すると、アプリケーションでサウンドやビデオを再生および記録したり、静止画像をキャプチャしたりできます。MMAPI は、Java Community Processの下でJSR 135 として開発されました。
プログラミングの概念
Multimedia Java API は、javax.microedition.media パッケージ内の、Manager、Player、PlayerListenerおよびさまざまな種類の という4 つの主要なタイプのクラスに基づいていますControl。
Manager JSR 135 を使用する Java ME プログラマーは、まずクラスの静的メソッドを使用します。 などの他のメソッドもありますがplayTone、主に使用されるメソッドは です。これは、 URIまたはとMIME タイプ のcreatePlayerいずれかを取ります。ほとんどの場合、URI が使用されます。使用される一般的な URI プロトコルには次のものがあります。
InputStream
- ファイル:
- リソース: (MIDlet の JAR 内からファイルを抽出できますが、実装に依存します)
- http:
- rtsp:
- キャプチャ: (オーディオまたはビデオの録画に使用)
MIME タイプはオプションであり、指定されていない場合は渡されたデータから推測されます。
メソッドは、インターフェイスcreatePlayerの実装を返します( capture:プロトコル URIを使用している場合でも)。これには、メディアの開始と停止、ループの要求など、すべてのプレーヤーに適用できるコア メソッドがあります。また、インターフェイスを実装するオブジェクトを取得して、クリップに関連するさまざまなイベント (開始、停止、メディアの終了など) を受け取ること
もできます。Player setPlayerListenerPlayerListener
PlayergetControlクラスには、特定の の実装を返すメソッドもありますControl。 はControl、すべてのメディア タイプに適用できるわけではないオプションの API を処理します。 はPlayer、特定の の実装を提供できる場合とできない場合がありますControl。
(通常、Control返される は実際には 自体ですPlayerが、必ずそうなるとは限りません。)
によって実装されるコントロールのセットにはPlayer制限はありませんが、いくつかの標準的なコントロールはjavax.microedition.media.controlJSR によってパッケージに定義されています。
(その他は、JSR 234 ( Advanced Multimedia Supplements ) で定義される場合があります。)
JSR 135 のサブセットは、JSR 118 ( MIDP 2.0) で定義されています。
プレーヤーのライフサイクル
プロトコルやメディアの種類に関係なく、Playerライフサイクル中に同じ個別の状態を遷移します。これらの状態は以下の表に示されています。
実装
ほとんどの Java ME 仕様と同様に、仕様作成者が一貫性を保つために最大限の努力を払っているにもかかわらず、実装は異なります。違いが明らかになる 2 つの領域は、サポートされるコントロールと、そもそも許容される URI タイプです。よりわかりにくい領域は、ミキシングがサポートされているかどうかです。多くのゲームでは、MIDI 音楽トラックを再生し、その上に PCMサウンド効果を重ねます。
パフォーマンスにも大きなばらつきがあります。たとえば、HTTPクリップが要求された場合、どの時点でクリップがダウンロードされるのでしょうか。仕様では、Player実際に再生する前に呼び出すことができる と という 2 つのメソッドを提供することでこの点を認識していますrealize。prefetch実装によっては、これらのメソッドがクリップを再生可能な状態にする作業の一部を実行し、必要なときに実際にクリップを再生する時間が短縮される場合があります。実装によっては、再生中に要求に応じてクリップを実際にストリーミングできるほど高度なものもあります。
Symbian OSには JSR 135 の非常に完全な実装が含まれていますが、これもデバイスの基盤となるマルチメディア機能に大きく依存しており、デバイス メーカーによっては、録音などの Java ME のあまり知られていない部分を公開しないことを選択する場合があります。
実装の一貫性は、すべての実装が Java Technology Compatibility Kit (TCK) に合格することを強制することで保証されます。これにより、サポートされている各 URI スキーマ、MIME タイプ、およびコントロールがテストされますが、これらのオプション部分のすべての組み合わせがテストされるわけではありません。
コード例
パッケージorg.wikipedia ;
javax.microedition.midlet.*をインポートします。javax.microedition.media .*をインポートします。
パブリッククラスSimplePlayer はMIDletを拡張します{ protected void destroyApp ( boolean arg0 ) throws MIDletStateChangeException {}
保護されたvoid pauseApp () {}
protected void startApp ( ) throws MIDletStateChangeException { try { String url = " https://img-server.japedia.wiki/wikipedia/commons/a/a0/Bass_sample.mid" ; Player player = Manager.createPlayer ( url ) ; player.start ( ); } catch ( Exception e ) { e.printStackTrace ( ) ; } } }
参照
文献
外部リンク
- JSR135
- モバイル メディア API の概要
