2015-08-31 7 views
14

Pracuję nad aplikacją przy użyciu PhoneGap. Jest to więc aplikacja internetowa. W tej aplikacji muszę umieścić film na YouTube i automatycznie odtwarzać go za każdym razem, gdy użytkownik wejdzie na tę stronę.Próbowanie automatycznego odtwarzania filmów z YouTube w aplikacji PhoneGap/Cordova

Czytałem, że autoodtwarzanie filmów HTML5 nie działa na urządzeniach mobilnych ze względu na przepustowość łącza. Moje pytanie brzmi: czy w ogóle istnieje jakiś sposób na ominięcie tego ograniczenia? Nie mam nic przeciwko kompleksowym obejściom i hackom, które mogłyby mi na to pozwolić. Cokolwiek.

Dzięki.

+0

Czy próbowałeś zaproponowanego rozwiązania? – lifeisfoo

Odpowiedz

5

Jak sam zauważyłeś, wszystkie instrukcje gry automatycznej w twoim kodzie będą ignorowane podczas ładowania. Więc zaimplementujemy funkcję, która dostanie wideo w ciele i zacznie grać.

Poniższy kod JavaScript może to zrobić:

(function() { 
    document.getElementsByTagName('video')[0].play(); 
})() 

Aby wykonać ten kod po załadowaniu strony, musimy ustawić WebViewClient i wdrożenie onPageFinished()

webview.setWebViewClient(new CordovaWebViewClient(this, webview) { 
      // autoplay when finished loading via javascript injection 
      public void onPageFinished(WebView view, String url) { webview.loadUrl("javascript:(function() { document.getElementsByTagName('video')[0].play(); })()"); } 
}); 

final WebSettings settings = webview.getSettings(); 
    settings.setJavaScriptEnabled(true); 
    settings.setJavaScriptCanOpenWindowsAutomatically(true); 
    settings.setPluginState(WebSettings.PluginState.ON); 

A full example:

webview = new CordovaWebView(this); 
    setContentView(webview); 

    final WebSettings settings = webview.getSettings(); 
    settings.setJavaScriptEnabled(true); 
    settings.setJavaScriptCanOpenWindowsAutomatically(true); 
    settings.setPluginState(WebSettings.PluginState.ON); 

    webview.setWebViewClient(new CordovaWebViewClient() { 
     // autoplay when finished loading via javascript injection 
     public void onPageFinished(WebView view, String url) { webview.loadUrl("javascript:(function() { document.getElementsByTagName('video')[0].play(); })()"); } 
    }); 

    webview.loadUrl("http://html5demos.com/video");