android audio 相机按键音:(二)加载与修改

相机按键音资源,加载文件路径:

frameworks/av/services/camera/libcameraservice/CameraService.cpp

按键音,加载函数:

void CameraService::loadSoundLocked(sound_kind kind) {

ATRACE_CALL();

LOG1("CameraService::loadSoundLocked ref=%d", mSoundRef);

if (SOUND_SHUTTER == kind && mSoundPlayerSOUND_SHUTTER == NULL) {

// 拍照按键音资源加载

mSoundPlayerSOUND_SHUTTER = newMediaPlayer("/product/media/audio/ui/camera_click.ogg");

if (mSoundPlayerSOUND_SHUTTER == nullptr) {

mSoundPlayerSOUND_SHUTTER = newMediaPlayer("/system/media/audio/ui/camera_click.ogg");

}

} else if (SOUND_RECORDING_START == kind && mSoundPlayerSOUND_RECORDING_START == NULL) {

// 录像启动按键音资源加载

mSoundPlayerSOUND_RECORDING_START = newMediaPlayer("/product/media/audio/ui/VideoRecord.ogg");

if (mSoundPlayerSOUND_RECORDING_START == nullptr) {

mSoundPlayerSOUND_RECORDING_START = newMediaPlayer("/system/media/audio/ui/VideoRecord.ogg");

}

} else if (SOUND_RECORDING_STOP == kind && mSoundPlayerSOUND_RECORDING_STOP == NULL) {

// 录像停止按键音资源加载

mSoundPlayerSOUND_RECORDING_STOP = newMediaPlayer("/product/media/audio/ui/VideoStop.ogg");

if (mSoundPlayerSOUND_RECORDING_STOP == nullptr) {

mSoundPlayerSOUND_RECORDING_STOP = newMediaPlayer("/system/media/audio/ui/VideoStop.ogg");

}

}

}

用户可以自定义修改,按键音:

替换按键音资源,直接替换camera_click.ogg,VideoRecord.ogg,VideoStop.ogg。

禁止按键音,可以直接删除资源或在资源加载过程进行禁止修改。

声音资源路径:

frameworks\base\data\sounds\effects\ogg

camera_click.ogg

camera_click_48k.ogg

adb查看设备,声音资源路径:

a71x:/system/media/audio/ui $ ls -al camera*

-rw-r--r-- 1 root root 8703 2008-12-31 23:00 camera_click.ogg

-rw-r--r-- 1 root root 9376 2008-12-31 23:00 camera_focus.ogg

相关推荐
音视频工程实战15 小时前
音频元数据标准化设计:封面、章节、时间戳全链路统一存储规范
音视频
五仁烧饼15 小时前
Unity Addressables 资源依赖治理:规则约束、自动修复与全链路防护
java·unity·游戏引擎
spider_xcxc15 小时前
Jenkins 遇见 Argo CD:构建可靠 GitOps 流水线的实战指南
java·开发语言·servlet
AI人工智能+电脑小能手15 小时前
【大白话说Java面试题 第214题】【10_网络协议篇】第5题:说一下 TCP 协议的三次握手和四次挥手
java·网络协议·tcp·三次握手·四次挥手
我叫唧唧波15 小时前
【Java】Java 基础系统学习笔记
java·笔记·学习
好好沉淀15 小时前
Spring @Validated和Validation注解 校验机制完全指南
java·数据库·后端
唐青枫15 小时前
Java RxJava 实战指南:从 Observable、Flowable 到线程切换和背压处理
java
凤山老林16 小时前
SpringBoot + Configuration2 实现配置的实时双向更新
java·spring boot·后端
艾莉丝努力练剑17 小时前
【MYSQL】MYSQL学习的一大重点:事务(上)- 原子性与持久性
android·数据库·学习·mysql·面试
2601_9638699518 小时前
【计算机毕业设计】基于 Spring Boot+Vue的手工体验馆管理系统的设计与实现
java·spring boot·后端