ANDROID Alarm Manager重复到某个日期
我正在创建一个类似于闹钟的应用程序,我想知道如何做一些事情 我可以在某个日期、某个时间收到声音通知,我想知道您如何编辑它,删除旧的通知,以及如何在我决定的某个时间内每隔5分钟发出声音通知 我在2001年1月1日7:00创建了一个通知 我要说的是,在2001年1月2日之前,设置中的声音应该每5分钟响起一次 我该怎么做 类广播接收机ANDROID Alarm Manager重复到某个日期,android,alarmmanager,android-alarms,Android,Alarmmanager,Android Alarms,我正在创建一个类似于闹钟的应用程序,我想知道如何做一些事情 我可以在某个日期、某个时间收到声音通知,我想知道您如何编辑它,删除旧的通知,以及如何在我决定的某个时间内每隔5分钟发出声音通知 我在2001年1月1日7:00创建了一个通知 我要说的是,在2001年1月2日之前,设置中的声音应该每5分钟响起一次 我该怎么做 类广播接收机 public void onReceive(Context context, Intent intent) { Vibrator vibrator = (Vi
public void onReceive(Context context, Intent intent) {
Vibrator vibrator = (Vibrator) context
.getSystemService(Context.VIBRATOR_SERVICE);
vibrator.vibrate(2000);
Intent i = new Intent(context, NotificationReceiverActivity.class);
PendingIntent oi = PendingIntent.getActivity(context, 0, i,
PendingIntent.FLAG_CANCEL_CURRENT);
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
context).setContentIntent(oi).setSmallIcon(R.drawable.avvio)
.setContentTitle(context.getString(R.string.notific_title))
.setContentText(context.getString(R.string.notific_subject));
NotificationManager mgr = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
Uri sound = Uri.parse("android.resource://" + context.getPackageName() + "/"
+ R.raw.audio);
mBuilder.setSound(sound);
mgr.notify(0, mBuilder.build());
}`
类notificationreceiver只是一个布局
类阿拉姆
public void createAlarm(String data,String ogni){
StringTokenizer s = new StringTokenizer(data," ");
String date = s.nextToken();
String time = s.nextToken();
StringTokenizer a = new StringTokenizer(date,"/");
StringTokenizer v = new StringTokenizer(time,":");
String giorno = a.nextToken();
String mese = a.nextToken();
String anno = a.nextToken();
String ora = v.nextToken();
String minuti = v.nextToken();
Calendar myAlarmDate = Calendar.getInstance();
myAlarmDate.setTimeInMillis(System.currentTimeMillis());
myAlarmDate.set(Integer.valueOf(anno), Integer.valueOf(mese)-1, Integer.valueOf(giorno), Integer.valueOf(ora), Integer.valueOf(minuti), 0);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent _myIntent = new Intent(context, MyBroadcastReceiver.class);
PendingIntent _myPendingIntent = PendingIntent.getBroadcast(context, 123, _myIntent, PendingIntent.FLAG_UPDATE_CURRENT);
alarmManager.set(AlarmManager.RTC_WAKEUP, myAlarmDate.getTimeInMillis(),_myPendingIntent);
您可以在应用程序的BroadcastReceiver中进行重置:
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive( Context context, Intent src ) {
Date now = new Date();
Date until = getUntilDateFromPreferencesForExample();
if( now.after( until ) ){
PendingIntent pi = PendingIntent.getBroadcast( app, 0, src, PendingIntent.FLAG_UPDATE_CURRENT );
((AlarmManager)context.getSystemService( Context.ALARM_SERVICE )).cancel( pi );
}
}
}
因此,您必须将我的代码添加到onReceive方法中以取消警报