热门IT资讯网

Android监听Home键的完美解决方案

发表于:2024-11-29 作者:热门IT资讯网编辑
编辑最后更新 2024年11月29日,相信有不少朋友在开发过程中需要监听HOME键的需求,现本人将代码奉上,希望对大家有所帮助!import android.content.BroadcastReceiver;import android

相信有不少朋友在开发过程中需要监听HOME键的需求,现本人将代码奉上,希望对大家有所帮助!

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.content.IntentFilter;


public class HomeWatcher

{

private 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;

mFilter = new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);

}

/**

* 设置监听

*

* @param listener

*/

public void setOnHomePressedListener(OnHomePressedListener listener)

{

mListener = listener;

mRecevier = new InnerRecevier();

}

/**

* 开始监听,注册广播

*/

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)

{

Log.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();

}

}

}

}

}

}

}


调用时注意:

在初始化调用(如onCreate)时添加如下代码:

HomeWatcher mHomeWatcher = new HomeWatcher(this);

mHomeWatcher.setOnHomePressedListener(new OnHomePressedListener()

{

@Override

public void onHomePressed()

{

//按了HOME键

}

@Override

public void onHomeLongPressed()

{

//长按HOME键

}

});

mHomeWatcher.startWatch();


在程序销毁时(如:onDestroy)时添加如下代码:

if(mHomeWatcher != null)

mHomeWatcher.stopWatch();// 在销毁时停止监听,不然会报错的。


附件:http://down.51cto.com/data/2365114
0