2012-07-27 12 views
7

Ho usato MediaController nella mia attività funziona bene ma quando riproduco i video per la prima volta, allora dovrebbe essere visibile il pulsante b pause, invece c'è la riproduzione e quando premo quel pulsante il video è messo in pausa correttamente e lo stato rimane lo stesso e quindi funziona correttamente. E la stessa cosa accade quando Video Completato. È un bug o sto facendo qualcosa di sbagliato?Playback media Android Play I controlli di pausa non si aggiornano correttamente

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(); 
    } 
}); 

risposta

5

Ho riscontrato lo stesso problema. Non stavo chiamando lo MediaController.setVideoView come eri, perché pensavo che lo VideoView.setMediaController fosse sufficiente per il cablaggio. Ho provato ad aggiungere quello, quindi spostando la chiamata a show all'interno di onPrepared e ora sta funzionando.

Vorrei avere una migliore comprensione; la mia ipotesi migliore è che forse tutto deve essere cablato correttamente prima di preparare i media e prima di chiamare show. In ogni caso, ecco quello che ho:

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

Ho dovuto chiamare 'mVideoView.start()' prima di 'mMediaController.show()'. Entrambe le chiamate sono in "onPrepared (MediaPlayer pMp)" nel mio caso. Era l'unico modo per farlo funzionare su un dispositivo Samsung con Android 4.2.2 – OneWorld

0

Come Oneworld menzionato sul altra risposta, ho avuto lo stesso problema con i vecchi dispositivi Samsung. Anche se MediaController è collegato correttamente a VideoView, il pulsante di riproduzione perde la sincronizzazione fino alla pausa e riproduce nuovamente con MediaController.

Questa cosa sembra succedere solo sui vecchi dispositivi Samsung (KitKat e sotto credo).

L'unica soluzione che ho trovato è stato riprodurre il video programmaticamente da videoview.start() prima di mostrare controller di mc.show().