在将 MediaController 与 VideoView 一起使用时,我很难找到一种方法将它保持在屏幕上。我想在我的应用程序中播放位于 res/raw 中的音频文件。该文件正在播放,但我想将 Controller 保留在屏幕上,以便用户查看文件的长度以及结束前剩余的时间等。我在论坛上发现很多时间我们应该使用方法 .show (时间)才能做到这一点,但我不知道如何让它发挥作用。
这是我使用的代码:
package com.sample.VideoViewExample;
import android.app.Activity;
import android.net.Uri;
import android.os.Bundle;
import android.view.SurfaceHolder;
import android.widget.MediaController;
import android.widget.VideoView;
public class VideoViewExample extends Activity implements SurfaceHolder.Callback{
private VideoView mVideoView;
private MediaController mMedia;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
mVideoView = (VideoView) findViewById(R.id.surface_view);
//mVideoView.getHolder().addCallback(this);
//mMedia.show(50000);
//mVideoView.setMediaController(mMedia);
MediaController mMedia = new MediaController(this);
mMedia.setMediaPlayer(mVideoView);
mMedia.setAnchorView(mVideoView);
mVideoView.setMediaController(mMedia);
mVideoView.setVideoURI(Uri.parse("android.resource://" + getPackageName() +"/"+R.raw.osa_patient));
mVideoView.requestFocus();
mVideoView.start();
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
// TODO Auto-generated method stub
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
mMedia.show(500000);
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
}
}
当我添加行 mVideoView.getHolder().addCallback(this);应用程序错误,我不确定为什么。
非常欢迎任何帮助或替代我想做的事情:)
谢谢, JB
最佳答案
这对我有用。只需扩展媒体 Controller 类。并覆盖隐藏方法。
MediaController mediaController = new MyMediaController(this, true);
public class MyMediaController extends MediaController {
public MyMediaController(Context context, boolean useFastForward) {
super(context, useFastForward);
}
@Override
public void hide() {
mediaController.show(0);
}
}
关于android - 将 MediaController 保持在 VideoView 的屏幕上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6651718/