mediacontroller不适用于nexus 7选项卡

时间:2013-08-20 03:31:34

标签: android android-videoview mediacontroller

我有一个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();

1 个答案:

答案 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上播放。