Android14 耳机按键拍照

在相机拍照预览界面 通过耳机按键实现拍照功能

耳机按键定义

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;
}
相关推荐
菠萝加点糖16 分钟前
Android 使用MediaMuxer+MediaCodec编码MP4视频
android·音视频·编码
雨白1 小时前
手写 MaterialEditText:实现浮动标签(Floating Label)效果
android
CYRUS_STUDIO2 小时前
使用 readelf 分析 so 文件:ELF 结构解析全攻略
android·linux·逆向
小强开学前4 小时前
WebView 静态页面秒加载方案要点
android·webview
纽马约4 小时前
Android Room的使用详解
android
游戏开发爱好者85 小时前
基于uni-app的iOS应用上架,从打包到分发的全流程
android·ios·小程序·https·uni-app·iphone·webview
深盾科技5 小时前
Android Keystore签名文件详解与安全防护
android·安全·gitee
安卓开发者5 小时前
Android Glide插件化开发实战:模块化加载与自定义扩展
android·glide
夏天的味道٥10 小时前
MySQL explain命令的作用
android·mysql·adb