android 系统截屏原理,Android 系统副屏截屏功能

本文详细介绍了如何实现在Android系统中对副屏进行截图,包括两种方法:一是通过SurfaceControl.screenshot接口,二是使用screencap命令。在使用SurfaceControl.screenshot时,需要权限和系统签名,通过反射调用private static方法。而screencap命令则可以通过指定display id来捕获副屏。需要注意的是,这两种方法通常都需要系统签名权限。
摘要由CSDN通过智能技术生成

收到一个客户需求,要求对双屏设备的副屏进行截图。查询资料后发现,系统截图有两种方法,一种是通过SurfaceControl.screenshot提供的接口调用,还有一种是通过screencap 命令获取,这两种方式默认都需要使得系统签名才能使用。

方法一:SurfaceControl.screenshot

android 原生的音量减+电源键截屏功能最终会调用到在SysmteUI进程中。

frameworks/base/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java

void takeScreenshot(Runnable finisher, boolean statusBarVisible, boolean navBarVisible, int x, int y, int width, int height) {

......

// Take the screenshot

mScreenBitmap = SurfaceControl.screenshot((int) dims[0], (int) dims[1]);

if (mScreenBitmap == null) {

notifyScreenshotError(mContext, mNotificationManager,

R.string.screenshot_failed_to_capture_text);

finisher.run();

return;

}

......

从这个地方可以看到SurfaceControl.screenshot是执行方法,这里会返回当前桌面所在的截图,进入到screenshot方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值