home键监听点击
来源:互联网 发布:电脑摄像头全屏软件 编辑:程序博客网 时间:2024/06/03 05:34
首先感谢http://www.android-study.com/jichuzhishi/558.html 提供
HomeWatcher.java 类:封装了HOME点击事件的广播接收者、注册广播接收者方法以及设置了两个回调接口方法。
/**
* Home键监听封装
*/
public
class
HomeWatcher {
static
final
String TAG =
"HomeWatcher"
;
private
Context mContext;
private
IntentFilter mFilter;
private
OnHomePressedListener mListener;
private
InnerRecevier mRecevier;
// 回调接口
public
interface
OnHomePressedListener {
public
void
onHomePressed();
public
void
onHomeLongPressed();
}
public
HomeWatcher(Context context) {
mContext = context;
mRecevier =
new
InnerRecevier();
mFilter =
new
IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
}
/**
* 设置监听
* @param listener
*/
public
void
setOnHomePressedListener(OnHomePressedListener listener) {
mListener = listener;
}
/**
* 开始监听,注册广播
*/
public
void
startWatch() {
if
(mRecevier !=
null
) {
mContext.registerReceiver(mRecevier, mFilter);
}
}
/**
* 停止监听,注销广播
*/
public
void
stopWatch() {
if
(mRecevier !=
null
) {
mContext.unregisterReceiver(mRecevier);
}
}
/**
* 广播接收者
*/
class
InnerRecevier
extends
BroadcastReceiver {
final
String SYSTEM_DIALOG_REASON_KEY =
"reason"
;
final
String SYSTEM_DIALOG_REASON_GLOBAL_ACTIONS =
"globalactions"
;
final
String SYSTEM_DIALOG_REASON_RECENT_APPS =
"recentapps"
;
final
String SYSTEM_DIALOG_REASON_HOME_KEY =
"homekey"
;
@Override
public
void
onReceive(Context context, Intent intent) {
String action = intent.getAction();
if
(action.equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)) {
String reason = intent.getStringExtra(SYSTEM_DIALOG_REASON_KEY);
if
(reason !=
null
) {
L.i(TAG,
"action:"
+ action +
",reason:"
+ reason);
if
(mListener !=
null
) {
if
(reason.equals(SYSTEM_DIALOG_REASON_HOME_KEY)) {
// 短按home键
mListener.onHomePressed();
}
else
if
(reason
.equals(SYSTEM_DIALOG_REASON_RECENT_APPS)) {
// 长按home键
mListener.onHomeLongPressed();
}
}
}
}
}
}
}
好,下面就是这个类在你要监听HOME事件的Activity中的使用方法:
public
class
MyActivity
extends
Activity
implements
OnHomePressedListener{
private
HomeWatcher mHomeWatcher;
@Override
protected
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
protected
void
onResume() {
super
.onResume();
mHomeWatcher =
new
HomeWatcher(
this
);
mHomeWatcher.setOnHomePressedListener(
this
);
mHomeWatcher.startWatch();
}
@Override
protected
void
onPause() {
super
.onPause();
mHomeWatcher.setOnHomePressedListener(
null
);
mHomeWatcher.stopWatch();
}
@Override
public
void
onHomePressed() {
// TODO 点击HOME键时 要做的事情
}
@Override
public
void
onHomeLongPressed() {
// TODO 长按HOME键时 要做的事情
}
}
阅读全文
0 0
- Home键点击监听
- home键监听点击
- 监听Home键点击事件
- Home点击监听及示例
- Android监听是否点击了home键或者锁屏键
- home键监听
- home键监听
- 监听home键
- home键监听
- home键监听
- android监听home键
- android 监听HOME键
- 监听HOME键
- 监听home键
- Android 监听Home键
- 监听HOME键
- android Home键监听
- Android 监听Home键
- Java多线程技术研究(二)-线程同步,通信及ThreadLocal
- Plural Form of Nouns
- K-L展开 (Karhunen-Loeve expansion)
- Git忽略特殊文件
- 面试题12:打印1到最大的N位数
- home键监听点击
- Struts2(四)使用Struts2中的拦截器
- iptables匹配条件总结1
- CentOS6.9下软件实现RAID5创建
- 漫谈千亿级数据优化实践:一次数据优化实录
- 解释为何 remote()->transact可以直接调用->transact?
- 使用Fiddler进行抓包<二>
- 组合模式
- Lua的函数参数为table时奇特现象