2013-07-18 2 views
5

내 프로그램은 브로드 캐스트 수신자를 트리거하여 알림을 보내는 반복 알람을 생성하도록 설계되었습니다. 알람은 사용자가 입력 한 간격을 사용하여 반복됩니다.AlarmManager setRepeating()

예를 들어, 알람을 10 초마다 실행하도록 설정하려면 어떻게해야합니까?

am.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 10000, calpendingintent); 

이게 맞습니까? 내 방송 수신기가 어떤 이유로 든 호출되지 않습니다.

도와주세요 ..

public static void createAlarms(Context mcontext) { 
    cal = Calendar.getInstance(); 
    cal.add(Calendar.HOUR, alarmintervalint); 
    calintent = new Intent(mcontext, AlarmBroadcastReceiver.class); 
    calpendingintent = PendingIntent.getBroadcast(mcontext.getApplicationContext(), 12345, calintent, 0); 
    am = (AlarmManager)mcontext.getSystemService(Activity.ALARM_SERVICE); 
    am.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 10000, calpendingintent); 
} 

내 브로드 캐스트 리시버 클래스가 호출되지 않는 및 임 확실하지은 "setRepeating은()"방법 임은 올바르게 설정되어 사용!

+0

그래도 문제가 있다면이 튜토리얼을 따르는 것이 좋습니다. http://code4reference.com/2012/07/tutorial-on-android-alarmmanager/. 그것은 AlarmManager를 다루는 데 많은 도움이되었습니다. –

+0

감사합니다. –

답변

-1

이것을 사용하십시오. 그것은 당신의 문제

am.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + AlarmManager.INTERVAL_DAY, AlarmManager.INTERVAL_DAY, pi);

+0

정확도와 정확도의 차이점은 무엇입니까? 그리고 나는 하루 동안 간격을 정하고 싶지 않다. 이것은 사용자가 입력 한 변수입니다 (정수) –

5

사용이 코드는 매니페스트 파일에 수신기를 등록하는 것을 잊지 말아 알람을

public void stopAlarmManager() 
{   
    if(alarmMgr != null) 
     alarmMgr.cancel(pendingIntent); 
} 

기억을 중지 할 wheather를

AlarmManager alarmMgr; 
    PendingIntent pendingIntent; 

    public void startAlarmManager() 
     { 
      Intent dialogIntent = new Intent(getBaseContext(), AlarmBroadcastReceiver.class); 

        alarmMgr = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE); 
        pendingIntent = PendingIntent.getBroadcast(this, 0, dialogIntent,PendingIntent.FLAG_CANCEL_CURRENT); 

        alarmMgr.setInexactRepeating(AlarmManager.RTC_WAKEUP,System.currentTimeMillis(), 10000, pendingIntent); 

       } 
     } 

를 해결할 희망

<receiver android:name=".AlarmBroadcastReceiver" > 
     </receiver> 
+0

이것은 좋은 것입니다! 감사. 하지만 내 경보가 알림을 유발하므로 변경해야합니까? –

+0

알림을 변경하지 않아도됩니다. –

+0

어떻게이 알람을 재설정 할 수 있습니까? 50 개의 알람 이후에, 나는 그 간격을 재설정하고 싶다. 이 방법을 그냥 호출해도 될까요? 왜냐하면 지금 시도 할 때,이 메소드와 broadcastreceiver 클래스 사이에 결코 끝나지 않는 루프를 제공하기 때문입니다. –

-1
Calendar cal = Calendar.getInstance(); 
    cal.add(Calendar.SECOND, 30); 

    long time = cal.getTimeInMillis(); 

    Intent i = new Intent(G.context, BootCompleteReceiver.class); 

    PendingIntent pi = PendingIntent.getBroadcast(G.context, 0, i, 0); 

    G.alarmManager.set(AlarmManager.RTC_WAKEUP, time, pi); 
+0

질문에서 묻는 질문에서 그는 반복적 인 알람을 기꺼이 설정하고 솔루션은 한 번만 알람을 발생시킵니다. –

+0

친애하는 친구, 나는이 코드를 다시 점검하고 편집 할 것이다. –

+0

고마워, 새로 배우는 사람이 혼란스러워하지 않아서 좋을 것이다. –