Я разрабатываю приложение для проверки того, кто должен подключаться к серверу MQTT для получения сообщений от сервера. Когда устройство Android переходит в режим DOZE, клиент (Android) автоматически отключается, потому что сеть приостановлена, но активна.
Как только устройство входит в режим DOZE, мне нужно разбудить устройство, подключиться к серверу, использующему MQTT
Я написал код для этого, мне нужно убедиться, что я на правильном пути или нет?
public void onReceive(Context context, Intent intent) {
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
boolean isIdle = pm.isDeviceIdleMode();
Log.d(TAG, " --- DozeModeReceiver isIdle--- "+isIdle);
if (isIdle) {
// the device is now in doze mode
if (screenWakeLock == null) {
PowerManager mPowerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
screenWakeLock = mPowerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "MyWakeLockTag");
Log.d(TAG, " --- Going to Wake Screen ... --- " + result);
screenWakeLock.acquire();
try {
/**
*Code to connect with MQTT Server
*/
} catch (Exception e) {
e.printStackTrace();
}
}
if (screenWakeLock != null) {
screenWakeLock.release();
Log.i(TAG, "screenWakeLock Released ");
}
} else {
// the device just woke up from doze mode
Log.d(TAG, " --- Woke up from Doze mode --- "+isIdle);
}}