任何人都可以帮我创建多个闹钟。如果有任何人有这样的例子。请发送给我,因为我是android的新手。如果有任何人在多种警报的工作形式上有例子,请发给我。
答案 0 :(得分:2)
使用以下方法创建多个警报,为每个不同的警报在pk
字段中发送不同的值。 timeinmilis
是警报响起的时间(以毫秒为单位)。
public void setAlarm(Context context, int pk, long timeinmilis) {
AlarmManager manager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent alarmIntent = new Intent(context, AlarmReceiver.class);
alarmIntent.putExtra("alarm", pk);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, pk, alarmIntent, PendingIntent.FLAG_UPDATE_CURRENT);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)
manager.setExact(AlarmManager.RTC_WAKEUP, , pendingIntent);
else
manager.set(AlarmManager.RTC_WAKEUP, time.getMillis(), pendingIntent);
}
要取消闹钟,只需发送用于制作闹钟的pk
中的整数值。
public void cancelAlarm(Context context, int pk) {
AlarmManager manager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent alarmIntent = new Intent(context, AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, pk, alarmIntent, PendingIntent.FLAG_NO_CREATE);
manager.cancel(pendingIntent);
}
创建一个扩展BroadCastReceiver的类,以便在闹钟响起时接收。
public class AlarmReceiver extends BroadcastReceiver {
private PowerManager.WakeLock wl;
@Override
public void onReceive(Context context, Intent intent) {
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "backgroundwakelock");
wl.acquire();
//add code to do something when alarm goes off
wl.release();
}
}
注意:添加了WakeLock
,以便在后台运行时,WakeLock
会唤醒CPU。
需要在AndroidManifest.xml
<uses-permission android:name="android.permission.WAKE_LOCK" />