Android Home键按键事件监听
平时用的比较多的是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键按键事件监听相关推荐
- Android学习按键事件监听与Command模式
Android学习按键事件监听与Command模式 - Dufresne - 博客园 Android学习按键事件监听与Command模式 一 Command模式 意图: 将一个请求封装为一个对象,从而 ...
- Android DownloadManager下载完成事件监听(系列4)
Android DownloadManager下载完成事件监听(系列4) 我在之前写了写一些关于Android DownloadManager 的文章: (系列1)<Android大数据. ...
- android 键盘点击事件监听事件,Android 键盘事件触发以及监听
一.Android 手动显示和隐藏软键盘 如果输入法在窗口上已经显示,则隐藏,反之则显示 InputMethodManager imm = (InputMethodManager) getSystem ...
- android 键盘 自动消失,android 软键盘 回到键 消失事件 监听
弹出输入法 时 隐藏了 '底部状态栏' 在按 物理 返回键 后, 软键盘消失后 恢复 '底部状态栏' public class ImageViewCareIME extends ImageView { ...
- JavaFX实战:几种事件监听实现,键盘按键事件监听,鼠标滚轮事件监听,鼠标按键事件监听,鼠标移动事件监听
JavaFX实战系列 JavaFX源码分析和实战:javaFX线程结构分析 JavaFX源码分析和实战之launcher启动器:两种启动javaFX的方式及launch(args[])参数设置和获取 ...
- Android 监听Home键按键事件
Android 监听Home键按键事件 标签(空格分隔):Android Home键 在Android开发中有很多按键事件需要在App中捕获从而做出一些针对性的操作,例如返回键,音量键等都可以直接在d ...
- vue/xx/事件监听,按键与键码值
vue中的事件监听 <!DOCTYPE html> <html lang="en"><head><meta charset="U ...
- Android截屏事件监听
1. 前言 Android系统没有直接对截屏事件监听的接口,也没有广播,只能自己动手来丰衣足食,一般有三种方法. 利用FileObserver监听某个目录中资源变化情况 利用ContentObserv ...
- android 监听物理返回键,Android应用开发之react-native 监听Android物理返回键
本文将带你了解Android应用开发之react-native 监听Android物理返回键,希望本文对大家学Android有所帮助. 1. componentWillMount(){ ...
最新文章
- R语言dplyr包将dataframe中的NA值替换(replace)为0实战:所有NA值替换(replace)为0、具体列的NA值替换(replace)为0、若干列的NA值替换(replace)为0
- 3.2.3节:特权级
- GOPROXY环境变量中direct的含义与用途
- 数据结构与算法之“之”字型打印矩阵和矩阵中找数
- join操作-内联,左外联,右外联,交叉联,全联
- 修改终端服务器的最大连接数
- 刚刚看到网友的签名 飞秋官网下载
- python监控某个程序_9-30 python监控windows某个进程的变化(修正版)
- 12015.linux通过代码或命令形式操作内存/dev/mem
- ASP.NET MVC中的安全性
- android 蓝牙与单片机通信原理图,手机蓝牙与HC-06蓝牙模块控制单片机程序加APP...
- python中绘制散点图的函数_如何使用python的pygame模块绘制随机散点图
- JAVA classpath jar问题[zz]
- .net平台下的手机在线wap网站模拟器(附源代码)
- 函数逼近和曲线拟合、插值
- python如何裁剪图像
- 如何安装打印机驱动程序?快速安装的方法
- matlab激光操纵控制系统设计,某激光操作控制系统的滞后校正
- 【算法学习】快包算法
- golang时间类型字符串转时间类型