android 在 webview 上捕获 youtube 电影
android capture youtube movie on webview
Activity 上有 ImageView
和 screenCapture
按钮以及 WebView
。
在 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。
但是拍摄的图像上没有电影。只是黑色区域。
为什么不能捕捉电影?
如何在 WebView 上捕捉电影?
请帮帮我。
我运行陷入了类似的问题。这是我的场景。我使用 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;
}
不知道我的方案能不能解决你的问题,希望你能从我的代码中得到启发。祝你好运。
Activity 上有 ImageView
和 screenCapture
按钮以及 WebView
。
在 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。
但是拍摄的图像上没有电影。只是黑色区域。
为什么不能捕捉电影?
如何在 WebView 上捕捉电影?
请帮帮我。
我运行陷入了类似的问题。这是我的场景。我使用 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;
}
不知道我的方案能不能解决你的问题,希望你能从我的代码中得到启发。祝你好运。