медиаконтроллер не работает на вкладке Nexus 7

У меня есть код Android для воспроизведения видео с помощью кнопок просмотра видео и управления, таких как пауза, перемотка назад и вперед, с помощью медиаконтроллера. Он работает на Nexus S, а также на многих телефонах Samsung, но кнопки медиаконтроллера, похоже, не работают на Nexus 7! Мне нужно, чтобы он работал на всех устройствах. Есть ли что-то дополнительное, что мне нужно сделать?

MediaController mediacontroller = new MediaController(Activity.this);
mediacontroller.setAnchorView(videoview);
Uri video = Uri.parse("path/to/video");
videoview.setMediaController(mediacontroller);
videoview.setVideoURI(video);
videoview.start();

person kriswiz    schedule 20.08.2013    source источник
comment
Ссылка на средство отслеживания проблем (в настоящее время нет ответов): code.google.com /p/android/issues/detail?id=59776   -  person Geobits    schedule 11.09.2013


Ответы (1)


Просто наткнулся на этот ответ в Невозможно пауза/вперед/назад видео с помощью медиаконтроллера в Android. Некоторые устройства LG также имеют эту проблему.

Как упоминалось @Vineela Yarlagadda, вам необходимо переопределить методы VideoView ниже.

@Override
public boolean canSeekForward() {
    return true;
}

@Override
public boolean canSeekBackward() {
    return true;
}

@Override
public boolean canPause() {
    return true;
}

Протестировано и работает на Nexus 7.


Альтернативное решение: используйте SurfaceView вместо VideoView, как это предлагается в примере кода в ApiDemos.

 setContentView(R.layout.media_player2);
 mSurface = (SurfaceView) findViewById(R.id.surface);
 holder = mSurface.getHolder();
 holder.addCallback(this);

 mMediaPlayer = new MediaPlayer();
 mMediaPlayer.setDataSource(stream);
 mMediaPlayer.setDisplay(holder);
 mMediaPlayer.prepareAsync();
 mController = new MediaController(this);
 mMediaPlayer.setOnBufferingUpdateListener(this);
 mMediaPlayer.setOnCompletionListener(this);
 mMediaPlayer.setOnPreparedListener(this);
 mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
 mController.setMediaPlayer(this);
 mController.setAnchorView(mSurface);

Я открыл ошибку code.google.com/p/android/issues/detail?id=59776 после того, как столкнулся с той же проблемой, что и @kriswiz, когда использовал VideoView и Player. Теперь видео будет воспроизводиться на Nexus 7 и Samsung Nexus.

person yprabhu    schedule 12.09.2013
comment
да, я видел тот же пост, что и вы. Невозможно приостановить / перемотать вперед / назад видео с помощью медиаконтроллера в Android. Тоже пробовал Но у меня не сработало. - person kriswiz; 13.09.2013