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

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

この記事からわかること

  • Android Studio/Kotlin音楽ファイル再生する方法
  • MediaPlayer使い方

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

環境

Androidで音楽/動画ファイルを再生する方法

公式リファレンス:MediaPlayer

Androidアプリで音声や動画などのメディアファイルを再生するにはMediaPlayerを使用します。再生したメディアの一時停止や巻き戻し、早送りなどのコントロールを行うことが可能で、ローカルファイルだけでなくストリーミングでの再生にも対応しています。

サポート対象のメディア形式は以下を参考にしてください。

公式リファレンス:サポートされているメディア形式

MediaPlayerの使い方

MediaPlayerを使用する際には以下のステップを踏みます。

  1. リソースファイルを読み込んだMediaPlayerインスタンスを生成
  2. メディアの再生など操作
  3. リソースを解放

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
}

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index