关闭/开启屏幕的Android通知

时间:2010-11-17 19:44:50

标签: android

我正在查看是否有可以收听的系统通知,以查看屏幕何时关闭/打开。有什么想法吗?类似于网络连接/断开连接的东西。

3 个答案:

答案 0 :(得分:24)

最简单的方法是将其放在MyApplication.onCreate()方法中:

IntentFilter intentFilter = new IntentFilter(Intent.ACTION_SCREEN_ON);
intentFilter.addAction(Intent.ACTION_SCREEN_OFF);
registerReceiver(new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
            Log.d(TAG, Intent.ACTION_SCREEN_OFF);
        } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
            Log.d(TAG, Intent.ACTION_SCREEN_ON);
        }
    }
}, intentFilter);

答案 1 :(得分:11)

系统将在屏幕打开和关闭时进行广播 -

为了监听这些内容,您可以创建一个侦听事件的BroadcastReceiver:

Intent.ACTION_SCREEN_OFF Intent.ACTION_SCREEN_ON

它们列在文档here中:

此外,还有tutorial关于回复这些您可能会觉得有用的事件。

答案 2 :(得分:0)

对于在顶部answer上寻找Kotlin等效代码的任何人,这对我都有效:

val intentFilter = IntentFilter(Intent.ACTION_SCREEN_ON)
intentFilter.addAction(Intent.ACTION_SCREEN_OFF)
registerReceiver(object: BroadcastReceiver() {
    override fun onReceive(context:Context, intent:Intent) {
        if (intent.action == Intent.ACTION_SCREEN_OFF) {
            Log.d(TAG, Intent.ACTION_SCREEN_OFF)
        }
        else if (intent.action == Intent.ACTION_SCREEN_ON) {
             Log.d(TAG, Intent.ACTION_SCREEN_ON)
        }
    }
}, intentFilter)

(Android Studio中的自动Kotlin转换对我不起作用,所以我很快重写了代码段-希望它可以节省其他人一两分钟的时间)