在相机拍照预览界面 通过耳机按键实现拍照功能
耳机按键定义
frameworks/base/core/java/android/view/KeyEvent.java
cpp
public static final int KEYCODE_HEADSETHOOK = 79;
相机界面 拍照逻辑
DreamCamera2\src\com\android\camera\PhotoModule.java
cpp
@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;
}