当前位置: 首页 > news >正文

如何在Android 12 aosp系统源码中添加三指下滑截图功能

如何在Android 12 aosp系统源码中添加三指下滑截图功能

系统中截图api非常简单:

private static ScreenshotHelper sScreenshotHelper;sScreenshotHelper = new ScreenshotHelper(mContext);//调用
sScreenshotHelper.takeScreenshot(WindowManager.TAKE_SCREENSHOT_FULLSCREEN, true, true, mScreenShotHandler, null);

如果在系统中添加三指下滑监听了:

首先找到:

我们这里基于Android12 源码

首先找到:SystemGesturesPointerEventListener类,这里面有监听系统滑动手势的地方:

找到下面代码添加手势判断:

    private int detectSwipe(int i, long time, float x, float y) {final float fromX = mDownX[i];final float fromY = mDownY[i];final long elapsed = time - mDownTime[i];if (DEBUG) Slog.d(TAG, "pointer " + mDownPointerId[i]+ " moved (" + fromX + "->" + x + "," + fromY + "->" + y + ") in " + elapsed);//添加三指下滑判断float xDistance = Math.abs(x - fromX);float yDistance = Math.abs(y - fromY);if (fromY >= mSwipeStartThreshold * 2&& yDistance > xDistance&& y > fromY + mSwipeDistanceThreshold&& elapsed < SWIPE_TIMEOUT_MS) {return SWIPE_FROM_CENTER_TO_DOWN;}if (fromY <= mSwipeStartThreshold&& y > fromY + mSwipeDistanceThreshold&& elapsed < SWIPE_TIMEOUT_MS) {return SWIPE_FROM_TOP;}if (fromY >= screenHeight - mSwipeStartThreshold&& y < fromY - mSwipeDistanceThreshold&& elapsed < SWIPE_TIMEOUT_MS) {return SWIPE_FROM_BOTTOM;}if (fromX >= screenWidth - mSwipeStartThreshold&& x < fromX - mSwipeDistanceThreshold&& elapsed < SWIPE_TIMEOUT_MS) {return SWIPE_FROM_RIGHT;}if (fromX <= mSwipeStartThreshold&& x > fromX + mSwipeDistanceThreshold&& elapsed < SWIPE_TIMEOUT_MS) {return SWIPE_FROM_LEFT;}return SWIPE_NONE;}

再找到这个方法:

public void onPointerEvent(MotionEvent event)

在里面添加代码:

            case MotionEvent.ACTION_MOVE:if (mSwipeFireable) {final int swipe = detectSwipe(event);mSwipeFireable = swipe == SWIPE_NONE;if (swipe == SWIPE_FROM_TOP) {if (DEBUG) Slog.d(TAG, "Firing onSwipeFromTop");mCallbacks.onSwipeFromTop();} else if (swipe == SWIPE_FROM_BOTTOM) {if (DEBUG) Slog.d(TAG, "Firing onSwipeFromBottom");mCallbacks.onSwipeFromBottom();} else if (swipe == SWIPE_FROM_RIGHT) {if (DEBUG) Slog.d(TAG, "Firing onSwipeFromRight");mCallbacks.onSwipeFromRight();} else if (swipe == SWIPE_FROM_LEFT) {if (DEBUG) Slog.d(TAG, "Firing onSwipeFromLeft");mCallbacks.onSwipeFromLeft();} else if (swipe == SWIPE_FROM_CENTER_TO_DOWN) {if (DEBUG) Slog.d(TAG, "Firing onSwipeFromCenterToDown:" + event.getPointerCount());//判断三指开始截图if (event.getPointerCount() == 3) {sScreenshotHelper.takeScreenshot(WindowManager.TAKE_SCREENSHOT_FULLSCREEN, true, true, mScreenShotHandler, null);}}}break;

那么三指截图就完成了!!!!

是不是很干,没有水分,有用记得点赞收藏。

补充:

private static final int SWIPE_FROM_CENTER_TO_DOWN = 5;

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 流程图符号速查:快速掌握流程图绘制要点
  • 每天五分钟玩转深度学习PyTorch:获取神经网络模型的子网络模型
  • HarmonyOs 应用基础--ArkTS-核心-基础
  • css之雪碧图(精灵图)
  • [数据集][目标检测]西红柿缺陷检测数据集VOC+YOLO格式17318张3类别
  • VisualStudio环境搭建C++
  • 业务系统如何接入文心一言AI模型
  • 第一个搭建SpringBoot项目(连接mysql)
  • layui监听table表单的多选框
  • 2414. Length of the Longest Alphabetical Continuous Substring
  • k8s集群部署:安装 kubeadm
  • 助力新能源汽车产业发展,2025第五届广州国际新能源汽车产业智能制造技术展览会将于11月在广州召开
  • 告别页面卡顿:Web Worker 助你解决前端性能瓶颈
  • linux进程间通信——进程间通信概念、最基本通信——管道文件
  • 基于微信小程序点餐、外卖系统的设计与实现 (源码+lw+参考文档+核心代码讲解等)
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • co.js - 让异步代码同步化
  • Docker下部署自己的LNMP工作环境
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • HTML-表单
  • javascript数组去重/查找/插入/删除
  • JavaScript中的对象个人分享
  • JAVA并发编程--1.基础概念
  • Java教程_软件开发基础
  • Redis中的lru算法实现
  • SQLServer之索引简介
  • Travix是如何部署应用程序到Kubernetes上的
  • ubuntu 下nginx安装 并支持https协议
  • Wamp集成环境 添加PHP的新版本
  • 技术胖1-4季视频复习— (看视频笔记)
  • 突破自己的技术思维
  • 微服务框架lagom
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • 7行Python代码的人脸识别
  • shell使用lftp连接ftp和sftp,并可以指定私钥
  • # 数据结构
  • #java学习笔记(面向对象)----(未完结)
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • #前后端分离# 头条发布系统
  • #微信小程序:微信小程序常见的配置传值
  • $forceUpdate()函数
  • $refs 、$nextTic、动态组件、name的使用
  • (06)金属布线——为半导体注入生命的连接
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (152)时序收敛--->(02)时序收敛二
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第6节 (嵌套的Finally代码块)
  • (多级缓存)多级缓存
  • (翻译)Entity Framework技巧系列之七 - Tip 26 – 28
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • (数据大屏)(Hadoop)基于SSM框架的学院校友管理系统的设计与实现+文档
  • (数据结构)顺序表的定义
  • (推荐)叮当——中文语音对话机器人
  • (原)记一次CentOS7 磁盘空间大小异常的解决过程
  • (转)EOS中账户、钱包和密钥的关系