Android13 框架层新增一键关机

Android13 中框架层新增一个KEY_SHUTDOWN=304的按键(对应驱动上报时按键值是195),这里需要修改kl键值映射,当接收到这个按键按下的input事件时,启动关机流程。

// NOTE: If you add a new keycode here you must also add it to:
//  isSystem()
//  isWakeKey()
//  frameworks/native/include/android/keycodes.h
//  frameworks/native/include/input/InputEventLabels.h
//  frameworks/base/core/res/res/values/attrs.xml
//  emulator?
//  LAST_KEYCODE

主要修改改动如下:

frameworks/native/include/android/keycodes.h
     AKEYCODE_DEMO_APP_3 = 303,
     /** Demo Application key #4. */
     AKEYCODE_DEMO_APP_4 = 304,
+    /** shutdown for vt super capacitor. */
+    AKEYCODE_SHUTDOWN = 305,
frameworks/native/libs/input/InputEventLabels.cpp
     DEFINE_KEYCODE(DEMO_APP_1), \
     DEFINE_KEYCODE(DEMO_APP_2), \
     DEFINE_KEYCODE(DEMO_APP_3), \
-    DEFINE_KEYCODE(DEMO_APP_4)
+    DEFINE_KEYCODE(DEMO_APP_4), \
+    DEFINE_KEYCODE(SHUTDOWN)
frameworks/base/core/java/android/view/KeyEvent.java
@@ -866,13 +866,15 @@ public class KeyEvent extends InputEvent implements Parcelable {
     public static final int KEYCODE_DEMO_APP_3 = 303;
     /** Key code constant: Demo Application key #4. */
     public static final int KEYCODE_DEMO_APP_4 = 304;
+    /** Key code constant: shutdown for vt super capacitor. */
+    public static final int KEYCODE_SHUTDOWN = 305;
 
    /**
      * Integer value of the last KEYCODE. Increases as new keycodes are added to KeyEvent.
      * @hide
      */
     @TestApi
-    public static final int LAST_KEYCODE = KEYCODE_DEMO_APP_4;
+    public static final int LAST_KEYCODE = KEYCODE_SHUTDOWN;
 
     // NOTE: If you add a new keycode here you must also add it to:
     //  isSystem()
@@ -2024,6 +2026,7 @@ public class KeyEvent extends InputEvent implements Parcelable {
             case KeyEvent.KEYCODE_SYSTEM_NAVIGATION_DOWN:
             case KeyEvent.KEYCODE_SYSTEM_NAVIGATION_LEFT:
             case KeyEvent.KEYCODE_SYSTEM_NAVIGATION_RIGHT:
+            case KeyEvent.KEYCODE_SHUTDOWN:
                 return true;
                 return true;
         }

frameworks/base/core/res/res/values/attrs.xml
@@ -2005,6 +2005,7 @@
         <enum name="KEYCODE_DEMO_APP_2" value="302" />
         <enum name="KEYCODE_DEMO_APP_3" value="303" />
         <enum name="KEYCODE_DEMO_APP_4" value="304" />
+        <enum name="AKEYCODE_SHUTDOWN" value="305" />
     </attr>

修改键值映射关系,如下195 是驱动上报,SHUTDOWN是框架自定义

frameworks/base/data/keyboards/Generic.kl
@@ -214,7 +214,7 @@ key 180   NUMPAD_RIGHT_PAREN
 # key 192   F22
 # key 193   F23
 # key 194   F24
-# key 195 (undefined)
+key 195    SHUTDOWN
services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -3860,6 +3860,12 @@ public class PhoneWindowManager implements WindowManagerPolicy {
                     + " policyFlags=" + Integer.toHexString(policyFlags));
         }
 
+        // if keycode is KEYCODE_SHUTDOWN 195, shutdown immediately for vt super capacitor function
+        if( keyCode == KeyEvent.KEYCODE_SHUTDOWN && down ){
+           Log.d(TAG,"start shutdown because keycode is KEYCODE_SHUTDOWN="+keyCode + " policyFlags=" + Integer.toHexString(policyFlags));
+           mPowerManager.shutdown(false,"android.policy:POWER",false);
+           return ACTION_PASS_TO_USER;
+        }
         // Basic policy based on interactive state.
         int result;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值