私のアクティビティは、受信した Bluetooth データを継続的に処理しているため、部分的な wake lock で実行されます。wake lock は次のように設定されます。
powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyWakeLock");
wakeLock.acquire();
特定のイベントが発生したときに、ユーザーがステータスを確認できるようにディスプレイに表示したいと考えています。ユーザーがキーを押すのではなく、ディスプレイを自動的にオンにしたい。しかし、これを行う試みはすべて失敗しました。部分的な wake lock での実行中にディスプレイがオフになると、ディスプレイを元に戻してユーザーに現在のアクティビティを表示しようとする試みが失敗しました。ユーザーアクティビティを偽造してみました:
PowerManager NewPowerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
NewPowerManager.userActivity(1, false);
ウィンドウのフラグの設定:
Window win = getWindow();
win.setFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON, WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
さらに、ウェイクロックを解放して、画面をオンにする別の起動を開始します。
if (wakeLock != null)
{
wakeLock.release(); // release the wakelock
}
PowerManager.WakeLock TempWakeLock = powerManager.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK |
PowerManager.ACQUIRE_CAUSES_WAKEUP, "TempWakeLock");
// tried | PowerManager.ON_AFTER_RELEASE to no avail
TempWakeLock.acquire();
ここに欠けているものはありますか?新しいアクティビティを開こうとしているのではなく、現在のアクティビティをユーザーに表示しているだけです。他の誰かがこれを行うことができましたか? あなたが私に与えることができるどんな助けにも感謝します.