2015-08-31 8 views
14

Sto sviluppando un'applicazione utilizzando PhoneGap. Quindi, è un'app web. In questa app, ho l'obbligo di incorporare un video di YouTube e riprodurlo automaticamente ogni volta che l'utente naviga verso quella particolare pagina.Tentativo di riprodurre automaticamente i video di YouTube in un'app PhoneGap/Cordova

Ho letto che la riproduzione automatica di video HTML5 non funziona su dispositivi mobili a causa di concessioni di larghezza di banda. La mia domanda è che c'è qualsiasi modo per bypassare questa restrizione? Non mi occupo di soluzioni alternative o hack che potrebbero permettermi di farlo. Proprio niente.

Grazie.

+0

Hai provato la soluzione proposta? – lifeisfoo

risposta

5

Come hai sottolineato tu stesso, tutte le istruzioni di autoplay nel tuo codice verranno ignorate al caricamento. Quindi implementeremo una funzione che ottiene il video nel corpo e inizia a riprodurlo.

il codice JavaScript seguente potrebbe fare questo:

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

Per eseguire questo codice dopo che la pagina è stata caricata, abbiamo bisogno di impostare un WebViewClient e implementare 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");