Android app:如何让 App 拿到Power key 值
16lz
2021-01-23
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测试代码
更多相关文章
- Android 平台上拍照/录像,图片/视频选择,编辑和压缩的一站式解决方
- ndroid中的自动测试这里结合Music的测试程序,分析一下Android测试
- Android Wear 交互表面设计及Android 双击事件监测实现
- Android Webview upload 图片上传
- Android自动测试之MonkeyRunner之MonkeyDevice
- Android图片圆角转换 RoundedImageView开源项目 小记
- Android UI开发第二十二篇――android 瀑布流图片实现
- Android 绘制一个Loading动画__向图片中缓慢填充颜色,从而形成动