Android 6.0までは常に動作するアプリを作っています。私はそれが私のアラームが発射することを許可していないDoze機能だと思う。Android 6.0 Dozeモードでのアラームマネージャの問題
私はオプションを処理するためにsharedpreferencesを使用します。
//ENABLE NIGHT MODE TIMER
int sHour = blockerTimerPreferences.getInt("sHour", 00);
int sMinute = blockerTimerPreferences.getInt("sMinute", 00);
Calendar sTime = Calendar.getInstance();
sTime.set(Calendar.HOUR_OF_DAY, sHour);
sTime.set(Calendar.MINUTE, sMinute);
Intent enableTimer = new Intent(context, CallReceiver.class);
enableTimer.putExtra("activate", true);
PendingIntent startingTimer = PendingIntent.getBroadcast(context, 11002233, enableTimer, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager sAlarm = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
sAlarm.setRepeating(AlarmManager.RTC_WAKEUP,
sTime.getTimeInMillis(),
AlarmManager.INTERVAL_DAY, startingTimer);
ここでいただきました!間違ったの任意の手掛かり?
これは通話をブロックするアプリです。ありがとうございました!
EDIT: 私のような3つのファイル(よりますが...)持っている: setExactAndAllowWhileIdleまたは :デバイスが居眠りモードになっている場合は、これらのAPIのいずれかを使用する必要が
MainActivity (All code)
CallReceiver (Broadcast that triggers the alarm again (reboot etc))
CallReceiverService (Handles the call/phone state)
使用 'adbのシェルdumpsysは、あなたのアラームがあることを確認するためにalarm'スケジュールされた。 'setRepeating()'はAndroid 4.4以降では不正確です。 「これもバッテリーの消耗を引き起こしている」 - それは起こりそうにない。実行されないコードはバッテリーを消費しないでください。 – CommonsWare
こんにちは@コモンズウェア、52の起床と52の警報...常に警報を発しています。 'setRepeating()'はその分だけ起動しますが、問題はありません。 – FilipeOS
@FilipeOSそれを機能させましたか? dozeモードでalarmManager.setRepeating()を実装できますか? – devgeek