Android多点触控数的实现——系统实现

本文讲述了在商业显示大屏项目中遇到的多点触控问题,系统限制了硬件的40点触控功能,需对Android系统进行修改以支持更多触控点。涉及修改宏定义、编译和测试过程,强调了在升级过程中对性能和资源管理的考虑。
摘要由CSDN通过智能技术生成

 需求和问题记录,以博客形式记录。

1、背景

当前需求基本出现在商显大屏,需要满足多点触控的场景。

当前出现的问题是:触摸硬件设备满足40点触控,但系统仅开放16点触控,当出现16+个点同时在设备操作时,导致设备重启。

问题的根因应该是:

  • 系统组件可能使用了固定大小的数组或缓冲区来存储和处理触摸事件。当触摸点数超过这些数组或缓冲区的容量时,可能发生越界访问,导致系统crash重启。
  • 超过系统限制的触摸点可能导致处理触摸事件的线程或进程消耗过多资源(如CPU时间、内存等),影响系统的稳定性。

2、需求

需要触摸屏(触摸框)厂家提供固件。

首先需要保证的是该硬件具备有40点触控数据识别的功能,然后才是提供40点的固件。

最后才开始做系统的适配。

3、系统修改

(1)首先找到IMS中对应的模块:(本文以Android 9为例)

Android13\frameworks\native\include\input\Input.h

可以看到此处宏定义系统默认的最大触控点数是16点,按需求修改数值即可。

此外:

Android13\frameworks\native\include\android\input.h

中同样可以看到关于16点的宏定义,按需修改。

同样的:(有关注到Android13中文件位置略有变动,可自行grep查找)

Android13\frameworks\native\include\input\InputEventLabels.h

对应修改。

(2)触控点数的不同

如果你修改的需求是20点,或32点以内,到这里直接编应该是没什么问题。

但如果需要达到32+,乃至更多点的触控点数的话,需要修改:

Android13\frameworks\native\include\input\Input.h

此处需要对应修改。

但是!!敲重点的来了:

修改更多的触控点数对设备CPU的要求会变高,更多的触控点数会造成内存的占用,修改前需要确认产品的需求。

(3)编译

此时如果直接编译,很可能不会报出任何错误,烧录后系统无法启动,卡在开机logo页。

因为我们在对Android framework进行修改之后,需要对api进行更新。

(建议删除整个out目录后再进行后续操作)

回到代码根目录:make update-api

然后就是漫长的整编过程。

(4)烧录

测试看看。

正常启动。

找4个人来在系统上同时画线看看——

正常。

done!!

4、严谨的测试

需要在Android原生的设置下,打开Android开发者模式,在开发者模式中打开触控点数据的反馈。

(1)进入原生设置:

am start com.android.settings/.Settings
(2)关于手机:

连续点击版本号直至进入开发者模式

(3)系统->开发者选项:

打开指针位置。

(4)测试:

实际最高能达到32个点。

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值