android - MediaPlayer setPlaybackParams 崩溃

标签 android android-mediaplayer

当我尝试更改 MediaPlayer 的播放参数时,我的应用程序崩溃了。 我不确定为什么会这样。

这是我用来改变播放速度的代码。

PlaybackParams params = new PlaybackParams().allowDefaults();
params.setSpeed(mPlaybackRate.getValue());
mMediaPlayer.setPlaybackParams(params);

在这种情况下,mPlaybackRate.getValue() 返回 1.25f

这是崩溃日志:

08-02 21:09:35.184 E/AndroidRuntime: FATAL EXCEPTION: main
                                     Process: com.hackmodford.bigfinish, PID: 30986
                                     java.lang.IllegalStateException
                                         at android.media.MediaPlayer.setPlaybackParams(Native Method)
                                         at com.hackmodford.bigfinish.mediaPlayerService.MediaPlayerService.incrementPlaybackRate(MediaPlayerService.java:543)
                                         at com.hackmodford.bigfinish.mediaPlayerService.MediaPlayerService.access$1000(MediaPlayerService.java:47)
                                         at com.hackmodford.bigfinish.mediaPlayerService.MediaPlayerService$3.onCustomAction(MediaPlayerService.java:336)
                                         at android.support.v4.media.session.MediaSessionCompat$Callback$StubApi21.onCustomAction(MediaSessionCompat.java:832)
                                         at android.support.v4.media.session.MediaSessionCompatApi21$CallbackProxy.onCustomAction(MediaSessionCompatApi21.java:231)
                                         at android.media.session.MediaSession$CallbackMessageHandler.handleMessage(MediaSession.java:1246)
                                         at android.os.Handler.dispatchMessage(Handler.java:102)
                                         at android.os.Looper.loop(Looper.java:148)
                                         at android.app.ActivityThread.main(ActivityThread.java:5422)
                                         at java.lang.reflect.Method.invoke(Native Method)
                                         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

最佳答案

您必须确保您的 mediaPlayer 已准备就绪! 所以你可以尝试像这样设置一个监听器:

mMediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener(){
            public void onPrepared(MediaPlayer var1) {
               PlaybackParams params = mMediaPlayer.getPlaybackParams();
               params.setSpeed(3.0f);
               mMediaPlayer.setPlaybackParams(params); 
             }
        });

它对我有用。

关于android - MediaPlayer setPlaybackParams 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38732811/

相关文章:

javascript - Android 上的 Chrome 61+ 中的导航被阻止错误

android - 窗口打开时出错

Android:使用文本文件还是XML文件存储静态数据效率更高

在使用 MediaPlayer 的 MEDIA_INFO_BUFFERING_START 之后,Android 直播永远不会开始

android - 使用媒体播放器播放音频时,Android显示动画

java - 获取外部存储目录不起作用

android - 连接到没有互联网的 WiFi

android - 音频播放完毕后通知

android - 在android中获取mp3持续时间

android - 获取Android中videoView的mediaPlayer