電話の通知をリッスンし、を介して Android Wear ウォッチにメッセージを送信するアプリがありますMessageApi
。Android 6 を搭載した一部のデバイス、特に Huawei Mate 8 を除いて、すべて正常に動作します (すべての Huawei Android 6 がこれを行うようです)。
Huawei には、フリーズ アプリのバックグラウンド処理 (保護されたアプリ) の独自の実装があります。ユーザー レポートから、Huawei の保護されたアプリと Android 6 のDozeモードで、私のアプリに例外があることを確認しました。アプリは正常に動作しますが、ディスプレイをオフにしてちょうど 15 分後に、アプリが接続された Android Wear ウォッチへのメッセージの送信を停止します。私のアプリは受信した通知の履歴も記録できますが、15 分経っても何も届きません... 電話のディスプレイがオンになってアプリが開かれるまで。その後、電話のディスプレイがオフのときに到着するはずだったすべての通知がNotificationListenerService
実装に到着し、一度に時計に送信されます。これは、記録された履歴でも確認されます。
これらの電話、特に Doze モードの Android 6 を搭載した Huawei Mate 8 でこれを修正する方法はありますか?
NotificationListenerService
デバイスが居眠りモードにあるときやアプリがスタンバイ モードにあるときの の正しい動作はどれですか?
編集
ユーザーは、バックグラウンド アプリとそのサービスにも影響を与える省電力モードになっていないことも確認しています。Nexusユーザーがこれを報告しておらず、私のOnePlus One with Mもこれを行っていないため、このバグはHuawei専用のようです. また、Nexus デバイスでは N プレビューが適切に機能します。
編集2
オプションのフォアグラウンド サービス ( startForeground()
) を追加したので、アプリの通知センターに永続的な通知が表示されるため、すべてのバッテリー最適化からアプリを除外する必要があります。フォアグラウンド サービス通知では、優先度を使用し、フラグNotificationCompat.PRIORITY_MIN
を追加しました。Notification.FLAG_ONGOING_EVENT
これは Huawei の携帯電話では少し役に立ちましたが、それほどではありませんでした。今ではNotificationListenerService
、アプリを開いた後ではなく、画面がオンになった直後に遅延通知が届きます。startForeground()
ライフサイクルを制御できないため、自分では使用しませんNotificationListenerService
が、別の方法では使用Service
します。