У меня есть VideoView, и я транслирую видео с удаленного сервера. В большинстве случаев он воспроизводит видео очень гладко. Но иногда появляется сообщение об ошибке "Извините, это видео невозможно воспроизвести". У меня есть догадка, что это больше в поддерживаемых форматах видео. Однако я не знаю, какие поддерживаемые форматы. Мой вопрос: "Как я могу поймать эту ошибку (например, предотвратить появление сообщения об ошибке)"? Я использую Android 2.2 в этом проекте. Любые советы будут очень признательны.:)
Как поймать ошибку "Извините, это видео не может быть воспроизведено" на VideoView
Ответ 1
Попробуйте использовать setOnErrorListener: в документации указано, что если ни один прослушиватель не указан, или если слушатель вернулся с ошибкой, VideoView сообщит пользователю любые ошибки., поэтому я предполагаю, что если вы установите его и вернете true, он не покажет ошибку пользователя.
Ответ 2
Код, который я использовал для этого:
@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;
}
};
Ответ 3
Я предпочитаю устанавливать такие слушатели в методе onCreate. Надеюсь, кто-то поможет
videoView.setOnErrorListener(new OnErrorListener () {
@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
Log.e(TAG, "Error playing video");
return true;
}
});
Ответ 4
вы можете добавить код, как показано ниже, он закроет экран просмотра видео, если возникнет какая-либо ошибка. Кроме того, он не будет отображать всплывающее сообщение по умолчанию, говорящее, что видео не может воспроизводиться:)
videoview.setOnErrorListener(new MediaPlayer.OnErrorListener() {
@Override
public boolean onError(MediaPlayer mediaPlayer, int i, int i1) {
finish();
return true;
}
});