2016-08-03 39 views
3

Wenn ich versuche, die Wiedergabeparameter eines MediaPlayers zu ändern, stürzt meine App ab. Ich bin mir nicht sicher, warum das passiert.MediaPlayer setPlaybackParams crash

Hier ist der Code, den ich verwende, um die Wiedergabegeschwindigkeit zu ändern.

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

In diesem Fall mPlaybackRate.getValue() gibt 1.25f

Dies ist das Crash-Protokoll:

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) 
+1

wird das Medium wiedergegeben, wenn Sie diese Methode aufrufen? – muratgu

+0

@ muratgu ja ist es. – Hackmodford

+0

Nun, vielleicht ist das der Grund. – muratgu

Antwort

-1
mPlayer.getPlaybackParams().setSpeed(1.5f); 
+5

können Sie weitere Details hinzufügen? Eine einzelne Codezeile hilft den zukünftigen Lesern nicht – goto

+0

Normalerweise ist es eine gute Idee, Ihrem Beitrag eine Erklärung hinzuzufügen, die darüber spricht, wie der Code funktioniert. Dies ermöglicht es neuen Entwicklern zu verstehen, was der Code tut. –

0

Sie Ihren Mediaplayer bereit sicherzustellen, müssen! so können Sie einen Listener wie folgt gesetzt werden versuchen:

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

es für mich funktioniert.