前言
Android 12系统休眠时,需要不管接什么型号usb tp都能够触摸唤醒。
Android12系统中,usb tp要能够触摸唤醒,需要在frameworks/native/services/inputflinger/reader/mapper/TouchInputMapper.cpp中将mParameters.wake赋值为true,才能够在系统休眠的时候,触摸usb tp唤醒系统。(在TouchInputMapper.cpp中mParameters.wake的值是由getDeviceContext().isExternal();决定的,getDeviceContext().isExternal();是通过EventHub.cpp中的bool EventHub::Device::isExternalDeviceLocked()获得的。这个函数是通过读取对应tp idc文件中的device.internal属性来决定的。)我们现在要求所有的usb tp的能够触摸唤醒,只需按如下修改即可:
Index: reader/mapper/TouchInputMapper.cpp =================================================================== --- reader/mapper/TouchInputMapper.cpp (revision 2066) +++ reader/mapper/TouchInputMapper.cpp (working copy) @@ -508,7 +508,7 @@ // Initial downs on external touch devices should wake the device. // Normally we don't do this for internal touch screens to prevent them from waking // up in your pocket but you can enable it using the input device configuration. - mParameters.wake = getDeviceContext().isExternal(); + mParameters.wake = true; getDeviceContext().getConfiguration().tryGetProperty(String8("touch.wake"), mParameters.wake); }
09-20 21:45:13.715 664 818 I InputReader: Disabling eGalax Inc. eGalaxTouch P80H84 2331 v00_T1 k4.10.143 (device 3) because the associated viewport is not active
修改方法
@@ -664,12 +664,12 @@ return; } - if (!newViewport->isActive) { - ALOGI("Disabling %s (device %i) because the associated viewport is not active", - getDeviceName().c_str(), getDeviceId()); - mDeviceMode = DeviceMode::DISABLED; - return; - } + // if (!newViewport->isActive) { + // ALOGI("Disabling %s (device %i) because the associated viewport is not active", + // getDeviceName().c_str(), getDeviceId()); + // mDeviceMode = DeviceMode::DISABLED; + // return; + // } // Raw width and height in the natural orientation. int32_t rawWidth = mRawPointerAxes.getRawWidth();