2017-01-02 3 views
0

다음 링크 https://developer.android.com/training/scheduling/alarms.html을 추적했습니다.CalendarManager.getTimeInMillis()를 전달하여 AlarmManager를 사용하여 알림을 설정하면 의도 한 시간이 아닌 즉시 알림을 트리거합니다

RTC의 첫 번째 예는 모든 요일의 특정 시간에 알람을 설정하는 것입니다. 동일한 코드를 따른 후에도 트리거가 발생한다고 가정 할 때 알람이 발생하지 않습니다. 대신 notification은 시간 선택기를 사용하여 시간을 설정 한 후 즉시 트리거됩니다. 내 코드입니다 다음, 대신 setRepeating

AlarmManager alarmMgr = (AlarmManager)  getSystemService(Context.ALARM_SERVICE); 
Intent intent = new Intent(this, NotificationReceiver.class); 
PendingIntent intentalarm = PendingIntent.getBroadcast(this, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT); 

    Calendar calendar = Calendar.getInstance(); 
    calendar.setTimeInMillis(System.currentTimeMillis()); 
    calendar.set(Calendar.HOUR_OF_DAY,4); 
    calendar.set(Calendar.MINUTE, 30); 

    alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, intentalarm); 

는 또한 setInexactRepeating을 시도하지만 행운을 빌어도 내가

calendar.getTimeInMillis()를 변경할 때 추가 하시겠어요 있었다 알람 정확히 후 트리거 SystemClock.elapsedRealtime() + 120 * 1000 사용 설정 시간에서 2 분.

그러나 calendar.getTimeInMillis()을 사용하는 경우 즉각적인 트리거링이 발생하지 않습니다.

누구나 솔루션을 찾을 수 있다면 큰 도움이 될 것입니다. 메모를 위해서만 알람이 현재 장치 시간보다 먼저 설정되어 있으면 알람이 즉시 트리거되지만 여기서는 그렇지 않다는 것을 알 수 있습니다.

NotificationReceiver.class이 생성되어 제목에 나타납니다. 그러나 그것이 나타날 때가 걱정의 원인입니다.

답변

0

setTimeInMillis와 hourofday 및 minute를 모두 사용하고 있습니다.

4시 30 분에 경보가 울리도록하려면 hourofday and minute를 추가하십시오.

Calendar calendar = Calendar.getInstance(); 
calendar.set(Calendar.HOUR_OF_DAY,4); 
calendar.set(Calendar.MINUTE, 30);` 
0

내가 직면 한 문제를 식별 할 수 있습니다. 24 시간 형식의 TimePicker를 사용하고있었습니다. 하지만 SimpleDateFormat "hh : mm"을 사용했습니다. 'h'의 의미는 다음과 같습니다. "h-> Am/pm (1-12)"시간. 그래서 내가 AM에서 설정 한 모든 알람이 올바르게 트리거됩니다. 1-12'h '형식을 사용했기 때문에 PM에 시간을 설정하면 알람이 AM 시간으로 설정되고 알람 시간/알림이 즉시 트리거 된 장치 시간과 비교할 때 그 시간이 지나기 때문에 올바른 형식 "HH : MM"입니다. 여기서 'H'는 "H-> 시간 (0-23)"을 의미합니다. 이 문제가 해결되었습니다.

온라인 에포크 시간 변환기에서 TimeinMillis를 확인하면 도움이되었습니다. 다시 도움 주셔서 감사합니다.