2011-10-07 2 views
3

이 코드를 사용하여 알람을 시작합니다.AlarmManager의 고유 ID 설정 방법은 무엇입니까?

알람은 사용자가 시작할 수있는 활동에 설정됩니다.

//Setting alarm to fire off NEW_GAME intent every 24 hours. 
      String alarm = Context.ALARM_SERVICE; 
      Calendar calendar = Calendar.getInstance(); 

      calendar.set(Calendar.HOUR_OF_DAY, 8); 
      calendar.set(Calendar.MINUTE, 0); 
      calendar.set(Calendar.SECOND,0); 
      calendar.set(Calendar.MILLISECOND, 0); 

      Log.i("Test", "Current time: " + System.currentTimeMillis()); 
       Log.i("Test", "Calendar time: " + calendar.getTimeInMillis()); 

       int currentDate = calendar.get(Calendar.DATE); 
       calendar.set(Calendar.DATE, currentDate+1); 

       Log.i("Test", "Calendar time with a day added: " + calendar.getTimeInMillis()); 


      AlarmManager am = (AlarmManager)getActivity().getSystemService(alarm); 
       Intent intent = new Intent("NEW_ITEM"); 
       PendingIntent sender = PendingIntent.getBroadcast(getActivity(), 0, intent, 0); 

       am.setRepeating(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis() , AlarmManager.INTERVAL_DAY, sender); 

나는 경보가 서로 다른 곳에 getBroadcast()가 존재하지 않도록 unique id를 제공해야한다고 들었다.

문제는 사용자가 원하는만큼 여러 번 활동을 열 수있는 경우 어떻게해야합니까?

또한 고유 ID를 제공하기 때문에 매번 고유 ID를 제공 할 때마다 동일한 ALARMS를 5 개 설정할 수 있습니다.

이 문제를 해결하는 가장 좋은 방법은 무엇입니까?

+0

당신을위한 응답 일을 했습니까 여기에 몇 가지 예제 코드인가? – LordT

답변

3

당신은 항상 고유 한 ID로 목표 시간의 유닉스 타임 스탬프를 사용할 수 있습니다. 그런 식으로, 서로를 오버 라이딩 정확한 시간에 대한 경보, 다른 모든 알람이

별도 남아있을 것입니다 동안 [편집 :] :

AlarmManager am = (AlarmManager)getActivity().getSystemService(alarm); 
      Intent intent = new Intent(String.valueOf(calendar.getTimeInMillis())); 
      PendingIntent sender = PendingIntent.getBroadcast(getActivity(), 0, intent, 0); 
      am.setRepeating(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis() , AlarmManager.INTERVAL_DAY, sender); 
+0

위 코드를 사용하여 어떻게 수행하는지에 대한 지침을 제공 할 수 있습니까? – yoshi24

+0

예제를 제공해 줄 수 있습니까? – yoshi24

+0

일부 코드 추가됨 – LordT