分类:
2008-10-15 13:40:26
Nokia N810 警报接口允许开发人员通过编程的方式有效且轻松地设置警报。Peter Seebach 演示了如何将一个小型命令行程序连接到这个 API 并充分利用它。
作为 PDA 的潜在替代者,Nokia 770 最严重的一个缺陷是无法设置警报来唤醒设备。N800 引入了一个显著改进的警报接口,而且延续到了最新的 N8100 中。在本文中,我将介绍使用 C 语言编写的警报接口 API,并提出一个接口,使这个 API 可以用于其他语言中的 shell 脚本或程序。
首先,简要介绍一下 N810。N810 是一个手持系统,屏幕分辨率为 800x480。它拥有蓝牙、无线网络和 USB 连接功能。底层内核是 2.6.21 Linux? 内核,适用于硬件。
N810 与之前的 N800 非常类似。新增功能包括 GPS 和一个内置键盘。N81 惟一逊色于 N800 的地方是它只提供了一个可用的 MMC/SD 卡插槽,而 N800 提供了两个 MMC/SD 卡插槽,都是最大尺寸。N810 在 “内部” 插槽中带有一个硬连接的 2GB 卡,并为移动介质提供了一个 miniSD 插槽(如果您像我一样,在使用系统的几年时间中累积了大量 SD 卡,一定会觉得很郁闷)。
N810 的开发环境实际上与 N800 的开发环境相同(/l-lob770.html" target=_blank>请参阅我撰写的 其他有关 770 和 N800 的文章)。Scratchbox 和 maemo 环境进行了更新,但基本过程仍然是一样的,Scratchbox 和 SDK 安装依然快速而便捷。有两个主要更改可能会影响一般开发人员。第一个变化是 xterm 安装成开箱即用的;这是一个大的改进。第二个变化是在安装 openssh-server 包时,会提示设置新的根密码。这是对之前行为的重大改进:默认根密码是 “rootme”。显然,应该选择一些其他密码。
警报 API
警报 API 在去年发行的 maemo 3.0 中引入。它给出一组调用来与警报守护程序交互,警报守护程序提供警报服务。您应该喜欢使用这种接口尝试编写自己的警报,而且您肯定不会在 N810 这类环境中编写自己的计时器代码。嵌入式硬件中的电源管理是一个高级主题,而且容易出错;所以要将这项工作交给专门的代码处理。
即使您的警报代码编写得非常恰当,集中化服务仍然具有绝对优势。假设您编写了一个完美的警报接口,它很少唤醒系统,可能大约每 5 分钟一次。这对电池寿命几乎没有任何影响。现在假设另一个和您一样棒的人编写了一些类似的接口。安装了其中几个接口,每 5 分钟系统会被唤醒若干次。更糟的是,用户往往挑选不同的时间间隔。因此,如果一件事件每 3 分钟唤醒一次,另一件事件每 5 分钟唤醒一次,还有一个每 7 分钟唤醒一次的事件,这种情况是最糟糕的:即使没有一个警报的时间间隔是 3 分钟,但实际上每 2 分钟就会收到一次警报 — 更糟的是,警报一起响起时可能会引起单独的唤醒和休眠周期。所以请使用标准的 API。
警报 API 可以做许多事情。实际上,它可以配置非常灵活的计划内通知行为。警报事件可能会显示给用户,也可能不会。警报任务可以执行三件主要事情:显示消息、运行程序和通过 D-Bus 将消息发送给其他应用程序。您可能认为所有这些事情不全是警报,但它们与日历应用程序提供的简单提醒邮件的功能是相同的。简而言之,如果实现足够的警报功能来支持日历等类似应用程序,最好进一步标准化并处理妥当。
警报以 /var/lib/alarmd/al_queue.xml 格式为 XML。此文件要具有一定的易读性,但不要大量使用奇怪数字来编码标记。使用其他应用程序来创建事件,然后阅读在此文件中的 XML,可以深入了解警报事件结构的组成。
[1]