1

私は何かを実装しようとしています -

画面がオフ(暗い)です。15 秒間 (イベント/ブロードキャストなどによって) 画面をスリープ解除できるようにしたいのですが、その後、ユーザーの介入がなければ、画面は再びオフ (暗い) になります。 .

これどうやってするの?

4

2 に答える 2

2

AlarmManagerを使用できます。

次のような行でアラームをトリガーします。

Alarm Manager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);

pendingServiceIntent = PendingIntent.getService(this.getApplicationContext(), 0,
            new Intent(this.getApplicationContext(), DataCollectionService.class), 0);

long intervalInMinutes = 5; // will wake you up every 5 minutes
long triggerAtTime = System.currentTimeMillis() + 1000*60*intervalInMinutes;
alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, triggerAtTime, pendingServiceIntent);

私の場合、サービスをトリガーしていました。BroadcastReceiverまたは必要なものを拡張できます。次に、WakeLockを使用して、画面を少なくとも15秒間点灯させます。

powerManager = (PowerManager) getSystemService(POWER_SERVICE);
wL = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK, "LocRepTask");
wL.acquire(); // forces processor to stay awake
// do your stuff.....
wl.release();  // processor no longer awake because of you

WAKE_LOCKAndroidマニフェストでの許可が必要になります。

于 2012-04-25T23:56:07.963 に答える
1

これを行うには、部分的な wake lockを保持している Service を実行する必要があります。その後、サービスは任意の間隔でブロードキャストレシーバーにインテントを送信し、画面を起動できます。ただし、コメンターが示唆したように、これは、デバイスの画面がオフの場合でも CPU をオンにしておく必要があることを意味し、これにより、スタンバイよりもバッテリーが早く消耗します。(それ自体は、考慮を検討する必要があると言っているだけで、それをしない理由にはなりません)

その他の要件は、PowerManager API で簡単にカバーできます。うまくいけば、それで十分です。幸運を!

于 2012-04-25T21:49:06.943 に答える