MediaPlayer()を使って簡単な音楽再生アプリが作れます。Audioを扱うものとしては他にはSoundPoolやAudioTrackがあります。
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ファイルを入れます。
あるいは直接フォルダーをmainの下に作ることでもできます。
..\app\src\main\assets
手順としては
- assetsをオープンして音楽素材を取得
- MediaPlayerのインスタンスを生成して
- 音楽素材を設定
- 準備ができるまで待ち
- 再生を始める
音量を調整する場合、アプリでボリュームを作成することもできますが、もともとある音量調整ボタンでユーザーが好みで設定できる方が無駄がなく、ユーザーにとっても便利です。そこで setVolumeControlStream を使います。
これを設定しないと、ボリュームでコントロールされるのは(通知音と着信音)となります。
サンプルコード
まとめるとこうなります
MainActivity.kt
レイアウト
activity_main.xml
リソース
strings.xml
BGMとして繰り返し再生させる場合は、release()でリソースを解放しないと、メモリーが圧迫されて止まりますので注意です。再生終了を検知させてもいいのですが、ここは簡単にインスタンスを生成する前にリリースさせます。
rawフォルダを使う
assetsからデータを取り出しましたが、参考のためrawフォルダに置いた場合です。
この場合mp3などの拡張子はいりません。
rawフォルダをresの下に作成して
音楽素材を入れます。
あるいは直接作ってもできます。
..\app\src\main\res\raw
MainActivity.kt
サンプル動画
実際には、メールやLineなどしながら音楽を聴くという状況が多いと思います。その場合はMediaPlayerはバックグラウンドで再生した方がいいのでServiceとNotificationを使います。
- 関連ページ
- 簡単なMediaPlayerで音楽を再生
- WAV音声ファイルをAudioTrackで再生
- SoundPoolで効果音を鳴らす
Reference:
MediaPlayer | Android Developers