0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

定义安卓音频架构

星星科技指导员 来源:embedded 作者:Rohan Nathi 2023-05-04 10:23 次阅读

Android操作系统已经占领了当今设备的很大一部分,包括智能手机,电视和Tab。根据Statista的数据,谷歌创建的Android移动操作系统(OS)是目前使用最广泛的智能手机操作系统,以接近71.8%的市场份额主导移动操作系统市场。

Android 在所有硬件平台上被广泛采用,因为它是一个开源软件代码和一个定义明确的框架结构。Linux内核是Android操作系统的核心,因为它提供了硬件和各种Android组件之间的抽象。音频处理需要大量复杂的操作和密集的算法来产生高保真音频输出。Android 音频架构涉及许多复杂的软件,必须处理许多方面,例如支持扬声器、听筒、耳机、HDMI、麦克风、蓝牙 SCO、A2DP 等音频硬件,以及不同的软件应用程序,如电话、媒体播放器录音机、VIOP 应用程序和 SIP 应用程序。本文重点介绍 Android 音频架构中不同组件的高级功能。

安卓音频架构概述

Android 音频架构概述了音频功能的实现方式,并提供了指向相关源代码的链接。

poYBAGRTFwuAZm7QAAI0YWClXlc315.png

安卓音频架构

安卓音频APP和JAVA框架

Android 框架由一组定义明确的 Java API 组成,使开发人员能够轻松编写 Android 应用程序。Android 音频应用代码使用这组不同的多媒体 (android.media) 框架 API。在内部,这些 API 调用相应的 Java 本机接口 (JNI) 粘附软件代码来访问本机组件,这些组件进一步与较低层交互以在硬件上播放音频。

粘结 剂

进程间通信 (IPC) 是所有不同 Android 组件交换信息的重要机制。Android 进程使用名为“Binder”的特定于 Android 的 IPC 来调用另一个 Android 进程中的例程,并通过参数交换数据。上层使用 Binder API 与本机音频服务和下层硬件层进行通信。

音频管理器

音频管理器是原生的Android服务,是整个音频子系统的核心组件。从Android 7 Nougat版本开始,它不是原生媒体服务的一部分,而是在用户空间中作为单独的Android进程运行。它为不同的服务运行三个线程,即音频策略、音频投点和音频以执行其功能。

音频策略服务

策略决策主要包括打开新的输入/输出音频流,并在通过 UI 和流音量管理更改或选择后将音频重新路由到不同的音频设备。音频策略服务处理执行这些策略决策所需的所有操作。此服务还跟踪用户事件和当前系统状态,以通知音频投点服务。

音频投掷器服务

音频传票服务调用音频硬件抽象层 (HAL) API 以与音频硬件交互。它为上层提供了一个可访问的界面。音频策略服务定义的策略决策和策略由此服务执行。它还负责与音频设备通信并维护其状态。它处理多个音频流(通知和音乐)的混合、音量缩放、音频流写入,并为媒体播放器提供写入音频帧等信息。

音频服务

Audio 是 Android 8 Oreo 版本中引入的新 Android C API。它专为需要低延迟的高性能音频应用而设计。Android 音频应用调用音频 API 来读取和写入音频流中的数据。音频服务处理这些低延迟音频 API。音频 API 中有两种模式,即“独占模式”,它允许客户端应用程序代码直接写入与 ALSA 驱动程序共享的内存映射缓冲区,以及“共享模式”,它混合所有共享流并遵循音频 HAL 路径。

音频 HAL

硬件抽象层 (HAL) 是 Android 堆栈中的一个层,它为上层运行的本机音频服务提供标准访问接口。音频 HAL 将上层桥接到较低级别的音频驱动程序实现。供应商必须使用特定的音频驱动程序代码实现音频 HAL 接口。音频 HAL 作为单独的 Android 进程在用户空间中运行,以执行上层所需的功能。

下面列出了音频 HAL 提供的主要功能。

管理音频输入/输出流的打开和关闭,包括设置音频通道、采样率和音频格式等流参数。它还必须处理媒体播放器的不同状态,包括播放、暂停、恢复和待机,并为硬件上写入的音频帧和时间戳提供反馈路径数据。

加载需要特殊音频处理和解码的特定库集,从而将原始数据发送到音频硬件。

音频设备接口

Android 音频架构支持不同类型的音频设备,包括蓝牙设备、电视调谐器系统、HMDI 连接和 I2S 扬声器。音频 HAL 负责将音频数据包从上层发送到这些设备。选择特定音频设备或将其插入 Android 硬件后,音频策略管理器将执行一组定义并与音频设备关联的策略,并且所有层都配置为支持音频数据流经它。Audio HAL 特别加载与音频设备交互的接口代码并对其执行读写操作,此接口代码还为连接到其他 HAL 的音频设备执行 HAL 间 IPC,例如,需要蓝牙 HAL 交换数据的蓝牙音频设备。

内核驱动程序

音频 HAL 实现具有与音频驱动程序交互的代码。Android 内核使用高级 Linux Sound Architecture (ALSA) 子系统,或者供应商可以引入与 HAL 无关的自定义驱动程序。Tiny ALSA是一个小型库,用于与Linux内核中的ALSA接口,音频HAL使用它与不同的声卡进行交互。

Android堆栈是需要为不同的硬件平台构建的巨大软件代码。理解和修改较低的Android层非常困难,因为它需要大量的调试技能。硬件级实现因每个供应商而异,需要与为上层定义的接口准确映射。代码库中许多未记录的部分更加复杂且特定于供应商,并且它使用复杂的IPC机制,并在编程语言之间切换。

