|
||||||||
フレームあり フレームなし | ||||||||
概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object | +--javax.microedition.lcdui.Displayable | +--javax.microedition.lcdui.Canvas | +--com.kddi.media.MediaPlayerBox
アプリケーションから見えるメディアプレイヤークラスです。
setResource()
呼び出しによってアプリケーションから渡される
MediaResource
に対応する MediaPlayer
のサブクラスを実体化して、
メディアの再生を行います。
実際の動作はこのサブクラスに依存するので、アプリケーションが MediaPlayerBox クラスの
メソッドを呼び出しても、期待する動作が得られるとは限りません。
以下にメディアプレイヤーの操作について説明します。
メディアプレイヤーは、MediaPlayerBoxクラスのコンストラクタで生成します。
MediaPlayerBoxクラスには、下記の3種類のオーバーロードされたコンストラクタがあります。
modeパラメータには、メディアプレイヤーの再生モードを指定します。再生モードにはフォアグラウンドとバックグラウンドの2種類があります。上記の一番目のコンストラクタでは、再生モードはフォアグラウンドになります。2番目と3番目では再生モードをmodeパラメータに指定します。フォアグラウンド再生のときはFOREGROUND
、バックグラウンド再生のときはBACKGROUND
を指定します。
それぞれのモードは表1のようになります。
再生モード | モード内容 |
---|---|
フォアグラウンド | フォアグラウンド再生モードでは、SMAFメディアの音声再生が可能です。 このモードではメディア再生時にJava仮想マシンにCPU時間が割り当てられません。Javaアプリケーションが再生のためのメソッドを呼び出すと、Java実行環境は再生が終わるまでブロックされます。 その結果、メディア再生時に発生するイベントは、メディア再生が終了するまでキューに保持され、終了すると同時に連続的にJavaアプリケーションに通知されることになります。 |
バックグラウンド | バックグラウンド再生モードでは、SMAFメディアの音声再生が可能です。 このモードではメディア再生時にJava仮想マシンにもCPU時間が割り当てられます。メディア再生とJavaアプリケーションは同時に実行できます。Javaアプリケーションは、メディア再生時に発生するイベントを、イベント発生のタイミングで受け取ることができます。 |
生成時にコンストラクタで指定するか、MediaPlayerBoxクラスのsetResource()
メソッドでメディアを設定する必要があります。設定されたメディアとメディアプレイヤーとの対応付けを削除するには、unsetResource()
を使用します。
setResource()
は、メディアが設定されていない状態、すなわちプレイヤーが停止状態で、かつメディアが設定されていない状態で呼び出してください。既にメディアプレイヤーにメディアが設定されているときに、setResource()
を呼び出すとIllegalStateException例外がスローされます。また、setResource()
にnullを指定すると、 NullPointerExceptionがスローされます。
unsetResource()
は、メディアプレイヤーを停止状態にしてから呼び出してください。再生中、または一時停止中にunsetResource()
を呼び出しても無効です。この場合例外は発生しません。この状態でsetResource()
を呼び出すと、まだメディアは設定されているので例外が発生します。
再生中、または一時停止中のメディアプレイヤーにメディアを設定しなおすには、メディアプレイヤーを停止状態にしてからunsetResource()
でメディアとの対応付けを削除したのちにsetResource()
を呼び出す必要があります。
MediaResource
オブジェクトが扱うリソースデータ内部のデータ構造について、Javaアプリケーションは一切関知する必要はありません。
メディアデータを設定する場合でも、Javaアプリケーションはデータの内部構造に関して関知する必要はありませんが、MediaPlayer
オブジェクトがそのメディアデータを再生できない可能性を考慮する必要があります。再生できない場合は、メディアを設定した時点にIllegalArgumentException例外がスローされます。
MediaPlayerBox
オブジェクトにMediaResource
オブジェクトが設定されると、メディアの再生が可能な状態になります。ただし、この状態ではメディアはまだユーザーに表示されていません。
フォアグランドでは再生中にはJava仮想マシンにCPU時間が割り当てられず、再生が終了するまでplay()
、またはplay(int count)
からは戻りません。従って、Javaアプリケーションが再生を停止したり、一時停止することはできません。
再生が終了した後で、実行環境側で再描画のための処理が行われます。別のCanvas派生クラスのオブジェクトがその時点で「現在のDisplayable」になっている場合は、そのpaint()メソッドが呼び出されます。
MediaPlayerBox
オブジェクトがバックグラウンドモードで生成されているときは、JavaアプリケーションはDisplayオブジェクトのsetCurrent()メソッドで設定されている画面を表示画面として、再生中も描画することができます。
再生中の停止はstop()
メソッドで、一時停止はpause()
メソッドで行います。
バックグラウンド再生中に一時停止したメディアプレイヤーに対して、resume()
メソッドで再開できます。
一時停止中のメディアプレイヤーを停止するにはstop()
メソッドを呼び出します。
一時停止状態のメディアプレイヤーに別のメディアを設定しなおして、再生を再開することはできません。メディアの再設定は、再生を停止してから行ってください。
MediaEventListener
は、メディアプレイヤーが発生するイベントを待ち受けるリスナーを実装するためのインタフェースです。MediaEventListener
を実装したリスナーは、MediaPlayerBoxクラスのaddMediaEventListener()
メソッドでメディアプレイヤーに設定して使用します。
リスナーが設定されているときにイベントが発生すると、リスナーのstateChanged()メソッドが呼び出され、そのtypeパラメータにイベントの種類が示されます。イベントの内容を表3に示します。
イベント内容 | stateChanged() type パラメータ |
---|---|
メディアプレイヤーがメディアの再生を開始したとき | PLAY |
メディアプレイヤーがメディアの再生を停止したとき | STOP |
メディアプレイヤーがメディアの再生を一時停止したとき | PAUSE |
メディアプレイヤーがメディアの再生を再開したとき | RESUME |
Javaアプリケーションがメディアプレイヤーに対応付けられているメディアを破棄したとき | RESOURCE_DISPOSED |
フォアグランド再生では、再生が終了するまでJava仮想マシンにCPU時間が割り当てられません。再生が終了するとplay()メソッドが戻り、イベントリスナーの呼び出しが連続して発生します。
Javaアプリケーションがメディアプレイヤーに対応付けられているメディアを破棄したとき、RESOURCE_DISPOSED
およびSTOP
を伝えるstateChanged()の呼び出しが発生します。この2つのイベントの発生順は不定です。
下記の場合はイベントは発生されません
stateChanged()のoptionパラメータは将来の仕様拡張のために予約されています。現状では0が通知されます。optionは参照しないようにしてください。
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 |
フィールドの詳細 |
public static final int RESOURCE_DISPOSED
public static final int PLAY
public static final int STOP
public static final int PAUSE
public static final int RESUME
public static final int FOREGROUND
public static final int BACKGROUND
protected MediaEventListener _listener
コンストラクタの詳細 |
public MediaPlayerBox()
MediaPlayerBox
(null
, FOREGROUND
) と同じです。public MediaPlayerBox(int flag)
MediaPlayerBox
(null
, flag) と同じです。flag
- FOREGROUND
または BACKGROUND
java.lang.IllegalArgumentException
- 不正な flag が指定されたときに発生するpublic MediaPlayerBox(MediaResource resource, int flag)
resource
- 対応付けるメディアリソースflag
- FOREGROUND
または BACKGROUND
java.lang.IllegalArgumentException
- 対応していない(再生できない)メディア、または不正な flag が指定されたときに発生するIllegalStateException
- すでに破棄されている MediaResource オブジェクトが指定されたときに発生するjava.lang.RuntimeException
- その他実行時エラーのときに発生する(フォアグラウンド再生をサポートしていない場合に FOREGROUND 指定など)メソッドの詳細 |
public void setResource(MediaResource resource)
MediaPlayerInterface
内の setResource
resource
- 対応付けるメディアリソースIllegalStateException
- すでにメディアリソースが対応付けられている状態で呼び出されたとき、または、すでに破棄されたメディアリソースが指定されたときに発生するjava.lang.IllegalArgumentException
- 指定メディアの再生に対応していない場合に発生するNullPointerException
- resource が null のときに発生するjava.lang.RuntimeException
- その他実行時エラーのとき発生する(フォアグラウンド再生をサポートしていない場合に FOREGROUND 指定など)public void unsetResource(MediaResource resource)
MediaPlayerInterface
内の unsetResource
resource
- 対応付けをはずすメディアリソースpublic MediaResource getResource()
MediaPlayerInterface
内の getResource
public void addMediaEventListener(MediaEventListener l)
それまでに登録されていた listener は、登録解除となります。
引数に null を指定した場合、現在登録してある listener を指定して
removeMediaEventListener()
を呼び出したのと同じ効果になります。
MediaPlayerInterface
内の addMediaEventListener
l
- 登録する MediaEventListenerpublic void removeMediaEventListener(MediaEventListener l)
現在登録されていない listener が指定された場合、無視されます。
MediaPlayerInterface
内の removeMediaEventListener
l
- 削除する MediaEventListenerpublic void play()
MediaPlayerInterface
内の play
IllegalStateException
- メディアが対応付けられていないときに発生するpublic void play(int count)
MediaPlayerInterface
内の play
count
- 再生繰返し回数IllegalStateException
- メディアが対応付けられていないときに発生する
public void stop()
MediaPlayerInterface
内の stop
IllegalStateException
- メディアが対応付けられていないときに発生するpublic void pause()
MediaPlayerInterface
内の pause
IllegalStateException
- メディアが対応付けられていないときに発生するpublic void resume()
MediaPlayerInterface
内の resume
IllegalStateException
- メディアが対応付けられていないときに発生するpublic void setAttribute(int attr, int value)
MediaPlayerInterface
内の setAttribute
attr
- 設定する属性value
- 設定する値public int getAttribute(int attr)
MediaPlayerInterface
内の getAttribute
attr
- 属性public void setTempo(int tempo)
MediaPlayerInterface
の記述: メディアの再生速度を、標準速度を 100 としたパーセンテージで設定します。 85 〜 115 程度が実用的な範囲です。 指定した値が 85 以下の場合は 85 に、115 以上の場合は 115 になります。
MediaPlayerInterface
内の setTempo
com.kddi.media.MediaPlayerInterface
からコピーされたタグ:tempo
- 再生速度public int getTempo()
MediaPlayerInterface
の記述: メディアの再生速度を、標準速度を 100 としたパーセンテージで返します。
MediaPlayerInterface
内の getTempo
com.kddi.media.MediaPlayerInterface
からコピーされたタグ:public void setPitch(int pitch)
MediaPlayerInterface
の記述: メディアの再生キーを -6 〜 +6 の範囲で設定します。 0 を標準のキーとして、-1 から -6 に向けて半音階ずつ下がり、+1 から +6 に向けて半音階ずつ上がります。 指定した値が -6 以下の場合は -6 に、6 以上の場合は 6 になります。
MediaPlayerInterface
内の setPitch
com.kddi.media.MediaPlayerInterface
からコピーされたタグ:pitch
- 再生ピッチ(キー)public int getPitch()
MediaPlayerInterface
の記述: メディアの再生キーを -6 〜 +6 の範囲で返します。 0 を標準のキーとして、-1 から -6 に向けて半音階ずつ下がり、+1 から +6 に向けて半音階ずつ上がります。
MediaPlayerInterface
内の getPitch
com.kddi.media.MediaPlayerInterface
からコピーされたタグ:public void setVolume(int volume)
MediaPlayerInterface
の記述: メディアの再生音量を 0 〜 100 の範囲で設定します。 0 が無音を表し、1 から 100 に向かって大きくなります。 指定した値が 0 以下の場合は 0 に、100 以上の場合は 100 になります。
移動機の実装により、段階ごとに丸める場合があります。
MediaPlayerInterface
内の setVolume
com.kddi.media.MediaPlayerInterface
からコピーされたタグ:volume
- 再生音量public int getVolume()
MediaPlayerInterface
の記述: メディアの再生音量を 0 〜 100 の範囲で返します。 0 が無音を表し、1 から 100 に向かって大きくなります。
MediaPlayerInterface
内の getVolume
com.kddi.media.MediaPlayerInterface
からコピーされたタグ:public void show()
MediaPlayerInterface
内の show
public void hide()
MediaPlayerInterface
内の hide
protected void showNotify()
javax.microedition.lcdui.Canvas
内の showNotify
protected void hideNotify()
javax.microedition.lcdui.Canvas
内の hideNotify
protected void paint(javax.microedition.lcdui.Graphics g)
javax.microedition.lcdui.Canvas
内の paint
g
- 描画先のグラフィックコンテキストprotected MediaPlayer instantiatePlayer(MediaResource resource)
resource
- 関連付けるメディアリソースjava.lang.IllegalArgumentException
- 再生に対応していないメディアが指定されたときに発生するIllegalStateException
- すでに破棄されたメディアリソースが指定されたときに発生するjava.lang.RuntimeException
- その他実行時エラーのときに発生する(フォアグラウンド再生をサポートしていない場合に FOREGROUND 指定など)protected MediaPlayer getPlayer()
protected int getMode()
FOREGROUND
または BACKGROUND
protected void setPlayerAttributes()
メディアプレイヤー(CMXPlayer
クラスなど)のインスタンス生成時に、
再生音量(setVolume()
で設定)などの属性を
一括設定します。
|
||||||||
フレームあり フレームなし | ||||||||
概要: 内部クラス | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |