1.概述
在10.0的box版本的设备中,系统设置有Settings和TvSettings,这款产品用的是TvSettings 但是发现用遥控器的Home键 点击HOME键时 无反应退不到Launcher桌面或者 input keyevent 3命令模拟Home键时,还是无响应退不到桌面,TvSettings没有退出 回到Launcher 这就需要看keycode Home事件是否由底层驱动反馈到上层应用,然后查询问题所在
2.问题分析
1.adb shell getevent 发现点击home 键时 有事件上报可以查到相关的信息
2.想办法监听在TvSettings的onKeyDown事件 看能不能监听到Home事件、
但是发现始终监听不到Home键 对于Home按键消息的处理,既不能通过onKeyDown、onKeyUp接收到
在每次点击Home按键时都会发出一个action为Intent.ACTION_CLOSE_SYSTEM_DIALOGS的广播,它是关闭系统Dialog的广播,我们可以通过注册它来监听Home按键消息
3.在TvSettings中监听Intent.ACTION_CLOSE_SYSTEM_DIALOGS 广播 当intent.getStringExtra(“reason”)
的值为homekey时就表示是home键,收到Home消息时就finish掉窗口回到桌面
3.home键不响应核心代码
xref: /packages/apps/TvSettings/Settings/src/com/android/tv/settings/TvSettingsActivity.java
首先来看下TvSettingsActivity.java的源码,它