截屏方案对比(截屏事件没有同一的api)

  1. 方案一:利用FileObserver监听某个目录中资源变化情况

    1. 优点:操作简单
    2. 缺点:
      1. 不同的手机,默认截屏图片储存的文件夹可能不同
      2. 不同的手机,事件回调可能有些不同
      3. FileObserver只能监听文件夹中子文件和子文件夹的变化情况,不能监听子文件夹内部的资源变化
  2. 方案二:利用ContentObserver用来监听指定uri的所有资源变化【适配R】

    1. 优点:适配方便
    2. 缺点:去重麻烦

结合方案一方案二优缺点,且项目里已有方案是FileObserver有些机型难适配, 适配考虑 最终选择了方案二

ContentObserver实现方案

  1. ContentObserver用来监听指定uri的所有资源变化
  2. 添加过滤条件
    1. 时间判断,图片的生成时间在开始监听之后, 并与当前时间相隔10秒内
    2. 尺寸判断,图片的尺寸没有超过屏幕的尺寸
    3. 路径判断,图片路径符合包含特定的关键词:这一点是关键,截屏图片的保存路径通常包含“screenshot”

自测机型

  1. Android 11.0

    1. 小米 11
    2. vivo iQOO 5
  2. Android 10.0
    1. 华为 mate20x
    2. oppo Reno2
  3. Android 9.0
    1. 华为 荣耀 9
    2. vivo 1725
    3. oppo Reno
  4. Android 8.1
    1. oppo R11s
    2. 小米6X

源码

Android监听截屏事件相关推荐

  1. uni-app 监听截屏事件和截图(ios)

    uni-app 监听截屏事件和截图(ios):https://ext.dcloud.net.cn/plugin?id=1637

  2. Android监听截屏

    Android系统没有提供默认的截屏事件监听方式,需要开发者自己想办法实现.查看了网上推荐的实现方式,主要是通过内容观察者(ContentObserver)监听媒体数据库的变化,根据内容名称(路径)中 ...

  3. 【微信小程序系列:二】小程序常用功能:跳转地图、扫一扫、人脸识别、拍照、拨打电话、调整屏幕亮度、文字可复制、监听截屏...

    一.先言: (- ̄▽ ̄)-,hello,微信小程序系列第二篇,介绍下小程序里的前端常用功能api,可以快速copy使用~ 二.文字可复制: 小程序页面里的文字默认是没有长按复制功能的,需要套个标签来实 ...

  4. Android锁屏界面监听按键,Android 监听锁屏/开屏事件

    1. 两种方案 (1) 监听BroadcastReceiver (2)获取PowerManager事件 2.  BroadcastReceiver 2.1. 事件 总共有3个事件: Intent.AC ...

  5. android 强制锁屏代码,Android 监听锁屏、解锁、开屏 功能代码

    1.首先定义 ScreenListener package com.app.lib; import android.content.BroadcastReceiver; import android. ...

  6. Android 监听横竖屏切换

    Android 监听横竖屏切换 重写 Activity 中的 onConfigurationChanged 方法 override fun onConfigurationChanged(newConf ...

  7. android锁屏代码分析,Android 监听锁屏、解锁、开屏 功能代码

    1.首先定义 ScreenListener package com.app.lib; import android.content.BroadcastReceiver; import android. ...

  8. android 监听锁屏 权限,Android中监听锁屏变化和防止锁屏

    Android app中可能存在某些可视化耗时操作,需要防止锁屏. 一.监听锁屏 添加权限 首先来看如何监听锁屏,使用BroadcastReceivercaset来监听 1.锁屏监听 public c ...

  9. Android监听横竖屏切换

    偶然在项目中用到播放视频时,需要横屏将视频全屏播放,所以需要监听屏幕的横竖屏切换事件. ConfigChanges,用于捕获手机状态的改变,当横竖屏切换,屏幕尺寸变化,弹出键盘,系统设置改变等条件,就 ...

最新文章

  1. 理解在javascript中的内存泄露
  2. mysql删除root用户密码_MySQL忘记密码 或者误删除root用户有效解决办法
  3. MySQL—事务并发问题
  4. python中怎么输入角度_在Python中更正两点之间的角度
  5. ttc error oracle,ORA-03137: TTC protocol internal error : [12333]错误一例
  6. 45请求转发和请求重定向区别
  7. Material Design之AppBarLayout总结
  8. “不务正业”的化学奖又发给了生物
  9. 局部变量 和 全局变量
  10. java Excel导出 xlsx格式(超简单)
  11. pom env.java home_关于java:aven:POM.xml中缺少工件com.sun:tools:jar:1.6.0编译时异常...
  12. mockito 多层调用_连续调用的Mockito迭代器样式存根
  13. 搭建git服务器 web项目,git服务器搭建web项目
  14. 计算机教室标语6个字,教室标语大全
  15. 如何在Tungsten Fabric上整合裸金属服务器(附配置验证过程)
  16. 深度学习_深度学习基础知识_二分类、单标签多分类、多标签多分类、多任务的含义
  17. net start mysql无法启动数据库的解决办法
  18. 20189221 2018-2019-2 《密码与安全新技术专题》第六周作业
  19. sstream类的详解
  20. 关于空字符(NUL)在三种不同语言中的匹配

热门文章

  1. PTA 7-26 聪明的高斯
  2. 特效php扫一扫,CSS_CSS实现微信扫码特效 , 微信扫码效果如下所示: - phpStudy
  3. mybatis输出结果
  4. V-REP学习笔记(一):认识V-REP
  5. onyx for mac如何修复权限?onyx mac版操作无法执行的解决办法
  6. 深度学习笔记02——全连接层
  7. 普通化学复习提纲(全)
  8. PS因为没有足够的RAM。
  9. 【新学期】双非本科大三学长经验分享
  10. mssql拿shell