【问题标题】:Implementing unique alarms without creating my own alarm clock application在不创建自己的闹钟应用程序的情况下实现独特的闹钟
【发布时间】:2012-07-31 02:04:10
【问题描述】:

我之前曾问过这个问题 (here),但它没有引起注意,我觉得这对那些选择着手处理类似问题的人来说真的很有用。

基本上,我正在实现一个为用户设置警报的应用程序,并且在我当前的尝试中,我正在使用 ACTION_SET_ALARM 意图来设置系统警报。现在这可以正常工作,但有一个例外:每当我设置警报时,它都会发出一个全新的警报,直到最终警报数据库完全充满冗余警报。

我试图弄清楚如何设置 UNIQUE 闹钟,而无需完全设计我自己的闹钟应用程序。必须有一种方法可以做到这一点,只需利用原生 Android 闹钟类的某些功能即可。

到目前为止我采用的方法:

  • Android 开发者文档;

  • 几乎所有关于 SO 的论坛帖子都与此主题相关;

  • 利用我通过搜索deskclock源代码找到的各种其他意图;

  • 导入Alarms类,setAlarm类。

对我来说,最后剩下的选择是使用 AlarmManager 类,但这实质上是重新创建闹钟类,我希望这个应用程序是通用的(它可以应用于大多数闹钟应用程序)并且不必依赖它自己.

任何帮助将不胜感激。

【问题讨论】:

  • 你有帮助,感谢在哪里?
  • 请看下面我的回复!考虑到有两个回复,我需要在选择正确答案之前确认您的潜在解决方案的工作功能。
  • @Squagem 你的意思是你想更新现有的警报?
  • 我希望能够更新我通过 ACTION_SET_ALARM 意图激活的闹钟,而不是每次我想更改为该闹钟设置的时间时都创建一个新闹钟。

标签: android android-intent android-alarms


【解决方案1】:

必须有办法做到这一点,只需利用原生 Android 闹钟类的某些功能。

欢迎您提出意见,但您的意见可能需要伴随您自己的 Android 分支和您自己的移动设备系列。

首先,实际上并没有太多的“原生 Android 闹钟类”。它主要是an Intent action string and a series of keys for extras。闹钟功能的实现取决于设备和用户,尽管许多人只会使用 Android 开源项目中的一个。

此时,你遇到了两个问题:

  1. Android开源项目的应用不支持你想要的

  2. 没有其他应用必须支持您想要的,因为它超出了记录的行为范围

【讨论】:

  • 我明白了,所以总结一下,你的意思是说实际上没有办法使用android开源(deskclock)闹钟来做到这一点。相反,我需要为每个已安装的应用程序进行测试,并从那里确定它们是否提供设置独特警报的功能。感谢您的回复!
  • Squagem,正如我所展示的,有很多方法可以做到这一点,但闹钟是一块......
  • @CodeDroid,使用AlarmManager似乎是一个可行的解决方案,但这是否解决了使用android开源DeskClock的问题?我似乎看不到如何使用外部闹钟管理器修改当前存在的闹钟。
  • 好吧,我认为除非您重写,否则您无法使用 DeskClock 解决它。所以 CommonsWare 对给定问题的回答是正确的。然而,实现你自己的并没有那么复杂,并且如何做到这一点的一部分可能是 AlarmManager 可能与你的开源时钟版本相结合。
  • @CommonsWare 如何“使用 android 开源(桌面时钟)项目” - 将代码捆绑在自己的应用程序中?
【解决方案2】:

您需要做的是使用 AlarmManager 广播出一个脉冲。这是让脉搏熄灭的最可靠方法。让广播接收器监听该脉冲并根据需要传递给服务或启动 Activity。在那里,您将检查您的警报条件列表并查看它们是否已满足。请注意,此时您还可以检查时间戳。是的,AlarmManager 比您可以使用的任何其他服务都可靠得多。

【讨论】:

  • 使用AlarmManager似乎是一个可行的解决方案,但这是否解决了使用android开源DeskClock的问题?我似乎看不到如何使用外部闹钟管理器修改当前存在的闹钟。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多