首页 > 其他分享 >android12 双屏异触配置

android12 双屏异触配置

时间:2024-04-11 17:13:10浏览次数:25  
标签:异触 Vendor 双屏 Product rockchip android12 device 32d7 idc

平台: RK3399  android12。

客户整机是USB接口的TP且需要双屏异触,方案如下。

双屏异触的修改方法有两种:

1、修改 EventHub.cpp 代码。

2、 配置触摸屏的IDC文件。

这里采取第二次方法。

通过 adb shell dumpsys input 确认触摸屏的PID和VID。补丁如下:

Index: device/rockchip/rk3399/Vendor_32d7_Product_0001.idc
===================================================================
--- device/rockchip/rk3399/Vendor_32d7_Product_0001.idc    (nonexistent)
+++ device/rockchip/rk3399/Vendor_32d7_Product_0001.idc    (revision 2735)
@@ -0,0 +1,12 @@
+# Filename:Vendor_32d7_Product_0001.idc
+# My TouchScreen Device configuration file.
+
+touch.deviceType = touchScreen
+device.internal = 0
+touch.orientationAware = 1
+
+keyboard.layout = Vendor_32d7_Product_0001
+keyboard.orientationAware = 1
+
+cursor.mode = navigation
+cursor.orientationAware = 1
\ No newline at end of file

Property changes on: device/rockchip/rk3399/Vendor_32d7_Product_0001.idc
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: device/rockchip/rk3399/Vendor_32d7_Product_0002.idc
===================================================================
--- device/rockchip/rk3399/Vendor_32d7_Product_0002.idc    (nonexistent)
+++ device/rockchip/rk3399/Vendor_32d7_Product_0002.idc    (revision 2735)
@@ -0,0 +1,12 @@
+# Filename:Vendor_32d7_Product_0002.idc
+# My TouchScreen Device configuration file.
+
+touch.deviceType = touchScreen
+device.internal = 1
+touch.orientationAware = 1
+
+keyboard.layout = Vendor_32d7_Product_0002
+keyboard.orientationAware = 1
+
+cursor.mode = navigation
+cursor.orientationAware = 1
\ No newline at end of file

Property changes on: device/rockchip/rk3399/Vendor_32d7_Product_0002.idc
___________________________________________________________________
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: device/rockchip/rk3399/device.mk
===================================================================
--- device/rockchip/rk3399/device.mk    (revision 2734)
+++ device/rockchip/rk3399/device.mk    (revision 2735)
@@ -134,6 +134,10 @@
 PRODUCT_COPY_FILES += \
     device/rockchip/rk3399/public.libraries.txt:vendor/etc/public.libraries.txt
 
+PRODUCT_COPY_FILES += \
+    device/rockchip/rk3399/Vendor_32d7_Product_0001.idc:system/usr/idc/Vendor_32d7_Product_0001.idc \
+    device/rockchip/rk3399/Vendor_32d7_Product_0002.idc:system/usr/idc/Vendor_32d7_Product_0002.idc
+    
 #fireware for dp
 PRODUCT_COPY_FILES += \
     $(LOCAL_PATH)/dptx.bin:root/lib/firmware/rockchip/dptx.bin

此方法 是在系统是0度情况下验证是OK的。如果系统默认是270度的即:SF_PRIMARY_DISPLAY_ORIENTATION := 270

副屏也旋转270度,persist.sys.rotation.einit=3

那么需要在IDC文件里面配置屏幕的初始旋转角度。例如:

Index: device/rockchip/rk3399/Vendor_32d7_Product_0001.idc
===================================================================
--- device/rockchip/rk3399/Vendor_32d7_Product_0001.idc    (revision 2736)
+++ device/rockchip/rk3399/Vendor_32d7_Product_0001.idc    (revision 2737)
@@ -4,6 +4,7 @@
 touch.deviceType = touchScreen
 device.internal = 0
 touch.orientationAware = 1
+touch.orientation = ORIENTATION_0
 
 keyboard.layout = Vendor_32d7_Product_0001
 keyboard.orientationAware = 1
Index: device/rockchip/rk3399/Vendor_32d7_Product_0002.idc
===================================================================
--- device/rockchip/rk3399/Vendor_32d7_Product_0002.idc    (revision 2736)
+++ device/rockchip/rk3399/Vendor_32d7_Product_0002.idc    (revision 2737)
@@ -4,6 +4,7 @@
 touch.deviceType = touchScreen
 device.internal = 1
 touch.orientationAware = 1
+touch.orientation = ORIENTATION_270
 
 keyboard.layout = Vendor_32d7_Product_0002
 keyboard.orientationAware = 1

 

IDC文件的解析是在frameworks/native/services/inputflinger/reader/mapper/TouchInputMapper.cpp 文件里面的configureParameters 函数里进行配置。

device.internal

定义:device.internal = 0 | 1

指定输入设备属于内置组件,还是外部连接(很可能可拆卸)的外围设备。

  • 如果值为 0,则该设备为外部设备。

  • 如果值为 1,则该设备为内部设备。

  • 如果未指定该值,则 USB (BUS_USB) 或蓝牙 (BUS_BLUETOOTH) 总线上的所有设备的默认值均为 0,否则,值为 1

