MainActivity is as follows:
Package cc. testhome; import cc. testhome. homeKeyObserver. onHomeKeyListener; import cc. testhome. powerKeyObserver. onPowerKeyListener; import android. OS. bundle; import android. app. activity;/*** Demo Description: * use the Home Key press and long press the Home Key of the broadcast listener * press the power key of the broadcast listener (close the screen) ** reference: * 1 http://blog.csdn.net/q445697127/article/details/8432513 * 2 http://blog.csdn.net/watt520/article/details/18959897 * 3 http://blog.csdn.net/lfdfhl/article/details/9903693 * Thank you very much */public class MainActivity extends Activity {private HomeKeyObserver mHomeKeyObserver; private PowerKeyObserver mPowerKeyObserver; @ override protected void onCreate (Bundle savedInstanceState) {super. onCreate (savedInstanceState); setContentView (R. layout. main); init ();} private void init () {mHomeKeyObserver = new HomeKeyObserver (this); mHomeKeyObserver. setHomeKeyListener (new OnHomeKeyListener () {@ Overridepublic void onHomeKeyPressed () {System. out. println ("----> press the Home Key") ;}@ Overridepublic void onHomeKeyLongPressed () {System. out. println ("----> long press Home key") ;}}); mHomeKeyObserver. startListen (); //////////////////////////////////////// // mPowerKeyObserver = new PowerKeyObserver (this ); mPowerKeyObserver. setHomeKeyListener (new OnPowerKeyListener () {@ Overridepublic void onPowerKeyPressed () {System. out. println ("----> press power key") ;}}); mPowerKeyObserver. startListen () ;}@ Overrideprotected void onDestroy () {super. onDestroy (); mHomeKeyObserver. stopListen (); //////////////////////////////////////// // mPowerKeyObserver. stopListen ();}}
HomeKeyObserver is as follows:
Package cc. testhome; import android. content. broadcastReceiver; import android. content. context; import android. content. intent; import android. content. intentFilter; public class HomeKeyObserver {private Context mContext; private IntentFilter mIntentFilter; private OnHomeKeyListener mOnHomeKeyListener; private HomeKeyBroadcastReceiver mHomeKeyBroadcastReceiver; public HomeKeyObserver (Context context) {this. MContext = context;} // register the broadcast receiver public void startListen () {mIntentFilter = new IntentFilter (Intent. ACTION_CLOSE_SYSTEM_DIALOGS); mHomeKeyBroadcastReceiver = new HomeKeyBroadcastReceiver (); mContext. registerReceiver (mHomeKeyBroadcastReceiver, mIntentFilter); System. out. println ("----> Start listening");} // cancel the broadcast receiver public void stopListen () {if (mHomeKeyBroadcastReceiver! = Null) {mContext. unregisterReceiver (mHomeKeyBroadcastReceiver); System. out. println ("----> stop listening") ;}// public void setHomeKeyListener (OnHomeKeyListener homeKeyListener) {mOnHomeKeyListener = homeKeyListener ;} // callback interface public interface OnHomeKeyListener {public void onHomeKeyPressed (); public void onHomeKeyLongPressed ();} // broadcast receiver class HomeKeyBroadcastReceiver extends BroadcastReceiver {final String SY STEM_DIALOG_REASON_KEY = "reason"; // press the Home key final String encoding = "homekey"; // press the Home key final String encoding = "recentapps"; @ Overridepublic 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 & mOnHomeKeyListener! = Null) {if (reason. equals (SYSTEM_DIALOG_REASON_HOME_KEY) {mOnHomeKeyListener. onHomeKeyPressed ();} else if (reason. equals (SYSTEM_DIALOG_REASON_RECENT_APPS) {mOnHomeKeyListener. onHomeKeyLongPressed ();}}}}}}
PowerKeyObserver:
Package cc. testhome; import android. content. broadcastReceiver; import android. content. context; import android. content. intent; import android. content. intentFilter; public class PowerKeyObserver {private Context mContext; private IntentFilter mIntentFilter; private OnPowerKeyListener mOnPowerKeyListener; private PowerKeyBroadcastReceiver mPowerKeyBroadcastReceiver; public PowerKeyObserver (Context context Context) {This. mContext = context;} // register the broadcast receiver public void startListen () {mIntentFilter = new IntentFilter (Intent. ACTION_SCREEN_OFF); mPowerKeyBroadcastReceiver = new PowerKeyBroadcastReceiver (); mContext. registerReceiver (mPowerKeyBroadcastReceiver, mIntentFilter); System. out. println ("----> Start listening");} // cancel the broadcast receiver public void stopListen () {if (mPowerKeyBroadcastReceiver! = Null) {mContext. unregisterReceiver (mPowerKeyBroadcastReceiver); System. out. println ("----> stop listening") ;}// public void setHomeKeyListener (OnPowerKeyListener powerKeyListener) {mOnPowerKeyListener = powerKeyListener ;} // callback interface public interface OnPowerKeyListener {public void onPowerKeyPressed ();} // broadcast receiver class PowerKeyBroadcastReceiver extends BroadcastReceiver {@ Overridepublic void onReceive (Context context, Intent intent) {String action = intent. getAction (); if (action. equals (Intent. ACTION_SCREEN_OFF) {mOnPowerKeyListener. onPowerKeyPressed ();}}}}
Main. xml is as follows:
Zookeeper