Android 中,内置应用如何更好的截屏

在开发系统应用的时候,有时候需要用到截屏,因为 View.getDrawingCache() 截不到状态栏,所以这个方案不理想

这有一个更好的方案,就是用 SurfaceControl.screenshot() / Surface.screenshot() 截屏,在 API Level 大于 17 使用 SurfaceControl ,小于等于 17 使用 Surface ,但是这个方案有诸多限制,比如

1、需要反射调用,低版本中,Surface.screenshot() 函数是 hide 的,高版本中,SurfaceControl 类是 hide 的

2、调用 screenshot() 函数需要权限

3、上面需要的权限,只对应用签名与 platform 签名一致的应用起作用

所以,非系统应用是不能用的,即使调用了也会返回 null ,这个是一个对于系统应用非常合适的截图方案,具体代码如下

public Bitmap screenshot() {

DisplayMetrics metrics = new DisplayMetrics();

getWindowManager().getDefaultDisplay().getMetrics(metrics);

// 这里只是把两个类的写法写在一起

// 在系统中,系统版本是确定的,所以选其中一个

if (Build.VERSION.SDK_INT <= 17) {

return Surface.screenshot(metrics.widthPixels, metrics.heightPixels);

} else {

return SurfaceControl.screenshot(metrics.widthPixels, metrics.heightPixels);

}

}

当然还需要在 AndroidManifest.xml 中加入上面说的权限,否则截屏会失败的

注意,我这里为什么没有用反射,因为,标题里说了,是 Android 内置应用,就是跟随系统一起编译的,所以是可以直接调用隐藏 api 的,用这个方案截的图是包含状态栏的

android 截屏 简书,Android 内置应用截屏方法相关推荐

  1. Android隐藏录屏内容,原来手机内置的录屏功能这么强大,好多人都不会用,很可惜!...

    原标题:原来手机内置的录屏功能这么强大,好多人都不会用,很可惜! 原来手机内置的录屏功能这么强大,好多人不会用,真的很可惜 现在的手机朝着智能化的方向一直在发展,多了许多很实用的功能.就比如手机上自带 ...

  2. android自动登录简书,Android开发之简单登录界面

    用户界面基础 Android系统的四大组件分别是活动(Activity).服务(Service).广播接收器(Broadcast Receiver).内容提供器(Content Provider). ...

  3. android 读写文件 简书,Android 中的文件操作

    Android 文件操作 概述 Android 中的文件操作主要涉及到两个部分,一个是内部存储的读写,一个是外部存储的读写两者的主要区别如下表: 内部存储 外部存储 始终可用 它并非始终可用,因为用户 ...

  4. android运行过程简书,Android系统的启动流程

    Android系统有哪些进程 在Linux系统启动时,会读取init.rc,里面配置了一些需要启动的进程.注意:SystemServer进程不在init.rc里,因为SystemServer进程是由z ...

  5. android 开发环境简书,Android Studio 开发环境快速搭建

    目录 - 1.下载JDK.AS - 1.1 JDK下载 - 1.2 AS下载 - 1.3 百度云资源统一下载 - 2.安装JDK - 3.配置JDK及JAVA的环境 - 3.1 打开系统环境 - 3. ...

  6. android 辅助服务 简书,Android AccessibilityService使用

    测试demo主要使用了Android 的无障碍辅助服务(AccessibilityService),主要注意是 1. 开启服务,绑定目标app的监听(demo中根据包命绑定了体积计算的app),需要在 ...

  7. android四大组件 简书,android四大组件

    android有四大组件,分别是Activity, Service(服务),Content Provider(内容提供者),BoadcastReceiver广播接收器. Activity 一个Acti ...

  8. android 存储方式简书,Android的多种数据存储方式

    1. 简介 作为一个完整的应用程序,数据存储操作是必不可少的.现在Android的离线缓存就是通过网络良好状态时将从服务器收到的数据保存到本地.Android系统中主要提供了3种方式进行数据存储,分别 ...

  9. android权限适配 简书,Android动态权限适配

    最近APP里面要添加动态权限,网上找了不少例子并经过一定的测试,基本流程有了一定的认识,需要注意的地方记录下来以备以后查阅. 一 各大手机厂商的适配 依据各大手机Rom的不同表现,可以分为三种不同的模 ...

最新文章

  1. 马哥2016全新Linux+Python高端运维班第八周作业
  2. zemax迈克尔逊干涉仪_zemax非序列模式概述-棱镜的色散与迈克尔逊干涉仪016
  3. 记录我的学习历程--二维数组解决平面图形题
  4. java mysql 语句解析器_几种基于Java的SQL解析工具的比较与调用
  5. 【BZOJ3152】组合子逻辑,贪心+堆
  6. 小议Python列表和元组中的元素地址连续性
  7. 微软Code Hunt答案(00-05)——沉迷娱乐的我
  8. [LAMP]——mod_security和mod_evasive模块的安装
  9. 【通信原理 入坑之路】—— 深入理解奈奎斯特第一准则与码间串扰
  10. 让360双核浏览器默认极速模式打开网页
  11. 计算机网络图标不见了,电脑网络图标不见了怎么恢复
  12. 解决win10家庭版本系统无法远程连接问题
  13. 计算机学院运动会通讯稿,大学运动会通讯稿300字汇总七篇
  14. 适配新路由3(D2)的LEDE/OpenWrt固件
  15. 【web全景】web全景实现方案(转载)
  16. 互动媒体大作业——绘画系统
  17. Android音频子系统(十)------MTK Audio录音流程代码解析
  18. 无障碍键盘输入-搜狗输入法写数学公式
  19. 2021-2025年中国废水泵行业市场供需与战略研究报告
  20. 斑马无线打印服务器,斑马打印机网络中文打印实例(亲测可用)

热门文章

  1. [软件]Safe3 Web漏洞扫描系统企业版v10.1 破解版
  2. XDOJ 233/237-字符串复制
  3. 2020年终总结!新的起航,新的征程
  4. mysql中的强制索引_你如何强制MySQL中的查询使用索引?
  5. 圣诞节要来了,程序员女友用Python画圣诞树的浪漫代码作为最好的礼物
  6. 【FCC前端教程】28关学会HTML与HTML5基础
  7. 2018年Oracle官网下载Oracle 11g安装包
  8. Dell服务器网卡驱动升级[CentOS 5.5 X86_64和RHEL 5.6 X86_64]
  9. 帝国php被注入,帝国CMS(EmpireCMS) v7.5 代码注入分析(CVE-2018-19462)
  10. wireshark编译基于openflow1.3协议开发