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() を呼び出す前に、ビデオ ファイルがサポートされているかどうかを確認できますか? または、システム ポップアップ通知ウィンドウを無効にするか、呼び出さないようにすることはできますか?

電話でサポートされていない場合は、通知ウィンドウなしでビデオをスキップしたいと思います。

4

2 に答える 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();
于 2012-10-11T08:23:30.043 に答える
0

MediaPlayerこの問題の一部を解決する別の簡単な方法を見つけました。

try {
    MediaPlayer mp = MediaPlayer.create(this, uri);
    mp.release();
} catch (Exception e) {
    Log.e("MediaPlayer", "can NOT play: " + uri);
}

上記のコードは、 でサポートされていないほとんどのビデオを除外できますがVideoView、完全ではありません。サポートされていないmkv/mpgビデオも上記のテストに合格することがわかったからです。

とにかく、それは別の考え方です。ここに投稿しました。誰かがそれを改善できることを願っています。

于 2013-12-05T13:24:22.783 に答える