Android app:如何让 App 拿到Power key 值

                Android app:如何让 App 拿到Power key 值

 

一、Power key 通常都是由 framework 自行的 处理的, app 无法拿到这个 key 值的。

二、要想获取POWER键,需要修改framework了。              frameworks\base\services\core\java\com\android\server\policy\PhoneWindowManager.java函数,PhoneWindowManager主要用于实现各种实体或虚拟按键处理,interceptKeyBeforeQueueing把case KeyEvent.KEYCODE_POWER部分做如下修改,com.example.keyeventdemo是你需要获取power事件app的包名:

case KeyEvent.KEYCODE_POWER: { 
	  Log.d(TAG,"detect power key in special package, pass to user!  "+KeyEvent.KEYCODE_POWER);
	  result &= ~ACTION_PASS_TO_USER; 
      ActivityManager activityManager = (ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE);
     try{
      if (activityManager.getRunningTasks(1).get(0).topActivity.getPackageName().equals("com.example.keyeventdemo")){ 
        //Please reset the special package name.
        result |= ACTION_PASS_TO_USER;
         Log.d(TAG,"detect power key in special package, pass to user!");
       }
     }catch(NullPointerException e){
      Log.d(TAG,"ingore a NullPointerException ..");
 }
	 return 1;
}

三、实际测试ok,按下power键没有灭屏幕,app获取到该事件。

四、app测试代码

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值