如何通过代码检查文件是否受Android VideoView支持?

5

我正在尝试使用Android的VideoView播放视频。这是我的代码:

super.onCreate(savedInstanceState);
setContentView(R.layout.video);
VideoView videoView = (VideoView) findViewById(R.id.videoView);
videoView.setVideoURI(uri);
videoView.requestFocus();
videoView.start();

这个代码可以正常工作,但是有些手机仍然会弹出标题为“无法播放视频”的对话框。

我的问题是如何禁用这个通知窗口? 我是说,在调用videoView.start()之前,我能否检查视频文件是否受支持?或者我能否禁用或防止调用系统弹出通知窗口?

如果手机不支持,我想简单地跳过视频而不显示通知窗口。


嗨,你解决这个问题了吗? - Noundla Sandeep
2个回答

3
在开始播放VideoView之前,我使用setOnErrorListener检查视频是否可以播放。
    // Restart if PROBLEM
    myVideoView.setOnErrorListener(new MediaPlayer.OnErrorListener() {

        public boolean onError(MediaPlayer mp, int what, int extra) {
            // TODO Auto-generated method stub
            Intent intent = getIntent();
            overridePendingTransition(0, 0);
            intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);

            finish();

            overridePendingTransition(0, 0);
            startActivity(intent);

            return true;
        }

    });
    myVideoView.start();

0
我发现了另一种简单的方法,可以使用MediaPlayer来解决这个问题的一部分。
try {
    MediaPlayer mp = MediaPlayer.create(this, uri);
    mp.release();
} catch (Exception e) {
    Log.e("MediaPlayer", "can NOT play: " + uri);
}

上述代码可以过滤掉大多数不受VideoView支持的视频,但并不完美,因为我发现一些不支持的mkv/mpg视频也通过了上述测试。

无论如何,这是另一种思路。我在这里发布它,并希望有人能够改进它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接