Android - 媒体 Controller 不显示

标签 android video mediacontroller

我有一个显示视频的 videoView,我想显示默认的媒体 Controller 。出于某种原因, Controller 似乎不想出现。

我曾尝试使用 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();
}

任何想法将不胜感激?

Activity 中没有应用主题,视频播放正常,没有报错。只是媒体控件没有出现!

谢谢。

最佳答案

在尽我所能之后,以下代码对我有用!

        mVideoView = (VideoView) findViewById(R.id.video);

        mMediaController = new MediaController(this) {
            //for not hiding
            @Override
            public void hide() {}

            //for 'back' key action
            @Override
            public boolean dispatchKeyEvent(KeyEvent event) {
                if(event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
                    Activity a = (Activity)getContext();
                    a.finish();
                }
                return true;
            }
        };

        mMediaController.setAnchorView(mVideoView);
        mMediaController.setMediaPlayer(mVideoView);
        mVideoView.setMediaController(mMediaController);
        mMediaController.requestFocus();

        //only this showed the controller for me!!
        mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer mp) {
                mVideoView.start();
                mMediaController.show(900000000);
            }
        });

        //finish after playing
        mVideoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            @Override
            public void onCompletion(MediaPlayer mediaPlayer) {
                finish();
            }
        });

关于Android - 媒体 Controller 不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9099831/

相关文章:

android - 如何自定义 YouTube 播放器样式 MINIMAL 以隐藏搜索栏并在 android 中启用播放/暂停控制

javascript - 当 HTML5 <video> 循环重新启动时在 Javascript 中检测?

java - Java 中的视频播放(JMF、Fobs4JMF、Xuggler、FMJ)

javascript - 如何在android中运行javascript并传入 map 作为参数

java - Firebase Google auth,退出并再次登录将使用上次登录的帐户登录

javascript - 检查 <video> 中是否存在暂停()(Windows 上的 Safari 5.1.7 - HTML5 视频)

android - android studio 中的纵向到横向视频 View 和 Controller 重启问题

android - 如何获取VideoView getcurrentPosition 并设置seekTo 希望位置无法正常工作?

android - 使垂直滚动条可见

android - 有人可以向我解释这个 `StaleDataException`