0

J'ai une vue vidéo qui lit différents clips vidéo sur différents événements de l'utilisateur. J'ai mis en place l'aperçu vidéo que lorsque l'utilisateur appuie sur la vue, il arrête la vidéo et retourne à l'écran précédent. Cependant, je veux que la vidéo ne puisse pas être écoutée pendant 5 secondes (par exemple), et seulement après 5 secondes si l'écran est appuyé, la vidéo s'arrêtera. [Ainsi le film va jouer pendant au moins 5 secondes, avant que la capacité de l'arrêter]VideoView android, éviter d'appuyer pendant 5 secondes. Android

Voici le code pour le VideoView sur écoute OnTouch:

videoView.setOnTouchListener(new View.OnTouchListener() { 
       @Override 
       public boolean onTouch(View view, MotionEvent motionEvent) { 


        Log.d(TAG, "video clicked"); 

        videoView.stopPlayback(); 

        videoView.setVisibility(View.INVISIBLE); 


        return true; 
       } 
      }); 

J'ai essayé d'utiliser gestionnaire mais je ne pourrais pas la figure dehors où le mettre. Puisque si je mets la méthode stopPlayback dans le gestionnaire après 5 secondes, alors si quelqu'un clique sur la vue avant 5 secondes, la vidéo s'arrête après cinq secondes. , Mais ce que je veux, c'est que rien n'arrive du tout avec un robinet avant 5 secondes.

Merci beaucoup,

Répondre

1

Ne réglez pas le onTouchListener qu'après le délai de 5 secondes. De cette façon, pendant les 5 premières secondes, aucun événement tactile n'est enregistré, alors qu'au bout de 5 secondes lorsque vous définissezOnTouchListener, l'écouteur est prêt pour un événement tactile. Essayez quelque chose comme ceci:

Handler handler = new Handler(); 
handler.postDelayed(new Runnable() { 
    @Override 
    public void run() { 

     //Execute code here 

     videoView.setOnTouchListener(new View.OnTouchListener() { 
       @Override 
       public boolean onTouch(View view, MotionEvent motionEvent) { 

        Log.d(TAG, "video clicked"); 

        videoView.stopPlayback(); 

        videoView.setVisibility(View.INVISIBLE); 

        return true; 
       } 
      }); 

    } 
}, 5000); 

ou, en utilisant la suggestion de Ajinkya S:

videoView.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View view, MotionEvent motionEvent) { 

      Log.d(TAG, "video clicked"); 

      videoView.stopPlayback(); 

      videoView.setVisibility(View.INVISIBLE); 

      return true; 
     } 
    }); 
videoView.setEnabled(false); 


Handler handler = new Handler(); 
handler.postDelayed(new Runnable() { 
    @Override 
    public void run() { 

     //Execute code here 
     videoView.setEnabled(true); 

    } 
}, 5000); 
+0

Comment détecter quand la vidéo a commencé? – RJB

+0

Je ne sais pas - n'avez-vous pas d'événement déclenchant le début de la vidéo? – simplegr33n

+0

Essayez d'activer la vue vidéo setenabled (false) dans le gestionnaire et, après avoir terminé, faites en sorte qu'elle soit vraie. Ou bien désactiver son événement cliquable –