自作アプリにBGMを!KotlinでMediaPlayerを扱ってみる
どうも!LSSです!
ちょっと間が空きましたが、今回はKotlin記事です!
- まずは素材ファイルの用意!
- 今回の肝!
- 他にもよく使いそうなもの
- 思ったんですが、Androidアプリで何かするのって大抵…
- コード全文はこんな感じになります
- お手軽ですねぇ
- 追記:公開済みのゲームで、使用しています
- 参考書籍
自作アプリにBGMや効果音を入れる、って話をちらっと書いてはいましたが、今回は実際にKotlinでBGMを流す方法の記事となります。
記事タイトル通り、MediaPlayerっていうのを使います。
このMediaPlayerというのは手軽に音楽を鳴らしたり止めたり出来ますが、複数同時に音楽を鳴らす事ができないのでBGM向けで、複数同時に鳴らす事ができるSoundPoolが効果音向け、という位置づけです!
まずは素材ファイルの用意!
音声ファイルをAndroidStudioに入れます。
AndroidStudioの画面左で、app>res>raw>の中に入れます。
デフォルトではrawディレクトリは作られていないので、まずresの中に作ってあげる必要があります。
「res」を右クリックして「New」にマウスカーソルをのせると、更に右に候補が出てきます。
その中の「Directory」をクリックします。
すると↑こんなダイアログが出てくるので、rawと入れてOKを押せば、resの下にrawが出来ます!
あとは、別途 Windowsのエクスプローラで音声ファイル(mp3など)を右クリックでコピー、AndroidStudioのrawを右クリックして「Paste」を選択すれば、
↑これで素材の用意は完了です!
今回の肝!
MediaPlayerを使うにあたって必要な記載です。
なお、以下に出てくるmp0は任意の名前(好きに変えちゃってOK!な部分)、
plusmaniaは任意の音声ファイルのファイル名(から拡張子を除いたもの)です。
MediaPlayerのインスタンスを、Activity直下で宣言
lateinit var mp0:MediaPlayer
再生する音声ファイルを、onCreate内で設定 あわせて、ループ再生する・しないを指定
mp0= MediaPlayer.create(this,R.raw.plusmania)
mp0.isLooping=true
再生を開始させたいところに記載
mp0.start()
onDestroy内に記載
mp0.release()
他にもよく使いそうなもの
再生を停止させたいところに記載
mp0.stop()
音声ファイルの再生開始位置を指定(0で曲の最初から。引数のInt型の整数値で指定します。)
mp0.seekTo(0)
思ったんですが、Androidアプリで何かするのって大抵…
Androidアプリ開発初心者ですが、MediaPlayerに限らず、
- まずActivity直下でlateinit varで存在を宣言。
- onCreate内で初期設定。
- 使いたいタイミング(ボタンのonClickに設定した関数内など)で実行。
- onDestroy内で.release()で解放。
で、大抵の事は運ぶように思えてきました。
※場合によっては、onCreate・onDestroyじゃなくてonResume・onPauseだったり、onStart・onStopだったりするかもですが。
コード全文はこんな感じになります
↓MediaPlayer関連の部分を赤文字にしてみました。
package jp.littlestrangesoftware.a20191109music
import android.media.MediaPlayer
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
class MainActivity : AppCompatActivity() {
lateinit var mp0:MediaPlayer
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
mp0= MediaPlayer.create(this,R.raw.plusmania)
mp0.isLooping=true
mp0.start()
}
override fun onDestroy() {
mp0.release()
super.onDestroy()
}
}
お手軽ですねぇ
宣言1行、初期設定2行、あと使用するのは短い1行コード。
最初の頃だったらこの、宣言や設定をそれぞれ事前に行うの正直メンドクセって感覚がありましたが、最近はこのぐらいが普通って感じに思えてきましたw
というところで、今回はここまで!
SoundPoolを使って効果音を鳴らすのは、また後日記事にしますが、MediaPlayerよりもうちょっとだけメンドクサイですw
追記:公開済みのゲームで、使用しています
GooglePlayで公開中の足し算ゲーム、
のBGM演奏に、このMediaPlayerを使用しています。
実装したらどんな感じなのか見て(聴いて?)みたい方、DLしてみてねw(宣伝)
参考書籍
↑サンプルコードは全部Javaですが、Androidで「あれやりたい」「これやりたい」がぎっしり詰まっている本。
辞書的に重宝しています^^
ではまた!次回もよろしくです!!