Android检测按下电源键

标签 android

我的应用程序需要知道屏幕是否因超时或用户单击电源按钮而关闭。

我决定检查是否按下了电源按钮。 我在这里阅读了一些问答并想出了这个:

public class MyActivity extends Activity {    

    /**
     * Called when the activity is first created.
     */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_POWER) {
            Log.w("Test", "Power button down detected");
            return true;
        }
        return false;
    }


    @Override
    public boolean onKeyUp(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_POWER) {
            Log.w("Test", "Power button up detected");
        }
        return false;
    }
}

我还添加了这个:

<uses-permission android:name="android.permission.PREVENT_POWER_KEY"/>

这不起作用,它不打印日志。

最佳答案

尝试从BroadcastReceiver yseing:

public class MyBroadCastReciever extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
    if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
        //DO HERE
    } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
        //DO HERE
    }
}
}

和你的 list :

<receiver android:name=".MyBroadCastReciever">
<intent-filter>
    <action android:name="android.intent.action.SCREEN_OFF"/>
    <action android:name="android.intent.action.SCREEN_ON"/>
</intent-filter>

关于Android检测按下电源键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25832380/

相关文章:

Android R8 fragment 实现但实际上匹配扩展

android - 在android中单击按钮时如何绘制圆圈?

java - 安卓证书问题

java - 如何从 Java 7 调用 Kotlin 挂起协程函数

java - Android 2.2 (level 8) httpclient.execute 一致超时

java - 如何在 listView 中显示文本文件中的数据

java - 打开相机,图片大小为 16 :9 programatically

android - CustomContact 插入时出现 NullPointerException

android - 如何在 ScrollView 顶部添加 float 操作按钮

android - layoutlib.jar 丢失了! : Plug-in "com.android.ide.eclipse.adt"