Help us understand the problem. What is going on with this article?

VideoViewで「この動画は再生できません」ダイアログが表示された際に、前のActivityに戻るようにする

More than 5 years have passed since last update.

device-2013-05-27-144632.png

AndroidのVideoViewでは、再生しようとしている動画のHTTPステータスコードが403や404、また、フォーマットがSupported Media Formatsに含まれない場合、「この動画は再生できません」ダイアログが表示され、OKを押すと空のVideoViewが表示される。

できれば、OKボタンを押した時には、呼び出し元のActivityに遷移させたかったのでメモ。

Android Developersによると、エラー発生時にはOnErrorListenerが呼ばれる。onErrorがfalseを返すか、OnErrorListenerが呼ばれない場合はOnCompletionListenerが呼ばれる。

つまり、OnCompletionListenerは、正常に動画の再生が終了した際にも呼ばれるので、currentPositionがdurationと同じ場合は画面の遷移をさせないようにすればよかった。

VideoActivity.java
videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
    public void onCompletion(MediaPlayer mp) {
        if (mp.getCurrentPosition() != mp.getDuration()) {
            finish();
        }
    }
});

ちなみに、onErrorでハンドリングできないかと思いこんな感じのコードを書いたが、ダイアログが表示される前に前画面に遷移してしまった。

VideoActivityFalse.java
    videoView.setOnErrorListener(new MediaPlayer.OnErrorListener() {
        public boolean onError(MediaPlayer mp, int what, int extra) {
            finish();
            return false;
        }
    });
Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away