アラームプログラムを作ろうとしています。これまで、ユーザーがアラームを鳴らしたい時間を選択できるアクティビティを作成しました。これは正常に機能しています。次に、アラームマネージャーを使用して、将来の特定の時点でコードの一部を呼び出すようにOSに指示する必要があります。これを大雑把にテストするために、メインアクティビティでテストボタンを押すと実行される次のコードを追加しました。
Intent intent = new Intent(getApplicationContext(), to_call_when_alarm_goes_off.class);
PendingIntent pIntent = PendingIntent.getBroadcast(getApplicationContext(),0, intent, 0);
AlarmManager alarms = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarms.cancel(pIntent);
alarms.setRepeating(
AlarmManager.RTC_WAKEUP,
System.currentTimeMillis()+1000,
AlarmManager.INTERVAL_DAY,
pIntent);
これは、ボタンを押してから1秒後にto_call_when_alarm_goes_offというコードが実行されることを意味するはずです。これで少し混乱します。「to_call_when_alarm_goes_off」を設定する方法と場所がよくわかりません。私がしたことは、次のようにプロジェクトに新しいクラスを追加することでした。
package com.mycompany.alarmprogram;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
public class to_call_when_alarm_goes_off extends BroadcastReceiver
{
@Override
public void onReceive(Context arg0, Intent arg1)
{
// TODO Auto-generated method stub
Log.i("ALARM","TIME TO WAKE UP!!!");
}
}
すべてのコードがコンパイルされ、ボタンを押すと、最初のコードスニペットのすべてのコードがクラッシュせずに実行されますが、1秒後にブロードキャストレシーバーコードは実行されません。明らかに私は何かを誤解しています。