2017-12-27 164 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