2017-09-16 3 views
0

버튼 클릭시 트리거되는 알람을 생성하려고 시도했으며 오전 6시에 반복합니다. 첫 번째는 제대로 작동하지만 제대로 작동하지만 다른 반복 알람을 추가하면 이전 알람이 동시에 트리거됩니다. 그래서 내 질문은 어떻게 내가 멀티 알람 작업을 제대로 만들 수 있습니까?해결 방법 동시에 여러 개의 반복 알람 트리거

알람

public void setAlarmRepeating() 
    { 
     AlarmManager dog=(AlarmManager)this.getSystemService(Context.ALARM_SERVICE); 
     Intent alarm_dog=new Intent(this,Dog_alarm.class); 
     PendingIntent pi1 = PendingIntent.getBroadcast(this, 100,alarm_dog, PendingIntent.FLAG_UPDATE_CURRENT); 
     Calendar calendar = Calendar.getInstance(); 
     calendar.set(Calendar.HOUR_OF_DAY, 6); 
     calendar.set(Calendar.MINUTE,0); 
     calendar.set(Calendar.SECOND, 00); 
     dog.setRepeating(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pi1); 


     AlarmManager dog1=(AlarmManager)this.getSystemService(Context.ALARM_SERVICE); 
     Intent alarm_dog1=new Intent(this,Dog_alarm.class); 
     PendingIntent pi2 = PendingIntent.getBroadcast(this, 200,alarm_dog1, PendingIntent.FLAG_UPDATE_CURRENT); 
     Calendar calendar1 = Calendar.getInstance(); 
     calendar1.set(Calendar.HOUR_OF_DAY, 7); 
     calendar1.set(Calendar.MINUTE,0); 
     calendar1.set(Calendar.SECOND, 00); 
     dog1.setRepeating(AlarmManager.RTC_WAKEUP,calendar1.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pi2); 

    } 

을 반복하는 코드 그리고 당신은 플래그와 PendingIntent.FLAG_UPDATE_CURRENT 새로운 엑스트라 현재 PendingIntent 갱신하고 생성 된 새로운 PendingIntent를 사용하는 경우이 BroadcastReciever

public class MorningAlarm extends BroadcastReceiver{ 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     NotificationManager notificationManager1=(NotificationManager)context.getSystemService(context.NOTIFICATION_SERVICE); 
     Intent dog_intent1=new Intent(context,HomeActivity.class); 
     dog_intent1.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     PendingIntent dog_pending1=PendingIntent.getActivity(context, 100,dog_intent1, PendingIntent.FLAG_UPDATE_CURRENT); 

     NotificationCompat.Builder builder1=new NotificationCompat.Builder(context) 
       .setContentIntent(dog_pending1) 
       .setSmallIcon(android.R.drawable.ic_dialog_alert) 
       .setContentTitle("Pet Guide 101") 
       .setContentText("Time to feed your dog") 
       .setAutoCancel(true); 
     notificationManager1.notify(100,builder1.build()); 



     NotificationManager notificationManager2=(NotificationManager)context.getSystemService(context.NOTIFICATION_SERVICE); 
     Intent dog_intent2=new Intent(context,HomeActivity.class); 
     dog_intent2.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     PendingIntent dog_pending2=PendingIntent.getActivity(context, 200,dog_intent2, PendingIntent.FLAG_UPDATE_CURRENT); 

     NotificationCompat.Builder builder2=new NotificationCompat.Builder(context) 
       .setContentIntent(dog_pending2) 
       .setSmallIcon(android.R.drawable.ic_dialog_alert) 
       .setContentTitle("Pet Guide 101") 
       .setContentText("Time to walk your dog") 
       .setAutoCancel(true); 
     notificationManager2.notify(200,builder2.build()); 
    } 
} 

답변

0

입니다.

각 알람마다 PendingIntent을 새로 작성해야합니다.

사용 :

PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0); 

당신이 당신의 장치를 다시 시작하거나 응용 프로그램을 제거해야 경보를 취소하는 기억