1

サーバーからメッセージを取得するために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);
        }}
4

0 に答える 0