Mt.Log

編入、編入後の勉強

【Kotlin】端末内の音楽でMediaPlayerをつくってみる

はじめに

前回端末内の音楽をListViewに表示してみました。
見ていない方はこちらの記事を見てください。

mtryo1021.hatenablog.com

今回はそれをつかって音楽を再生するMediaPlayerをつくってみたいと思います。

準備

今回は再生はListViewのアイテムを押したとき、停止はボタンで操作しようと思いますのでLayoutでボタンを配置します。
ボタンの位置は適当でいいです。IDはstopButtonとしています。

クリックリスナーの作成

再生にはMediaPlayerをつかうのでMainActivityの上の方でインスタンスをつくります。

MainActivity.kt

private val mp = MediaPlayer()

リスナーはOnCreate()内でつくります。
まず、ListViewのリスナーです。

MainActivity.kt

listView.setOnItemClickListener { parent, view, position, id ->
            //再生している曲を一旦停止
            mp.pause()
            mp.seekTo(0)
            //押されたアイテムの情報を取得
            val songTitle = view.findViewById<TextView>(R.id.titleText).text.toString()
            val songUri = view.findViewById<TextView>(R.id.uriText).text.toString()
            mp.reset()
            //曲をセット
            mp.setDataSource(songUri)
            mp.prepare()
            //曲を再生
            mp.start()
            toast("Play: ${songTitle}")
}

再生自体は、mp.start()でできますがそのまえにこれまで再生されている曲を停止します。
これをしないと連続でListViewを押したときアプリが停止します。
次に、停止ボタンのリスナーをつくります。

MainActivity.kt

stopButton.setOnClickListener {
            mp.pause()
            mp.seekTo(0)
            toast("Stop")
}

まとめ

これだけです。
簡単でしたが、これで終わります。
目覚ましなんかで使いたいときはintentをつかってURLを渡してくれば大丈夫です。
ではでは...