Softnautics使多媒体公司能够设计和开发连接的多媒体解决方案。我们帮助客户进行Android底层所需的不同自定义和集成,其中主要包括用户和内核空间中的本机代码。我们还协助客户添加基于音频的无线设备并将其集成到Android音频子系统中。我们在了解 Android 架构中的不同层以进行定制和围绕它的新设计方面拥有专业知识。我们在设计高性能媒体应用程序、构建完整的视频管道、音频/视频编解码器开发、应用程序移植等方面拥有实践经验。

审核编辑?:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 智能手机
    +关注

    关注

    66

    文章

    18431

    浏览量

    179857
  • Android
    +关注

    关注

    12

    文章

    3923

    浏览量

    127132
  • 操作系统
    +关注

    关注

    37

    文章

    6738

    浏览量

    123190
收藏 人收藏

    评论

    相关推荐

    基于Freescale MCU与Audio Codec的音频附件设计

    音频附件是Android Open Accessory (AOA) protocol 2.0中新增的功能,它通过标准USB Audio Class Interface将来自
    发表于 11-19 11:51 6234次阅读
    基于Freescale MCU与Audio Codec的<b class='flag-5'>安</b><b class='flag-5'>卓</b><b class='flag-5'>音频</b>附件设计

    车载系统的设计方案和注意事项

    基于系统的消费电子设备用户希望可以在开车或乘车时使用他们的应用程序和设备功能。##整合智能设备##与
    发表于 05-19 09:59 4961次阅读

    Android端自定义铃声 MobPush对端自定义铃声的教程

    如何为APP推送设置独特的通知铃声呢?本次带来的是MobPush对端自定义铃声的教程,快来看看吧~
    的头像 发表于 10-21 15:34 1122次阅读
    Android端自<b class='flag-5'>定义</b>铃声 MobPush对<b class='flag-5'>安</b><b class='flag-5'>卓</b>端自<b class='flag-5'>定义</b>铃声的教程

    【原创】Dex分包架构设计—实现热修复

    【原创】Dex分包架构设计—实现热修复回复即可获取下载链接[hide=d15]链接:http://pan.baidu.com/s/1c2fYJZy 密码:iw16 学习群:150923287 [/hide]
    发表于 07-26 17:50

    基于的视频遥控小车——红外详解

    ,感觉这东西涉及到傅里叶变换,音频是正弦波,红外信号是方波,直接用音频驱动是有误差的吧,我也不是很懂,数学不好。网上我搜到这篇是【用实现的
    发表于 06-29 00:22

    如何看待鸿蒙系统兼容系统?

    网络看到很多人讨论鸿蒙和,有人说鸿蒙就是换皮版的,有人说鸿蒙兼容,有
    发表于 10-10 11:06

    鸿蒙 vs 六大维度对比

    以是其他(PPT里这么写的)。微内核显然在架构上会更有优势,可以在速度、续航上领先。性能系统也有很多的弊端,基于开源代码的设计,系统运行产生的垃圾文件会越来越多,时间一长,手机的性能就会明显下降
    发表于 12-07 14:13

    支持RISC-V架构的技术剖析

    本帖最后由 jf_11671167 于 2021-10-9 10:29 编辑 关键词:、玄铁C910、虚拟机、RISC-V架构,RISC-V操作系统,IoT芯片,嵌入式操作系统,AOSP
    发表于 09-01 15:45

    系统DIY教程

    系统DIY教程,私人订制系统功能,介绍如何增加,删除系统功能。
    发表于 05-06 16:54 18次下载

    系统存在漏洞,可无需获得用户许可就能捕获视频和音频

    手机有遭殃了,安全公司Checkmarx发现,系统存在一个漏洞,让恶意应用无需用户许可就能录制视频、拍摄照片和捕获音频,并将内容上传
    的头像 发表于 11-20 16:09 2693次阅读

    鸿蒙系统是基于

    有网友询问鸿蒙系统是基于吗?答案:鸿蒙系统并不是基于与鸿蒙手机操作系统都是基于L
    的头像 发表于 06-18 16:17 3.1w次阅读

    鸿蒙是基于吗 鸿蒙与区别

    很多人很好奇鸿蒙系统和卓有什么关系?鸿蒙系统是基于系统研发而成的?鸿蒙系统与系统有什么区别?下面将为大家详细介绍鸿蒙系统与
    的头像 发表于 07-10 09:36 4.6w次阅读

    I BUS适配器BMW音频

    电子发烧友网站提供《I BUS适配器BMW音频.zip》资料免费下载
    发表于 08-05 10:01 0次下载
    I BUS适配器BMW<b class='flag-5'>安</b><b class='flag-5'>卓</b><b class='flag-5'>音频</b>

    主板_MTK6765开发板-联发科主板方案介绍

    主板_MTK6765开发板-搭载联发科(MediaTek)MTK6765处理器,这款高性能ARM处理器被广泛应用于个人移动互联网设备和其他应用程序。MT6765采用了八核Cor
    的头像 发表于 10-11 19:27 1486次阅读
    <b class='flag-5'>安</b><b class='flag-5'>卓</b>主板_MTK6765<b class='flag-5'>安</b><b class='flag-5'>卓</b>开发板-联发科<b class='flag-5'>安</b><b class='flag-5'>卓</b>主板方案介绍

    谷歌15将提升对助听器支持,改善音频体验

    5 月 30 日,谷歌正式公布了 15 更新计划,将大幅度提升系统对助听器的支持程度,使其可与具备蓝牙 LE 音频技术的助听器无缝对
    的头像 发表于 05-30 15:11 1015次阅读