2012-04-09 76 views
0

我將在我的應用程序中設置每日報警。android:在某些特定時間間隔內報警remian停止

所有的工作都很好。但是現在我想要的是:對於特定的持續時間,我的警報應該保持沉默。

例如:如果我已經設置了報警器應在每30分鐘可以玩,如果我給喜歡它應該從1:00 AM保持沉默到2:00 AM那麼它不應該在這段緘默期是發揮。

我有,像這樣的代碼:

每30分鐘,我的服務將調用,如果時間是凌晨1:00之間保持沉默到2:00 AM。

請參見下面的代碼:

Calendar currentTime = new GregorianCalendar(); 
    currentTime.set(Calendar.HOUR, Calendar.HOUR); 
    currentTime.set(Calendar.MINUTE, Calendar.MINUTE); 
    currentTime.set(Calendar.SECOND, Calendar.SECOND); 
    currentTime.set(Calendar.DATE, Calendar.DATE); 
    currentTime.set(Calendar.MONTH, Calendar.MONTH); 

    Calendar start_time = new GregorianCalendar(); 
    start_time.set(Calendar.HOUR, sHour); 
    start_time.set(Calendar.MINUTE, sMinute); 
    start_time.set(Calendar.SECOND, Calendar.SECOND); 
    start_time.set(Calendar.DATE, Calendar.DATE); 
    start_time.set(Calendar.MONTH, Calendar.MONTH); 

    Calendar end_time = new GregorianCalendar(); 
    end_time.set(Calendar.HOUR, eHour); 
    end_time.set(Calendar.MINUTE, eMinute); 
    end_time.set(Calendar.SECOND, Calendar.SECOND); 
    end_time.set(Calendar.DATE, Calendar.DATE); 
    end_time.set(Calendar.MONTH, Calendar.MONTH); 




    if((!SILENCE) && (((!(start_time.getTimeInMillis() < currentTime.getTimeInMillis())) && (!(currentTime.getTimeInMillis() < end_time.getTimeInMillis()))))){ 
    // Alarm will play 
} 
else{ 
// you are in Silent mode 
} 

所以,請給我的解決方案,雖然我沒有得到它的工作原理? 下面這段代碼我一直ocurs「你是在靜音模式」

所以,請幫我的。

謝謝。

回答

3

你做錯了

currentTime.set(Calendar.HOUR, Calendar.HOUR); 

使用這句話你設置的小時和分鐘的整數值。 例如Calendar.HOUR具有常數值10,就像明智的,所有常量都有不同的固定值,並且您將這些值分配給日曆,並且可能會給您帶來問題。

解決方案

如果你想設置的唯一的小時和分鐘,然後保留其他字段,以便它會自動考慮當前的DATATIME。

Calendar currentTime = Calendar.getInstant(); 
currentTime.set(Calendar.HOUR, hours); 
currentTime.set(Calendar.MINUTE, minuts); 

所以這將設置小時和分鐘的日曆,你所提供的價值,它會像設置日,月,年等人到當前的其他信息。

編輯

如果你所面臨的問題,以獲得毫秒的當前時間,然後使用System.currentTimeMillis();

爲了獲得未來的時間(以毫秒爲單位),您必須在日曆中設置適當的時間,然後必須在毫秒內從日曆中獲取時間,如calendar.getTimeInMillis()

+0

真的很好的答案。但是,讓我更明白,如果我想以毫秒爲單位獲得當前時間,那麼呢?我的意思是你的代碼小時和minuts是當前的小時和分鐘,所以如何在代碼中設置它? – 2012-04-09 10:59:58

+0

我已經設置了開始和結束時間的小時和分鐘,但是對於當前時間如何設置? – 2012-04-09 11:01:10

+0

感謝它解決了我的問題。 – 2012-04-09 13:03:27

1

嘗試 -

if((!SILENCE) && (start_time.getTimeInMillis() > System.getTimeInMillis())){ 
// Alarm will play 
} 
else{ 
// you are in Silent mode 
} 
+0

感謝您的回答。但我也必須檢查結束時間。至於因爲endtime我想鬧要發揮 – 2012-04-09 10:55:28

相關問題