5

我有一个 android 代码,用于使用 videoview 和控制按钮播放视频,例如使用 mediacontroller 的暂停、倒带和前进。它适用于nexus S 以及许多三星手机,但媒体控制器按钮似乎不适用于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();
4

1 回答 1

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 上测试和工作。


替代解决方案:按照 ApiDemos 中的示例代码中的建议,使用 SurfaceView 而不是 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 上播放。

于 2013-09-12T15:35:42.807 回答