我正在查看是否有可以收听的系统通知,以查看屏幕何时关闭/打开。有什么想法吗?类似于网络连接/断开连接的东西。
答案 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转换对我不起作用,所以我很快重写了代码段-希望它可以节省其他人一两分钟的时间)