2012-07-27 5 views
7

Ich habe MediaController in meiner Aktivität funktioniert es gut, aber wenn ich Video zum ersten Mal dann abspielen sollte b Pause Schaltfläche sichtbar, aber es gibt spielen und wenn ich diese Taste dann das Video drücken ist pausiert korrekt und Zustand bleibt gleich und danach funktioniert es richtig. Und dasselbe passiert, wenn Video Completed. Ist das ein Fehler oder mache ich irgendetwas falsch?Android Mediacontroller Play Pause steuert nicht korrekt aktualisieren

videoView.setOnPreparedListener(new OnPreparedListener() { 
    @Override 
    public void onPrepared(MediaPlayer mp) { 
      mediaController = new MediaController(VideoPlayerActivity.this){ 
     public void hide(){ 
     } 
     public void show(){ 
      if(isPlayingAd){ 
       super.hide(); 
      }else{ 
       super.show(); 
      } 
     } 
    }; 
    videoView.setMediaController(mediaController); 
    mediaController.setMediaPlayer(videoView); 
    mediaController.show(); 
    } 
}); 

Antwort

5

Ich hatte das gleiche Problem. Ich rief nicht MediaController.setVideoView als Sie waren, als ich dachte VideoView.setMediaController war ausreichend für die Verkabelung Dinge. Ich habe versucht, das hinzuzufügen, und dann den Anruf zu show innerhalb onPrepared verschieben, und jetzt funktioniert es.

Ich wünschte, ich hätte ein besseres Verständnis; Meine beste Vermutung ist, dass vielleicht alles richtig verkabelt werden muss, bevor die Medien vorbereitet sind, und bevor die Show aufgerufen wird. In jedem Fall ist hier, was ich habe:

mMediaController = new MediaController(VideoPlayerActivity.this, false); 

mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {    
    @Override 
    public void onPrepared(MediaPlayer pMp) { 
     mMediaController.show(); 
    }  
}); 

mVideoView.setMediaController(mMediaController); 
mMediaController.setMediaPlayer(mVideoView); 
mVideoView.setVideoPath(uri); // may not be applicable in your case 
mVideoView.requestFocus(); 
mVideoView.start(); 
+0

Ich musste 'mVideoView.start()' vor 'mMediaController.show()' aufrufen. Beide Anrufe sind in meinem Fall "onPrepared (MediaPlayer pMp)". Das war der einzige Weg, um es auf einem Samsung-Gerät mit Android 4.2.2 zum Laufen zu bringen – OneWorld

0

Wie Oneworld auf der anderen Antwort erwähnt, ich hatte dasselbe Problem mit alten Samsung-Geräten. Auch wenn MediaController ordnungsgemäß mit VideoView verkabelt ist, verliert die Wiedergabetaste ihre Synchronisierung, bis sie angehalten und erneut mit MediaController abgespielt wird.

Dieses Ding scheint nur auf alten Samsung-Geräten (KitKat und darunter ich denke) passiert.

Die einzige Lösung, die ich fand, war video videoview.start() programmatisch zu spielen, bevor Controller von mc.show() angezeigt wurde.

Verwandte Themen