我知道有很多关于AlarmClock
和AlarmManager
以及如何设置闹钟,启动应用等的讨论。但是,我还没有找到以下场景的完美答案。< / p>
在我正在开发的Android闹钟应用程序中,我想在特定时间设置闹钟,传入其他设置,例如播放什么歌曲,振动等等。
1)我应该怎么做才能做到这一点? AlarmClock
或AlarmManager
?
2)现在,当闹钟在指定时间响起时,如何告诉它启动我的自定义活动?同样是AlarmClock
或AlarmManager
的问题。
此自定义活动会显示时间,并且按钮会显示“睡眠”或“暂停”,用户可以按此按钮(几乎在任何其他闹钟应用中的闹钟响起时会发生什么)。我不想启动我的闹钟应用程序,只有当闹钟响起时才会启动一个屏幕。当用户点击按钮时,我想关闭该自定义活动,并且不打开与该应用程序相关的任何其他内容。我希望用户可以回去做他们正在做的事情。
答案 0 :(得分:0)
我认为你可以用function collectValues(obj, name) {
return Object.entries(obj).reduce( (acc, [key, value]) => {
return acc.concat(
// recursively look into nested objects:
Object(value) === value ? collectValues(value, key)
// else, when key is 'value', collect that object
: key == 'value' ? [[name, value]]
// otherwise ignore this value
: []
)
}, []);
}
// Sample input
var input = [{
"a": {
"ab": {
value: 2
},
"ac": {
value: 0
}
}
}, {
"b": {
"bb": {
value: 1
}
}
}];
var result = collectValues(input).sort( (a,b) => a[1] - b[1] );
console.log(result);
完成你的工作。如您所说,如果您想在特定时间设置闹钟,则应使用AlarmManager
。如果您想在闹钟触发时唤醒您的设备,请选择setRepeating()
类型,如果您不想要RTC_WAKEUP
类型。您可以定义RTC
,无论您想做什么(播放声音,光线和振动),您都可以在此活动中附加此活动。你应该在那个(YOUR_ACTIVITY)布局中设计你的布局,然后按下按钮来打盹/取消闹钟。
PendingIntent
以上代码设置了14:00的警报和一天的间隔,这意味着它将每天14:00触发并运行YOUR_ACTIVITY直到您取消它。这是Google Android Documents中的一个示例。