com.kddi.media
クラス MediaPlayerBox <Phase1/一部Phase2>

java.lang.Object
  |
  +--javax.microedition.lcdui.Displayable
        |
        +--javax.microedition.lcdui.Canvas
              |
              +--com.kddi.media.MediaPlayerBox
すべての実装インタフェース:
MediaPlayerInterface

public class MediaPlayerBox
extends javax.microedition.lcdui.Canvas
implements MediaPlayerInterface

アプリケーションから見えるメディアプレイヤークラスです。

setResource() 呼び出しによってアプリケーションから渡される MediaResource に対応する MediaPlayer のサブクラスを実体化して、 メディアの再生を行います。 実際の動作はこのサブクラスに依存するので、アプリケーションが MediaPlayerBox クラスの メソッドを呼び出しても、期待する動作が得られるとは限りません。

以下にメディアプレイヤーの操作について説明します。


1. メディアプレイヤーの生成・メディアの設定

1.1 メディアプレイヤーの生成

メディアプレイヤーは、MediaPlayerBoxクラスのコンストラクタで生成します。

MediaPlayerBoxクラスには、下記の3種類のオーバーロードされたコンストラクタがあります。

modeパラメータには、メディアプレイヤーの再生モードを指定します。再生モードにはフォアグラウンドとバックグラウンドの2種類があります。上記の一番目のコンストラクタでは、再生モードはフォアグラウンドになります。2番目と3番目では再生モードをmodeパラメータに指定します。フォアグラウンド再生のときはFOREGROUND、バックグラウンド再生のときはBACKGROUNDを指定します。

それぞれのモードは表1のようになります。

表1. 再生モード
再生モード モード内容
フォアグラウンド フォアグラウンド再生モードでは、SMAFメディアの音声再生が可能です。
このモードではメディア再生時にJava仮想マシンにCPU時間が割り当てられません。Javaアプリケーションが再生のためのメソッドを呼び出すと、Java実行環境は再生が終わるまでブロックされます。
その結果、メディア再生時に発生するイベントは、メディア再生が終了するまでキューに保持され、終了すると同時に連続的にJavaアプリケーションに通知されることになります。
バックグラウンド バックグラウンド再生モードでは、SMAFメディアの音声再生が可能です。
このモードではメディア再生時にJava仮想マシンにもCPU時間が割り当てられます。メディア再生とJavaアプリケーションは同時に実行できます。Javaアプリケーションは、メディア再生時に発生するイベントを、イベント発生のタイミングで受け取ることができます。

1.2 メディアの設定・削除

生成時にコンストラクタで指定するか、MediaPlayerBoxクラスのsetResource()メソッドでメディアを設定する必要があります。設定されたメディアとメディアプレイヤーとの対応付けを削除するには、unsetResource()を使用します。

setResource()は、メディアが設定されていない状態、すなわちプレイヤーが停止状態で、かつメディアが設定されていない状態で呼び出してください。既にメディアプレイヤーにメディアが設定されているときに、setResource()を呼び出すとIllegalStateException例外がスローされます。また、setResource()にnullを指定すると、 NullPointerExceptionがスローされます。

unsetResource()は、メディアプレイヤーを停止状態にしてから呼び出してください。再生中、または一時停止中にunsetResource()を呼び出しても無効です。この場合例外は発生しません。この状態でsetResource()を呼び出すと、まだメディアは設定されているので例外が発生します。

再生中、または一時停止中のメディアプレイヤーにメディアを設定しなおすには、メディアプレイヤーを停止状態にしてからunsetResource()でメディアとの対応付けを削除したのちにsetResource()を呼び出す必要があります。

MediaResourceオブジェクトが扱うリソースデータ内部のデータ構造について、Javaアプリケーションは一切関知する必要はありません。

メディアデータを設定する場合でも、Javaアプリケーションはデータの内部構造に関して関知する必要はありませんが、MediaPlayerオブジェクトがそのメディアデータを再生できない可能性を考慮する必要があります。再生できない場合は、メディアを設定した時点にIllegalArgumentException例外がスローされます。

2. メディアの再生

MediaPlayerBoxオブジェクトにMediaResourceオブジェクトが設定されると、メディアの再生が可能な状態になります。ただし、この状態ではメディアはまだユーザーに表示されていません。

2.1 フォアグラウンド再生・停止

フォアグランドでは再生中にはJava仮想マシンにCPU時間が割り当てられず、再生が終了するまでplay()、またはplay(int count)からは戻りません。従って、Javaアプリケーションが再生を停止したり、一時停止することはできません。

