2013-07-15 15 views
5

YouTubeチャンネルでYouTube動画を再生しようとしているWebViewコードがあります。しかし、スピナーアイコンをビデオに表示しているだけで、実際にビデオを開始することはありません。誰でもそれを修正する方法を知っているだろうか?Android - WebViewでYouTube動画が再生されない

public class YoutubeActivity extends Activity 
{ 
    WebView webview = null; 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 

     webview = new WebView(this); 
     webview.getSettings().setAppCacheEnabled(false); 
     webview.getSettings().setJavaScriptEnabled(true); 
     webview.setInitialScale(1); 
     webview.getSettings().setPluginState(PluginState.ON); 

     webview.setWebViewClient(new WebViewClient() { 
      @Override 
      public boolean shouldOverrideUrlLoading(WebView view, String url) { 
       view.loadUrl(url); 
       return true; 
      } 
     }); 


     WebSettings webSettings = webview.getSettings(); 
     webSettings.setJavaScriptEnabled(true); 
     webSettings.setBuiltInZoomControls(true); 
     //webSettings.getMediaPlaybackRequiresUserGesture(); 
     webSettings.setAllowContentAccess(true); 
     webSettings.setEnableSmoothTransition(true); 
     webSettings.setLoadsImagesAutomatically(true); 
     webSettings.setLoadWithOverviewMode(true); 
     webSettings.setSupportZoom(true); 
     webSettings.setUseWideViewPort(true); 

     setContentView(webview); 
     webview.loadUrl("http://www.youtube.com/g33ktalktv");   
    } 

    public void onBackPressed () 
    { 
     //Class.forName("com.***.HTML5WebView").getMethod("onPause", (Class[]) null). 
     //invoke(html5WebView, (Object[]) null); 
     webview.clearView(); 
    } 

    @Override 
    public void onStop() 
    { 
     super.onStop(); 
     // your code 

     webview.clearView(); 
    } 
} 

そして、これはマニフェストの設定です:事前に

<activity 
    android:name="YoutubeActivity" 
    android:label="Some string" 
    android:hardwareAccelerated="true"/> 

Thannk!

答えて

10

は、広範なテストとのデバッグを必要としますAndroid 2.xと4.xの機能とバグの違いにより、Android OSのバージョンが異なります。

YouTube Android Player APIを使って自分のアプリに埋め込んだビデオはsample appだから、その手順に従えばそれほど難しいことはありません。

<application 
     android:hardwareAccelerated="true" 
     android:allowBackup="true"> 
</application> 

+1

しかし、Youtuebe Androidプレーヤーを使用している問題は、あなたのデバイスにインストールされている必要がありますビデオのIDとYouTubeのアプリを知っている必要があります。 私の問題はどうですか? http://stackoverflow.com/questions/18533678/playing-youtube-videos-smoothly-in-web-view – anshul

+0

Android 5から、WebChromeClientを使用すると、すべて正常に動作します。しかし、Android 4バージョンでは、エラーが異なる可能性があります。ここで私はすべてをカタログしようとしました:http://stackoverflow.com/questions/31591010/youtube-iframe-player-wont-show-videos-in-android-4-x-webview/38410424#38410424 – jos

2

あなた自身でWebChromeClientを試しましたか?この質問は関連しているようです。 WebView and HTML5 <video>

WebViewClientの場合と同様に、これらのいずれかを作成して実装する必要があります。

webview.setWebChromeClient(new WebChromeClient() { 
    @Override 
    public void onShowCustomView(View view, CustomViewCallback callback) { 
     super.onShowCustomView(view, callback); 
     if (view instanceof FrameLayout) { 
      FrameLayout frame = (FrameLayout) view; 
      if (frame.getFocusedChild() instanceof VideoView) { 
       VideoView video = (VideoView) frame.getFocusedChild(); 
       frame.removeView(video); 
       a.setContentView(video); 
       video.setOnCompletionListener(this); 
       video.setOnErrorListener(this); 
       video.start(); 
      } 
     } 
    } 
}); 

ウェブビュー設定にwebview.getSettings().setPluginsEnabled(true);を必ず追加してください。

そして、最も重要なのは、WebViewにロードするすべての Webページのために、あなたのマニフェストでINTERNET権限を持っているようにしてください:YouTubeの動画を再生するのWebViewを使用し

<uses-permission android:name="android.permission.INTERNET"/> 
+11

あなたはこの行を説明していただけますか?a.setContentView(video); – SJSSoft

0

使用は完全に取り組んでいます。