當時這個需求是,連續點擊camera鍵啓動掃碼app。由於怕和其他app共享一個廣播,所以自己定義了一個廣播
ACTION_CAMERA_BUTTON.DC
掃碼app監聽ACTION_CAMERA_BUTTON.DC這個廣播。
修改文件
frameworks/base/policy/src/com/android/internal/policy/impl/PhoneFallbackEventHandler.java
boolean onKeyDown(int keyCode, KeyEvent event) {
case KeyEvent.KEYCODE_CAMERA: {
//start
if(event.getRepeatCount() == 5){
Intent intent = new Intent(Intent.ACTION_CAMERA_BUTTON+"DC", null);
intent.putExtra(Intent.EXTRA_KEY_EVENT, event);
mContext.sendOrderedBroadcastAsUser(intent, UserHandle.CURRENT_OR_SELF,
null, null, null, 0, null, null);
}
//end
else if (event.isLongPress() && dispatcher.isTracking(event)) {
dispatcher.performedLongPress(event);
mView.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS);
sendCloseSystemWindows();
// Broadcast an intent that the Camera button was longpressed
Intent intent = new Intent(Intent.ACTION_CAMERA_BUTTON, null);
intent.putExtra(Intent.EXTRA_KEY_EVENT, event);
mContext.sendOrderedBroadcastAsUser(intent, UserHandle.CURRENT_OR_SELF,
null, null, null, 0, null, null);
}
}
如果點擊次數等於5次就發起廣播給掃碼app