【Kotlin/Android】MediaPlayerで音声/動画ファイルを再生する方法!

この記事からわかること
- Android Studio/Kotlinで音楽ファイルを再生する方法
- MediaPlayerの使い方
index
[open]
\ アプリをリリースしました /
環境
- Android Studio:Koala
- Kotlin:1.9.0
Androidで音楽/動画ファイルを再生する方法
Androidアプリで音声や動画などのメディアファイルを再生するにはMediaPlayer
を使用します。再生したメディアの一時停止や巻き戻し、早送りなどのコントロールを行うことが可能で、ローカルファイルだけでなくストリーミングでの再生にも対応しています。
サポート対象のメディア形式は以下を参考にしてください。
MediaPlayerの使い方
MediaPlayer
を使用する際には以下のステップを踏みます。
- リソースファイルを読み込んだMediaPlayerインスタンスを生成
- メディアの再生など操作
- リソースを解放
MediaPlayer
はリソースを多く消費するため不要になったタイミングで適切にリソースを解放する必要があります。
1.リソースファイルを読み込んだMediaPlayerインスタンスを生成
val mediaPlayer = MediaPlayer.create(context, R.raw.sample_audio)
2.メディアの再生など操作
// 再生
mediaPlayer.start()
3.リソースを解放
// リソースを解放
mediaPlayer.release()
メソッド一覧
メソッド | 説明 |
---|---|
create(context, resId) | リソースIDからMediaPlayerインスタンスを作成 |
setDataSource(path) | ローカルまたはリモートのデータソースを設定 |
prepare() | 同期的に再生準備 |
prepareAsync() | 非同期的に再生準備 |
start() | 再生 |
pause() | 一時停止 |
stop() | 再生を停止 |
reset() | プレイヤーの状態をリセット |
seekTo(millis) | 指定時間にシーク(移動) |
getDuration() | メディアの全再生時間を取得 |
getCurrentPosition() | 現在の再生位置を取得 |
release() | リソースを解放 |
イベントリスナー一覧
イベントリスナー | 説明 |
---|---|
setOnPreparedListener(listener) | メディアが再生可能になったときに呼び出される |
setOnCompletionListener(listener) | 再生が完了したときに呼び出される |
setOnErrorListener(listener) | エラーが発生したときに呼び出される |
setOnBufferingUpdateListener(listener) | バッファリングの進行状況が更新されたときに呼び出される |
setOnSeekCompleteListener(listener) | シーク操作が完了したときに呼び出される |
setOnInfoListener(listener) | 特定の情報または警告が発生したときに呼び出される |
setOnVideoSizeChangedListener(listener) | ビデオのサイズが変更されたときに呼び出される |
URLストリーミングでの使用例
ローカルリソースファイルの読み込みと異なりURLストリーミングの場合は動作が重くなりがちです。その場合はprepareAsync
を使用してリソースの読み込みを非同期で行います。prepare
の場合は同期的に行うためメインスレッドで実行している場合にスレッドをブロックしてしまう可能性があります。
val mediaPlayer = MediaPlayer()
mediaPlayer.setDataSource("https://example.com/sample_audio.mp3")
mediaPlayer.prepareAsync() // 非同期で準備
mediaPlayer.setOnPreparedListener {
it.start() // 再生開始
}
mediaPlayer.setOnErrorListener { _, _, _ ->
// エラー時の処理
true
}
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。