文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

android截屏功能实现方式汇总【包括后台截屏】

2023-08-16 14:41

关注

前言

对于android实现截屏功能,简单讲述一下可行的方法和之间的利弊



使用canvas

View v = getWindow().getDecorView();Bitmap bitmap = Bitmap.createBitmap(v.getWidth(), v.getHeight(), Bitmap.Config.ARGB_8888);Canvas canvas = new Canvas();canvas.setBitmap(bitmap);v.draw(canvas);ImageView image = findViewById(R.id.image);image.setImageBitmap(bitmap);

以上就是最简单的一种形式,通过画布将当前页面变成bitmap,然后直接加载到ImageView中就能看到效果。
优点:

  1. 实现简单
  2. 无权限要求

缺点:

  1. 只能截应用页面,状态栏不会被截进去,对于全屏截图的需求不适用
  2. 因为getWindow()是Activity中的方法,所以只能在Activity中调用(无法后台截屏)


MediaProjectionManager

MediaProjectionManager是一个录屏的API,我们可以通过获取其中一帧的方式来得到截图。此方法网上教程很多,大家可以自行搜索。
优点:
没啥优点,只是多了一种截图方案

缺点:

  1. 代码比较复杂
  2. 每次截图前会弹窗获取权限,询问是否允许录屏,这对用户体验来说是致命的
  3. 无法后台截屏,因为需要调用Activity中的onActivityResult()方法


使用SurfaceControl.screenshot

SurfaceControl.screenshot是系统的截屏API,不受Activity的限制,所以可以用来实现后台截图、全屏截图、指定区域截图等功能。
具体使用方式可参考我的这篇文章:SurfaceControl.screenshot()用法
优点:

  1. 使用无限制,可以在后台使用
  2. 功能强大,且调用方式简单
  3. 不用向用户申请权限,同时也无任何弹窗显示

缺点:

  1. 系统API,必须有系统签名和系统级别权限,普通app用不了此方法


service中创建一个透明的activity,并在activity中调用截图方法

此方法未试验过,不过service确实可以在后台创建一个activity出来,但是限制很多(可参考我的这篇文章:从后台启动activity无效的原因)。同时activity虽然是透明的,但是页面切换的动画效果可能会暴露app的行为,总之并不是一个有效的方法。



修改并编译源码中的screencap类

优点:
优点不大,不建议对系统类进行改造,如果实力允许,使用此方法可以免掉一些绕圈圈的调用方式和系统的限制

缺点:
难度大,需要有源码编译和源码修改的能力

来源地址:https://blog.csdn.net/Guan_li_peng/article/details/128346206

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