Comment vérifier si le fichier est supporté par android videoview par code?

J'essaie de lire la vidéo par Android videoview. Voici mon code:

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

Cela fonctionne très bien, mais certains téléphones affichent toujours une boîte de dialogue avec le titre "Impossible de lire la vidéo".

Ma question est comment désactiver cette fenêtre de notification? Je veux dire, puis-je vérifier si le fichier vidéo est supporté ou non avant d'appeler videoView.start ()? Ou puis-je désactiver ou empêcher l'appel de la fenêtre de notification contextuelle du système?

Je voudrais simplement ignorer la vidéo si elle n'est pas supportée par le téléphone, sans la fenêtre de notification.

0
Salut, Avez-vous trouvé la solution pour cela?
ajouté l'auteur Noundla, source

2 Réponses

J'ai utilisé setOnErrorListener avant de démarrer VideoView pour vérifier si la vidéo sera lue.

   //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
ajouté

J'ai trouvé un autre moyen facile d'utiliser MediaPlayer pour résoudre une partie de ce problème.

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

Le code ci-dessus peut filtrer la plupart des vidéos qui ne sont pas supportées par VideoView , mais ce n'est pas parfait, parce que j'ai trouvé des vidéos mkv/mpg non supportées.

De toute façon, c'est une autre ligne de pensée. Je l'ai posté ici, et espère que quelqu'un peut l'améliorer.

0
ajouté