我正在使用 Android Studio Giraffe 2022.3.1 Patch 2,当我按下物理手机上的电源或音量物理按钮时,日志为空。我使用两种不同的设备,一种是 Android 12(三星 A10),另一种是 Android 8。
我的目标是检测电源按钮的按下情况,以便我可以在执行电源命令之前将一些日志保存到数据库中。
这是我用来检测物理按钮按下的代码:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
int keyPressed = event.getKeyCode();
Log.d("MainActivity","\nonKeyDown" +
"\nkey code: " + keyCode + "" +
"\nevent key pressed: " + keyPressed );
return super.onKeyDown(keyCode, event);
}
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
int keyPressed = event.getKeyCode();
Log.d("MainActivity","\ndispatchKeyEvent" +
"\nevent key pressed: " + keyPressed );
return super.dispatchKeyEvent(event);
}
我的目标是检测电源按钮的按下情况
AFAIK,按钮按下不会发送到应用程序,而是纯粹由系统处理。 HOME 按钮的作用类似。
如果您愿意,欢迎尝试收听
ACTION_SCREEN_OFF
广播。然而...
这样我可以在执行电源命令之前将一些日志保存到数据库。
就“执行电源命令之前”部分而言,这实际上并不起作用。在处理按钮按下之前,操作系统不会等待一堆应用程序执行任意操作。
另外,请记住,在 Android 14 之前,您的进程可能会因为处于后台而被终止。保存日志直到按下电源按钮意味着您将丢失这些日志。相反,请立即或定期保存它们。