背景
配套直播免费视频课程地址:https://www.bilibili.com/video/BV1hN4y1R7t2/[1]
在做双屏相关需求开发过程中,经常会有对两个屏幕都要求可以正确触摸的场景。但是目前我们模拟器默认创建的双屏其实是没有办法进行触摸的
千里马本人微信:androidframework007
修改方案1
静态修改方案 使用命令查看display2即副屏的信息情况 adb shell dumpsys display
这里主要看对应的uniqueId "local:4619827551948147201"
然后结合input中需要这个uniqueId,更新地方:
就是这个 ConfigurationFile: /vendor/usr/idc/virtio_input_multi_touch_7.idc
去源码的out路径下修改/aosp/out/target/product/emulator_x86_64/vendor/usr/idc/virtio_input_multi_touch_7.idc 主要把touch.displayId 变成上面的获取的local:4619827551948147201
再进行整体编译即可以
修改方案2
动态修改方案 思路通过调用input中相关方法对config进行相关修改 对应方法如下:
即只需要通过这个方法即可以指定触摸的input ---》对应显示display进行映射 注意这里使用是port阿,不是displayId port也可以通过dumpsys display查看哈: 在对应的address有对于的port值,一般就是第一个屏幕0,第二屏幕1
确定了了display的port还有一个input相关inputPort参数,这个就直接通过dumpsy input获取哈,在dumpsys寻找对应屏幕的event,从而找到对应的Device
就是这里的 Location: virtio17/input0,virtio17/input0就是我们要的
做好一个动态调用触发,这里直接也使用dumpsys input命令里面进行:
最后使用命令: adb shell dumpsys input displayForInput virtio17/input0 1
引用链接
配套直播免费视频课程地址:https://www.bilibili.com/video/BV1hN4y1R7t2/: https://www.bilibili.com/video/BV1hN4y1R7t2/