[Android & Kotlin] 音楽再生 MediaPlayer

MediaPlayer()を使って簡単な音楽再生アプリが作れます。Audioを扱うものとしては他にはSoundPoolやAudioTrackがあります。

Android Studio
2024.1.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 & Kotlin] 音楽再生 MediaPlayer

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

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

 

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

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

 

サンプルコード

 

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

 

レイアウト
activity_main.xml

 

リソース
strings.xml

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

 

1x1.trans - [Android & Kotlin] 音楽再生 MediaPlayer

 

rawフォルダを使う

 

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

rawフォルダをresの下に作成して
音楽素材を入れます。
あるいは直接作ってもできます。
..\app\src\main\res\raw
  
MainActivity.kt

 

サンプル動画

 

 

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

service 00 100x100 - [Android & Kotlin] 音楽再生 MediaPlayer
Servce はバックグラウンドで作業をさせたい場合に使います。システムは直ぐにスリープに入れてしまいます。それでも裏で色々やりたい場合に有...

Reference:
MediaPlayer | Android Developers

シェアする

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

フォローする