2017-12-27 143 views
1

我不是新的Codename One用戶,但這是我第一次在本框架中使用本地通知。在我的應用程序中,我有一個選擇器允許用戶選擇時間(小時和分鐘)。我收到了用getTime()方法選擇的時間。現在我想讓我的本地通知在當時觸發。在Display.getInstance().scheduleLocalNotification()函數的第二個參數中,我需要給出的正確值是多少?關於本地通知的幾個問題

到目前爲止,我有什麼是這個樣,但我不知道如何將它應用到我的需求:

Display.getInstance().scheduleLocalNotification(notification, System.currentTimeMillis() + 10 * 1000, LocalNotification.REPEAT_NONE); 
+0

歡迎來到SO!既然你問的是參數值,你能給我們一個代碼片段來給出一個更清晰的上下文嗎? – navicore

+0

好的,謝謝!這是scheduleLocalNotification()函數的原型:Display.scheduleLocalNotification(LocalNotification n,long firstTime,int repeat)。此功能的第二個參數是觸發通知的時間。下面是一個示例:Display.getInstance()。scheduleLocalNotification( notification, System.currentTimeMillis()+ 10 * 1000, LocalNotification.REPEAT_NONE); – Eric

回答

1

從這個方法

@param firstTime時間的Java文檔以毫秒爲單位計劃何時執行 通知@param重複再重複執行下列操作之一:REPEAT_NONE, REPEAT_FIFTEEN_MINUTES,REPEAT_HALF_HOUR,REPEAT_HOUR,REPEAT_DAY, REPEAT_WEEK

因此,您可以使用Date對象方法getTime()以毫秒爲單位返回該日期對象的時間。

編輯

假設這是你的時間選擇

public void onTimeChanged(TimePicker view, int hourOfDay, int minute) { 
    Calendar date = Calendar.getInstance(); // This is the time now, so the day is set to today 
    date.set(Calendar.HOUR_OF_DAY, hourOfDay); 
    date.set(Calendar.MINUTE, minute); 
    date.set(Calendar.MINUTE, 0); 
    date.set(Calendar.MILLISECOND, 0); 
    Display.scheduleLocalNotification(LocalNotification, date.getTime().getTime(), repeat); 
} 

設置秒和毫秒只是爲了確保報警的確切分鐘用戶選取熄滅回調。

您還可以更改與更改小時和分鐘相同的日期,月份和年份。

+0

你好,我沒有日期對象。我只使用時間選取器(而不是日期/時間選取器)和Picker類的getTime()方法以分鐘返回用戶選擇的小時和分鐘。當我在millisecons中轉換此值並將其置於firstTime參數的值時,我沒有我想要的結果。例如,如果用戶選擇7:05作爲小時和分鐘,那麼當地通知必須在那個時候觸發?這是我真正的問題。 – Eric

+0

您需要正確設置日/月/年的值,然後您可以使用Calendar類並使用set(int,int)方法正確設置所有單位的值,然後使用calender.getTime()。getTime ) – elmorabea

+0

那麼我從Picker類獲得的時間值呢?用戶選擇的那個?你能給我一個你說什麼的代碼樣本嗎? – Eric