У меня есть VideoView, и я транслирую видео с удаленного сервера. В большинстве случаев видео воспроизводится очень плавно. Но иногда он отображает сообщение об ошибке «К сожалению, это видео не может быть воспроизведено». У меня есть подозрение, что это больше касается поддерживаемых форматов видео. Однако я не знаю, какие форматы поддерживаются. Мой вопрос: «Как я могу поймать эту ошибку (например, предотвратить появление сообщения об ошибке)»? Я использую Android 2.2 в этом проекте. Мы будем очень признательны за любые советы. :)
Как отловить Извините, это видео невозможно воспроизвести на VideoView
comment
хм, да. Но я не знаю, какой улов я буду использовать. Есть ли код, который работает как VideoView.isPlayable или что-то подобное? Спасибо за ответ :)
- person emmandroid   schedule 19.07.2011
comment
try-catch в этом случае не работает, так как это асинхронный процесс. Вы должны попробовать установить onErrorListener. (из документа onErrorListener: определение интерфейса обратного вызова, который будет вызываться при возникновении ошибки во время асинхронной операции (другие ошибки будут вызывать исключения во время вызова метода).)
- person Taner   schedule 13.12.2014
Ответы (4)
Попробуйте использовать setOnErrorListener. : в документации сказано Если прослушиватель не указан или если прослушиватель вернул false, VideoView сообщит пользователю о любых ошибках., поэтому я предполагаю, что если вы установите один и вернете true, он не будет отображаться ошибка пользователя.
person
Femi
schedule
19.07.2011
Спасибо за эту информацию. Я сделаю это первым и сообщу вам, если это сработает. Спасибо :)
- person emmandroid; 19.07.2011
Диалог все равно будет появляться в моем случае. Любые идеи?
- person user1810737; 25.12.2013
@user1810737 user1810737 Я думаю, вы уже поняли это, но я думаю, вы должны вернуть true в OnError, чтобы сообщить Android, что вы сами устранили ошибку.
- person Oliver Hausler; 11.12.2014
@ user1810737 вы можете проверить мой ответ. я решил это, используя фрагмент кода
- person Naitik; 22.03.2016
Код, который я использовал для этого:
@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;
}
};
person
ruxy
schedule
28.11.2011
вы можете добавить код, как показано ниже, он закроет экран просмотра видео, если возникнет какая-либо ошибка. Кроме того, он не будет отображать всплывающее окно по умолчанию с сообщением о том, что видео не может быть воспроизведено :)
videoview.setOnErrorListener(new MediaPlayer.OnErrorListener() {
@Override
public boolean onError(MediaPlayer mediaPlayer, int i, int i1) {
finish();
return true;
}
});
person
Naitik
schedule
22.03.2016
Я предпочитаю устанавливать такие слушатели в методе onCreate. Надеюсь кому-нибудь поможет
videoView.setOnErrorListener(new OnErrorListener () {
@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
Log.e(TAG, "Error playing video");
return true;
}
});
person
wired00
schedule
15.05.2013