Как отловить Извините, это видео невозможно воспроизвести на VideoView

У меня есть VideoView, и я транслирую видео с удаленного сервера. В большинстве случаев видео воспроизводится очень плавно. Но иногда он отображает сообщение об ошибке «К сожалению, это видео не может быть воспроизведено». У меня есть подозрение, что это больше касается поддерживаемых форматов видео. Однако я не знаю, какие форматы поддерживаются. Мой вопрос: «Как я могу поймать эту ошибку (например, предотвратить появление сообщения об ошибке)»? Я использую Android 2.2 в этом проекте. Мы будем очень признательны за любые советы. :)


person emmandroid    schedule 19.07.2011    source источник
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
comment
Спасибо за эту информацию. Я сделаю это первым и сообщу вам, если это сработает. Спасибо :) - person emmandroid; 19.07.2011
comment
Диалог все равно будет появляться в моем случае. Любые идеи? - person user1810737; 25.12.2013
comment
@user1810737 user1810737 Я думаю, вы уже поняли это, но я думаю, вы должны вернуть true в OnError, чтобы сообщить Android, что вы сами устранили ошибку. - person Oliver Hausler; 11.12.2014
comment
@ 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