Как понять, что пользователь ушел в спящий режим?
Как понять, что пользователь ушел в спящий режим, ну, типа на блокировку нажал?
Источник: Stack Overflow на русском
Как понять, что пользователь ушел в спящий режим, ну, типа на блокировку нажал?
Надо ставить BroadcastReceiver
, который ловит событие: android.intent.action.SCREEN_OFF
Декларация в манифесте:
<receiver android:name="MyReceiver" android:enabled="true">
<intent-filter>
<action android:name="android.intent.action.SCREEN_OFF"/>
</intent-filter>
</receiver>
собсно сам ресивер:
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
Log.i("MyReceiver", "Bingo! Screen off!");
}
}
Update
Здесь есть одна небольшая западня. Если продекларировать в манифесте с ключом exported=true
(в данном случае он по дефолту true
), то ресивер будет работать всегда (с момента установки аппы до его сноса) - то есть будет ловить бродкасты даже если приложение не работает.
Надо быть аккуратным с этим, легко можно нарваться на грубость со стороны системы. Более подробно об этом здесь