2011-12-19 46 views
0

我正在使用alarmmanger class set方法設置報警。我 採取用戶通過timepicker對話框的輸入設置 alarm.alarm工作正常,當我設置特定的小時和分鐘,但 應用程序不遵循am/pm邏輯。意思是如果我設置鬧鐘 上午10時31分,而在系統時間是晚上10點30分,然後報警援引在晚上10點31分不是在上午10點30分。有人告訴我最新的原因是什麼?android:am pm格式報警

Calendar time = Calendar.getInstance(); 
     time.set(Calendar.HOUR, hourOfDay); 
     time.set(Calendar.MINUTE, minute); 
     time.set(Calendar.SECOND, 5); 
     //time.set(Calendar.AM_PM); 



     AlarmManager alarmMgr = (AlarmManager)getSystemService(Context.ALARM_SERVICE); 
     Intent intent = new Intent(this, AlarmReceiver.class); 
     PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0); 

     alarmMgr.set(AlarmManager.RTC_WAKEUP,time.getTimeInMillis(), pendingIntent); 
+0

郵政相關的代碼。 – st0le 2011-12-19 08:42:24

+0

請對此提出建議。 – 2011-12-20 18:20:19

回答

1

你需要使用的SimpleDateFormat或DateFormat類,這將給基於日期 - 時間字符串的日期和使用的getTime獲取價值,並設置成一套方法報警設置與時間格式的時間。

或者你可以做的另一種方式獲得的報警時間和檢查它是否是上午下午並設置該屬性到日曆中的對象與時間和日期,從設置到警報。設置日曆獲得毫秒值() 方法。

希望你得到一些想法/建議

編輯

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss a"); // this is you format 
Date d = sdf.parse("19/12/2011 03:47:00 pm"); // this string getting you from your timepicker 
Intent myIntent = new Intent(youractivity.this, AlarmService.class); 
PendingIntent pendingIntent = PendingIntent.getBroadcast(youractivity.this, 0, myIntent, PendingIntent.FLAG_ONE_SHOT); 
am.set(AlarmManager.RTC_WAKEUP, d.getTime(), pendingIntent); 

注意:您需要放入try和catch塊解析部分可能導致錯誤的解析時間

+0

感謝您的建議。你能爲第一個建議提供一段代碼嗎?所以我明白瞭解。 – 2011-12-19 09:32:50

+0

檢查編輯答案 – Pratik 2011-12-19 10:22:16

0
期間

我用這種方法設置鬧鐘:

/** 
    * Set the Alarm 
    * 
    * @param context the activity context 
    * @param id  the alarm ID for this app 
    * @param hour  the alarm hour 
    * @param minute the alarm minute 
    * @param timeZone the timezone am = Calendar.AM or pm = Calendar.PM 
    */ 
    public static void setAlarm(Context context, int id, int hour, int minute, int timeZone) { 
     AlarmManager alarm = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 

     Calendar calendar = Calendar.getInstance(); 
     calendar.setTimeInMillis(System.currentTimeMillis()); 
     calendar.set(Calendar.HOUR, hour); 
     calendar.set(Calendar.MINUTE, minute); 
     calendar.set(Calendar.AM_PM, timeZone); 

     Intent intent = new Intent(context, PopupActivity.class); 
     PendingIntent pIntent = PendingIntent.getActivity(context, id, intent, 0); 
     alarm.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 1000 * 60 * 10, pIntent); 
    } 

對於時區參數皆可使用AM = Calendar.AM或pm = Calendar.PM

0

更改下面一行:

time.set(Calendar.HOUR, hourOfDay); 

time.set(Calendar.HOUR_OF_DAY, hourOfDay);