2
votes

Comment vérifier si le lecteur vidéo YouTube Webview a été démarré

Dans mon application Android, j'ai une vue Web contenant une vidéo YouTube intégrée dans la vue Web. Mon application comporte une bannière AdMob native.

Je souhaite masquer la bannière admob native de l'application lorsque l'utilisateur lit la vidéo, de sorte que la bannière ne s'affiche pas pendant la lecture de la vidéo, puis affiche à nouveau les annonces lorsque la lecture de la vidéo s'arrête

Le problème est que je ne sais pas comment vérifier si la vidéo a été lancée ou arrêtée.

Avez-vous une idée de la façon dont cela peut être fait? Merci beaucoup.


0 commentaires

4 Réponses :


2
votes

L'une des suggestions auxquelles je pense est de définir la visibilité de votre AdView sur GONE et d'appeler mAdView.pause () AdView pendant la lecture de la vidéo. Cela devrait empêcher toute demande supplémentaire d'être adressée à AdMob. Une fois la lecture de la vidéo terminée et que vous souhaitez afficher à nouveau votre bannière, vous devez définir la visibilité de l'AdView sur VISIBLE et appeler mAdView.resume()


1 commentaires

Merci. Ça a du sens. Maintenant, la deuxième partie de la question serait - comment savoir quand la vidéo YouTube commence et s'arrête?



1
votes

La communication entre webview et native se fait via JavascriptInterface. YouTube a construit son API de la même manière. vous pouvez utiliser le code ci-dessous pour obtenir ce que vous voulez.

Pour obtenir la fonctionnalité de lecture / pause via une vidéo Youtube, vous pouvez utiliser API YouTube JavaScript Player .

Exemple:

$('#play').on('click', function () {
    player.playVideo();
});

$('#pause').on('click', function () {
    player.pauseVideo();
});

Lorsque l'API est complètement chargée, elle recherche une fonction globale appelé onYouTubeIframeAPIReady () que vous devez définir.

Votre code devrait ressembler à quelque chose comme ça

var player;

function onYouTubeIframeAPIReady() {
    player = new YT.Player('video-placeholder', {
        width: 600,
        height: 400,
        videoId: 'Xa0Q0J5tOP0',
        playerVars: {
            color: 'white',
            playlist: 'taJ60kskkns,FG0fTKAqZ5g'
        },
        events: {
            onReady: initialize
        }
    });
}

Il suffit de créer deux boutons et appelez la méthode nécessaire au clic.

<div id="video-placeholder"></div>

<script src="https://www.youtube.com/iframe_api"></script>

Vous pouvez utiliser JavascriptInterface pour obtenir le rappel à l'intérieur du code natif java / kotlin de WebView.

Plus d'informations sur

  1. API du lecteur javascript Youtube avec exemple

  2. Interface JavaScript avec exemple


1 commentaires

Merci, c'est essentiellement ce que j'ai fait. A part les deux boutons. J'ai utilisé: 1) le lecteur API YT JS, puis via 2) l'interface JS a transmis l'état de la vidéo (mise en pause, lecture, etc.) dans le code Java, 3) dans le code Java, j'ai défini la visibilité sur GONE lors de la lecture et à VISIBLE dans d'autres états (REMARQUE: la visibilité doit être définie sur UIThread sinon cela ne fonctionnera pas). Cela a bien fonctionné. (Je n'ai pas interrompu et repris les annonces).



1
votes

J'utilise jquery pour montrer mes vidéos avec d'autres contenus et l'admob. Cela devrait également s'appliquer à votre cas, car vous utilisez la vue Web.
Vous devez détecter l'événement - onPlayerStateChange. Cochez cette question qui affiche le code et les pré-requêtes:
Vérifiez si la vidéo YouTube est en cours de lecture et exécutez le script < / p>


0 commentaires

0
votes


0 commentaires