如何检测VideoView何时开始播放(Android)?

lpa*_*zic 9 events android android-videoview

这是问题所在,我想在视频流开始播放视频时更改播放按钮暂停按钮,但我不知道如何检测该事件?

Nir*_*ann 14

这里有一篇关于MediaPlayer的文章很棒 - http://www.malmstein.com/blog/2014/08/09/how-to-use-a-textureview-to-display-a-video-with-custom-媒体播放器的控件/

您可以在VideoView上设置infoListener

setOnInfoListener(new MediaPlayer.OnInfoListener() {
    @Override
    public boolean onInfo(MediaPlayer mp, int what, int extra) {

        if (what == MediaPlayer.MEDIA_INFO_VIDEO_RENDERING_START) {
            // Here the video starts
            return true;
        }
        return false;
    }
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,但是很遗憾,它要求API> 16 (2认同)

lpa*_*zic 12

我最终使用了VideoView.setOnPreparedListener.这足以掩盖我的问题(播放按钮可绘制的更改暂停)


Wop*_*ops 6

此处接受的答案并非100%准确。

有时需要准备渲染第一帧之前3秒钟的呼叫。我建议对该事件进行回调(MediaPlayer.MEDIA_INFO_VIDEO_RENDERING_START)

mMediaPlayer.setOnInfoListener(new MediaPlayer.OnInfoListener() {
    @Override
    public boolean onInfo(MediaPlayer mediaPlayer, int i, int i1) {
        if (i == MediaPlayer.MEDIA_INFO_VIDEO_RENDERING_START){
            //first frame was bufered - do your stuff here
        }
        return false;
    }
});
Run Code Online (Sandbox Code Playgroud)

有关更多信息回调/警告的信息,请参阅媒体信息文档:https : //developer.android.com/reference/android/media/MediaPlayer.html#MEDIA_INFO_VIDEO_RENDERING_START