2011-09-15 1 views
9

In qualche modo il video HTML5 di YouTube ha smesso di funzionare per me circa una settimana fa. Non ho idea del perché. Ecco il codice che stava lavorando la scorsa settimana (beh, non il codice vero e proprio, ma l'esempio più piccolo ho potuto fare):Youtube HTML5 Video interrotto Funzionamento in Android

public class VideoTestActivity extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     WebView webView = new WebView(this); 
     webView.getSettings().setJavaScriptEnabled(true); 
     webView.getSettings().setPluginState(PluginState.OFF); 
     webView.setWebChromeClient(new TestWebChromeClient()); 

     setContentView(webView); 

     // Try with http://player.vimeo.com/video/24158845 and it works. 
     webView.loadUrl("http://www.youtube.com/embed/e2UIg3Ddfp0"); 
    } 

    private class TestWebChromeClient extends WebChromeClient { 
     @Override 
     public void onShowCustomView(View view, WebChromeClient.CustomViewCallback callback) { 
      super.onShowCustomView(view, callback); 
      VideoTestActivity.this.setContentView(view); 
     } 
    } 
} 

Questo non funziona sul mio telefono o l'emulatore. La parte pazzesca è che Vimeo funziona ancora alla grande. Ho provato a impostare un agente utente iPhone, ma non ha funzionato e sono fuori di idee. Sembra davvero che YouTube abbia cambiato qualcosa ...

+3

ho lavorato la scorsa notte senza fortuna .. è strano .. Sono riuscito a ottenere youtube con il controllo predefinito, ma sembra che ci sia un errore js da qualche parte, –

+0

btw il codice sopra sembra funzionare adesso. Supponiamo che Google abbia corretto l'errore javascript – dparnas

+0

Sì, hanno fatto esattamente questo, quindi questo è tutto un non-problema di nuovo. –

risposta

2

Youtube potrebbe aver cambiato qualcosa nella loro pagina incorporata e molto probabilmente questo sta causando problemi all'interno dello WebView ed è per questo che non funziona più.

Inoltre stai testando la tua app sullo stesso dispositivo di prima?

Non credo sia una buona pratica utilizzare questa soluzione, dal momento che non è possibile fare affidamento sul fatto che il contenuto visualizzato oggi da Youtube e funziona, sarà lo stesso in pochi giorni e sarà comunque lavoro, come hai appena incontrato ora. Avevo anche problemi simili con il contenuto di videos e Youtube, funzionava su un dispositivo e non su altri dispositivi. È anche un contenuto Flash e molti dispositivi Android non hanno Flash e non saranno in grado di riprodurre il contenuto.

Una soluzione sarebbe quella di creare un Intent per la riproduzione del video:

 Intent videoIntent=new Intent(Intent.ACTION_VIEW, 
            Uri.parse("http://www.youtube.com/my_url")); 
     startActivity(videoIntent); 

Ma quello che mi sento di raccomandare è quello di codificare i video per Android come suggerito nella Supported Media Formats e memorizzarli sul proprio server, se si avere la possibilità.

MODIFICA: Hanno sicuramente cambiato qualcosa poiché c'è un errore js lì. È possibile tenere traccia utilizzando la WebChromeClient:

mWebView.setWebChromeClient(new WebChromeClient(){ 
     @Override 
     public void onConsoleMessage(String message, int lineNumber, 
       String sourceID) { 
      super.onConsoleMessage(message, lineNumber, sourceID); 
      Log.i("VIDEO VIEW",message); 
     } 
} 

Questo è il messaggio di errore che ho ottenuto:

TypeError: Result of expression 'a' [undefined] is not an object.line 78sourcehttp://www.youtube.com/embed/e2UIg3Ddfp0 

Non so se ti aiuta, avrò un altro sguardo più tardi e vedere cosa posso trovare

+0

Grazie per il vostro aiuto. Non ho mai pensato di ascoltare gli errori di JS. L'intero punto dell'app è guardare video, principalmente da Youtube, quindi suppongo che se questo non viene mai risolto da parte di YouTube dovrò vedere se riesco a intercettare la fonte in qualche modo e correggerla, o usare un intento. La soluzione intent è un po 'fiacca perché porta le persone a una nuova app e le fa scegliere tra il browser e l'app YouTube, ma, se è l'unica opzione, credo che sia tutto quello che puoi fare. –