文章目录

  • 一、规避思路
  • 二、相关代码

最近在项目中遇到了一个关于播放音频前后,喇叭会产生 哒 的一声,目前没有找到真正原因,但是可以做软件规避。

一、规避思路

对喇叭的功放角进行控制,在使用喇叭之前打开功放角,在使用完喇叭过后关闭功放角,这样就可以规避这种声音的出现。

二、相关代码

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的音频爆破音的解决相关推荐

  1. Windows 10 音频爆音的解决方法,问题根源太多,期待完善

    概述 : 您经常会遇到错误 Windows 10 音频噼啪声或爆裂声或其他问题.Windows 10 音频噼啪声错误可能由多种原因引起.此文转载自外国论坛,已翻译过来.如果您有同样的问题,请尝试这些解 ...

  2. 如何避免音频爆音/杂响?音频爆音常见的解决办法

    如果CPU负载过高,并且无法在所选择的缓冲速率内缓冲音频,则在播放过程中可能会出现音频故障或音频掉线(播放时出现停顿)等问题.如何解决这一问题呢?本文详细讲解了音频爆音常见的解决办法 要解决音频爆音/ ...

  3. 【数据压缩】作业1-1:对浊音、清音、爆破音进行音频分析

    本次实验利用Audacity软件分别对浊音.清音.爆破音进行时域和频域的分析与研究. 一.浊音 浊音指发音时声带振动的音,此处以拼音"a"为例. 时域分析 由图可见,浊音a的时域波 ...

  4. 杂音 pop 音的解决方法

    杂音 & pop 音的解决方法 1. 喇叭有严重的"吱吱"破音,绝大多数的原因有可能在于V(out)电压不稳定,所以最好测一下无负载时的输出电压.同时也可以测量 VCC – ...

  5. 数据压缩作业1-1|利用Audacity分析浊音、清音、爆破音的时域及频域特性

    文章目录 实验任务 实验目的 实验步骤 实验过程 实验结果分析 实验总结 实验任务 使用Audacity分析浊音.清音爆破音的时域及频域特性 实验目的 能够基本掌握Audacity这款音频处理软件的基 ...

  6. Audacity分析清音浊音爆破音的时域及频域特性

    Audacity分析清音浊音爆破音的时域及频域特性 自己分别录制了清音浊音爆破音的三段 mp3 格式音频,导入 Audacity 中,即可观察到音频的时域波形,点击分析->频域分析,即可观察到频 ...

  7. 用Audacity分析浊音、清音、爆破音的时域及频域特性

    文章目录 一.实验任务 二.实验内容及分析 1.浊音[u] 浊音u时域分析 浊音u频域分析 2.清音[t] 清音t时域分析 清音t频域分析 3.爆破音[p] 爆破音p时域分析 爆破音p频域分析 一.实 ...

  8. 浊音/清音/爆破音的时域及频域特性

    第一周作业 浊音/清音/爆破音的时域及频域特性 思路:使用Audacity进行录制,时域部分将音频放大观察波形规律,频域部分生成并进行频谱分析. (1)浊音U 时域分析: 时域表现为短周期性,波形比较 ...

  9. 分析浊音、清音、爆破音的时域及频域特性

    要求 使用Audacity分析浊音.清音.爆破音的时域及频域特性 简介 我们安装好Audacity工具后,就可以选择播录->录制->录制,分别录制英文字母A,音标/f/,英文字母P三段音频 ...

  10. Android视频编辑器(五)音频编解码、从视频中分离音频、音频混音、音频音量调节等

    前言 这篇博客,主要讲解的是android端的音频处理,在开发Android视频编辑器的时候,有一个非常重要的点就是音频的相关处理.比如如何从视频中分离音频(保存为mp3文件),然后分离出来的音频如何 ...

最新文章

  1. Java的JSON操作存储List到Redis
  2. 应用回归分析何晓群课第五版_海外第三方应用市场分析丨出海学院十九期直播课...
  3. C# 利用反射动态调用类成员
  4. 关于UI自动化测试元素定位细节记录
  5. mysql 5.7 winx64_mysql 5.7.27 winx64安装配置方法图文教程
  6. 当下流行的分布式文件系统大阅兵
  7. 二叉排序树的后序遍历序列必然是递增的_剑指offer 33——二叉搜索树的后序遍历序列...
  8. Flink从入门到入土
  9. ExcelManager--基于.Net的Excel读写管理类库(二) 转载
  10. python linux开发_python之Linux开发环境安装
  11. 医院绩效考核系统设计方案
  12. 风雨萧关道【电视专题片解说词】
  13. Rockchip | 固件分区排列
  14. 如何使用rclone从AWS S3迁移到IBM COS - part 2 - 同步腾讯云对象存储
  15. Flutter 仿滴滴出行App,2021最新华为Android校招面试题
  16. “十四五”数字泉城建设应用场景
  17. 人脸识别0-03:insightFace-测试集数据制作-史上最全
  18. CISCO ANYCONNECT 一直连接不上,打开点击连接就闪退 或 卡在“Hostscan mission complete” or “Hostscan state idle“
  19. windows bitlocker 控制台加密、解密脚本
  20. 《每天演好一个情绪稳定的成年人》摘录

热门文章

  1. c语言2059,C语言错误 error C2059: 语法错误:“)”以及 错误error C2065: “sockaddr”: 未声明的标识符...
  2. 【Golang】查找-学习笔记
  3. luoguP4234 最小差值生成树
  4. 大规模容器镜像管理方案
  5. Xcode8写代码闪退
  6. ASP的技术特点与使用方法
  7. pandas 中的 isin和isnotin
  8. 我学炒外汇 第二十二篇实战心得
  9. pcep协议什么意思_SDN学习笔记
  10. FreeBSD-12.2 安装GNOME3桌面视频教程