1

指定したn回鳴るアラームを作ろうとしています。私のコードを以下に示します。エントリを正しく取得できますが、アラームがまったく鳴りません。

public void setAlert(View view) {

    int h[] = new int[TOTAL_ALARMS];
    int m[] = new int[TOTAL_ALARMS];
    Intent intent[] = new Intent[TOTAL_ALARMS];
    PendingIntent pendingIntent[] = new PendingIntent[TOTAL_ALARMS];
    int piID = 12345; 
    Calendar[] cal = new Calendar[TOTAL_ALARMS];
    for (int i = 0; i < TOTAL_ALARMS; i++) {
        cal[i] = Calendar.getInstance();
    }

    for (int i = 0; i < TOTAL_ALARMS; i++) {
        try {

            m[i] = Integer.parseInt(editHour[i].getText().toString());

            h[i] = Integer.parseInt(editMinute[i].getText().toString());

            cal[i].set(Calendar.HOUR, h[i]);
            cal[i].set(Calendar.MINUTE, m[i]);


            intent[i] = new Intent(this, AlarmService.class);
             pendingIntent[i] = PendingIntent.getActivity(this,
                    piID++, intent[i], PendingIntent.FLAG_CANCEL_CURRENT);
            AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
            alarmManager.set(AlarmManager.RTC_WAKEUP,
                    cal[i].getTimeInMillis(), pendingIntent[i]);
            Toast.makeText(this, "Alarm set", Toast.LENGTH_LONG).show();

        } catch (Exception ex) {
            ex.printStackTrace();
            System.out.print("OOPS!");

        }
    }
}
4

2 に答える 2

1

私はちょうど同じ質問に答えました、あなたは特定の意図でマニフェストでレシーバーを定義するのを逃しています。

回答リンク

また、2番目のパラメーターを「123」からランダムで一意の数値に変更する必要があります。これは、intカウントを使用して行うことができ、123の代わりに保留中のインテントでカウント++を使用します//修正済み

于 2012-07-06T17:55:48.850 に答える
0

この方法でアラームを作成すると、同じコードで作成されているため、毎回古いアラームを簡単に置き換えることができます。毎回リクエストコードを変更すると、複数のアラームを作成できます。ループを介して毎回123にiを追加しただけであれば、それで十分です。

また、マニフェストで定義されているレシーバーと一緒にレシーバークラスを設定していますか?そうでない場合、アラームは受信されません。

アラームマネージャーの例

于 2012-07-06T17:59:31.047 に答える