2011-08-08 16 views
2

私はアンドロイドウェブビュー内でhtml5ビデオとYouTubeビデオを再生しようとしていますが、アンドロイドウェブビュー画面にビデオを表示することはできません。このビデオを再生します。Android WebViewでHTML5ビデオとYouTube動画を再生する方法は?

私は...コードスニペットの下

レイアウトxmlファイルの命名を使用している:のtest.xmlは、コードsnipetの下に含まれています

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" android:id="@+id/rltvLayoutTest" 
    android:layout_height="fill_parent"> 
    <WebView android:id="@+id/webViewTest" android:layout_width="fill_parent" 
     android:layout_height="fill_parent" /> 
</LinearLayout> 

とアクティビティクラス名:Test.javaは、下記のコードが含まれています。

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.test); 

     WebView mWebView = (WebView)findViewById(R.id.webViewTest); 


     mWebView.getSettings().setJavaScriptEnabled(true); 
     mWebView.getSettings().setAllowFileAccess(true); 
     mWebView.getSettings().setPluginsEnabled(true); 
     mWebView.setWebChromeClient(new chromeClient()); 
     mWebView.setWebViewClient(new WebViewClient(){ 

     }); 
     mWebView.loadUrl("http://broken-links.com/tests/video/"); 
    } 

    public class chromeClient extends WebChromeClient implements OnCompletionListener, OnErrorListener{ 
     private WebView wv; 
     private VideoView mVideoView; 
     private LinearLayout mContentView; 
     private FrameLayout mCustomViewContainer; 
     private WebChromeClient.CustomViewCallback mCustomViewCallback; 
     FrameLayout.LayoutParams COVER_SCREEN_GRAVITY_CENTER = new FrameLayout.LayoutParams(
       ViewGroup.LayoutParams.FILL_PARENT, 
       ViewGroup.LayoutParams.FILL_PARENT, Gravity.CENTER); 

     @Override 
     public void onShowCustomView(View view, CustomViewCallback callback) { 
      if (view instanceof FrameLayout) { 
       wv = (WebView)findViewById(R.id.webViewTest); 
       mCustomViewContainer = (FrameLayout) view; 
       mCustomViewCallback = callback; 
       mContentView = (LinearLayout)findViewById(R.id.rltvLayoutTest); 
       if (mCustomViewContainer.getFocusedChild() instanceof VideoView) { 
        mVideoView = (VideoView) mCustomViewContainer.getFocusedChild(); 
        // frame.removeView(video); 
        mContentView.setVisibility(View.GONE); 
        mCustomViewContainer.setVisibility(View.VISIBLE); 
        setContentView(mCustomViewContainer); 
        mVideoView.setOnCompletionListener(this); 
        mVideoView.setOnErrorListener(this); 
        mVideoView.start(); 

       } 
      } 
     } 

     public void onHideCustomView() { 
      if (mVideoView == null) 
       return; 
      // Hide the custom view. 
      mVideoView.setVisibility(View.GONE); 
      // Remove the custom view from its container. 
      mCustomViewContainer.removeView(mVideoView); 
      mVideoView = null; 
      mCustomViewContainer.setVisibility(View.GONE); 
      mCustomViewCallback.onCustomViewHidden(); 
      // Show the content view. 
      mContentView.setVisibility(View.VISIBLE); 
     } 


     public void onCompletion(MediaPlayer mp) { 
      mp.stop(); 
      mCustomViewContainer.setVisibility(View.GONE); 
      onHideCustomView(); 
      setContentView(mContentView); 
     } 

     public boolean onError(MediaPlayer arg0, int arg1, int arg2) { 
      setContentView(mContentView); 
      return true; 
     } 
    } 

答えて

0

あなたはあなたのビュー階層にmCustomViewContainerを追加していない

+0

私はmCustomViewContainerを追加する必要があります。 – user883552

0

タブレットで実行している場合はマニフェストファイルにhardwareaccelerated = trueを追加してください。また、正常に動作します..また、sdkのバージョンを11に変更してください。

1

私はhtml5webviewを使用してこの問題を解決しました。あなたのプロジェクトには、このようにコーディングすることができます。

private HTML5WebView mWebView; 
String url = "SOMEURL"; 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    mWebView = new HTML5WebView(this); 
    if (savedInstanceState != null) { 
      mWebView.restoreState(savedInstanceState); 
    } else { 
      mWebView.loadUrl(url); 
    } 
    setContentView(mWebView.getLayout()); 
} 
@Override 
public void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 
    mWebView.saveState(outState); 
} 

アンドロイドを入れて、ビデオ回転可能にするには:例えば、あなたの活動 にconfigChanges = "方向" コード(AndroidManifest.xmlに)

<activity android:name=".ui.HTML5Activity" android:configChanges="orientation"/> 

とonConfigurationChangedメソッドをオーバーライドします。

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 
} 
+1

このプロジェクトはminSDKversionに基づいています。バージョンが11以上の場合、動作しません。 –

+1

それは動作します。プロジェクトにapkを入れる必要はありません。それは図書館です。あなたのアンドロイドプロジェクトでライブラリを使用する方法を調べてみてください。 –

+0

プロジェクトでapkをライブラリとして使用するには? – Manikandan

0

私のために働いた。あなたも助けてくださいplay html videos

+0

YouTube動画を自動的に再生できない – BaDo

関連する問題