2012-04-23 3 views
1

가장 가까운 시간에 AlarmManager를 시작하는 방법은 무엇입니까? 예를 들어, 사용자가 버튼을 클릭하고 시간이 12:32 인 경우, 나는 13:00에 서비스를 시작한 다음 매 시간마다 반복하고 싶습니다.이 코드를 시도했지만 작동하지 않습니다. AlarmManager가 한 시간 만 시작됩니다. 그래서 시간이 12:32이면 13시 32 분에 서비스를 시작합니다.시간대에 AlarmManager를 시작하는 방법은 무엇입니까?

Calendar cal = Calendar.getInstance(); 
     cal.set(Calendar.HOUR_OF_DAY, cal.get(Calendar.HOUR_OF_DAY)+1); 

     AlarmManager alarm = (AlarmManager)myService.this.getSystemService(Context.ALARM_SERVICE); 
     Intent i = new Intent(myService.this, AlarmReceiver.class); 
     PendingIntent pIntent = PendingIntent.getBroadcast(BatteryService.this, 0, i, 0); 
     alarm.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 1000*60*60, pIntent); 

답변

4

캘린더 인스턴스를 만들 때 시간은 현재 시간입니다. 당신의보기에 12시 32 분. 그런 다음 하루에 1 시간을 추가합니다. 이제 13시 32 분. 당신은 0 분 (초)을 설정해야합니다

cal.set(Calendar.MINUTE, 0); 
cal.set(Calendar.SECOND, 0); 
cal.set(Calendar.MILLISECOND, 0); // well ... 
+0

이러한 간단한 것들에 대한 코드 예제를 제공하면 사람들이 클래스의 api를 배우는 능력이 떨어집니다. 그들에게 목발을주지 않음으로써 사람들을 도우십시오. 그들은 답이 아니라 경로 만 주어져야합니다. – JoxTraex

0

이이 현재 시간이 점점 필요 물론 ...이 분을 기준으로 반올림 해보십시오.

+0

어떻게 보일까요? – Adam

+0

Calendar 클래스와 Math 클래스를 살펴보십시오. – JoxTraex

0

그런 다음 알람 것을 당신에게 경보 하지만 공지 사항을 반복

AlarmManager.INTERVAL_HOUR 

를 사용 경보 을 시작 int hour = calendar.get(Calendar.HOUR_OF_DAY); 을 사용할 수 있습니다 지금 시작될 것이고 매시간 반복 될 것입니다

관련 문제