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

MediaPlayer()を使って簡単な音楽再生アプリが作れます。Audioを扱うものとしては他にはSoundPoolやAudioTrackがあります。
1x1.trans - [Android] 簡単なMediaPlayerで音楽を再生する


Android Studio
2021.2.1




MediaPlayer

 
MediaPlayerの特徴としては、呼び出してから再生まである程度時間がかかります。ゲームで言うとBGMを流しっぱなしには向きますが、爆発音を出したい時はタイミングが合わないかもしれません。
 
ゲームでの爆発音などは SoundPool が使えます。更に、時間遅延が無いのは AudioTrack です。それぞれ一長一短がありますので用途に合わせた使い方が必要です。
 
MediaPlayerでの音楽ファイルはassetsあるいはrawに置きます。
assetsとrawの違いは、

  • assetsフォルダー分けができる
    • たくさんファイルがあるケースではassetsが便利
  • raw:ベタにただファイルを入れる配置
     
 

assetsの設定

 
mp3ファイルを入れるため「assets」フォルダーを作ります。appを選択した状態で
「New」->「Folder」->「assets folder」からフォルダを作成して、そこにmp3ファイルを入れます。
 
1x1.trans - [Android] 簡単なMediaPlayerで音楽を再生する

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

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


 

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


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

 

サンプルコード

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


 

レイアウト
activity_main.xml


 

リソース
strings.xml

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


 

 

rawフォルダを使う

 
assetsからデータを取り出しましたが、参考のためrawフォルダに置いた場合です。
この場合mp3などの拡張子はいりません。

rawフォルダをresの下に作成して
音楽素材を入れます。
あるいは直接作ってもできます。
..\app\src\main\res\raw
 
前のコードの audioSetup() の部分のみ変更します。この場合 try catch や prepare() もいりません。
 
MainActivity.java

 

サンプル動画

 

 

実際には、メールやLineなどしながら音楽を聴くという状況が多いと思います。その場合はMediaPlayerはバックグラウンドで再生した方がいいのでServiceとNotificationを使います。

https://akira-watson.com/android/service.html

Reference:
MediaPlayer | Android Developers

シェアする

  • このエントリーをはてなブックマークに追加

フォローする