VideoViewがあり、リモートサーバーからビデオをストリーミングしています。ほとんどの場合、ビデオは非常にスムーズに再生されます。ただし、「申し訳ありませんが、このビデオは再生できません」というエラーメッセージが表示される場合があります。これはサポートされているビデオ形式の詳細であるという予感があります。ただし、サポートされている形式がどれかわかりません。私の質問は「どうすればこのエラーをキャッチできますか(たとえば、エラーメッセージが表示されないようにする)」ですか?私はAndroid 2.2を使用しています。助言をいただければ幸いです。)
setOnErrorListener を使用してみてください:ドキュメントにリスナーが指定されていない場合、またはリスナーがfalseを返した場合、VideoViewはユーザーにエラーを通知しますなので、1つ設定してtrueを返すと、ユーザーエラーは表示されないと想定しています。
これに使用したコード:
@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;
}
};
私はonCreateメソッド内でこのようなリスナーを設定することを好みます。うまくいけば誰かを助けます
videoView.setOnErrorListener(new OnErrorListener () {
@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
Log.e(TAG, "Error playing video");
return true;
}
});
以下のようなコードを追加できます。エラーが発生した場合、ビデオ表示画面を閉じます。また、ビデオが再生できないというデフォルトのポップアップは表示されません:)
videoview.setOnErrorListener(new MediaPlayer.OnErrorListener() {
@Override
public boolean onError(MediaPlayer mediaPlayer, int i, int i1) {
finish();
return true;
}
});