我想实现一个Android应用程序沿着时间需要报警(或警示)多次。
我已经搜查,但我发现最近被设定闹钟的固定号码,我猜的例子没有工作。
我想知道是否有存在的方法来动态地设置多个闹钟,像警报的数组,然后触发报警者在其特定的时间戳。
我想实现一个Android应用程序沿着时间需要报警(或警示)多次。
我已经搜查,但我发现最近被设定闹钟的固定号码,我猜的例子没有工作。
我想知道是否有存在的方法来动态地设置多个闹钟,像警报的数组,然后触发报警者在其特定的时间戳。
如果要设置多个闹钟(重复或单),那么你只需要创建自己PendingIntent
s的不同requestCode
。 如果requestCode
是相同的,那么新的报警器就会覆盖旧的。
下面是创建多个单独的报警,让他们在代码中ArrayList
。 我一直PendingIntent
的阵列中,因为这是你需要取消报警的。
// context variable contains your `Context`
AlarmManager mgrAlarm = (AlarmManager) context.getSystemService(ALARM_SERVICE);
ArrayList<PendingIntent> intentArray = new ArrayList<PendingIntent>();
for(i = 0; i < 10; ++i)
{
Intent intent = new Intent(context, OnAlarmReceiver.class);
// Loop counter `i` is used as a `requestCode`
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, i, intent, 0);
// Single alarms in 1, 2, ..., 10 minutes (in `i` minutes)
mgrAlarm.set(AlarmManager.ELAPSED_REALTIME_WAKEUP,
SystemClock.elapsedRealtime() + 60000 * i,
pendingIntent);
intentArray.add(pendingIntent);
}
此外,看到这样的问题: 如何在Android上的时间设置多个报警? 。
您可以设置报警的重复:
在这种情况下:
public void AddAlarm(int requestCode,MutableDateTime dueDate,int repeat) {
Intent intent = new Intent(context, AlarmReceiver.class);
intent.putExtra(Constants.RECORD_ID, requestCode);
intent.putExtra("REPEAT", repeat);
PendingIntent operation = PendingIntent.getBroadcast(context, requestCode, intent, PendingIntent.FLAG_ONE_SHOT );
MutableDateTime due = dueDate.toMutableDateTime();
switch(repeat){
case NO_REPEAT:
due.addMinutes(0);
break;
case DAILY:
due.addDays(1);
break;
case WEEKLY:
due.addWeeks(1);
break;
case MONTHLY:
due.addMonths(1);
break;
case MONTHLY_2:
due.addWeeks(5);
break;
case YEARLY:
due.addYears(1);
break;
}
due.add(-(dueDate.getMillis()));
due.setSecondOfMinute(0);
dueDate.setSecondOfMinute(0);
alarm.cancel(operation);
alarm.set(AlarmManager.RTC_WAKEUP, dueDate.getMillis(), operation);
alarm.setRepeating(AlarmManager.RTC_WAKEUP, dueDate.getMillis(), due.getMillis(), operation);
}
要动态地设置多个闹钟,这是我使用的方法是,我创建了一个单一的报警。 然后在我的报警设置类,静态整数(用作requestcode)初始化将被从我的主要活动,每次每当我点击加在我的主要活动“添加报警”按钮。 例如
MainActivity.java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void addAlarmClick(View v) {
AlarmActivity.broadcastCode++;
startActivity(new Intent(this, AlarmActivity.class));
}
}
AlarmActivity.java
public class AlarmActivity extends AppCompatActivity {`
public static int broadcastCode=0;
/*some code here*/
Intent myIntent = new Intent(AlarmActivity.this, AlarmReceiver.class);
pendingIntent = PendingIntent.getBroadcast(AlarmActivity.this,
broadcastCode, myIntent, 0);
我希望这将有所帮助。