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

相关推荐
ym hyd 1111 小时前
试题库管理系统源码 Java+SpringBoot+Vue3 前后分离
java·vue.js·spring boot·毕设
AC赳赳老秦1 小时前
采集行为合规自检:OpenClaw 自动校验 robots 协议与采集频率,规避违规采集风险
java·开发语言·c++·python·php·deepseek·openclaw
钱栈up1 小时前
mvn compile 卡死在 javac 阶段:一次类型不匹配的排查与修复
java·开发语言
吠品3 小时前
CSS图片模糊过渡:一个transition加filter就够
java·数据库·notepad++
youdexiang3 小时前
iOS版本语音转文字工具:音频识别原理
音视频
步行cgn4 小时前
Spring 全注解开发详解
java·后端·spring
长河4 小时前
Java的GC(垃圾回收)中,标记无用对象的核心方法是可达性分析算法
java·jvm·算法
code2cat4 小时前
Java进阶篇之LongAdder:把统计更新分散,再读取总和
java·并发编程·原子类·longadder
凯哥Java4 小时前
写代码怎么避免逻辑漏洞?
java·开发语言·人工智能·自动化
火柴就是我5 小时前
Flutter 项目本地 Maven 引入 AAR 找不到?一次 Gradle 路径问题排查
android