多个警报 - 警报不响

时间:2012-07-06 17:34:45

标签: android alarmmanager android-alarms

我正在尝试发出一个会在指定的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!");

        }
    }
}

2 个答案:

答案 0 :(得分:1)

我刚刚回答了同样的问题,你遗漏了具有特定意图的Manifest中的Receiver。

Answer link

你必须将第二个参数从“123”更改为随机且唯一的数字,你可以通过int计数,并在待定意图中使用count ++代替123 // fixed

答案 1 :(得分:0)

以这种方式创建警报只会简单地替换旧警报,因为它们是使用相同的代码创建的。每次修改请求代码将允许创建多个警报。如果您只是通过循环将i添加到123中就足够了。

此外,您是否设置了接收器类以及清单中定义的接收器?如果不是,则不会收到警报。

An alarm manager example