Android(kotlin) 音楽ファイル(mp3)を再生する
android.media.MediaPlayer を使うことで簡単に音楽ファイルを再生できます。
完成イメージ
作成・編集するファイル
strings.xml で表示文字列の定義
<resources> <string name="app_name">MusicPractice</string> <string name="music_start">Music start</string> <string name="music_stop">Music stop</string> </resources>
activity_main.xml で画面レイアウトの定義
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:gravity="center" android:background="#ffffff" tools:context=".MainActivity"> <Button android:id="@+id/start_music" android:text="@string/music_start" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="40dp" /> <Button android:id="@+id/stop_music" android:text="@string/music_stop" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="40dp" /> </LinearLayout>
MusicManager.kt 音再生
raw ディレクトリ(mp3 ファイル保管場所)にアクセスするため、コンテキストを受け取っています。
class MusicManager(context: Context) { private lateinit var mediaPlayer: MediaPlayer private val myContext: Context = context fun startMusic() { mediaPlayer = MediaPlayer.create(myContext, R.raw.music1) mediaPlayer.isLooping = true mediaPlayer.start() } fun stopMusic() { mediaPlayer.stop() mediaPlayer.reset() mediaPlayer.release() } }
MainActivity.kt ボタン操作
class MainActivity : AppCompatActivity() { private val musicManager: MusicManager = MusicManager(this@MainActivity) override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // Button for start music val buttonStart: Button = findViewById(R.id.start_music) // Resister listener buttonStart.setOnClickListener { musicManager.startMusic() } // Button for stop music val buttonStop: Button = findViewById(R.id.stop_music) // Resister listener buttonStop.setOnClickListener { musicManager.stopMusic() } } }
ビルド・実行
Run ボタンでエミュレーターを起動します。
"MUSIC START" ボタンをタッチすると、mp3 が再生されます。
mediaPlayer.isLooping = true としているため、再生時間が終了するとループ再生されます。
"MUSIC STOP" ボタンをタッチすると、音楽が停止します。