[Android] 簡単なMediaPlayerで音楽を再生する

MediaPlayer()を使って簡単な音楽再生アプリが作れます。MediaPlayerの特徴としては、呼び出してから再生まである程度時間がかかります。ゲームで言うとBGMを流しっぱなしには向きますが、爆発音を出したい時はタイミングが合わないかもしれません。

ゲームでの爆発音などはSoundPoolが使えます。更に、時間遅延が無いのはAudioTrackです。それぞれ一長一短がありますので用途に合わせた使い方が必要。

 
mediaplayer_001

Android Studio 2.2.2
Android 7.0

 

sponsored link

MediaPlayer

 
最初に音楽ファイルをプロジェクト内に置きます。置き場所としては、resourceの res/raw/ 以下に置いたり、内部メモリやassetsに置くこともできます。

assetsとrawの違いとしては、assetsはフォルダー分けができる。rawはベタに配置の違いです。ためたくさんファイルがあるケースではassetsで種類毎に分けることができます。
 

assetsの設定

 
mp3ファイルを入れるため「assets」フォルダーを作ります。appを選択した状態で
「New」->「Folder」->「assets folder」からフォルダを作成して、そこにmp3ファイルを入れます。
 
audioplayer_1

あるいは直接フォルダーをmainの下に作ることでもできます。
..\app\src\main\assets
手順としては

  1. assetsをオープンして音楽素材を取得
  2. MediaPlayerのインスタンスを生成して
  3. 音楽素材を設定
  4. 準備ができるまで待ち
  5. 再生を始める
     

 

音量を調整する場合、アプリでボリュームを作成することもできますが、もともとある音量調整ボタンでユーザーが好みで設定できる方が無駄がなく、ユーザーにとっても便利です。そこでsetVolumeControlStreamを使います。

これを設定しないと、ボリュームでコントロールされるのは(通知音と着信音)となります。

 
まとめるとこうなります
MainActivity.java

 

BGMとして繰り返し再生させる場合は、release()でリソースを解放しないと、メモリーが圧迫されて止まりますので注意です。再生終了を検知させてもいいのですが、ここは簡単にインスタンスを生成する前にリリースさせます。

 
 

MediaPlayerをrawから取り出す

 
assetsからデータを取り出しましたが、参考のためrawフォルダに置いた場合は簡単です。
この場合mp3などの拡張子はいりません。
ただし、rawはresの下に作成して音楽素材を入れます。
..\app\src\main\res\raw
 

 
 

Reference:
MediaPlayer Refence