2011-11-29 31 views
7

Tôi đã thành công để phát trực tiếp video Youtube từ nội dung HTML5 trong Webview trong Android nhưng hiện tại vấn đề là video chỉ phát lần đầu tiên. Sau đó VideoView chỉ chuyển đến cuối tệp video.Video chỉ phát một lần trong Webview của Android

Tôi đã thử xóa bộ nhớ cache theo đề xuất here nhưng không may mắn.

Giải pháp có thể có cho vấn đề này là gì?

Vui lòng thử mã để chạy video sau đây, điều này đã được sử dụng một số gợi ý đưa ra trên 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

Tuyệt vời, tôi có thể phát video của mình nhờ các dòng đó :) webView.setWebChromeClient (new WebChromeClient()); webView.setWebViewClient (new WebViewClient()) – OlivierM

Trả lời

4

Thêm trong ứng dụng chrome của bạn:.

 @Override public void onPrepared(MediaPlayer mp) { 

     customViewCallback.onCustomViewHidden(); 
    } 

nơi customViewCallback = callback;.

+0

tôi đã thêm cùng một điều im nhận được sự cố xin vui lòng cho tôi biết làm thế nào để thoát khỏi vụ tai nạn đó? tp: //stackoverflow.com/questions/14229077/you-tube-playing-only-once – Manju

1

Bạn đã một đoạn video làm việc bên trong một WebView với HTML5? Chúc mừng! Tôi không cố gắng để làm điều đó :(

Để khắc phục vấn đề của tôi, tôi đã kết thúc để lại một giữ chỗ trong HTML và xử lý các video từ mã gốc bằng cách sử dụng lớp MediaPlayer

+0

bạn có thể cho tôi biết là có trực tiếp phát tệp mp4 trong trình duyệt Android vì tôi không thể phát. tôi có hồ sơ (tập tin định dạng mp4) với lớp mediarecoder và lưu trữ trong máy chủ nhưng không thành công để chơi ở trình duyệt –

+0

@ Dr.nik: Xin lỗi. Tôi không hiểu câu hỏi của bạn: ( – Macarse

+0

tôi có cập nhật. Vui lòng xem nó –

0

tôi có vấn đề này cũng tôi đã có thêm một tìm kiếm (0) có vẻ như video tiếp theo phát từ chính xác nơi cuối đoạn video cuối cùng. ed. Vì vậy, tôi phải đi đến phần đầu của video trước khi chơi.

Các vấn đề liên quan