再生が終了した後で、実行環境側で再描画のための処理が行われます。別のCanvas派生クラスのオブジェクトがその時点で「現在のDisplayable」になっている場合は、そのpaint()メソッドが呼び出されます。

2.2 バックグラウンド再生・停止

MediaPlayerBoxオブジェクトがバックグラウンドモードで生成されているときは、JavaアプリケーションはDisplayオブジェクトのsetCurrent()メソッドで設定されている画面を表示画面として、再生中も描画することができます。

再生中の停止はstop()メソッドで、一時停止はpause()メソッドで行います。

2.3 一時停止の再開

バックグラウンド再生中に一時停止したメディアプレイヤーに対して、resume()メソッドで再開できます。

一時停止中のメディアプレイヤーを停止するにはstop()メソッドを呼び出します。

一時停止状態のメディアプレイヤーに別のメディアを設定しなおして、再生を再開することはできません。メディアの再設定は、再生を停止してから行ってください。

3. イベントの待ち受け

MediaEventListenerは、メディアプレイヤーが発生するイベントを待ち受けるリスナーを実装するためのインタフェースです。MediaEventListenerを実装したリスナーは、MediaPlayerBoxクラスのaddMediaEventListener()メソッドでメディアプレイヤーに設定して使用します。

リスナーが設定されているときにイベントが発生すると、リスナーのstateChanged()メソッドが呼び出され、そのtypeパラメータにイベントの種類が示されます。イベントの内容を表3に示します。

表3. イベント内容
イベント内容 stateChanged() type パラメータ
メディアプレイヤーがメディアの再生を開始したとき PLAY
メディアプレイヤーがメディアの再生を停止したとき STOP
メディアプレイヤーがメディアの再生を一時停止したとき PAUSE
メディアプレイヤーがメディアの再生を再開したとき RESUME
Javaアプリケーションがメディアプレイヤーに対応付けられているメディアを破棄したとき RESOURCE_DISPOSED

フォアグランド再生では、再生が終了するまでJava仮想マシンにCPU時間が割り当てられません。再生が終了するとplay()メソッドが戻り、イベントリスナーの呼び出しが連続して発生します。

Javaアプリケーションがメディアプレイヤーに対応付けられているメディアを破棄したとき、RESOURCE_DISPOSEDおよびSTOPを伝えるstateChanged()の呼び出しが発生します。この2つのイベントの発生順は不定です。

下記の場合はイベントは発生されません

stateChanged()のoptionパラメータは将来の仕様拡張のために予約されています。現状では0が通知されます。optionは参照しないようにしてください。

4. メディアプレイヤーについての注意事項

画面描画について
MediaPlayerBoxクラスはCanvasの継承クラスですので、基本的にはDisplay.setCurrent()を使用して画面表示を制御します。但し、下記の注意事項があります。 すなわち、MediaPlayerBoxオブジェクトを「現在のDisplayable」に設定した時点では設定の効果はありませんが、再生が終了した時点でどの画面が表示されるかについての制御ができることになります。

クラス構成について
SMAFPlayer、QcelpPlayerはそれぞれSMAF、13KQcelpのメディア再生を実行するクラスです。MediaPlayerBoxは設定されたメディアリソースに応じてこれらのクラスの中から適切なプレイヤーを生成してメディア再生を実行しますので、Javaアプリケーションはこれらのクラスを直接操作する必要はありません。

MediaPlayerBoxのメソッドについて
setAttribute()getAttribute()は将来の拡張のために定義されています。Javaアプリケーションはこれらのメソッドを使用する必要はありません。
hide()show()は使用しないでください。
再生処理していないメディアプレイヤーに対して、stop()pause()、またはresume()を呼び出しても無視されます。メソッド呼び出しは成功しますが、何も起こりません。MediaEventListenerによるイベント通知も行われません。


フィールドの概要
protected  MediaEventListener _listener
          メディアのイベントを待ち受けるリスナーです。
static int BACKGROUND
          音声のみ再生することを表します。
static int FOREGROUND
          画像と音声を再生することを表します。
static int PAUSE
          メディア再生の一時停止を示すイベントを表します。
static int PLAY
          メディアの再生開始を示すイベントを表します。
static int RESOURCE_DISPOSED
          リソースが破棄されたことを示すイベントを表します。
static int RESUME
          メディア再生の再開を示すイベントを表します。
static int STOP
          メディアの再生終了を示すイベントを表します。
 
