android - 将 MediaController 保持在 VideoView 的屏幕上

标签 android android-videoview mediacontroller

在将 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/

相关文章:

java - Picasso 未在 ImageView 中加载图像

android - 在 VideoView 上绘画

mediacontroller - 向 MediaController 添加按钮

android - 单击 MediaController 上的暂停/播放按钮时如何捕获事件

android - VideoView - MediaController 未显示

java - 某些设备中的 SimpleDateFormat ParseException

java - 有没有办法在java中检查变量的标签?

android - 在数据绑定(bind) Android 的 OnFocusChange 中传递 View

android - 访问 Assets 文件夹中的视频以在 Android VideoView 中播放

java - 如何让 videoView 在 fragment 内播放?