私のメディアプレーヤーの使用は非常に典型的で、再生パラメータを設定しようとすると問題が発生します。setPlaybackParams原因IllegalStateException
- )(メディアプレーヤー MediaPlayerのmMediaPlayer =新しいのMediaPlayerを作成します。
- setDataSourceは、動作することが分かっているローカルの仲介ファイルに設定します。
- mMediaPlayer.prepareAsync();
- OnPrepared()コールバックは(mMediaPlayer.startを呼び出す)
私が呼び出す場合:
if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.M) {
mMediaPlayer.setPlaybackParams(new PlaybackParams().setSpeed(2.0f));
}
私は再生速度が期待通りに影響を受けたとは例外が発生していないmMediaPlayer.start()を呼び出す前。 mMediaPlayer.start()呼び出しの後にsetSpeed()呼び出しを配置すると、アプリケーションがillegateStateExceptionでクラッシュします。
興味深いのは、これは電話機(nexus 5、priv)でのみ発生しますが、テストされたタブレット(nexus 7と9)では正常に動作するということです。
私はオーディオを一時停止して数百ミリ秒待っていると言いましたが、それは役に立たなかったでしょう。
ドキュメントの設定に基づいて、オーディオ再生中の再生速度は完全に許容されます。誰がここで何が起こっているのか考えていますか?私はこれを調査するにはあまりにも多くの時間を費やしました。
ありがとうございます!
誰かが 'setSpeed()'に問題があり、MediaPlayerを作成するときに 'getApplicationContext()'を使って解決できるようでした - このスレッドを見てください(https://code.google.com/ .com/p/android/issues/detail?id = 191368)。 ** ** 'new MediaPlayer()'が(少なくともいくつかのデバイスで)コンテキストとしてのみアクティビティを使用する場合、これがあなたの解決策かもしれません。あまりにも多くの "if"のための答えとして投稿していませんが、私はそれがあなたのケースで働いたかどうか聞いてみたい:) – 0X0nosugar
残念なことに、メディアプレーヤーを作成するときgetApplicationContextを使用して私のために働いていない、 AOSP問題追跡システムに送信します。 – Whome