クラス javax.microedition.lcdui.Canvas から継承したフィールド
DOWN, FIRE, GAME_A, GAME_B, GAME_C, GAME_D, KEY_NUM0, KEY_NUM1, KEY_NUM2, KEY_NUM3, KEY_NUM4, KEY_NUM5, KEY_NUM6, KEY_NUM7, KEY_NUM8, KEY_NUM9, KEY_POUND, KEY_STAR, LEFT, RIGHT, UP
 
コンストラクタの概要
MediaPlayerBox()
          デフォルトのコンストラクタです。
MediaPlayerBox(int flag)
          コンストラクタです。
MediaPlayerBox(MediaResource resource, int flag)
          コンストラクタです。
 
メソッドの概要
 void addMediaEventListener(MediaEventListener l)
          メディアの状態変化を通知する listener を登録します。
 int getAttribute(int attr)
          メディアの属性の値を返します。
protected  int getMode()
          再生モードを返します。
 int getPitch()
          現在の再生ピッチ(キー)を返します。
protected  MediaPlayer getPlayer()
          現在のメディアプレイヤーオブジェクトを返します。
 MediaResource getResource()
          対応付けられているメディアリソースを返します。
 int getTempo()
          現在の再生速度を返します。
 int getVolume()
          現在の再生音量を返します。
 void hide()
          推奨されていません。 Display.setCurrent() を使用してください。
protected  void hideNotify()
           
protected  MediaPlayer instantiatePlayer(MediaResource resource)
          メディアに対応するメディアプレイヤーオブジェクトを生成します。
protected  void paint(javax.microedition.lcdui.Graphics g)
          メディアプレイヤーを描画します。
 void pause()
          メディアを一時停止します。
 void play()
          メディアを再生します。
 void play(int count)
          繰り返してメディアを再生します。
 void removeMediaEventListener(MediaEventListener l)
          メディアの状態変化を通知する listener を削除します。
 void resume()
          メディアの一時停止を解除します。
 void setAttribute(int attr, int value)
          メディアの属性の値を設定します。
 void setPitch(int pitch)
          再生ピッチ(キー)を設定します。
protected  void setPlayerAttributes()
          メディアプレイヤーの属性を設定します。
 void setResource(MediaResource resource)
          メディアリソースを対応付けます。
 void setTempo(int tempo)
          再生速度を設定します。
 void setVolume(int volume)
          再生音量を設定します。
 void show()
          推奨されていません。 Display.setCurrent() を使用してください。
protected  void showNotify()
           
 void stop()
          メディアを停止します。
 void unsetResource(MediaResource resource)
          メディアリソースの対応付けをはずします。
 
クラス javax.microedition.lcdui.Canvas から継承したメソッド
getGameAction, getHeight, getKeyCode, getKeyName, getWidth, hasPointerEvents, hasPointerMotionEvents, hasRepeatEvents, isDoubleBuffered, keyPressed, keyReleased, keyRepeated, pointerDragged, pointerPressed, pointerReleased, repaint, repaint, serviceRepaints
 
クラス javax.microedition.lcdui.Displayable から継承したメソッド
addCommand, isShown, removeCommand, setCommandListener
 
クラス java.lang.Object から継承したメソッド
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

RESOURCE_DISPOSED

public static final int RESOURCE_DISPOSED
リソースが破棄されたことを示すイベントを表します。

PLAY

public static final int PLAY
メディアの再生開始を示すイベントを表します。

STOP

public static final int STOP
メディアの再生終了を示すイベントを表します。

PAUSE

public static final int PAUSE
メディア再生の一時停止を示すイベントを表します。

RESUME

public static final int RESUME
メディア再生の再開を示すイベントを表します。

FOREGROUND

public static final int FOREGROUND
画像と音声を再生することを表します。フォアグラウンド再生を示します。

BACKGROUND

public static final int BACKGROUND
音声のみ再生することを表します。バックグラウンド再生を示します。

_listener

protected MediaEventListener _listener
メディアのイベントを待ち受けるリスナーです。
コンストラクタの詳細

MediaPlayerBox

public MediaPlayerBox()
デフォルトのコンストラクタです。
MediaPlayerBox(null, FOREGROUND) と同じです。

MediaPlayerBox

public MediaPlayerBox(int flag)
コンストラクタです。
MediaPlayerBox(null, flag) と同じです。
パラメータ:
flag - FOREGROUND または BACKGROUND
例外:
java.lang.IllegalArgumentException - 不正な flag が指定されたときに発生する

MediaPlayerBox

public MediaPlayerBox(MediaResource resource,
                      int flag)
