Android携帯ゲームを作って世界に配信してみよう(3) ―― 効果音の入れ方とデータの保存処理を学ぶ
●効果音を再生するSoundPoolクラスの基本的な使い方
続いて,SoundPoolクラスを利用してタップやボールのバウンドに効果音をつける方法を説明します.基本的な流れは,次のようになります(ソース・コードはSounds.java内に存在する).
(1) 管理クラスの生成
SoundPool soundPool = new SoundPool(5, AudioManager.STREAM_MUSIC, 0);
(2) 音声ファイルの読み込み
int soundId1 = soundPool.load(context resId1, 1);
(3) 再生
int streamId1 = soundPool.play(soundId1, 1.0F, 1.0F, 0, 0, 1.0F);
(4) 再生停止 soundPool.stop(streamId1);
(5) リソースの破棄 soundPool.unload(soundId1);
(6) 管理クラスの破棄 soundPool.release();
ここでは,このうち(1)管理クラスの生成と(2)読み込み,(3)再生のAPIについて,APIドキュメントをひも解きながら紹介します.その他のメソッドについては,以下のAPIドキュメントを参照してください.
Sound Pool | Android Developers
http://developer.android.com/reference/android/media/SoundPool.html
●SoundPoolクラスのコンストラクタ
下記が,SoundPoolクラスを生成するコンストラクタです.
public SoundPool (int maxStreams, int streamType, int srcQuality)
このコンストラクタでは,読み込み音声ファイルを指定しません.読み込む音声ファイルに共通の再生動作について,設定を行います.このメソッドの引き数は,表3の通りです.
表3 SoundPoolクラス コンストラクタの引き数と戻り値
第1引き数 maxStreams | 生成したSoundPoolクラスのインスタンスの最大同時再生数を指定する |
第2引き数 streamType | 再生する音声の種類を指定する.ゲームで音声を再生する場合は,AudioManager.STREAM_MUSICを指定する.これ以外には次のような指定ができる. AudioManager.STREAM_ALARM アラーム用 AudioManager.STREAM_NOTIFICATION 通知用 AudioManager.STREAM_DTMF トーン信号音 AudioManager.STREAM_RING 着信音 AudioManager.STREAM_SYSTEM システム音 |
第3引き数 srcQuality | 再生品質を指定する引き数だが,現在のところ設定しても効果はないようだ.デフォルト値の0を指定する |