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;
}
相关推荐
alexhilton17 分钟前
Android的Agent优先时代:构建时vs运行时
android·kotlin·android jetpack
Cutecat_1 小时前
视频字幕处理工具横向:提取模式 vs 编辑模式,该如何选择
android·前端·ios·语音识别
2601_961765292 小时前
【分享】PlayerPro媒体音乐播放器 完整专业版
android·媒体
JohnnyDeng944 小时前
【Android】Android 包体积优化:R8/ProGuard 深度配置全攻略
android·性能优化·kotlin·jetpack
故渊at4 小时前
第九板块:Android 多媒体体系 | 第二十四篇:Camera Service 与 HAL3 成像流水线
android·camera·多媒体体系·hal3
Jinkxs8 小时前
Python基础 - 初识内置函数 Python自带的便捷工具
android·java·python
私人珍藏库8 小时前
【Android】VLLO-韩国热门手机剪辑APP
android·app·工具·软件·多功能
Cloud_Shy6189 小时前
解读《Effective Python 3rd Edition》:从练气到老魔(第六章 Item 40 - 43)
android·开发语言·人工智能·笔记·python·学习方法
AFinalStone10 小时前
Android12 U盘插拔链路源码全解析(五):Framework层(下) StorageManagerService
android·frameworks
林九生11 小时前
【实用技巧】MySQL 绿色版一键路径更新脚本详解 —— update_path.bat 深度解析
android·数据库·mysql