コンストラクタです。
resource が null のときは、メディアリソースの対応付けがない状態で生成します。
パラメータ:
resource - 対応付けるメディアリソース
flag - FOREGROUND または BACKGROUND
例外:
java.lang.IllegalArgumentException - 対応していない(再生できない)メディア、または不正な flag が指定されたときに発生する
IllegalStateException - すでに破棄されている MediaResource オブジェクトが指定されたときに発生する
java.lang.RuntimeException - その他実行時エラーのときに発生する(フォアグラウンド再生をサポートしていない場合に FOREGROUND 指定など)
メソッドの詳細

setResource

public void setResource(MediaResource resource)
メディアリソースを対応付けます。
定義:
インタフェース MediaPlayerInterface 内の setResource
パラメータ:
resource - 対応付けるメディアリソース
例外:
IllegalStateException - すでにメディアリソースが対応付けられている状態で呼び出されたとき、または、すでに破棄されたメディアリソースが指定されたときに発生する
java.lang.IllegalArgumentException - 指定メディアの再生に対応していない場合に発生する
NullPointerException - resource が null のときに発生する
java.lang.RuntimeException - その他実行時エラーのとき発生する(フォアグラウンド再生をサポートしていない場合に FOREGROUND 指定など)

unsetResource

public void unsetResource(MediaResource resource)
メディアリソースの対応付けをはずします。プレイヤーを停止状態にしてから呼び出してください。
定義:
インタフェース MediaPlayerInterface 内の unsetResource
パラメータ:
resource - 対応付けをはずすメディアリソース

getResource

public MediaResource getResource()
対応付けられているメディアリソースを返します。
定義:
インタフェース MediaPlayerInterface 内の getResource
戻り値:
対応付けられているメディアリソース。 メディアリソースが対応付けられていない場合は null。

addMediaEventListener

public void addMediaEventListener(MediaEventListener l)
メディアの状態変化を通知する listener を登録します。

それまでに登録されていた listener は、登録解除となります。 引数に null を指定した場合、現在登録してある listener を指定して removeMediaEventListener() を呼び出したのと同じ効果になります。

定義:
インタフェース MediaPlayerInterface 内の addMediaEventListener
パラメータ:
l - 登録する MediaEventListener

removeMediaEventListener

public void removeMediaEventListener(MediaEventListener l)
メディアの状態変化を通知する listener を削除します。

現在登録されていない listener が指定された場合、無視されます。

定義:
インタフェース MediaPlayerInterface 内の removeMediaEventListener
パラメータ:
l - 削除する MediaEventListener

play

public void play()
メディアを再生します。
定義:
インタフェース MediaPlayerInterface 内の play
例外:
IllegalStateException - メディアが対応付けられていないときに発生する

play <Phase2>

public void play(int count)
繰り返してメディアを再生します。
定義:
インタフェース MediaPlayerInterface 内の play
パラメータ:
count - 再生繰返し回数
例外:
IllegalStateException - メディアが対応付けられていないときに発生する

stop

public void stop()
メディアを停止します。
定義:
インタフェース MediaPlayerInterface 内の stop
例外:
IllegalStateException - メディアが対応付けられていないときに発生する

pause

public void pause()
メディアを一時停止します。
定義:
インタフェース MediaPlayerInterface 内の pause
例外:
IllegalStateException - メディアが対応付けられていないときに発生する

resume

public void resume()
メディアの一時停止を解除します。
定義:
インタフェース MediaPlayerInterface 内の resume
例外:
IllegalStateException - メディアが対応付けられていないときに発生する

setAttribute

public void setAttribute(int attr,
                         int value)
メディアの属性の値を設定します。(将来拡張用)
定義:
インタフェース MediaPlayerInterface 内の setAttribute
パラメータ:
attr - 設定する属性
value - 設定する値

getAttribute

public int getAttribute(int attr)
メディアの属性の値を返します。(将来拡張用)
定義:
インタフェース MediaPlayerInterface 内の getAttribute
パラメータ:
attr - 属性
戻り値:
属性の値

setTempo

public void setTempo(int tempo)
インタフェース MediaPlayerInterface の記述:
再生速度を設定します。

メディアの再生速度を、標準速度を 100 としたパーセンテージで設定します。 85 〜 115 程度が実用的な範囲です。 指定した値が 85 以下の場合は 85 に、115 以上の場合は 115 になります。

定義:
インタフェース MediaPlayerInterface 内の setTempo
インタフェース com.kddi.media.MediaPlayerInterface からコピーされたタグ:
パラメータ:
tempo - 再生速度

getTempo

public int getTempo()
インタフェース MediaPlayerInterface の記述:
現在の再生速度を返します。

メディアの再生速度を、標準速度を 100 としたパーセンテージで返します。

