Codenameone 代号1-每五分钟通知用户一次

Codenameone 代号1-每五分钟通知用户一次,codenameone,Codenameone,我需要每五分钟通知用户一次,不管应用程序是在前台还是后台运行,也不管用户是否在使用智能手机 我的第一次尝试是使用“UITimer”+“Display.getInstance().vibrate(10000)”,但vibrate方法在我的Android智能手机中没有任何作用 我的下一次尝试是使用LocalNotification。可能是错误的,因为使用10作为时间(如API示例中所示)会产生运行时异常(java.lang.IllegalArgumentException:无法将通知安排到过去的时间

我需要每五分钟通知用户一次,不管应用程序是在前台还是后台运行,也不管用户是否在使用智能手机

我的第一次尝试是使用“UITimer”+“Display.getInstance().vibrate(10000)”,但vibrate方法在我的Android智能手机中没有任何作用

我的下一次尝试是使用LocalNotification。可能是错误的,因为使用10作为时间(如API示例中所示)会产生运行时异常(
java.lang.IllegalArgumentException:无法将通知安排到过去的时间
)。我猜时间是从纪元开始的,所以我写了下面的代码。问题是它没有按照我的需要工作,因为它只在用户使用智能手机时才向用户通知消息。我的意思是,只有当用户在“至少”五分钟后触摸智能手机时,才会播放通知声音,但如果用户没有触摸智能手机,则不会播放声音。在启动通知之前,应用程序似乎正在等待用户交互

更清楚地说:我需要一个像闹钟这样的东西,每五分钟就能引起用户的注意(声音和/或振动)

Form hi = new Form("Five minutes alert", BoxLayout.y());
        hi.add(new Label("Five minutes alert"));
        hi.show();

        UITimer.timer(1000 * 60 * 5, true, () -> {
            long time = Calendar.getInstance().getTime().getTime() + 1000;

            LocalNotification ln = new LocalNotification();
            ln.setId("LnMessage");
            ln.setAlertTitle("Alert title");
            ln.setAlertBody("Alert message");
            ln.setAlertSound("/notification_sound_bell.mp3");

            Display.getInstance().scheduleLocalNotification(ln, time, LocalNotification.REPEAT_NONE);
        });

时间来自
System.currentTimeMillis()
即绝对时间。但本地通知只有在应用程序位于后台时才能正常工作,而不是在前台时


振动应该可以工作,但如果您的设备处于完全静音模式,则可能无法工作。

打开应用程序后,我试图将其置于后台,但没有收到任何本地通知。在Android 4.1上测试,确保您有足够的时间让后台通知消失。另外,请尝试Android的更新版本,谷歌的向后兼容性非常差,到目前为止,这类问题往往是不可靠的