Проснись устройство, как только оно входит в режим ожидания - PullRequest
0 голосов
/ 02 мая 2018

Я разрабатываю приложение для проверки того, кто должен подключаться к серверу 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);
        }}
...