定義:
インタフェース MediaPlayerInterface 内の getTempo
インタフェース com.kddi.media.MediaPlayerInterface からコピーされたタグ:
戻り値:
再生速度。標準速度を 100 としたパーセンテージ。

setPitch

public void setPitch(int pitch)
インタフェース MediaPlayerInterface の記述:
再生ピッチ(キー)を設定します。

メディアの再生キーを -6 〜 +6 の範囲で設定します。 0 を標準のキーとして、-1 から -6 に向けて半音階ずつ下がり、+1 から +6 に向けて半音階ずつ上がります。 指定した値が -6 以下の場合は -6 に、6 以上の場合は 6 になります。

定義:
インタフェース MediaPlayerInterface 内の setPitch
インタフェース com.kddi.media.MediaPlayerInterface からコピーされたタグ:
パラメータ:
pitch - 再生ピッチ(キー)

getPitch

public int getPitch()
インタフェース MediaPlayerInterface の記述:
現在の再生ピッチ(キー)を返します。

メディアの再生キーを -6 〜 +6 の範囲で返します。 0 を標準のキーとして、-1 から -6 に向けて半音階ずつ下がり、+1 から +6 に向けて半音階ずつ上がります。

定義:
インタフェース MediaPlayerInterface 内の getPitch
インタフェース com.kddi.media.MediaPlayerInterface からコピーされたタグ:
戻り値:
再生ピッチ(キー)

setVolume

public void setVolume(int volume)
インタフェース MediaPlayerInterface の記述:
再生音量を設定します。

メディアの再生音量を 0 〜 100 の範囲で設定します。 0 が無音を表し、1 から 100 に向かって大きくなります。 指定した値が 0 以下の場合は 0 に、100 以上の場合は 100 になります。

移動機の実装により、段階ごとに丸める場合があります。

定義:
インタフェース MediaPlayerInterface 内の setVolume
インタフェース com.kddi.media.MediaPlayerInterface からコピーされたタグ:
パラメータ:
volume - 再生音量

getVolume

public int getVolume()
インタフェース MediaPlayerInterface の記述:
現在の再生音量を返します。

メディアの再生音量を 0 〜 100 の範囲で返します。 0 が無音を表し、1 から 100 に向かって大きくなります。

定義:
インタフェース MediaPlayerInterface 内の getVolume
インタフェース com.kddi.media.MediaPlayerInterface からコピーされたタグ:
戻り値:
再生音量

show

public void show()
推奨されていません。 Display.setCurrent() を使用してください。

メディアプレイヤーを表示します。
定義:
インタフェース MediaPlayerInterface 内の show

hide

public void hide()
推奨されていません。 Display.setCurrent() を使用してください。

メディアプレイヤーを非表示にします。
定義:
インタフェース MediaPlayerInterface 内の hide

showNotify

protected void showNotify()
オーバーライド:
クラス javax.microedition.lcdui.Canvas 内の showNotify

hideNotify

protected void hideNotify()
オーバーライド:
クラス javax.microedition.lcdui.Canvas 内の hideNotify

paint

protected void paint(javax.microedition.lcdui.Graphics g)
メディアプレイヤーを描画します。
オーバーライド:
クラス javax.microedition.lcdui.Canvas 内の paint
パラメータ:
g - 描画先のグラフィックコンテキスト

instantiatePlayer

protected MediaPlayer instantiatePlayer(MediaResource resource)
メディアに対応するメディアプレイヤーオブジェクトを生成します。
パラメータ:
resource - 関連付けるメディアリソース
戻り値:
メディアプレイヤーのインスタンス
例外:
java.lang.IllegalArgumentException - 再生に対応していないメディアが指定されたときに発生する
IllegalStateException - すでに破棄されたメディアリソースが指定されたときに発生する
java.lang.RuntimeException - その他実行時エラーのときに発生する(フォアグラウンド再生をサポートしていない場合に FOREGROUND 指定など)

getPlayer

protected MediaPlayer getPlayer()
現在のメディアプレイヤーオブジェクトを返します。
戻り値:
MediaPlayerインスタンス

getMode

protected int getMode()
再生モードを返します。
戻り値:
FOREGROUND または BACKGROUND

setPlayerAttributes

protected void setPlayerAttributes()
メディアプレイヤーの属性を設定します。

メディアプレイヤー(CMXPlayerクラスなど)のインスタンス生成時に、 再生音量(setVolume()で設定)などの属性を 一括設定します。



Copyright 2003 Aplix Corporation. All rights reserved. Aplix Confidential and Restricted.