如何在VideoView上捕获“抱歉,此视频无法播放”错误

时间:2011-07-19 03:29:43

标签: android android-videoview

我有一个VideoView,我从远程服务器流式传输视频。大多数时候它会非常流畅地播放视频。但有时,它会显示错误消息“抱歉,此视频无法播放”。我预感到这更多是支持的视频格式。但是,我不知道哪些是受支持的格式。我的问题是“如何捕获此错误(例如,防止出现错误消息)”?我在这个项目上使用的是Android 2.2。任何建议将不胜感激。 :)

4 个答案:

答案 0 :(得分:60)

尝试使用setOnErrorListener:文档说如果未指定侦听器,或者侦听器返回false,则VideoView将通知用户任何错误。,所以我假设你设置一个并返回true它不会显示用户错误。

答案 1 :(得分:7)

我用于此的代码:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

    vView = (VideoView) findViewById(R.id.videoView1);

    vSource = "android.resource://com.domain.android/"
            + R.raw.introductionportrait;
    vView.setVideoURI(Uri.parse(vSource));

    vView.setOnErrorListener(mOnErrorListener);
    vView.requestFocus();
    vView.start();
}

private OnErrorListener mOnErrorListener = new OnErrorListener() {

    @Override
    public boolean onError(MediaPlayer mp, int what, int extra) {
        // Your code goes here
        return true;
    }
};

答案 2 :(得分:4)

我更喜欢在onCreate方法中设置这样的监听器。希望能帮助别人

videoView.setOnErrorListener(new OnErrorListener () {
    @Override
    public boolean onError(MediaPlayer mp, int what, int extra) {
        Log.e(TAG, "Error playing video");
        return true;
    }
});

答案 3 :(得分:3)

您可以添加如下代码,如果发生任何错误,它将关闭视频查看屏幕。 此外,它不会显示默认弹出窗口,说视频无法播放:)

 videoview.setOnErrorListener(new MediaPlayer.OnErrorListener() {
            @Override
            public boolean onError(MediaPlayer mediaPlayer, int i, int i1) {
                finish();
                return true;
            }
        });