2013年3月15日金曜日

BGMの再生(MediaPlayer)

BGMの再生方法について記します。

ここでいうBGMは効果音SEではなく、バックで流れている
何回もLoopしている音楽です。

効果音には効果音に適している命令がありますので、別途案内いたします。

【サウンドファイルの配置】
プロジェクトフォルダ内の『res』内に『raw』フォルダを作成
rawフォルダ内にファイルを格納

【ファイルの読み込み】
MediaPlayer mMediaPlayer = new MediaPlayer.create(Context, R.raw.ファイル名);


MediaPlayer生成時にコンテクスト(getApplicationContext()とかthisとか)
とファイルパスを指定します。

MP3Extractor
unable to resync. signalling end of stream

ファイル形式がMP3の場合にエラーLogが出力される場合がありますが、
基本的には気にしなくて大丈夫です。気になるようでしたら、ファイル形式を変えましょう!!


【再生準備】
// ループ設定
mMediaPlayer .setLooping(true);
// 再生位置を0ミリ秒に指定
mMediaPlayer .seekTo(0);

ループをtrueにすると、
曲が終わったら、また、最初から曲が流れます。。


【再生・停止・一時停止】

//Music Start!!
mMediaPlayer .start();
//一時停止
mMediaPlayer.pause();
//停止

mMediaPlayer.stop();

【終了処理】
mMediaPlayer.release();
mMediaPlayer = null;

少し面倒ですが、オブジェクトの解放が必要となります。
しっかりと終了しないと、アプリを終わらせたつもりでも、
いつまでもBGMが流れてしまうので、注意ください。

【再生中かの判定】
mMediaPlayer.isPlaying() 

再生中なら、trueが返ってきます。
曲を停止している最中にもう一度停止したりすると、
startしても曲が再生されないことがあるので、

//再生中かの判定
if (mMediaPlayer.isPlaying()){
    //一時停止
    mMediaPlayer.pause();
}

こんな感じで使います。


1つとか2つの音楽ファイルだけでしたら、
メモリもあんまり使わないのですが、
何十曲もあると、割とメモリを使うので
ファイルを取り込むタイミングや破棄する
タイミングをいろいろ試行錯誤しましょう

0 件のコメント:

コメントを投稿