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;
}
相关推荐
wno704几秒前
MYSQL 常用合并函数
android·数据库·mysql
事圆则缓33 分钟前
HTTP 请求是怎么走的:从 Android 页面到服务端响应
android·网络协议·http
美狐美颜SDK开放平台2 小时前
直播APP平台搭建需要哪些技术?视频美颜SDK只是其中一环
android·ios·音视频·直播美颜sdk·视频美颜sdk
AIsoft_86893 小时前
传统记录方式为什么越来越难满足需求?
android·iphone
小π军3 小时前
安卓、iOS、鸿蒙三端的理解
android·ios·harmonyos
BD_Marathon4 小时前
ChatPromptTemplate的高级特性
android·java·javascript
夜晚回家4 小时前
Python 变量入门详解 | 用 BMI 案例串起赋值、乘方与取整
android·python
程序猿追4 小时前
立方体转到九十度:用 kotlin-math 核对鸿蒙上的两种旋转
android·开发语言·kotlin
半调子的社畜4 小时前
记账 App 我装了删、删了装,最后自己写了一个:本地语音识别 + R8 踩坑复盘
android·ai编程
hunterandroid5 小时前
Android 运行时权限实战:从声明权限到拒绝后的可用降级
android