最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

android多屏觸摸相關(guān)的詳解方案-安卓framework開發(fā)手機車載車機系統(tǒng)開發(fā)課程

2023-08-29 11:20 作者:千里馬學(xué)框架  | 我要投稿

背景

配套直播免費視頻課程地址:https://www.bilibili.com/video/BV1hN4y1R7t2/[1]

在做雙屏相關(guān)需求開發(fā)過程中,經(jīng)常會有對兩個屏幕都要求可以正確觸摸的場景。但是目前我們模擬器默認(rèn)創(chuàng)建的雙屏其實是沒有辦法進(jìn)行觸摸的

千里馬本人微信:androidframework007

在這里插入圖片描述

修改方案1

靜態(tài)修改方案 使用命令查看display2即副屏的信息情況 adb shell dumpsys display

??Display?2:
????mDisplayId=2
????mPhase=1
????mLayerStack=2
????mHasContent=true
????mDesiredDisplayModeSpecs={baseModeId=2?allowGroupSwitching=false?primaryRefreshRateRange=[0?Infinity]?appRequestRefreshRateRange=[0?Infinity]}
????mRequestedColorMode=0
????mDisplayOffset=(0,?0)
????mDisplayScalingDisabled=false
????mPrimaryDisplayDevice=HDMI?Screen
????mBaseDisplayInfo=DisplayInfo{"HDMI?Screen",?displayId?2",?displayGroupId?0,?FLAG_SECURE,?FLAG_SUPPORTS_PROTECTED_BUFFERS,?FLAG_PRESENTATION,?FLAG_TRUSTED,?real?1440?x?2960,?largest?app?1440?x?2960,?smallest?app?1440?x?2960,?appVsyncOff?2000000,?presDeadline?75,?mode?2,?defaultMode?2,?modes?[{id=2,?width=1440,?height=2960,?fps=1.3333333E7,?alternativeRefreshRates=[]}],?hdrCapabilities?HdrCapabilities{mSupportedHdrTypes=[],?mMaxLuminance=500.0,?mMaxAverageLuminance=500.0,?mMinLuminance=0.0},?userDisabledHdrTypes?[],?minimalPostProcessingSupported?false,?rotation?0,?state?ON,?type?EXTERNAL,?uniqueId?"local:4619827551948147201",?app?1440?x?2960,?density?560?(215152.0?x?214811.02)?dpi,?layerStack?2,?colorMode?0,?supportedColorModes?[0],?address?{port=1,?model=0x401cecae7d6e8a},?deviceProductInfo?DeviceProductInfo{name=EMU_display_1,?manufacturerPnpId=GGL,?productId=4660,?modelYear=null,?manufactureDate=ManufactureDate{week=12,?year=2021},?connectionToSinkType=0},?removeMode?0,?refreshRateOverride?0.0,?brightnessMinimum?0.0,?brightnessMaximum?1.0,?brightnessDefault?0.5,?installOrientation?ROTATION_0}

這里主要看對應(yīng)的uniqueId "local:4619827551948147201"

然后結(jié)合input中需要這個uniqueId,更新地方:


2:?virtio_input_multi_touch_7
??????Classes:?TOUCH?|?TOUCH_MT?|?SWITCH
??????Path:?/dev/input/event8
??????Enabled:?true
??????Descriptor:?e1c836c7be888adb29ca6646292e486f96461e97
??????Location:?virtio17/input0
??????ControllerNumber:?0
??????UniqueId:?
??????Identifier:?bus=0x0006,?vendor=0x0000,?product=0x0000,?version=0x0000
??????KeyLayoutFile:?
??????KeyCharacterMapFile:?
??????ConfigurationFile:?/vendor/usr/idc/virtio_input_multi_touch_7.idc
??????VideoDevice:?<none>

就是這個 ? ? ?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

device.internal?=?1

touch.deviceType?=?touchScreen
touch.orientationAware?=?1

cursor.mode?=?navigation
cursor.orientationAware?=?1

#?This?displayID?matches?the?unique?ID?of?the?virtual?display?created?for?Emulator.
#?This?will?indicate?to?input?flinger?than?it?should?link?this?input?device
#?with?the?virtual?display.
touch.displayId?=?local:4619827551948147201??

再進(jìn)行整體編譯即可以

修改方案2

動態(tài)修改方案 思路通過調(diào)用input中相關(guān)方法對config進(jìn)行相關(guān)修改 對應(yīng)方法如下:

在這里插入圖片描述

即只需要通過這個方法即可以指定觸摸的input ?---》對應(yīng)顯示display進(jìn)行映射 注意這里使用是port阿,不是displayId port也可以通過dumpsys display查看哈: 在對應(yīng)的address有對于的port值,一般就是第一個屏幕0,第二屏幕1

address?{port=1,?model=0x401cecae7d6e8a},?deviceProductInfo?DeviceProductInfo{name=EMU_display_1,?manufacturerPnpId=GGL,?productId=4660,?modelYear=null,?manufactureDate=ManufactureDate{week=12,?year=2021}

確定了了display的port還有一個input相關(guān)inputPort參數(shù),這個就直接通過dumpsy input獲取哈,在dumpsys尋找對應(yīng)屏幕的event,從而找到對應(yīng)的Device

?2:?virtio_input_multi_touch_7
??????Classes:?TOUCH?|?TOUCH_MT?|?SWITCH
??????Path:?/dev/input/event8
??????Enabled:?true
??????Descriptor:?e1c836c7be888adb29ca6646292e486f96461e97
??????Location:?virtio17/input0
??????ControllerNumber:?0
??????UniqueId:?
??????Identifier:?bus=0x0006,?vendor=0x0000,?product=0x0000,?version=0x0000
??????KeyLayoutFile:?
??????KeyCharacterMapFile:?
??????ConfigurationFile:?/vendor/usr/idc/virtio_input_multi_touch_7.idc
??????VideoDevice:?<none>

就是這里的 ?Location: virtio17/input0,virtio17/input0就是我們要的

做好一個動態(tài)調(diào)用觸發(fā),這里直接也使用dumpsys input命令里面進(jìn)行:

commit?72193cfb966307940457148bedc793c316d67af5?(HEAD)
Author:?Your?Name?<you@example.com>
Date:???Fri?Aug?25?17:23:22?2023?+0800

????add?displayfortouch?modify

diff?--git?a/services/core/java/com/android/server/input/InputManagerService.java?b/services/core/java/com/android/server/input/InputManagerService.java
index?72612a0468cd..587a7b313b8f?100644
---?a/services/core/java/com/android/server/input/InputManagerService.java
+++?b/services/core/java/com/android/server/input/InputManagerService.java
@@?-2678,6?+2678,14?@@?public?class?InputManagerService?extends?IInputManager.Stub
?????????if?(!DumpUtils.checkDumpPermission(mContext,?TAG,?pw))?return;
?
?????????pw.println("INPUT?MANAGER?(dumpsys?input)\n");
+????????pw.println("INPUT?MANAGER?args?size?=?"+args.length?+?"\n");
+????????if?(args.length?==?3?&&?args[0].equals("displayForInput"))?{
+????????????String?location?=?args[1];
+????????????int?port?=?Integer.parseInt(args[2]);
+????????????addPortAssociation(location,port);
+????????????pw.println("INPUT?MANAGER?addPortAssociation?location=?"+location?+"?port?=?"?+port+?"?\n");
+????????????return;
+????????}
?????????String?dumpStr?=?mNative.dump();
?????????if?(dumpStr?!=?null)?{
?????????????pw.println(dumpStr);

最后使用命令: ? adb shell dumpsys ?input displayForInput ?virtio17/input0 1

引用鏈接

[1] 配套直播免費視頻課程地址:https://www.bilibili.com/video/BV1hN4y1R7t2/: https://www.bilibili.com/video/BV1hN4y1R7t2/


android多屏觸摸相關(guān)的詳解方案-安卓framework開發(fā)手機車載車機系統(tǒng)開發(fā)課程的評論 (共 條)

分享到微博請遵守國家法律
柳州市| 登封市| 上虞市| 上杭县| 湘潭市| 南靖县| 荣成市| 宁都县| 龙里县| 安国市| 琼结县| 靖边县| 梓潼县| 大埔县| 桓台县| 鞍山市| 韶山市| 顺昌县| 洪洞县| 凤阳县| 山西省| 桦甸市| 古田县| 台山市| 宝应县| 竹北市| 南丰县| 新宁县| 塔河县| 晴隆县| 北宁市| 开鲁县| 广平县| 罗城| 阿图什市| 三江| 蓬安县| 阳泉市| 江城| 洛南县| 新民市|