Sembra un errore YouTube, visualizza YouTubeAndroidPlayerAPI can't play some videos per i dettagli che ho raccolto.
l'unica soluzione passabile in questo momento sembra essere aprire il video nell'app ufficiale di YouTube con un intento o sostituire il frammento del giocatore con una WebView. Ho preferito questa seconda soluzione.
Il WebView standard è molto limitato e non mostrerà il pulsante per portare il video a schermo intero. È necessario creare una classe che estende WebChromeClient:
public class MyWebChromeClient extends WebChromeClient {
FrameLayout.LayoutParams LayoutParameters = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT);
@Override
public void onShowCustomView(View view, CustomViewCallback callback) {
if (mCustomView != null) {
callback.onCustomViewHidden();
return;
}
mContentView = (LinearLayout) findViewById(R.id.scheda_video_activity);
mContentView.setVisibility(View.GONE);
mCustomViewContainer = new FrameLayout(SchedaVideoActivity.this);
mCustomViewContainer.setLayoutParams(LayoutParameters);
mCustomViewContainer.setBackgroundResource(android.R.color.black);
view.setLayoutParams(LayoutParameters);
mCustomViewContainer.addView(view);
mCustomView = view;
mCustomViewCallback = callback;
mCustomViewContainer.setVisibility(View.VISIBLE);
setContentView(mCustomViewContainer);
}
@Override
public void onHideCustomView() {
if (mCustomView == null) {
return;
} else {
mCustomView.setVisibility(View.GONE);
mCustomViewContainer.removeView(mCustomView);
mCustomView = null;
mCustomViewContainer.setVisibility(View.GONE);
mCustomViewCallback.onCustomViewHidden();
mContentView.setVisibility(View.VISIBLE);
setContentView(mContentView);
}
}
}
e poi inizializzare il WebView:
WebView myWebView = (WebView)findViewById(R.id.webview);
MyWebChromeClient mWebChromeClient = new MyWebChromeClient();
myWebView.setWebChromeClient(mWebChromeClient);
myWebView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return false;
}
});
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
Infine, caricare il video nel WebView:
myWebView.loadUrl("https://www.youtube.com/embed/"+youtube_id);
Se si desidera Adattare le dimensioni di WebView al lettore YouTube è possibile:
Point size = new Point();
getWindowManager().getDefaultDisplay().getSize(size);
myWebView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, (int)Math.round(size.x/1.77)));
funziona su qualsiasi dispositivo? –
@VivekMishra: Galaxy S4, 5.0.1, 11.10.60 - No. HTC One M8, 6.0, 11.10.60 - No. HTC Desire 610, 4.4.2, 11.13.56 - No. Non ho trovato ancora. –
Ho anche provato il codice di esempio e certamente non funziona con l'id del video che hai fornito ma funziona con molti ID video casuali che ho scelto da you tube e funziona perfettamente. Penso che possa essere correlato al problema dell'accessibilità –