我正在一個項目中,我在WebView中保存截圖。 API級別爲21.在普通主頁上,它工作得很好,但是當我訪問YouTube並觀看視頻時,視頻播放器將返回爲黑色矩形。 我想要做的就是當用戶觸摸屏幕時拍攝屏幕截圖。在webview中截取視頻android
當我使用Power & Volume Button進行截圖時,它可以很好地工作。有沒有一種意圖,這需要這種截圖?理想情況下,截圖只包含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;
}
EDIT2:
明顯的黑色矩形的問題是,元素的視頻被處理gpu和用於「正常」快照以運行該程序將需要計算每個工作量太大的幀。
你解決了嗎? –
不,遺憾的是還沒有。 – tobyUCT