2011-11-29 6 views
7

AndroidのWebviewでHTML5コンテンツからYouTube動画をストリーミング再生することに成功しましたが、今問題は動画が初めて再生されることです。その後、VideoViewはビデオファイルの最後に移動します。動画はAndroidのWebviewで一度だけ再生されます

hereのようにキャッシュをクリアしようとしましたが運はありませんでした。

この問題の解決方法はありますか?

ビデオを実行するためのコードを、次の試してみてください、これはあなたがビデオはHTML5とWebView内部の作業しまったstackoverflow.com

WebView webView = (WebView) findViewById(R.id.product_details_webview); 
WebSettings webSettings = webView.getSettings(); 
webSettings.setPluginState(WebSettings.PluginState.ON); 
webSettings.setJavaScriptEnabled(true); 
webSettings.setUseWideViewPort(true); 
webSettings.setLoadWithOverviewMode(true); 
webView.setWebChromeClient(new chromeClient()); 
webView.setWebViewClient(new WebViewClient(){ 

}); 
webView.loadUrl(url); 

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.WRAP_CONTENT, 
      ViewGroup.LayoutParams.WRAP_CONTENT, Gravity.CENTER); 

    @Override 
    public void onShowCustomView(View view, CustomViewCallback callback) { 
     if (view instanceof FrameLayout) { 
      wv = (WebView)findViewById(R.id.product_details_webview); 
      mCustomViewContainer = (FrameLayout) view; 
      mCustomViewCallback = callback; 
      mContentView = (LinearLayout)findViewById(R.id.linearlayout1); 
      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; 
     }else{ 
     // 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

偉大な、私は私のビデオがそれらの行のおかげで遊ぶことができた:) webView.setWebChromeClient(new WebChromeClient()); webView.setWebViewClient(new WebViewClient()) – OlivierM

答えて

4

あなたクロムクライアントに追加に失敗しました:

customViewCallback =コールバック
 @Override public void onPrepared(MediaPlayer mp) { 

     customViewCallback.onCustomViewHidden(); 
    } 

;。

+0

の対応するアクティビティタグでhardwareAccelerated = "true"を追加しました。同じことを追加しました。そのクラッシュを取り除く方法を教えてください。クラッシュhtのリンクを確認してくださいtp://stackoverflow.com/questions/14229077/you-tube-playing-only-once – Manju

1

に与えられたいくつかの提案を使用してきましたか?おめでとう! 。私はHTMLでプレースホルダを残し、MediaPlayerクラスを使用してネイティブコードからのビデオを扱うことになった私の問題を解決するには

:(ことをやろうとし

+0

私は遊ぶことができないので、アンドロイドブラウザで直接mp4ファイルを再生していることを教えてください。 mediarecoderクラスのレコードファイル(mp4 formateファイル)があり、サーバに保存されていますが、ブラウザで再生するのに成功しません。 –

+0

@ Dr.nik:申し訳ありません。私はあなたの質問を理解していません:( – Macarse

+0

私は更新を持っています。それを見てください –

0

私もこの問題を抱え は、私が追加する必要がありました模索次のビデオは場所を正確に最後のビデオエンドから再生のように(0) は思えます。 ed。 再生する前にビデオの先頭に移動しなければなりませんでした。

関連する問題