MediaPlayerを使って音楽を鳴らすには
MediaPlayerでの音再生方法は下の通り。
MediaPlayer gameBgm; gameBgm = MediaPlayer.create(this, R.raw.gameBgm); // BGMファイルを読み込み gameBgm.setLooping(true); // ループ設定 gameBgm.seekTo(0); // 再生位置を0ミリ秒に指定 gameBgm.start(); // 再生開始
MediaPlayer.startメソッドを実行すればBGMが再生され、停止したいときはMediaPlayer.stopもしくは MediaPlayer.pauseメソッドを使う。
ゲームアプリを開発していて、ゲームを開始するとゲームプレイ中のBGMが流れ、ゲームオーバーになると別のBGMを再生する処理を作ることになった。
// ゲームオーバー時にBGMを切り替える gameplayBgm.stop(); // プレイ中のBGMを停止する gameoverBgm.start(); // ゲームオーバー時のBGMを再生する
ゲームオーバー時に上のコードを実行しBGMを切り替えていたが、再度ゲームを開始したときにゲームプレイ中のBGMが再生されなかった。
回避策としてMediaPlayer.stopメソッドでBGMを止めるのではなく、MediaPlayer.pauseメソッドでBGMを停止させることにした。
// ゲームオーバー時にBGMを切り替える gameplayBgm.pause(); // プレイ中のBGMを停止する gameoverBgm.start(); // ゲームオーバー時のBGMを再生する
再度ゲームプレイ中のBGMを再び流すときはMediaPlayer.seekToメソッドでBGMをスタート位置に戻し再生した。
gameplayBgm.seekTo(0); // プレイ中のBGMをスタート位置に戻す gameplayBgm.start(); // プレイ中のBGMを再生する
またBGMが停止しているときにMediaPlayer.pauseメソッドを実行してしまうと、MediaPlayer.startメソッドを実行しても再生されないので注意。下のようにMediaPlayer.isPlayingメソッドを使い再生しているかチェックすることが出来る。
// BGMが再生されていれば停止する
if(gameBgm.isPlaying()) {
gameBgm.pause();
}
gameBgm.start();