Элементы управления Play Pause медиаконтроллера Android не обновляются должным образом

Я использовал MediaController в своей деятельности, он работает нормально, но когда я воспроизводю видео в первый раз, должна быть видна кнопка паузы b, но вместо этого есть воспроизведение, и когда я нажимаю эту кнопку, видео приостанавливается правильно, и состояние остается прежним, и после этого он работает правильно. И то же самое происходит, когда видео завершено. Это баг или я что-то не так делаю?

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

person ZeeShaN AbbAs    schedule 27.07.2012    source источник


Ответы (2)


У меня была такая же проблема. Я не звонил MediaController.setVideoView, как вы, так как думал, что VideoView.setMediaController достаточно, чтобы все уладить. Я попытался добавить это, а затем переместил вызов на show внутри onPrepared, и теперь он работает.

Я хотел бы иметь лучшее понимание; я думаю, что, возможно, все должно быть правильно подключено до того, как будет подготовлен носитель, и до вызова шоу. В любом случае, вот что у меня есть:

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();
person aj8    schedule 04.08.2012
comment
Я должен был позвонить mVideoView.start() до mMediaController.show(). Оба вызова в моем случае находятся в onPrepared(MediaPlayer pMp). Это был единственный способ заставить его работать на устройстве Samsung с Android 4.2.2. - person OneWorld; 23.03.2016

Как упоминалось в Oneworld в другом ответе, у меня была такая же проблема со старыми устройствами Samsung. Несмотря на то, что MediaController правильно подключен к VideoView, кнопка воспроизведения теряет синхронизацию до паузы и повторного воспроизведения с помощью MediaController.

Кажется, это происходит только на старых устройствах Samsung (KitKat и ниже, я думаю).

Единственное решение, которое я нашел, это программное воспроизведение видео с помощью videoview.start() перед отображением контроллера с помощью mc.show().

person bskim45    schedule 30.06.2016