为什么Android无法检测到手机设备上物理按钮的按下?

问题描述 投票:0回答:1

我正在使用 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);
    }
android android-button logcat
1个回答
0
投票

我的目标是检测电源按钮的按下情况

AFAIK,按钮按下不会发送到应用程序,而是纯粹由系统处理。 HOME 按钮的作用类似。

如果您愿意,欢迎尝试收听

ACTION_SCREEN_OFF
广播。然而...

这样我可以在执行电源命令之前将一些日志保存到数据库。

就“执行电源命令之前”部分而言,这实际上并不起作用。在处理按钮按下之前,操作系统不会等待一堆应用程序执行任意操作。

另外,请记住,在 Android 14 之前,您的进程可能会因为处于后台而被终止。保存日志直到按下电源按钮意味着您将丢失这些日志。相反,请立即或定期保存它们。

© www.soinside.com 2019 - 2024. All rights reserved.