Android App开发进阶与项目实战
上QQ阅读APP看书,第一时间看更新

2.1.2 检测物理按键

除了给控件注册按键监听器外,还可以在活动页面上检测物理按键,即重写Activity的onKeyDown方法。onKeyDown方法与前面的onKey方法类似,同样拥有按键编码与按键事件KeyEvent两个参数。当然,这两个方法也存在不同之处,具体说明如下:

(1)onKeyDown只能在活动代码中使用,而onKey只要有可注册的控件就能使用。

(2)onKeyDown只能检测物理按键,无法检测输入法按键(如回车键、删除键等),onKey可同时检测两类按键。

(3)onKeyDown不区分按下与松开两个动作,onKey区分这两个动作。

下面是启用物理按键监听的代码片段:

(完整代码见event\src\main\java\com\example\event\KeyHardActivity.java)

物理按键的监听效果如图2-2所示,可见分别检测到了加大音量键、减小音量键、返回键。

图2-2 物理按键的检测结果

对于目前的App开发来说,onKeyDown方法只能检测3个物理按键事件,即返回键、加大音量键和减小音量键,而首页键和任务键需要通过广播接收器来监测。广播监听的示例代码如下: