Android多重警报

时间:2015-04-11 19:14:24

标签: android android-studio alarmmanager android-alarms

任何人都可以帮我创建多个闹钟。如果有任何人有这样的例子。请发送给我,因为我是android的新手。如果有任何人在多种警报的工作形式上有例子,请发给我。

1 个答案:

答案 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" />