在相机拍照预览界面 通过耳机按键实现拍照功能
耳机按键定义
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;
}