平时用的比较多的是Back键按键的监听,但是后来修改相机问题时遇到了需要监听Home键的情况,遂各种搜索资料,get到如下技能:

Home键的监听也需要注册广播接收器(采用动态注册的方式),通过拦截让窗口关闭的系统动作,然后根据Intent里面的具体参数来判断是否为Home键点击事件。

接收器代码:

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;public class HomeWatcherReceiver extends BroadcastReceiver {private static final String LOG_TAG = "HomeReceiver";private static final String SYSTEM_DIALOG_REASON_KEY = "reason";private static final String SYSTEM_DIALOG_REASON_RECENT_APPS = "recentapps";private static final String SYSTEM_DIALOG_REASON_HOME_KEY = "homekey";private static final String SYSTEM_DIALOG_REASON_LOCK = "lock";private static final String SYSTEM_DIALOG_REASON_ASSIST = "assist";@Overridepublic void onReceive(Context context, Intent intent) {String action = intent.getAction();Log.i(LOG_TAG, "onReceive: action: " + action);if (action.equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)) {// android.intent.action.CLOSE_SYSTEM_DIALOGSString reason = intent.getStringExtra(SYSTEM_DIALOG_REASON_KEY);Log.i(LOG_TAG, "reason: " + reason);if (SYSTEM_DIALOG_REASON_HOME_KEY.equals(reason)) {// 短按Home键Log.i(LOG_TAG, "homekey");}else if (SYSTEM_DIALOG_REASON_RECENT_APPS.equals(reason)) {// 长按Home键 或者 activity切换键Log.i(LOG_TAG, "long press home key or activity switch");}else if (SYSTEM_DIALOG_REASON_LOCK.equals(reason)) {// 锁屏Log.i(LOG_TAG, "lock");}else if (SYSTEM_DIALOG_REASON_ASSIST.equals(reason)) {// 长按Home键Log.i(LOG_TAG, "assist");}}}}

动态注册代码:

private static HomeWatcherReceiver mHomeKeyReceiver = null;private static void registerHomeKeyReceiver(Context context) {Log.i(LOG_TAG, "registerHomeKeyReceiver");mHomeKeyReceiver = new HomeWatcherReceiver();final IntentFilter homeFilter = new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);context.registerReceiver(mHomeKeyReceiver, homeFilter);}private static void unregisterHomeKeyReceiver(Context context) {Log.i(LOG_TAG, "unregisterHomeKeyReceiver");if (null != mHomeKeyReceiver) {context.unregisterReceiver(mHomeKeyReceiver);}}

在Activity的onPause()和onResume()里面分别调用:

@Overrideprotected void onResume() {super.onResume();registerHomeKeyReceiver(this);}@Overrideprotected void onPause() {unregisterHomeKeyReceiver(this);super.onPause();}

参考地址:http://www.cnblogs.com/mengdd/p/3951223.html

Android Home键按键事件监听相关推荐

  1. Android学习按键事件监听与Command模式

    Android学习按键事件监听与Command模式 - Dufresne - 博客园 Android学习按键事件监听与Command模式 一 Command模式 意图: 将一个请求封装为一个对象,从而 ...

  2. Android DownloadManager下载完成事件监听(系列4)

     Android DownloadManager下载完成事件监听(系列4) 我在之前写了写一些关于Android DownloadManager 的文章: (系列1)<Android大数据. ...

  3. android 键盘点击事件监听事件,Android 键盘事件触发以及监听

    一.Android 手动显示和隐藏软键盘 如果输入法在窗口上已经显示,则隐藏,反之则显示 InputMethodManager imm = (InputMethodManager) getSystem ...

  4. android 键盘 自动消失,android 软键盘 回到键 消失事件 监听

    弹出输入法 时 隐藏了 '底部状态栏' 在按 物理 返回键 后, 软键盘消失后 恢复 '底部状态栏' public class ImageViewCareIME extends ImageView { ...

  5. JavaFX实战:几种事件监听实现,键盘按键事件监听,鼠标滚轮事件监听,鼠标按键事件监听,鼠标移动事件监听

    JavaFX实战系列 JavaFX源码分析和实战:javaFX线程结构分析 JavaFX源码分析和实战之launcher启动器:两种启动javaFX的方式及launch(args[])参数设置和获取 ...

  6. Android 监听Home键按键事件

    Android 监听Home键按键事件 标签(空格分隔):Android Home键 在Android开发中有很多按键事件需要在App中捕获从而做出一些针对性的操作,例如返回键,音量键等都可以直接在d ...

  7. vue/xx/事件监听,按键与键码值

    vue中的事件监听 <!DOCTYPE html> <html lang="en"><head><meta charset="U ...

  8. Android截屏事件监听

    1. 前言 Android系统没有直接对截屏事件监听的接口,也没有广播,只能自己动手来丰衣足食,一般有三种方法. 利用FileObserver监听某个目录中资源变化情况 利用ContentObserv ...

  9. android 监听物理返回键,Android应用开发之react-native 监听Android物理返回键

    本文将带你了解Android应用开发之react-native 监听Android物理返回键,希望本文对大家学Android有所帮助. 1. componentWillMount(){         ...

最新文章

  1. R语言dplyr包将dataframe中的NA值替换(replace)为0实战:所有NA值替换(replace)为0、具体列的NA值替换(replace)为0、若干列的NA值替换(replace)为0
  2. 3.2.3节:特权级
  3. GOPROXY环境变量中direct的含义与用途
  4. 数据结构与算法之“之”字型打印矩阵和矩阵中找数
  5. join操作-内联,左外联,右外联,交叉联,全联
  6. 修改终端服务器的最大连接数
  7. 刚刚看到网友的签名 飞秋官网下载
  8. python监控某个程序_9-30 python监控windows某个进程的变化(修正版)
  9. 12015.linux通过代码或命令形式操作内存/dev/mem
  10. ASP.NET MVC中的安全性
  11. android 蓝牙与单片机通信原理图,手机蓝牙与HC-06蓝牙模块控制单片机程序加APP...
  12. python中绘制散点图的函数_如何使用python的pygame模块绘制随机散点图
  13. JAVA classpath jar问题[zz]
  14. .net平台下的手机在线wap网站模拟器(附源代码)
  15. 函数逼近和曲线拟合、插值
  16. python如何裁剪图像
  17. 如何安装打印机驱动程序?快速安装的方法
  18. matlab激光操纵控制系统设计,某激光操作控制系统的滞后校正
  19. 【算法学习】快包算法
  20. golang时间类型字符串转时间类型

热门文章

  1. 【算法】全排列的四种思路
  2. 百度 翻译 api 使用
  3. 多线程爬取NCBI数据库文献
  4. Ubuntu Desktop 显示文件路径
  5. 计算机组成原理云南大学,云南大学信息学院计算机方向
  6. 石墨笔记,Onenote,Effie哪个更适合教师?
  7. 【干货】磨金石教育UI快速入门!U设计基础知识整理,新人必备
  8. 西工大NOJ数据结构理论——007.表达式括号与匹配(严3.19)
  9. 批量爬取上交所上市公司报告
  10. Python3-word文档操作(九):给word文档添加/删除一张图片-利用docx库