我一直在尝试创建一个能够设置系统闹钟的简单应用。但是,尽管我可以在活动列表在我的时钟指示器(在桌面上)下,它根本没有通知我。
如果我在与上一个闹钟相关的分钟内创建一个新闹钟,而旧闹钟仍然在活动列表,旧的闹钟突然通知我(通知 + 声音)。我没有使用任何闹钟列表,我只想一次设置一个闹钟,但我希望能够取消正在进行的闹钟。它工作正常,直到当前时间等于闹钟时间(四舍五入到分钟),此时从逻辑上删除闹钟不起作用,因为它的时间格式是“2013-09-17 星期二 10:56:00”(秒始终为零),所以它在那一分钟内已经过去了,但它仍然在活动列表(好的,它属于那一分钟)并且如果我设置了新闹钟它会通知我(这是我不明白的)。
总结一下:
- 设置闹钟无法正常工作,我可以在列表中看到它,但它根本没有通知我(即使一分钟过去了,它也会从列表中消失活动列表)。
- 如果其时间等于当前时间(以分钟为单位),并且我在该时间设置了新闹钟,则旧闹钟会突然唤醒并通知我。
- 另一件奇怪的事情是,当我这样做时,屏幕上会显示旧播放闹钟的完整日期活动列表,如“星期二 10:56”或“09-17 10:56”,而如果我设置了新闹钟,则只会显示没有日期的时间,如“10:56”。
甚至 Ubuntu Developer web 上的示例也不起作用: http://developer.ubuntu.com/api/qml/sdk-14.10/Ubuntu.Components.Alarm/
这是我修改过的部分代码,存在同样的错误:
import QtQuick 2.3
import Ubuntu.Components 1.1
import Ubuntu.Components.Pickers 0.1
MainView {
objectName: "mainView"
applicationName: "com.ubuntu.developer.username.alarmtest"
useDeprecatedToolbar: false
width: units.gu(100)
height: units.gu(75)
Page {
title: i18n.tr("Simple")
Alarm{
id: alarm
onStatusChanged: {
if(status == Alarm.Ready) {
button.text = "Set Alarm";
}
}
}
Column {
spacing: units.gu(1)
Row {
spacing: units.gu(1)
Label {
id: date
text: "Date:"
anchors.verticalCenter: parent.verticalCenter
}
DatePicker {
id: datePicker
date: new Date()
mode: "Hours|Minutes"
onDateChanged: {
var pickerDate = datePicker.date;
pickerDate.setSeconds(0);
datePicker.date = pickerDate;
}
}
Button {
id: button
text: "Set Alarm";
onClicked: {
if ((alarm.operation > Alarm.NoOperation) && (alarm.operation < Alarm.Reseting)) {
reset();
}
else {
alarm.date = new Date(datePicker.date);
alarm.message = "My alarm";
alarm.save();
if (alarm.error != Alarm.NoError)
print("Error saving alarm, code: " + alarm.error + " at time " + alarm.date);
text = "Unset Alarm";
}
}
}
}
}
}
}
我的问题是,它不起作用是正常的吗,还是我做错了什么?非常感谢您的帮助,因为我现在完全迷失了方向。我正在探索库存时钟应用程序闹钟的东西,试图修改官方示例代码,但没有帮助——它对我来说从来都不起作用。在桌面 Ubuntu 14.10 上,它有缺陷,在我的 Ubuntu 平板电脑上,如果我在旧闹钟完成或删除后尝试设置新闹钟,我的应用程序会冻结。