android 定制遥控器需求按键不拦截home键和power键

Android 10 不拦截home和power

Index: android/frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java
=================================================================== 
     private void interceptPowerKeyUp(KeyEvent event, boolean interactive, boolean canceled) {
@@ -2739,7 +2740,8 @@
                 handler = new DisplayHomeButtonHandler(displayId);
                 mDisplayHomeButtonHandlers.put(displayId, handler);
             }
-            return handler.handleHomeButton(win, event);
+            handler.handleHomeButton(win, event);
+            return 0;//允许下发按键
         } else if (keyCode == KeyEvent.KEYCODE_MENU) {
             // Hijack modified menu keys for debugging features
             final int chordBug = KeyEvent.META_SHIFT_ON;
@@ -3969,7 +3971,8 @@
                         mPowerKeyHandled ? 1 : 0, mPowerKeyPressCounter);
                 // Any activity on the power button stops the accessibility shortcut
                 cancelPendingAccessibilityShortcutAction();
-                result &= ~ACTION_PASS_TO_USER;
+                //result &= ~ACTION_PASS_TO_USER;
+                result = 1; //不拦截power键
                 isWakeKey = false; // wake-up will be handled separately
                 if (down) {
                     interceptPowerKeyDown(event, interactive);
@@ -4149,7 +4152,6 @@
             wakeUp(event.getEventTime(), mAllowTheaterModeWakeFromKey,
                     PowerManager.WAKE_REASON_WAKE_KEY, "android.policy:KEY");
         }
-
         return result;
     }
 

熄屏情况时候power键有时候被拦截

Dropping event due to no window focus 
Index: android/frameworks/base/core/java/android/view/ViewRootImpl.java
===================================================================
--- android/frameworks/base/core/java/android/view/ViewRootImpl.java    (revision 43633)
+++ android/frameworks/base/core/java/android/view/ViewRootImpl.java    (revision 43634)
@@ -4888,6 +4888,9 @@
                 }
 
                 // Drop non-terminal input events.
+                if (isPower(q.mEvent)) {
+                    return false;
+                }
                 Slog.w(mTag, "Dropping event due to no window focus: " + q.mEvent);
                 return true;
             }
@@ -4907,6 +4910,14 @@
                 return false;
             }
         }
+
+        private boolean isPower(InputEvent event) {
+            if (event instanceof KeyEvent) {
+                return ((KeyEvent) event).getKeyCode() == KeyEvent.KEYCODE_POWER;
+            } else {
+                return false;
+            }
+        }
     }
 
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容