2016-05-04 33 views
7

YouTube Android Player API sample code (sürüm 1.2.2) kullanarak, video kimliklerini yüklediğim bir taneye göre değiştirirseniz (ör. "QVikru_w2hQ" veya "u1n6E81rm80"), küçük resim Oyuncu, ancak play tıkladığında, oynatıcı YouTubeEkrancı.ErrorReason.INTERNAL_ERROR ile onError işlevine gider. "Oynarken bir sorun oluştu. Yeniden denemek için dokunun" diyen bir mesaj görüntülenir. Bu videoları YouTube web sitesinde veya iOS uygulamasında oynatmak bir sorun yaşamamaktadır. Orijinal örnek videolar geliştirici anahtarımla iyi oyna.Birden çok video için YouTube Android Player API INTERNAL_ERROR

Ben 11.13.56 şu anda YouTube uygulaması sürümü ile benim Nexus 5X (android 6.0.1) de dahil olmak üzere birden fazla cihaz, bu sorunu yaşıyorum.

başkasının benzer bir sorun yaşadı mı?

Ben de google data api issue tracker üzerinde potansiyel hata raporu gönderdiniz.

+0

herhangi bir cihazda çalışıyor mu? –

+0

@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 - Hayır. henüz bir tane buldum. –

+0

Ayrıca, örnek kodu denedim ve kesinlikle sağladığınız video kimliğiyle çalışmıyor, ancak sizden aldığım birçok video kanalıyla çalışıyor ve iyi çalışıyor. –

cevap

0

Bir YouTube böcek, topladığım detaylar için görünümü YouTubeAndroidPlayerAPI can't play some videos gibi görünüyor.

şu anda yeterli seviyede geçici çözüm bir niyet ile YouTube resmi uygulamada video açık olması veya bir WebView ile oyuncu fragmanının yerini görünmektedir. Bu ikinci çözümü tercih ettim.

Standart Web Görünümü çok sınırlıdır ve videoyu tam ekrana getirmek için düğmeyi göstermez. WebView'da videoyu Nihayet

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); 

yüklemek:

myWebView.loadUrl("https://www.youtube.com/embed/"+youtube_id); 

İsterseniz için

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); 
     } 
    } 
} 

ve sonra WebView'ı başlatmak: Sen WebChromeClient uzatmak bir sınıf oluşturmak gerekir bunu YouTube oyuncuya WebView boyutlarını uyarlamak:

Point size = new Point(); 
getWindowManager().getDefaultDisplay().getSize(size); 
myWebView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, (int)Math.round(size.x/1.77))); 
+0

Bu yöntemle çalışmak için autoplay aldınız mı? Henüz yönetmedim. setMediaPlaybackRequiresUserGesture (false) 'yardım etmiyor gibi görünüyor. –

+0

Hayır, bu basit kodla videoyu otomatik olarak oynatamazsınız ... kullanıcı "oynat" düğmesine dokunmalıdır. – frabbe

2

Web Görünümü iyi bir çözüm gibi görünüyor. Acelem vardı ve hızlı bir düzeltme ihtiyacı olduğundan, bu github projesinden kaynak kodunu kullandı:

https://github.com/theScrabi/NewPipe

Bu kod Youtube API dayanmaz. Saf web ayrıştırmadır. Tüm videolarım, çözümle daha önce olduğu kadar hızlı çalışıyor.

Tüm proje işlevsel bir uygulamadır, ancak içeride dalış yapabilir ve ihtiyacınız olanı alabilirsiniz. Video küçük resmini ve tam ekran oynatıcı etkinliğini yerleştiren parçayı kullandım. Projenin yazarına

Kudos.

İlgili konular