Android:如何获取媒体播放器的错误并使用它?

标签 android media-player surfaceview

我使用 SurfaceView 作为视频播放器

如果在流中没有加载视频,在logcat查看错误info(701,0)

如何获取 info(701,0) 并使用它?

Sample :

if(error == 701){
   ....
}

最佳答案

是的,您可以对您的 VideoView 使用 setOnErrorListener(..) 并在那里处理错误。这是一个例子:

    mVideoView.setOnErrorListener(new MediaPlayer.OnErrorListener() {
                @Override
                public boolean onError(MediaPlayer mp, int what, int extra) {

                    switch(what){

                        case MediaPlayer.MEDIA_ERROR_UNKNOWN:
                            // handle MEDIA_ERROR_UNKNOWN, optionally handle extras
                            handleExtras(extra);
                            break;

                        case MediaPlayer.MEDIA_ERROR_SERVER_DIED:
                            // handle MEDIA_ERROR_SERVER_DIED, optionally handle extras
                            handleExtras(extra);
                            break;
                    }

                    return true;
                }
            });

...

    private void handleExtras(int extra){
            switch(extra){
                case MediaPlayer.MEDIA_ERROR_IO:
                    // handle MEDIA_ERROR_IO
                    break;
                case MediaPlayer.MEDIA_ERROR_MALFORMED:
                    // handle MEDIA_ERROR_MALFORMED
                    break;
                case MediaPlayer.MEDIA_ERROR_UNSUPPORTED:
                    // handle MEDIA_ERROR_UNSPECIFIED
                    break;
                case MediaPlayer.MEDIA_ERROR_TIMED_OUT:
                    // handle MEDIA_ERROR_TIMED_OUT
                    break;

            }
        }

编辑:701 是信息而不是错误,因此要处理信息,您需要附加信息监听器 setInfoListener()

https://developer.android.com/reference/android/widget/VideoView.html#setOnInfoListener(android.media.MediaPlayer.OnInfoListener)

并遵循与错误监听器相同的模式。这是一个例子:

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

                switch(what){
                    case MediaPlayer.MEDIA_INFO_BUFFERING_START:
                        // handle info 701 here, MEDIA_INFO_BUFFERING_START corresponds to 701
                        break;
                }
                return true;
            }
        });

请注意,这需要至少 17 个 API。以及对您要查找的内容的引用:

https://developer.android.com/reference/android/media/MediaPlayer.html#MEDIA_INFO_BUFFERING_START

希望这有用。

关于Android:如何获取媒体播放器的错误并使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38893949/

相关文章:

android - 设置其他布局参数imageview

java - 解析jsoup url android

Android 接收短信和播放音乐服务

Android MediaPlayer 导致游戏卡住并显示 "AudioHardware pcm playback is going to standby"

iphone - MPNowPlayingInfoCenter 与 AVAudioPlayer 兼容吗?

android - Android Studio 中 SurfaceView 上的拉伸(stretch)相机预览

java - 当预览打开时,Android SurfaceView 叠加在相机 View 上不显示

java - 如何检查VERTEX ARRAY是否顺时针?

android - 带有Android Studio问题的OpenCV

android - 录制整个屏幕,包括前置摄像头预览