47 lines
1.2 KiB
Lua
47 lines
1.2 KiB
Lua
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)
|
||
|