Android携帯ゲームを作って世界に配信してみよう(3) ―― 効果音の入れ方とデータの保存処理を学ぶ
●音声ファイルを読み込む:SoundPoolクラスのloadメソッド
次は,音声ファイルを読み込む,SoundPoolクラスのloadメソッドを解説します.
public int load (Context context, int resId, int priority)
loadメソッドは,引き数が異なるいくつかのパターンが用意されていますが,今回は,アプリケーション・ファイル(*.APK)に同梱したファイルから音声を読み込むメソッドを紹介します.引き数と戻り値は表4の通りです.
表4 SoundPoolクラス loadメソッドの引き数と戻り値
第1引き数 context | コンテキストを指定する |
第2引き数 resId | 読み込みたいファイルのリソースID(整数値)を指定する |
第3引き数 priority | 再生品質を指定する引数だが,現在のところ設定しても効果はないようだ.今後の互換性の点で,1を指定することが推奨されている |
戻り値 | 音声ID(soundID/整数値)を返す.音声IDは,読み込んだ音声を管理するものである.特定の音声の再生や停止,解放をする際に,音声IDを指定する |
●音声ファイルの再生:SoundPoolクラスのplayメソッド
public final int play (int soundID, float leftVolume, float rightVolume, int priority, int loop, float rate)
次は,音声の再生の方法です.playメソッドで,音声ファイルを読み込んだ際に取得した音声ID(soundID)を利用して,再生したい音声を指定しています.なお,コンストラクタで指定した同時再生音声数を超えると再生されている音声が中断します.引き数と戻り値は表5を参照してください.
表5 SoundPoolクラス playメソッドの引き数と戻り値
soundID | loadメソッドが返した音声IDを使って再生したい音声を指定する |
leftVolume | 左のボリューム (0.0~1.0) |
rightVolume | 右のボリューム (0.0~1.0) |
priority | 再生優先順位を指定する.0が一番低い優先順位である |
loop | ループ回数を指定する. 0: ループしない -1: 無限ループ 1~: 指定した回数だけループする |
rate | 再生ピッチを,0.5(1/2速) ~ 2.0(倍速)の範囲で指定する.標準は 1.0である |
戻り値 | 再生が成功すると,再生ID(streamID)を返す.この再生IDは,必ず0以外の整数値である.再生できなかった場合は,0が返る.この再生IDを使って,再生停止等の再生管理を行う |