web-dev-qa-db-ja.com

VideoViewで「申し訳ありませんが、このビデオは再生できません」エラーをキャッチする方法

VideoViewがあり、リモートサーバーからビデオをストリーミングしています。ほとんどの場合、ビデオは非常にスムーズに再生されます。ただし、「申し訳ありませんが、このビデオは再生できません」というエラーメッセージが表示される場合があります。これはサポートされているビデオ形式の詳細であるという予感があります。ただし、サポートされている形式がどれかわかりません。私の質問は「どうすればこのエラーをキャッチできますか(たとえば、エラーメッセージが表示されないようにする)」ですか?私はAndroid 2.2を使用しています。助言をいただければ幸いです。)

39
emmandroid

setOnErrorListener を使用してみてください:ドキュメントにリスナーが指定されていない場合、またはリスナーがfalseを返した場合、VideoViewはユーザーにエラーを通知しますなので、1つ設定してtrueを返すと、ユーザーエラーは表示されないと想定しています。

62
Femi

これに使用したコード:

@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;
    }
};
8
ruxy

私はonCreateメソッド内でこのようなリスナーを設定することを好みます。うまくいけば誰かを助けます

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

以下のようなコードを追加できます。エラーが発生した場合、ビデオ表示画面を閉じます。また、ビデオが再生できないというデフォルトのポップアップは表示されません:)

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