public
class
MainActivity
extends
Activity {
CloseSystemBroadcastReceiver mReceiver =
new
CloseSystemBroadcastReceiver();
HomeKeyListener mListener =
new
HomeKeyListener() {
@Override
public
void
onRecentApps() {
Log.d(
"NR"
,
"최근 사용목록(홈키 롱 클릭)"
);
}
@Override
public
void
onHomeKeyPressed() {
Log.d(
"NR"
,
"홈키 눌렀을때"
);
}
};
@Override
protected
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
IntentFilter filter =
new
IntentFilter();
filter.addAction(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
registerReceiver(mReceiver, filter);
mReceiver.setOnHomeKeyListener(mListener);
}
@Override
protected
void
onDestroy() {
super
.onDestroy();
unregisterReceiver(mReceiver);
}
public
class
CloseSystemBroadcastReceiver
extends
BroadcastReceiver{
final
String SYSTEM_DIALOG_REASON_KEY =
"reason"
;
final
String SYSTEM_DIALOG_REASON_RECENT_APPS =
"recentapps"
;
final
String SYSTEM_DIALOG_REASON_HOME_KEY =
"homekey"
;
HomeKeyListener mListener;
public
CloseSystemBroadcastReceiver(){}
public
CloseSystemBroadcastReceiver(HomeKeyListener listener){
mListener = listener;
}
public
void
setOnHomeKeyListener(HomeKeyListener listener){
mListener = listener;
}
@Override
public
void
onReceive(Context arg0, Intent arg1) {
final
String action = arg1.getAction();
if
(action.equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)) {
String reason = arg1.getStringExtra(SYSTEM_DIALOG_REASON_KEY);
if
(reason !=
null
) {
if
(mListener !=
null
){
if
(reason.equals(SYSTEM_DIALOG_REASON_HOME_KEY)) {
mListener.onHomeKeyPressed();
}
else
if
(reason.equals(SYSTEM_DIALOG_REASON_RECENT_APPS)) {
mListener.onRecentApps();
}
}
}
}
}
}
public
interface
HomeKeyListener{
public
void
onHomeKeyPressed();
public
void
onRecentApps();
}