我有一个Android代码,用于使用视频和控制按钮播放视频,例如使用mediacontroller进行暂停,倒带和转发。它适用于nexus S以及许多三星手机,但mediacontroller按钮似乎不适用于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();
答案 0 :(得分:3)
在Unable to pause/forward/backward video using mediacontroller in 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而不是ApiDemos中的示例代码中建议的VideoView。
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);
在我使用VideoView和Player时遇到与@kriswiz相同的问题后,我打开了bug code.google.com/p/android/issues/detail?id=59776。该视频现在将在Nexus 7和三星Nexus上播放。