N 秒ごとに通知音を鳴らすアラーム ブロードキャスト レシーバーから呼び出されるアクティビティがあります。これは、次のコードで実現されます。
repeating_notification_sound_timer.schedule(ring_the_buzzer_task, 0, 1000 * N);
アクティビティの onCreate 関数の早い段階で、次のコードがあります。
pm = (PowerManager) getApplicationContext().getSystemService(Context.POWER_SERVICE);
wakeLock = pm.newWakeLock((PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP), "TAG");
wakeLock.acquire();
アラームがトリガーされた時点で電話が起動していた限り、これはすべて完全に機能します. ただし、電話がスリープ状態の場合、通知音は一度だけ再生され、二度と再生されません。プログラムはクラッシュしたり、エラーを報告したりしません。まるで、repeating_notification_sound_timer が 1 回しか機能しないかのようです! 何か案は?
編集:最初にアラームを設定するコードは次のとおりです。
static void set_alarm(long alarm_time_in_millis,Context cont,AlarmManager alarm_manager,String str)
{
Intent launchIntent = new Intent(cont, to_call_when_alarm_goes_off.class);
launchIntent.putExtra("string_passed_in_bundle", str);
launchIntent.setAction(to_call_when_alarm_goes_off.CUSTOM_INTENT);
PendingIntent pIntent = PendingIntent.getBroadcast(cont,0, launchIntent, 0);
alarm_manager.cancel(pIntent);
alarm_manager.set(AlarmManager.RTC_WAKEUP,alarm_time_in_millis, pIntent);
}
編集:私が持っているマニフェストで:
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />