AndroidのMediaPlayerクラスでの速度変更において、一部端末で再生されません
MediaPlayerクラスのsetPlaybackParamsで速度変更の実装をしています。
実機のAndroid7.0(Xperia XZ)で実行したとき、
1.0fの時は正常に再生されますが、
その他の速度に設定したとき、ログ含めエラーも出力されずに音が止まってしまいます。
速度を1.0に戻すと再び再生され始めます。
その他のAndroid端末やOS(6.0.1や9.0,10.0等)では正常に動作しました。
サンプルソースコード
Kotlin
1class MainActivity : AppCompatActivity() { 2 override fun onCreate(savedInstanceState: Bundle?) { 3 super.onCreate(savedInstanceState) 4 setContentView(R.layout.activity_main) 5 6 val file: File = File("/storage/emulated/0/sound_file_1.mp3") 7 val fis: FileInputStream = FileInputStream(file) 8 val mediaPlayer: MediaPlayer? = MediaPlayer().apply { 9 setAudioStreamType(AudioManager.STREAM_MUSIC) 10 setDataSource(fis.getFD()) 11 prepare() 12 start() 13 } 14 mediaPlayer?.setPlaybackParams(mediaPlayer?.getPlaybackParams().setSpeed(1.5f)) 15 } 16}
試したこと
Javaで同様の実装をしてみましたが、同じ現象でした。
内蔵ストレージのデータではなく、
アプリ内のリソースとして保存した音声を以下のように読み込んだ場合は速度変更しても
変更された速度で再生することができました。
Kotlin
1var mediaPlayer: MediaPlayer? = MediaPlayer.create(context, R.raw.sound_file_1) 2 mediaPlayer?.start()
あなたの回答
tips
プレビュー