gpt4 book ai didi

android - 在 webview android 中截取视频的屏幕截图

转载 作者:太空狗 更新时间:2023-10-29 14:56:13 27 4
gpt4 key购买 nike

我正在做一个项目,我将屏幕截图保存在 WebView 中。 API 级别为 21。在普通主页上,它工作得非常好,但是当我访问 youtube 并观看视频时,视频播放器返回为黑色矩形。我想做的是在用户触摸屏幕时截取屏幕截图。

当我使用电源和音量按钮截取屏幕截图时,效果非常好。是否有采用这种屏幕截图的 Intent?理想情况下,屏幕截图只包含 WebView ,但如果它是整个屏幕,我也可以使用它。

非常感谢任何帮助。

干杯,

托比

编辑:我的一些代码

View rootView;
ValueCallback<String> callback = new ValueCallback<String>() {
@Override
public void onReceiveValue(String value) {
category1.setText(value);
}
};
String root = android.os.Environment.getExternalStoragePublicDirectory
(Environment.DIRECTORY_DCIM).toString(), filename, time, puretime, movementType = ""; //movementType is set according to MotionEvent.getAction()
File myDir = new File(root + "/saved_files/")

protected void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);

rootView = findViewById(android.R.id.content).getRootView();
rootView.setDrawingCacheEnabled(true);
}

public class MyView extends View {
public MyView(Context context) {
super(context);
}

@Override
public boolean onTouchEvent(MotionEvent event) {
calendar = Calendar.getInstance();
time = String.format("%02d:%02d:%02d.%03d", calendar.get(Calendar.HOUR_OF_DAY),
calendar.get(Calendar.MINUTE), calendar.get(Calendar.SECOND),
calendar.get(Calendar.MILLISECOND));
puretime = String.format("%02d%02d%02d%03d", calendar.get(Calendar.HOUR_OF_DAY),
calendar.get(Calendar.MINUTE), calendar.get(Calendar.SECOND),
calendar.get(Calendar.MILLISECOND));
if (movementType.equals("down")) {
try {
filename = puretime + ".xml";
webView.saveWebArchive(myDir+filename, false, callback);
} catch (Exception e) {
e.printStackTrace();
}
}
invalidate();
return true;
}

编辑2:

显然,黑色矩形的问题在于视频中的元素由 gpu 处理,要使“正常”快照正常工作,程序需要计算每一帧,这工作量太大。

最佳答案

我认为这会有所帮助

  View rootView = findViewById(android.R.id.content).getRootView();
rootView.setDrawingCacheEnabled(true);
Bitmap screenshot = rootView.getDrawingCache();

尝试后请告诉我。

更新:

如果我没有正确理解您的评论,您将无法使用 saveWebArchive(filename) 更改路径.

那么你可能想使用 saveWebArchive(String,boolean,ValueCallback<String> callBack) .这将使用给定的名称保存文件,您可以在回调函数中使用该文件名来做任何您想做的事情(比如保存到外部存储或任何东西)。

在这里查看 - saveWebArchive

关于android - 在 webview android 中截取视频的屏幕截图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31182503/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com