使用场景
我们的定制软件需要在按下电源键时监听并播报软件信息,像我们之前做法是监听屏幕的开关
android.intent.action.SCREEN_ON 广播可以达到要求,但是定制系统CPU熄屏不休眠导致这个广播被拦截收不到了,所以我们就追踪到系统代码的KeyEvent.KEYCODE_POWER按下事件进行发送自定义广播。
系统修改
首先找到系统的清单文件位置
文件路径:/aosp/frameworks/base/core/res/AndroidManifest.xml
name就是自己定义action
修改PhoneWindowManager文件
文件路径:/aosp/frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java
这里我是监听的KEYCODE_POWER电源键,有需求的可以换成home键或者其他的地方找到,并发送广播就可以了
Intent intentoff = new Intent();
intentoff.setAction("com.action.CUSTOM_SCREEN_OFF");
// 发送广播
mContext.sendBroadcast(intentoff);
最后在我们的onCreate方法里注册广播
registerReceiver(gpsSwitchReceiver, intentFilter) registerReceiver(LockScreenReceiver(), IntentFilter().apply { addAction("android.intent.action.SCREEN_OFF") addAction("com.action.CUSTOM_SCREEN_OFF") })
public class LockScreenReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { LogUtils.i("电源键"+intent.getAction());
}
}
翻译
搜索
复制