在相機拍照預覽界面 通過耳機按鍵實現拍照功能
耳機按鍵定義
frameworks/base/core/java/android/view/KeyEvent.java
public static final int KEYCODE_HEADSETHOOK = 79;
相機界面 拍照邏輯
DreamCamera2\src\com\android\camera\PhotoModule.java
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {if (mDataModuleCurrent == null || mActivity.getCameraAppUI().isBottomBarNull())return false;switch (keyCode) {case KeyEvent.KEYCODE_VOLUME_UP:case KeyEvent.KEYCODE_VOLUME_DOWN:case KeyEvent.KEYCODE_CAMERA:case KeyEvent.KEYCODE_ENTER:case KeyEvent.KEYCODE_HEADSETHOOK: //添加耳機按鍵case ,KEYCODE_HEADSETHOOK對應值79 int volumeStatus = getVolumeControlStatus(mActivity);/** SPRD:fix bug518054 ModeListView is appear when begin to capture using volume* key@{*/mActivity.getCameraAppUI().hideModeList();/* }@ */if (/* mActivity.isInCameraApp() && */mFirstTimeInitialized &&!mActivity.getCameraAppUI().isInIntentReview()) {/* SPRD:Bug 535058 New feature: volume */if (volumeStatus == Keys.shutter || keyCode == KeyEvent.KEYCODE_CAMERA||keyCode == 79) {//添加耳機按鍵判斷 if (mActivity.hasKeyEventEnter() && (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN || keyCode == KeyEvent.KEYCODE_VOLUME_UP)) {if (mHandler.hasMessages(MSG_RESET_KEY_ENTER)) {mHandler.removeMessages(MSG_RESET_KEY_ENTER);}mActivity.resetHasKeyEventEnter();return true;}pressVolumeKey = false;if (mBurstMaxUp && !pressShutterKey){mBurstMaxUp = false;return false;}procOnKeyUpVolumeShutter(keyCode,event);return true;} else if (volumeStatus == Keys.zoom) {mUI.hideZoomUI();return true;} else if (volumeStatus == Keys.volume) {return false;}}return false;case KeyEvent.KEYCODE_FOCUS:procOnKeyUpFocus(keyCode,event);return true;}return false;
}