2017-01-23 1 views
0

다음 코드를 사용하여 Android에서 반복 알람을 설정할 수있었습니다. 그러나 문제는 즉각적인 알림을 보내고 싶지 않기 때문입니다. 나는 그저 알람을 울리 길 원하는 시간에 넣고 그 시간에 알람을 끄고 선택한 시간 간격으로 반복하기를 원할 뿐이다. RTC_WAKEUP 대신 ELAPSED_REALTIME_WAKEUP을 전환하려고 시도했지만 코드가 제대로 작동하지 않았습니다.Android AlarmManager에서 앞으로 반복되는 알람을 예약하는 방법은 무엇입니까?

public static long getTimeForNotification(int hour, int minutes, int am_pm){ 
    Calendar calendar = Calendar.getInstance(); 
    calendar.set(Calendar.HOUR, hour); 
    calendar.set(Calendar.MINUTE, minutes); 
    calendar.set(Calendar.AM_PM, am_pm); 
    return calendar.getTimeInMillis(); 
} 

public static PendingIntent createNotificationPendingIntent(
     String name, 
     String number, 
     String messageArrayListString, 
     String contactID, 
     String photo_uri, 
     String actionType, 
     Context mContext 
     ){ 

    Intent alertIntent = new Intent(mContext, AlertReceiver.class); 
    alertIntent.putExtra("name", name); 
    alertIntent.putExtra("number", number); 
    alertIntent.putExtra("messageList", messageArrayListString); 
    alertIntent.putExtra("contactID", contactID.toString()); 
    alertIntent.putExtra("photo_uri", photo_uri); 
    alertIntent.setAction(actionType); 


    PendingIntent pendingIntent = PendingIntent.getBroadcast(mContext, Integer.parseInt(contactID.toString()), alertIntent, PendingIntent.FLAG_UPDATE_CURRENT); 

    return pendingIntent; 
} 

public static void createNotifications(PendingIntent notificationPendingIntent, Context mContext, Long alarmTime, int frequencyMultiplier){ 

    AlarmManager alarmManager = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE); 
    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, alarmTime, AlarmManager.INTERVAL_DAY * Long.valueOf(frequencyMultiplier), notificationPendingIntent); 

} 

미리 감사드립니다.

답변

0

이것은 내가 사용하는 것입니다.

public class AlarmHelper { 
    private static final String TAG = "AlarmHelper"; 
    private static final int REQUEST_CODE = 12377; 
    private static final int REQUEST_CODE_OVERTIME = 12376; 

    private AlarmHelper() { 
    } 

    public static void scheduleAlarm(Context c) { 
     AlarmManager manager = (AlarmManager) c.getSystemService(Context.ALARM_SERVICE); 
     PendingIntent pendingIntent = PendingIntent.getBroadcast(c, REQUEST_CODE, new Intent(c, ClockInBroadcastReceiver.class), PendingIntent.FLAG_CANCEL_CURRENT); 


     //Set next clock-in time 
     GregorianCalendar time = new GregorianCalendar(); 
     time.add(...,...); //Whatever you want to add. 


     if (android.os.Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) { 
      manager.set(AlarmManager.RTC_WAKEUP, time.getTimeInMillis() + 1000, pendingIntent); 
     } else if (android.os.Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { 
      manager.setExact(AlarmManager.RTC_WAKEUP, time.getTimeInMillis() + 1000, pendingIntent); 
     } else { 
      manager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, time.getTimeInMillis() + 1000, pendingIntent); 
     } 

    } 

} 
+0

이 정보가 도움이 되었습니까? –

관련 문제