Android - 媒体控制器不显示
我有一个 videoView,在其中显示视频,并且我想显示默认媒体控制器。由于某种原因,控制器似乎不想出现。
我尝试使用 xml 创建 MediaController,将其设置为始终可见,使用 mMediaController.setMediaPlayer(mVideoView) 将其附加到媒体播放器,但似乎没有任何效果。
我正在使用 Google 的经典视频播放器代码,可以在这里找到: http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/media/MediaPlayerDemo_Video.html
会发生什么?监听者会丢失事件吗?它不是附加到实际播放的视频吗?我应该在我正在使用的代码中添加其他内容吗(见下文)?
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.activity_content_video);
[...]
mVideoView = (VideoView) findViewById(R.id.surface);
mainVideoHolder = (LinearLayout) findViewById(R.id.main_video_holder);
holder = mVideoView.getHolder();
holder.addCallback(this);
mMediaController = new MediaController(this);
mMediaController.show();
}
private void playVideo() {
doCleanUp();
try {
mMediaPlayer = new MediaPlayer();
Log.d(tag, "surfaceCreated");
File f = new File(mAssetsPath);
File[] files = f.listFiles();
Log.d(tag, "File: " + files[0].toString());
URI uri = URI.create("file://" + (files[0].toString()));
File file = new File(uri);
ParcelFileDescriptor parcel = ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_WRITE);
mMediaPlayer.setDataSource(parcel.getFileDescriptor());
mMediaPlayer.setDisplay(holder);
mMediaPlayer.prepare();
mMediaPlayer.setOnBufferingUpdateListener(this);
mMediaPlayer.setOnCompletionListener(this);
mMediaPlayer.setOnPreparedListener(this);
mMediaPlayer.setOnVideoSizeChangedListener(this);
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mMediaController.setMediaPlayer(mVideoView);
mVideoView.setMediaController(mMediaController);
} catch (Exception e) {
Log.e(tag, "error: " + e.getMessage(), e);
}
}
public void surfaceCreated(SurfaceHolder holder) {
Log.d(tag, "surfaceCreated called");
playVideo();
}
任何想法将不胜感激?
活动中没有应用主题,视频正常播放,没有出现任何错误。只是媒体控制者没有出现!
谢谢。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
在尝试了所有我能做的之后,以下代码对我有用!
After trying all that I could, the following code worked for me!
将控制器添加到布局的哪里?还要确保容器足够大。在添加视频控制器之前,给它一个背景并看看它是否在屏幕上显示良好。
Where do you add your controller to a layout ? Also be sure the container is large enough. Give it a background and look if it displays well on screen before adding the video controller.
我不确定这个答案有点晚了,但也许其他人也有这个问题。 doku 说:
所以你可以这样做(在这种情况下 MediaPlayer 是一个 VideoView:
这对我有用。
I'm not sure this answer is a little late but maybe someone else has that problem. The doku says the fellowing:
So you can do it like this (the MediaPlayer is a VideoView in this case:
This worked for me.