关于es8316的音频爆破音的解决
文章目录
- 一、规避思路
- 二、相关代码
最近在项目中遇到了一个关于播放音频前后,喇叭会产生 哒 的一声,目前没有找到真正原因,但是可以做软件规避。
一、规避思路
对喇叭的功放角进行控制,在使用喇叭之前打开功放角,在使用完喇叭过后关闭功放角,这样就可以规避这种声音的出现。
二、相关代码
frameworks/av/
diff --git a/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp b/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp
index dce34db..1b2db64 100644
--- a/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp
+++ b/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp
@@ -31,6 +31,12 @@#include <media/AudioUtilmtk.h>#endif//这里添加节点路径
+const char *SPEAKER_ENABLE_PATH = "/sys/class/gpio/gpio114/value";
+static bool stream_system_on = false;
+static bool stream_notification_on = false;
+static bool stream_music_on = false;
+static bool stream_other_on = false;
+namespace android {@@ -270,8 +276,33 @@sp<AudioPlaybackClient> client;sp<AudioPolicyEffects>audioPolicyEffects;//打开audio的流程时候使能功放
+ FILE *fp = fopen(SPEAKER_ENABLE_PATH, "w");
+ if (fp != NULL) {+ char buf[2] = "1";
+ if (fwrite(buf, 1, 1, fp))
+ ALOGE("%s() fwrite success", __FUNCTION__);
+ else
+ ALOGE("%s() fwrite fail", __FUNCTION__);
+ fclose(fp);
+ } else
+ ALOGE("+%s() open failed", __FUNCTION__);
+getPlaybackClientAndEffects(portId, client, audioPolicyEffects, __func__);+ switch (client->stream) {+ case 1: //AUDIO_STREAM_SYSTEM button sound
+ stream_system_on = true;
+ break;
+ case 3: //AUDIO_STREAM_MUSIC
+ stream_music_on = true;
+ break;
+ case 5://AUDIO_STREAM_NOTIFICATION
+ stream_notification_on = true;
+ break;
+ default:
+ stream_other_on = true;
+ }
+if (audioPolicyEffects != 0) {// create audio processors according to streamstatus_t status = audioPolicyEffects->addOutputSessionEffects(
@@ -307,6 +338,34 @@getPlaybackClientAndEffects(portId, client, audioPolicyEffects, __func__);+ switch (client->stream) {+ case 1: //AUDIO_STREAM_SYSTEM button sound
+ stream_system_on = false;
+ break;
+ case 3: //AUDIO_STREAM_MUSIC
+ stream_music_on = false;
+ break;
+ case 5://AUDIO_STREAM_NOTIFICATION
+ stream_notification_on = false;
+ break;
+ default:
+ stream_other_on = false;
+ }
+ //关闭audio的流程时候关闭功放
+ if ((stream_system_on == false) && (stream_music_on == false) &&
+ (stream_notification_on == false) && (stream_other_on == false)) {+ FILE *fp = fopen(SPEAKER_ENABLE_PATH, "w");
+ if (fp != NULL) {+ char buf[2] = "0";
+ if (fwrite(buf, 1, 1, fp))
+ ALOGE("%s() fwrite success", __FUNCTION__);
+ else
+ ALOGE("%s() fwrite fail", __FUNCTION__);
+ fclose(fp);
+ } else
+ ALOGE("+%s() open failed", __FUNCTION__);
+ }
+if (audioPolicyEffects != 0) {// release audio processors from the streamstatus_t status = audioPolicyEffects->releaseOutputSessionEffects(
device/nxp/
添加对应权限
diff --git a/init.mt8168.rc b/init.mt8168.rc
index 40ef21b..015f327 100644
--- a/init.mt8168.rc
+++ b/init.mt8168.rc
@@ -623,6 +623,10 @@# EEPROMchmod 0666 /sys/bus/i2c/devices/2-0050/eeprom+# SPEAKER_ENABLE
+ chown system system /sys/class/gpio/gpio114/value
+ chmod 0666 /sys/class/gpio/gpio114/value
+on property:vold.decrypt=trigger_reset_mainwrite /proc/bootprof "INIT:vold.decrypt=trigger_reset_main"setprop sys.boot_completed 0
kernel中将frameworks需要的节点申请出来
diff --git a/drivers/misc/biol_misc.c b/drivers/misc/biol_misc.c
index 6d98a60ed992..a651892d2dda 100644
--- a/drivers/misc/biol_misc.c
+++ b/drivers/misc/biol_misc.c
@@ -122,8 +122,9 @@ static int sbc_biol_probe(struct platform_device *pdev)amp_en = of_get_named_gpio(np,"amp-en", 0);if (!gpio_is_valid(amp_en)){return -ENODEV;}gpio_request(amp_en, "amp-en");gpio_direction_output(amp_en, 0);//申请节点,后面需要改为1 不然 没有/sys/class/gpio/gpio114/ 的 direction 目录gpio_export(amp_en, 1);msleep(1);gpio_set_value(amp_en, 1);msleep(1);// 对应的dts可以参考我之前写的,只是多了一个添加节点的工具罢了
// https://blog.csdn.net/weixin_51178981/article/details/125097672?spm=1001.2014.3001.5501
关于es8316的音频爆破音的解决相关推荐
- Windows 10 音频爆音的解决方法,问题根源太多,期待完善
概述 : 您经常会遇到错误 Windows 10 音频噼啪声或爆裂声或其他问题.Windows 10 音频噼啪声错误可能由多种原因引起.此文转载自外国论坛,已翻译过来.如果您有同样的问题,请尝试这些解 ...
- 如何避免音频爆音/杂响?音频爆音常见的解决办法
如果CPU负载过高,并且无法在所选择的缓冲速率内缓冲音频,则在播放过程中可能会出现音频故障或音频掉线(播放时出现停顿)等问题.如何解决这一问题呢?本文详细讲解了音频爆音常见的解决办法 要解决音频爆音/ ...
- 【数据压缩】作业1-1:对浊音、清音、爆破音进行音频分析
本次实验利用Audacity软件分别对浊音.清音.爆破音进行时域和频域的分析与研究. 一.浊音 浊音指发音时声带振动的音,此处以拼音"a"为例. 时域分析 由图可见,浊音a的时域波 ...
- 杂音 pop 音的解决方法
杂音 & pop 音的解决方法 1. 喇叭有严重的"吱吱"破音,绝大多数的原因有可能在于V(out)电压不稳定,所以最好测一下无负载时的输出电压.同时也可以测量 VCC – ...
- 数据压缩作业1-1|利用Audacity分析浊音、清音、爆破音的时域及频域特性
文章目录 实验任务 实验目的 实验步骤 实验过程 实验结果分析 实验总结 实验任务 使用Audacity分析浊音.清音爆破音的时域及频域特性 实验目的 能够基本掌握Audacity这款音频处理软件的基 ...
- Audacity分析清音浊音爆破音的时域及频域特性
Audacity分析清音浊音爆破音的时域及频域特性 自己分别录制了清音浊音爆破音的三段 mp3 格式音频,导入 Audacity 中,即可观察到音频的时域波形,点击分析->频域分析,即可观察到频 ...
- 用Audacity分析浊音、清音、爆破音的时域及频域特性
文章目录 一.实验任务 二.实验内容及分析 1.浊音[u] 浊音u时域分析 浊音u频域分析 2.清音[t] 清音t时域分析 清音t频域分析 3.爆破音[p] 爆破音p时域分析 爆破音p频域分析 一.实 ...
- 浊音/清音/爆破音的时域及频域特性
第一周作业 浊音/清音/爆破音的时域及频域特性 思路:使用Audacity进行录制,时域部分将音频放大观察波形规律,频域部分生成并进行频谱分析. (1)浊音U 时域分析: 时域表现为短周期性,波形比较 ...
- 分析浊音、清音、爆破音的时域及频域特性
要求 使用Audacity分析浊音.清音.爆破音的时域及频域特性 简介 我们安装好Audacity工具后,就可以选择播录->录制->录制,分别录制英文字母A,音标/f/,英文字母P三段音频 ...
- Android视频编辑器(五)音频编解码、从视频中分离音频、音频混音、音频音量调节等
前言 这篇博客,主要讲解的是android端的音频处理,在开发Android视频编辑器的时候,有一个非常重要的点就是音频的相关处理.比如如何从视频中分离音频(保存为mp3文件),然后分离出来的音频如何 ...
最新文章
- Java的JSON操作存储List到Redis
- 应用回归分析何晓群课第五版_海外第三方应用市场分析丨出海学院十九期直播课...
- C# 利用反射动态调用类成员
- 关于UI自动化测试元素定位细节记录
- mysql 5.7 winx64_mysql 5.7.27 winx64安装配置方法图文教程
- 当下流行的分布式文件系统大阅兵
- 二叉排序树的后序遍历序列必然是递增的_剑指offer 33——二叉搜索树的后序遍历序列...
- Flink从入门到入土
- ExcelManager--基于.Net的Excel读写管理类库(二) 转载
- python linux开发_python之Linux开发环境安装
- 医院绩效考核系统设计方案
- 风雨萧关道【电视专题片解说词】
- Rockchip | 固件分区排列
- 如何使用rclone从AWS S3迁移到IBM COS - part 2 - 同步腾讯云对象存储
- Flutter 仿滴滴出行App,2021最新华为Android校招面试题
- “十四五”数字泉城建设应用场景
- 人脸识别0-03:insightFace-测试集数据制作-史上最全
- CISCO ANYCONNECT 一直连接不上,打开点击连接就闪退 或 卡在“Hostscan mission complete” or “Hostscan state idle“
- windows bitlocker 控制台加密、解密脚本
- 《每天演好一个情绪稳定的成年人》摘录
热门文章
- c语言2059,C语言错误 error C2059: 语法错误:“)”以及 错误error C2065: “sockaddr”: 未声明的标识符...
- 【Golang】查找-学习笔记
- luoguP4234 最小差值生成树
- 大规模容器镜像管理方案
- Xcode8写代码闪退
- ASP的技术特点与使用方法
- pandas 中的 isin和isnotin
- 我学炒外汇 第二十二篇实战心得
- pcep协议什么意思_SDN学习笔记
- FreeBSD-12.2 安装GNOME3桌面视频教程