VideoView - MediaController 未显示

Posted

技术标签:

【中文标题】VideoView - MediaController 未显示【英文标题】:VideoView - MediaController not showing up 【发布时间】:2014-04-10 13:04:30 【问题描述】:

我无法让它工作...每当我触摸我的视频时,什么都没有发生...尽管我认为 MediaController 应该是可见的...

我目前使用以下功能来播放我的视频:

private void playCachedVideo(final VideoView videoView, final Context c, File f)

    //videoView.setZOrderOnTop(true);        
    videoView.setOnPreparedListener(new OnPreparedListener()
    
        @Override
        public void onPrepared(MediaPlayer mp) 
        
            mp.setOnVideoSizeChangedListener(new OnVideoSizeChangedListener() 
             
                @Override
                public void onVideoSizeChanged(MediaPlayer mp, int width, int height) 
                
                    MediaController mediaController = new MediaController(c);
                    mediaController.setMediaPlayer(videoView);
                    mediaController.setAnchorView(videoView);
                    videoView.setMediaController(mediaController);
                
            );
        
    );
    videoView.setVideoURI(Uri.fromFile(f));
    videoView.start();

视频播放正常,但我无法让任何 MediaController 显示...

PS:我在DialogFragment中显示播放器

【问题讨论】:

我也有同样的问题,使用 Activity 时可以正常工作,但不能使用 DialogFragment 【参考方案1】:

试试这个:

mMediaController = new MediaController(getActivity());

c 替换为getActivity()

【讨论】:

【参考方案2】:

您需要将控制器附加到 VideoView,然后在 onPrepared() 回调中调用 mediaController.show(timeInMillisec)。 这会在 videoview 的触摸上显示控制器,并在指定的 timeInMillisec 后隐藏控制器。

public class VideoViewActivity extends Activity implements  MediaPlayer.OnPreparedListener

    private VideoView mVideoView = null;
    MediaController mediaController = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);

        setContentView(R.layout.videoview_layout);

        mVideoView = (VideoView) findViewById(R.id.VideoView);
        mVideoView.setOnPreparedListener(this);

        mediaController = new MediaController(mVideoView.getContext());
        mediaController.setMediaPlayer(mVideoView);
        mediaController.setAnchorView(mVideoView);
        mVideoView.setMediaController(mediaController);
        mVideoView.setVideoPath("URL");
    

    @Override
    public void onPrepared(MediaPlayer mp) 
        mVideoView.start();
        mediaController.show(2000);
    

【讨论】:

以上是关于VideoView - MediaController 未显示的主要内容,如果未能解决你的问题,请参考以下文章

Fragment 中带有 VideoView 的黑屏

如何在 Android Studio 中将一个 VideoView 放在另一个 VideoView 下方?

VideoView--简单获取进度条的方法

Android 视频播放器 :使用VideoView播放视频

如何在videoview中播放流视频

VideoView 无法播放视频