touch.orientationAware = 1 确保触摸屏后续能够和显示一起旋转。

IDC文件的具体配置可以参考谷歌文档:https://source.android.google.cn/docs/core/interaction/input/touch-devices?hl=zh-cn


疑问:
因为通过IDC文件来进行区分主副屏的TP,发现通过系统属性SF_PRIMARY_DISPLAY_ORIENTATION来设置主屏幕的旋转角度,那么主屏的touch.orientation 需要一起旋转相同的角度。
副屏是通过 persist.sys.rotation.einit 来设置旋转角度。副屏TP必须 touch.orientation = ORIENTATION_0 ,否则副屏TP 是对不上的。
为什么会存在这种差异?

新需求:
因为客户的整机主副屏存在多种角度的组合。需要一个统一的方法来实现双屏异触。这个目前还没有实现。



 

标签:异触,Vendor,双屏,Product,rockchip,android12,device,32d7,idc
From: https://www.cnblogs.com/dodo-asw/p/18129635

相关文章

  • Android12.0 系统关于安兔兔显示信息的修改
    1.前言在12.0的系统rom定制化开发中,在一些产品开发中,对于安兔兔等第三方检测工具,检测不出某些版本的内核信息等,显示0GB等问题的相关修改,由于不知道安兔兔的检测方式,所以就需要来修改关于文本上的一些信息了2.系统关于安兔兔显示信息的修改的核心类frameworks/base/core/jav......
  • Android12以上获取设备网络信号数据
    公司有很多物联网设备,关键的信号参数是RSRP,总有些地方信号差,不适合安装。所以让开发一款测信号的app,用于现场的同事在判定是否符合设备信号条件,再考虑安装设备。由于与开发过程中使用的是Androidsdk33,版本太高,网上搜到的很多旧的方法已经弃用,用起来也比较麻烦。自己捣鼓了半天......
  • 迅为RK3568开发板编译Android12源码包-修改编译线程数
    在编译 Android 系统时,可以通过调整线程数来控制并行编译的任务数量,使用多线程可以加快构建速度。要注意根据 Ubuntu 的处理器内核总数以及内存大小来设置合适的线程数。过高的线程数可能导致系统资源的竞争,过低的线程数则不能充分利用系统的并行处理能力。找到合适的线程数可......
  • RK3568 android12 动态替换开机logo
    前言:最近客户有个需要,通过adbpush来动态替换开机logo。通过网上查阅相关资料,现整理如下。参考:RK3568Android/Linux系统动态更换U-Boot/KernelLogo解决方法:通过自定义一个分区来存储开机logo,这样在恢复出厂时不会丢失开机logo。然后通过修改u-boot/drivers/video/drm/rock......
  • Android12版本闹钟服务崩溃问题
    原文地址:Android12版本闹钟服务崩溃问题-Stars-One的杂货小窝公司项目app线上出现的崩溃记录问题,崩溃日志如下所示:Causedbyjava.lang.SecurityException:Callercom.health.trackeranzneedstoholdandroid.permission.SCHEDULE_EXACT_ALARMorandroid.permission......
  • Android12获取蓝牙权限
    在Android12中使用蓝牙访问设备,弹出了提示允许发现并连接到附近设备,但是搜索不到蓝牙Android11:android.permission.BLUETOOTH、android.permission.BLUETOOTH_ADMINAndroid12:android.permission.BLUETOOTH_SCAN、android.permission.BLUETOOTH_ADVERTISE、android.permission.......
  • 迅为RK3588开发板Android12 设置系统默认不锁屏
    修改frameworks/base/packages/SettingsProvider/res/values/defaults.xml文件,修改为如下所示:-<boolname="def_lockscreen_disabled">false</bool>+<boolname="def_lockscreen_disabled">true</bool>修改完,保存修改,重新编译android源码。......
  • Android12 双屏异显/异触流程分析
    一、异显apk示例代码安卓12系统源码的ApiDemo的示例代码:development/samples/ApiDemos/src/com/example/android/apis/app/PresentationActivity.java该demo主要演示presentation的用法,presentation是一种特殊的对话框,主要用于在另外一块屏幕上显示内容。值得注意的是在创建pres......
  • android12 display
    实现"android12display"的步骤为了帮助这位刚入行的小白实现"android12display",我们需要按照以下步骤进行操作。下面是整件事情的流程:步骤描述1创建一个新的Android项目2在项目中添加必要的依赖3创建一个新的Activity,并在布局文件中添加一个TextView4在A......
  • FART脚本针对Android12 + Frida16适配
    针对@hanbinglengyue的FART项目下的Frida脱壳脚本进行最新适配,可在Frida16.1.0+Android12环境下进行脱壳项目地址:https://github.com/LLeavesG/FART-Fix具体使用方法请参见原项目FART:https://github.com/hanbinglengyue/FART对其中的frida_fart.zip中提供的两个js文件进行......