将 MediaController 与 VideoView 一起使用时,我很难找到将它保持在屏幕上的方法。我想在我的应用程序中播放位于 res/raw 中的音频文件。文件正在播放,但我想将控制器保持在屏幕上,以便用户查看文件的长度以及结束前还剩多少时间等。我在论坛上发现很多时候我们应该使用方法 .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