2015-05-08 58 views
2

我使用的是報警經理開始在其工作的罰款特定時間的服務,但現在如果用戶更改設備的時間服務開始根據當時。如何使用真正的本地時間報警經理,而不是設備設置好的時間

我知道有很多關於堆棧溢出的問題,但他們沒有爲我工作

這裏是我的代碼

calendar = new GregorianCalendar(); 



     calendar.setTimeInMillis(System.currentTimeMillis()); 


     cal = new GregorianCalendar(); 

     cal.add(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR)); 
     cal.set(Calendar.HOUR_OF_DAY, 11); 
     cal.set(Calendar.MINUTE, 57); 
     cal.set(Calendar.SECOND, calendar.get(Calendar.SECOND)); 
     cal.set(Calendar.MILLISECOND, calendar.get(Calendar.MILLISECOND)); 
     cal.set(Calendar.DATE, calendar.get(Calendar.DATE)); 
     cal.set(Calendar.MONTH, calendar.get(Calendar.MONTH)); 




     AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); 
     Intent it = new Intent(MainActivity.this,Start_service_alarm.class); 

     it.putExtra(Start_service_alarm.ACTION, Start_service_alarm.ACTION); 
     PendingIntent pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0, it, 0); 

     alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent); 

請幫我了非常重要的我。

+0

嘗試使用GMT時間 – Manish

+0

@Manish如何使用它? –

+0

我想你可能需要依靠你的服務器。您可以在設置鬧鐘之前請求時間。 –

回答

0

該設備僅知道當前的設置時間(其可以從外部網絡或移動網絡源被自動地確定,但也可以由用戶覆蓋)。

你需要有您的應用程序同步與外部時間提供者,可能是發送其位置,使服務器能夠確定正確的時區。

還有的API已經可用,例如:http://timezonedb.com/api,或者你可以滾你自己

+0

如何將api與報警管理器集成? –

+0

如果設備只是「知道」當前時間,可能由用戶設置,那麼我假設警報管理器只能在決定何時觸發警報時熄滅。可能最好的做法是使用外部時間源來獲取「真實」時間,並根據「真實」時間和「設備」時間之間的差異設置鬧鐘時間。 (您可能會根據外部「真實」時間提供(重新)設置時間,但即使您不需要執行此操作,您也應該問)。 – TripeHound

相關問題