Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ANDROID Alarm Manager重复到某个日期_Android_Alarmmanager_Android Alarms - Fatal编程技术网

ANDROID Alarm Manager重复到某个日期

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

我正在创建一个类似于闹钟的应用程序,我想知道如何做一些事情

我可以在某个日期、某个时间收到声音通知,我想知道您如何编辑它,删除旧的通知,以及如何在我决定的某个时间内每隔5分钟发出声音通知

我在2001年1月1日7:00创建了一个通知 我要说的是,在2001年1月2日之前,设置中的声音应该每5分钟响起一次

我该怎么做

类广播接收机

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方法中以取消警报