10
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Posted at

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;
        }
    });
10
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?