Objectcom.nttdocomo.ui.AudioPresenter
音声のメディアデータの、再生オブジェクトを定義します。 メディア再生クラスは、音を出すメディアデータを再生するためのプレゼンタです。 リスナーを登録することによって、演奏の状態の通知を受けることができます。
端末で再生できないようなメディアデータをセットした場合の振舞は機種依存で、
UIException が発生する場合があります。
属性の設定は setAttribute(int, int) メソッドを使用します。
setData(MediaData) メソッドと
setSound(MediaSound) メソッドは、
1つのプレゼンタオブジェクトに対して排他的に使用します。
setData メソッドでメディアデータを設定してから
setSound メソッドでサウンドデータを設定したり、
その逆をしたりすることはできません。
同じメソッドを複数回呼出した場合は、最後に設定したデータが有効になります。
[DoJa-3.0 (505i) 以降]
DoJa-3.0 (505i) 以降では上記の排他使用の制限はありません。
いずれかのメソッドにより最後に設定されたデータが有効になります。
[DoJa-2.0 以降]
再生中にアプリケーションがサスペンドした場合、再生は停止します。
すなわち、stop() メソッドが呼ばれたのと同じ状態になります。
[DoJa-3.0 (505i) 以降]
AudioPresenterの状態管理においては、
一時停止中も再生中と同じ状態であると判断されます。
例えば、同時再生数の管理においては、
一時停止中のAudioPresenterも再生中として扱われます。
また、例えば再生中にサスペンドが発生したり、
stop メソッドが呼ばれた場合には停止しますが、
一時停止中でも同じです。
[DoJa-3.0 (505i) 以降]
ポート指定の概念が導入されています。
ポート指定が行われているAudioPresenterと、
ポート指定が行われていないAudioPresenterは同時には再生されず、
優先順位に関係なく後から再生を指示されたほうが優先されます。
例えば、
ポート指定が行われているAudioPresenterを再生中に
ポート指定が行われていないAudioPresenterの再生を指示すると、
再生に成功しなくとも、
再生中のAudioPresenterは優先順位に関係なく停止します。
PhoneSystem.playSound(int) が呼び出された場合、
ポート指定がなく MAX_PRIORITY が指定された
AudioPresenterの再生が指示されたように振舞います。
[DoJa-3.5 (900i) 以降]
FOMA 端末で SMF の再生と MFi の再生の両方をサポートしている場合であっても、
SMF と MFi の同時再生が可能かどうかは機種依存です。
同時再生が不可能な場合は、後から再生しようとしたものについて
play() メソッドが呼ばれた時に
「実装がサポートしている以上のリソースを使用する」
という理由により UIException(BUSY_RESOURCE) が発生します。
AUDIO_COMPLETE、AUDIO_PLAYING、AUDIO_STOPPED、
AUDIO_PAUSED、AUDIO_RESTARTED、AUDIO_SYNC
の各イベントタイプのイベントが発生することを保証します。
AUDIO_COMPLETE、AUDIO_PLAYING、AUDIO_STOPPED、
AUDIO_PAUSED、AUDIO_RESTARTED、AUDIO_SYNC、
AUDIO_LOOPED の各イベントタイプのイベントが発生することを保証します。
PhoneSystem.playSound(int)
の同時再生はサポートされない場合があります。その場合、
既に playSound(int) により標準サウンド A を再生中に、
別の標準サウンド B を再生しようとすると、標準サウンド A が停止し、
代わりに標準サウンド B が再生されます。
MediaSound,
MediaData,
MediaListener| フィールドの概要 | |
static int |
ATTR_SYNC_OFF
同期イベントの属性値で、同期イベントを発生させないことを表します(=0)。 |
static int |
ATTR_SYNC_ON
同期イベントの属性値で、同期イベントを発生させることを表します(=1)。 |
static int |
AUDIO_COMPLETE
演奏が終了したことを示すイベントタイプです (=3)。 |
static int |
AUDIO_LOOPED [iアプリオプションAPI]
演奏がループしたことを示すイベントタイプです(=7)。 |
static int |
AUDIO_PAUSED
演奏が一時停止したことを示すイベントタイプです(=5)。 |
static int |
AUDIO_PLAYING
演奏が開始されたことを示すイベントタイプです (=1)。 |
static int |
AUDIO_RESTARTED
演奏が再開したことを示すイベントタイプです(=6)。 |
static int |
AUDIO_STOPPED
演奏が中断されたことを示すイベントタイプです (=2)。 |
static int |
AUDIO_SYNC
曲データの同期イベントを示すイベントタイプです(=4)。 |
static int |
CHANGE_TEMPO
メディア再生時のテンポを示す属性です (=5)。 |
static int |
LOOP_COUNT [iアプリオプションAPI]
メディア全体のループ再生回数を示す属性です (=6)。 |
static int |
MAX_OPTION_ATTR
オプションのオーディオ属性の最大値 (=255)。 |
static int |
MAX_PRIORITY
優先順位の属性値で、最も高い優先順位を表します (=10)。 |
protected static int |
MAX_VENDOR_ATTR
ベンダ定義属性の種類の最大値(=127)。 |
protected static int |
MAX_VENDOR_AUDIO_EVENT
ベンダ定義のイベントの最大値(=127)。 |
static int |
MIN_OPTION_ATTR
オプションのオーディオ属性の最小値 (=128)。 |
static int |
MIN_PRIORITY
優先順位の属性値で、最も低い優先順位を表します (=1)。 |
protected static int |
MIN_VENDOR_ATTR
ベンダ定義属性の種類の最少値(=64)。 |
protected static int |
MIN_VENDOR_AUDIO_EVENT
ベンダ定義のイベントの最少値(=64)。 |
static int |
NORM_PRIORITY
優先順位の属性値で、通常の優先順位を表します (=5)。 |
static int |
PRIORITY
メディアデータの再生の優先順位を示す属性です(=1)。 |
static int |
SET_VOLUME
ボリュームを示す属性です(=4)。 |
static int |
SYNC_MODE
メディアデータの再生と同期してイベントを発生させるかどうかを示す 属性です(=2)。 |
static int |
TRANSPOSE_KEY
メディア再生時の音程の変化を示す属性です(=3)。 |
| コンストラクタの概要 | |
protected |
AudioPresenter()
アプリケーションが直接このクラスのインスタンスを生成することはできません。 |
| メソッドの概要 | |
Audio3D |
getAudio3D()
プレゼンタに関連付けて 3D サウンドの制御を行うオブジェクトを取得します。 |
static AudioPresenter |
getAudioPresenter()
オーディオ再生オブジェクトを取得します。 |
static AudioPresenter |
getAudioPresenter(int port)
再生するポート番号を指定してオーディオ再生オブジェクトを取得します。 |
static AudioTrackPresenter |
getAudioTrackPresenter() [iアプリオプションAPI]
動画のオーディオトラック再生オブジェクトを取得します。 |
int |
getCurrentTime()
曲頭からの演奏時間をms単位で返します。 |
MediaResource |
getMediaResource()
現在セットされているメディアリソースを取得します。 |
int |
getTotalTime() [iアプリオプションAPI]
曲全体の演奏時間をms単位で返します。 |
void |
pause()
メディアデータの再生を一時停止します。 |
void |
play()
メディアデータの再生を開始します。 |
void |
play(int time)
メディアデータの特定の位置からの再生を開始します。 |
void |
restart()
メディアデータの再生を再開します。 |
void |
setAttribute(int attr,
int value)
再生方法に関する属性値を設定します。 |
void |
setData(MediaData data) [iアプリオプションAPI]
メディアデータをセットします。 |
void |
setMediaListener(MediaListener listener)
リスナを登録します。 |
void |
setSound(MediaSound sound)
メディアサウンドをセットします。 |
void |
setSyncEvent(int channel,
int key)
チャンネルとキーに対応するノートメッセージを同期イベントとして設定します。 |
void |
stop()
メディアデータの再生を停止します。 |
| クラス Object から継承したメソッド |
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| フィールドの詳細 |
public static final int PRIORITY
NORM_PRIORITYです。
[DoJa-2.x のみ]
優先順位が同じサウンドが複数あった場合にどれが優先されるかは機種依存です。
[DoJa-3.0 (505i) 以降]
優先順位に基づく再生制御についてはクラス説明を参照してください。
[DoJa-2.x のみ]
端末によってはサポートされない場合があります。
setAttribute(int, int) の引数に指定された場合、未サポート端末では、その設定は無視されます。
[DoJa-3.0 (505i) 以降]
再生中に設定した場合、設定は無視されます。
次回以降の再生にも反映されません。
public static final int MIN_PRIORITY
public static final int NORM_PRIORITY
public static final int MAX_PRIORITY
public static final int SYNC_MODE
[DoJa-2.x のみ]
setAttribute(int, int) の引数に指定された場合、未サポート端末では、その設定は無視されます。
public static final int ATTR_SYNC_OFF
public static final int ATTR_SYNC_ON
public static final int TRANSPOSE_KEY
再生開始後に設定した場合はその時点から音程が変化します。
public static final int SET_VOLUME
ボリュームを示す属性です(=4)。
属性値にはメディアデータのボリュームに対する相対値(%)(0〜100)を指定します。
指定しなかった場合に再生される音量に対して、
実際に再生される音量のパーセンテージを指定します。
指定しない場合は100(%)です。
setAttribute(int, int) メソッドにおいて
0〜100以外の値を設定しようとした場合、
IllegalArgumentExceptionが発生します。
このボリュームの設定は、設定したプレゼンタの全ての MIDI チャネル、 ならびに、全てのオーディオチャネルに影響を及ぼします。
再生開始後に設定した場合はその時点からボリュームが変化します。
public static final int CHANGE_TEMPO
ミニマムスペックでは25から400の値が指定できますが、 変化後のテンポが再生可能なテンポの範囲を超えた場合、 その上限または下限のテンポで再生されます。
再生開始後に設定した場合はその時点からテンポが変化します。
public static final int LOOP_COUNT [iアプリオプションAPI]
メディア全体のループ再生回数を示す属性です (=6)。 サウンドデータにループ指定が含まれる場合はそれらのループも行ったうえで、 曲の末尾に達したら再度先頭から再生することを指定します。 すなわち、サウンドデータのループ指定で無限ループしている場合は曲の末尾に到達しないため、 この属性によるループ指定は考慮されないことになります。
属性値にはループ回数を指定します。 ループを行わず、通常通りに再生する場合はループ回数として 0 を指定します。 ループ回数として 1 を指定した場合は、一度メディアの末尾まで再生した後、 もう一度先頭からメディアの再生を行います。 すなわち、ループ回数として 1 を指定した場合は 2 回再生することになります。 同様に、ループ回数として n を指定した場合は n 回末尾から先頭に戻って再生するため、 トータルで n + 1 回再生することになります。 また、ループ回数として -1 を指定した場合は無限にループして再生します。
setAttribute(int, int) メソッドにおいて
-2 以下を設定しようとした場合、IllegalArgumentExceptionが発生します。
ループ回数として指定可能な数は、少なくとも 255 以上であることが保証されています。 端末がサポートしているループ回数以上の値が指定された場合は、 端末がサポートしているループ回数に切り捨てられます。
再生中に設定した場合、設定した値は無視されます。 すなわち、設定時の再生でも次回以降の再生でもループ回数の指定は反映されません。
なお、セットアップ小節を含む SMF の場合は、 曲の末尾から先頭に戻って再生する際にはセットアップ小節を飛ばして再生します。 すなわち、セットアップ小節は無視され、セットアップ小節に含まれるイベントも再生されません。
protected static final int MIN_VENDOR_ATTR
protected static final int MAX_VENDOR_ATTR
public static final int AUDIO_PLAYING
public static final int AUDIO_STOPPED
public static final int AUDIO_COMPLETE
[DoJa-5.0 (903i) 以降]
LOOP_COUNT 属性のループ指定によって曲の末尾から曲の先頭に戻る際には発生しません。
public static final int AUDIO_SYNC
[DoJa-2.x のみ]
端末によってはサポートされない場合があります。
public static final int AUDIO_PAUSED
[DoJa-2.x のみ]
端末によってはサポートされない場合があります。
public static final int AUDIO_RESTARTED
[DoJa-2.x のみ]
端末によってはサポートされない場合があります。
public static final int AUDIO_LOOPED [iアプリオプションAPI]
演奏がループしたことを示すイベントタイプです(=7)。
LOOP_COUNT 属性のループ指定によって曲の末尾から曲の先頭に戻る際に発生します。
サウンドデータに含まれるループ指定によってループする際には発生しません。
protected static final int MIN_VENDOR_AUDIO_EVENT
protected static final int MAX_VENDOR_AUDIO_EVENT
public static final int MIN_OPTION_ATTR
public static final int MAX_OPTION_ATTR
| コンストラクタの詳細 |
protected AudioPresenter()
| メソッドの詳細 |
public static AudioPresenter getAudioPresenter()
UIException - [DoJa-1.0 のみ] オーディオ再生のためのリソースが確保できない場合に発生します(NO_RESOURCES または BUSY_RESOURCE)。
public static AudioPresenter getAudioPresenter(int port)
port - ポート番号を指定します。
0〜(同時再生可能数-1)のポート番号が指定できます。
IllegalArgumentException - 引数 port に負数や、同時再生可能数以上の値を指定した場合に発生します。
public static AudioTrackPresenter getAudioTrackPresenter() [iアプリオプションAPI]
動画のオーディオトラック再生オブジェクトを取得します。 このメソッドによって得られたオブジェクトには、 オーディオトラックのみで構成された動画のみを設定することができます。
動画のオーディオトラック同士は、並列再生の対象外です。 そのため、このメソッドを複数回呼び出した場合、 常に同じオブジェクトへの参照が返されます。
動画のオーディオトラックのみの再生をサポートしていない実装も存在します。 その場合は、このメソッドを呼び出すと UnsupportedOperationException が発生します。
UnsupportedOperationException - 動画のオーディオトラックのみの再生をサポートしていない場合に発生します。
public int getCurrentTime()
曲頭からの演奏時間をms単位で返します。
[DoJa-3.0 (505i) 以降]
メソッドが呼ばれた時点で再生しているポイントの
メディアサウンドの曲頭からの時間を返します。
すなわち、メディアサウンドを本来のテンポで一時停止や停止せずに再生した場合に
曲の先頭からそのポイントに到達するまでにかかる経過時間を返します。
[DoJa-5.0 (903i) 以降]
メディアデータがセットアップ小節を含む場合、
セットアップ小節の再生にかかる時間はこのメソッドで返される経過時間には含まれません。
UIException -
[DoJa-3.0 (505i) 以降] メディアデータがセットされていない場合に発生します
(ILLEGAL_STATE)。
UIException -
[DoJa-3.0 (505i) 以降] メディアデータがuse()されていない場合に発生します
(ILLEGAL_STATE)。
getTotalTime()public int getTotalTime() [iアプリオプションAPI]
曲全体の演奏時間をms単位で返します。
メディアサウンドを本来のテンポで一時停止や停止せずに再生した場合に
曲の先頭から曲の末尾に到達するまでにかかる経過時間を返します。
なお、経過時間には LOOP_COUNT の指定は含まれません。
また、メディアデータがセットアップ小節を含む場合、
セットアップ小節の再生にかかる時間はこのメソッドで返される経過時間には含まれません。
UIException - メディアデータがセットされていない場合に発生します(ILLEGAL_STATE)。
UIException - メディアデータがuse()されていない場合に発生します(ILLEGAL_STATE)。
getCurrentTime()public MediaResource getMediaResource()
MediaPresenter 内の getMediaResourcepublic void play()
AUDIO_PLAYINGでリスナが起動されます。
データを最後まで再生したら自動的に停止します。停止したとき、
リスナが登録されていた場合、イベントタイプAUDIO_COMPLETEでリスナが
起動されます。
再生中に play メソッドが呼ばれた場合は、再生を停止して再び先頭から再生を開始します。
MediaPresenter 内の playUIException - [DoJa-2.0 以降] メディアデータがセットされていない場合に発生します(ILLEGAL_STATE)。
UIException - [DoJa-2.0 以降] メディアデータがuse()されていない場合に発生します(ILLEGAL_STATE)。
UIException - [DoJa-2.0 以降] 実装がサポートしている以上のリソースを使用する場合に発生します(BUSY_RESOURCE)
UIException - [DoJa-2.0 以降] オーディオ再生のためのリソースが確保できない場合に発生します(NO_RESOURCES)
UIException - ネイティブ側で再生開始に失敗した場合に発生します(ILLEGAL_STATE)。
UIException -
[DoJa-2.1 以降] 音声・テレビ電話通話中に呼び出された場合に発生します
(BUSY_RESOURCE)。
UIException - [DoJa-5.0 (903i) 以降]
音楽プレイヤーを優先モードで実行中に呼び出された場合に発生します
(BUSY_RESOURCE)。
UIException -
[DoJa-4.1 (902iS) 以降]
PTT 呼通信中の場合に発生します(BUSY_RESOURCE)。
public void setAttribute(int attr,
int value)
MediaPresenter 内の setAttributeattr - 設定する属性を指定します。value - 設定する属性の値を指定します。
IllegalArgumentException - [DoJa-2.0 以降] 引数 attr で指定された有効な属性に対して、引数 value に不正な値が指定された場合に発生します。
public void setSyncEvent(int channel,
int key)
setAttribute(int, int)メソッドで SYNC_MODE を ATTR_SYNC_ON に設定することにより、
設定されたノートメッセージに対応する音が鳴るのと同時にイベントタイプAUDIO_SYNCでリスナが起動される様になります。
AUDIO_SYNCイベントの精度は100ms以下とし、その精度以内で次のAUDIO_SYNCイベントが発生した場合、
そのAUDIO_SYNCイベントは破棄されます。
端末でサポートする範囲外のチャンネルやキーが指定された場合は何も行わずに無視されます。
プレゼンタに登録できる同期イベントは1つだけです。
このメソッドを複数回呼出した場合、最後に設定した同期イベントだけが有効です。
[DoJa-2.x のみ]
端末によってはサポートされない場合があります。
サポートされない場合、本メソッドの呼び出しは無視されます。
[DoJa-3.0 (505i) 以降]
再生中にこのメソッドを呼び出した場合、設定は無視されます。
次回以降の再生にも反映されません。
引数の値のチェックは行われません。
有効な値が指定されない場合、同期イベントは発生しません。
TRANSPOSE_KEYによる音程変更の影響を受けません。
channel - 同期イベントに利用するチャンネルを指定します。
0(1ch)〜15(16ch)の値が有効です。key - 同期イベントに利用するキーを指定します。端末がサポートするMFiの有効キー範囲は21〜119(MFiのデータとしては−24〜74)、MIDIの有効キー範囲は0〜127です。public void setData(MediaData data) [iアプリオプションAPI]
MediaPresenter 内の setDatadata - メディアデータを指定します。
UnsupportedOperationException - 端末がこのメソッドをサポートしていない場合に発生します。
UIException - 再生中にこのメソッドを呼び出そうとした場合に発生します(ILLEGAL_STATE)。
NullPointerException - 引数 data に null が指定された場合に発生します。
UIException - 引数 data にシステムが提供している以外のメディアデータ
(MediaData インタフェースを実装した未知のクラスのオブジェクト)
が指定された場合に発生します(UNSUPPORTED_FORMAT)。
UIException - [DoJa-3.0 (505i) 以降] セットされたメディアデータがuse()されていない場合に発生します(ILLEGAL_STATE)。
public void setMediaListener(MediaListener listener)
MediaPresenter 内の setMediaListenerlistener - 登録するリスナを指定します。public void setSound(MediaSound sound)
sound - メディアサウンドを指定します。
UIException - 再生中にこのメソッドを呼び出そうとした場合に発生します(ILLEGAL_STATE)。
NullPointerException - 引数 sound に null が指定された場合に発生します。
UIException - システムが提供している以外のメディアサウンド
(MediaSound インタフェースを実装した未知のクラスのオブジェクト)
が指定された場合に発生します(UNSUPPORTED_FORMAT)。
UIException - セットされたメディアサウンドがuse()されていない場合に発生します(ILLEGAL_STATE)。
UIException - 引数 sound に端末が再生できないようなメディアサウンドが指定された場合に発生します(UNSUPPORTED_FORMAT)。
public void stop()
AUDIO_STOPPEDでリスナが起動されます。
停止しているときにstopメソッドが呼ばれた場合、なにもしません。
MediaPresenter 内の stopUIException - [DoJa-2.0 以降] メディアデータがセットされていない場合に発生します(ILLEGAL_STATE)。
UIException - [DoJa-2.0 以降] メディアデータがuse()されていない場合に発生します(ILLEGAL_STATE)。
public void play(int time)
AUDIO_PLAYINGでリスナが起動されます。
データを最後まで再生したら自動的に停止します。
停止したとき、リスナが登録されていた場合、イベントタイプ
AUDIO_COMPLETEでリスナが 起動されます。
再生中に play メソッドが呼ばれた場合は、
再生を停止して再び特定の位置から再生を開始します。
[DoJa-2.x のみ]
[DoJa-3.0 (505i) 以降]
本来のテンポで一時停止や停止せずに曲頭から再生した場合に
指定した経過時間がかかるポイントから再生を開始します。
メディアデータの本来のテンポでの再生時間の長さ以上の値を
引数 time に指定した時にリスナが登録されていた場合、
イベントタイプAUDIO_PLAYINGでリスナが起動された後、
イベントタイプAUDIO_COMPLETEでリスナが起動されます。
なお、再生時間の長さとは、LOOP_COUNT を 0 とした場合の 1 曲の先頭から末尾までの時間です。
time - 再生を開始する位置をメディアデータの先頭からのミリ秒で指定します。
UIException - メディアデータがセットされていない場合に発生します(ILLEGAL_STATE)。
IllegalArgumentException - [DoJa-3.0 (505i) 以降] 引数 time に 0 未満の値が指定された場合に発生します。
UIException - メディアデータがuse()されていない場合に発生します(ILLEGAL_STATE)。
UIException - 実装がサポートしている以上のリソースを使用する場合に発生します(BUSY_RESOURCE)。
UIException - オーディオ再生のためのリソースが確保できない場合に発生します(NO_RESOURCES)。
UIException - ネイティブ側で再生開始に失敗した場合に発生します(ILLEGAL_STATE)。
UIException -
[DoJa-2.1 以降] 音声・テレビ電話通話中に呼び出された場合に発生します
(BUSY_RESOURCE)。
UIException - [DoJa-5.0 (903i) 以降]
音楽プレイヤーを優先モードで実行中に呼び出された場合に発生します
(BUSY_RESOURCE)。
UIException -
[DoJa-4.1 (902iS) 以降]
PTT 呼通信中の場合に発生します(BUSY_RESOURCE)。
public void pause()
AUDIO_PAUSED でリスナが起動されます。
再生を再開するには restart() メソッドを使用します。
停止しているときにpauseメソッドが呼ばれた場合、なにもしません。
[DoJa-2.x のみ]
端末によって、あるいはメディアデータの種類によって一時停止・再開が
サポートされない場合があります。
サポートされない場合、本メソッドの呼び出しは無視されます。
UIException - メディアデータがセットされていない場合に発生します(ILLEGAL_STATE)。
UIException - メディアデータがuse()されていない場合に発生します(ILLEGAL_STATE)。
public void restart()
AUDIO_RESTARTED でリスナが起動されます。
再生が pause() メソッドによって一時停止されている時以外は
なにもしません。
[DoJa-2.x のみ]
UIException - メディアデータがセットされていない場合に発生します(ILLEGAL_STATE)。
UIException - メディアデータがuse()されていない場合に発生します(ILLEGAL_STATE)。
UIException - 実装がサポートしている以上のリソースを使用する場合に発生します(BUSY_RESOURCE)。
UIException - オーディオ再生のためのリソースが確保できない場合に発生します(NO_RESOURCES)。
UIException - ネイティブ側で再生再開に失敗した場合に発生します(ILLEGAL_STATE)。
public Audio3D getAudio3D()
プレゼンタに関連付けて 3D サウンドの制御を行うオブジェクトを取得します。 このメソッドでは、プレゼンタで再生する MIDI と PCM の全てのチャンネルを対象に 3D サウンドの制御を行うためのコントローラオブジェクトを取得します。
このメソッドが初めて呼ばれた場合はオブジェクトを生成して返します。 以後、常に同じオブジェクトへの参照を返します。