2015-04-21 93 views
1

還有ImageViewscreenCapture Button和WebView on Activity。android在webview上捕捉youtube電影

在WebView上加載「http://youtube.com」。

您可以看到youtube頁面並點擊電影。

電影將在HTML中播放。

單擊按鈕進行屏幕截圖。

View root = webView.getRootView(); 
    root.setDrawingCacheEnabled(true); 
    bmp = Bitmap.createBitmap(root.getDrawingCache()); 
    root.setDrawingCacheEnabled(false); 
    imageView.setImageBitmap(bmp); 

將拍攝的圖像設置爲ImageView。

但是在captrued圖像上沒有電影。只是黑色的區域。

爲什麼不能拍攝電影?

如何在WebView上捕捉影片?

請幫幫我。

回答

1

我碰到類似的問題。有我的場景。我使用WebView加載網頁。在寫在HTML5中的網頁中,有一個video來播放視頻。我想要捕捉video的部分內容。那麼,有我的代碼:
初始化WebView

String url = ...; 
VideoView vv; 
mWebView = (WebView) findViewById(R.id.webview); 
mWebView.setWebChromeClient(chromeClient); 
mWebView.setWebViewClient(wvClient); 
mWebView.getSettings().setJavaScriptEnabled(true); 
mWebView.getSettings().setPluginsEnabled(true); 
mWebView.loadUrl(url); 


覆蓋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){ 
      vv = (VideoView) frame.getFocusedChild(); 
     } 
    } 
} 


然後,有Capture()方法:

public Bitmap capture(VideoView vv){ 
    MediaMetadataRetriever rev = new MediaMetadataRetriever(); 
    rev.setDataSource(mContext, Uri);//Uri is the Content URI of the data you want to play, well, call this method before the rest of the methods in this class. This method may be time-consuming.; 
    Bitmap bitmap = rev.getFrameAtTime(vv.getCurrentPosition() * 1000, 
      MediaMetadataRetriever.OPTION_CLOSEST_SYNC); 
    return bitmap; 
} 


我不知道我的解決方案是否可以解決您的問題,但我希望您受到我的代碼的啓發。祝你好運。

+0

非常感謝您的回答。 :) – ririzplus

+0

不客氣,;-) – SilentKnight

+0

@SilentKnight我有類似的問題,你的答案看起來很有希望。我有一個問題,但是:你作爲'uri'傳遞了什麼? 'Uri.parse(webView.getUrl())'? – tobyUCT