lua-project/截图并保存(decorView).lua

47 lines
1.2 KiB
Lua
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

require "import"
import "android.os.Environment"
import "java.io.FileOutputStream"
import "android.graphics.Bitmap"
--荼山 2879700093
--开发交流群704194917
--[[
需要注意的是,由于 com.android.internal.policy.DecorView 的权限较高,因此必须在应用程序的 AndroidManifest.xml 中添加以下声明:
<uses-permission android:name="android.permission.READ_FRAME_BUFFER"/>
同时,在 Android 10 及更高版本中,还必须添加以下声明以绕过 Google 的隐私限制:
<uses-permission android:name="android.permission.ACCESS_MEDIA_LOCATION" />
并且需要在代码中请求这些权限。
最后,记得释放截图所占用的内存资源:
]]
-- 获取当前Activity的根视图
local decorView = activity.getWindow().getDecorView()
decorView.setDrawingCacheEnabled(true)
decorView.buildDrawingCache()
local bitmap = decorView.getDrawingCache()
-- 保存截图到SD卡上
local file = Environment.getExternalStorageDirectory().getAbsolutePath() .. "/Manalua/screenshot.png"
local fos = FileOutputStream(file)
bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos)
fos:flush()
fos:close()
--释放
bitmap.recycle()
--关闭绘制缓存以确保 View 不会被持续绘制
decorView.setDrawingCacheEnabled(false)