
Audio
蓝白天际线
本人从事linux的嵌入式开发.
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
音频和视频播放
音频与视频播放1.音频 播放应用资源中的音乐应用中的音乐一般放在res/raw目录下/** * 播放应用资源中的音乐 * * @param v */public void player1(View v) { // 设置播放数据源 MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.gm);转载 2016-08-02 17:20:47 · 823 阅读 · 0 评论 -
怎么更改安卓系统铃声级数大小
针对android系统,默认情况下,铃声等音量级别都是7级;但有一些产品,希望可以设置成15级可调;那怎么更改呢?1. 以下代码针对android6.0.1版本; /frameworks/base/services/core/java/com/android/server/audio/AudioService.java2. 打开上面的AudioService.java.原创 2016-07-08 17:27:37 · 1539 阅读 · 0 评论 -
Android音量控制曲线
本文介绍了android音量的控制曲线的计算方法。 由于人耳对声音的听感具指数曲线型,也就是对小音量时比较敏感,随着声音的加大其听感随之变的不敏感,其变化近似指数函数曲线的形式。为了使听感变的近似直线的变化,人们在实践中就采用了音量变化近似对数式曲线型的电位器来实现这个目的。对比法产生音量控制曲线与最终扬声器输出的声压有关,当然您也可以根据扬声器的输出功率来进行比对,但功率终究不如电压来的方转载 2016-04-27 17:53:46 · 3922 阅读 · 0 评论 -
Android Audio 代码分析- Audio Strategy
frameworks\base\services\AudioFlinger.cppstatus_t AudioFlinger::PlaybackThread::Track::start(){ status_t status = NO_ERROR; LOGV("start(%d), calling thread %d session %d", mNam转载 2016-04-22 16:20:59 · 614 阅读 · 0 评论 -
audio 声道路由策略分析
在看示例代码 testPlaybackHeadPositionIncrease 的时候,我们对 play 函数进行了研究。 不过,当时对 Android 中声音竞争策略相关的内容,并没有详细分析。 今天就以 AudioTrack 的播放为引子,来仔细看看 Anroid 中各种声音是以什么样的策略来竞争的。从 Java 侧类 AudioTrack 的 play 函数到函数 AudioFl转载 2016-04-22 16:15:59 · 5395 阅读 · 0 评论 -
DAPM之二: audio paths与dapm kcontrol
转载自: http://blog.youkuaiyun.com/azloong/article/details/6334922在用alsa_amixer controls时,除了我们之前提到的snd_soc_add_controls添加的kcontrols外,还有一些多出来的controls。其实多出来的那些都是属于dapm kcontrol,主要用于切换音频路径。一、AUDI转载 2016-04-27 13:31:48 · 864 阅读 · 0 评论 -
android audio音量控制流程
Audio java部分代码流程(4.1.2 version): 在frameworks/base/media/java/android/media中: IAudioService.aidl提供了所有对外的接口函数,如下:[cpp] view plaincopyinterface IAudioService {转载 2016-03-14 09:15:45 · 3638 阅读 · 1 评论 -
Android 4.x耳机插拔检测实现方法
本文基于Android 4.4撰写,另外也参看了一下4.2,机制相同,也许细节方面会有所不同,这里以4.4为主。Android耳机插拔可以有两个机制实现:1. InputEvent2. UEvent其中UEvent是Android系统默认的耳机插拔机制,所以我这里最终代码是基于UEvent实现的,对于InputEvent机制只是大概看了看,并没有具体实现,因此不能保转载 2016-02-25 17:17:05 · 838 阅读 · 0 评论 -
android4.x 耳机插拔检测机制
Android4.2耳机插拔检测实现方法 1. 耳机检测的硬件原理一般的耳机检测包含普通的耳机检测和带mic的耳机检测两种,这两种耳机统称为Headset,而对于不带mic的耳机,一般称之为Headphone。对于Headset装置的插入检测,一般通过Jack即耳机插座来完成,大致的原理是使用带检测机械结构的耳机插座,将检测脚连到可GPIO中断上,当耳机插入时,耳机转载 2016-02-25 17:09:16 · 1827 阅读 · 0 评论 -
speex回音消除
为什么需要声学回声消除呢?在一般的VOIP软件或视频会议系统中,假设我们只有A和B两个人在通话,首先,A的声音传给B,B然后用喇叭放出来,而这时B的MIC呢则会采集到喇叭放出来的声音,然后传回给A,如果这个传输的过程中时延足够大,A就会听到一个和自己刚才说过的话一样的声音,这就是回声,声学回声消除器的作用就是在B端对B采集到的声音进行处理,把采集到声音包含的A的声音去掉再传给A,这样,A就不会听到转载 2016-03-15 20:16:44 · 2464 阅读 · 1 评论 -
怎么更改开机铃声的声音大小
以下代码针对的是android 6.0.11. 关于开机关机铃声的代码位置是: /frameworks/base/cmds/bootanimation/ 下面。2. 打开 BootAnimation.cpp 文件。搜索关键字 “volume” 。关于铃声声音大小的代码如下: float volume = 0.9; if (mMode == N原创 2016-07-08 17:46:49 · 2710 阅读 · 0 评论 -
android暂停或停止其他音乐播放器的播放
来自Android自带的music源码,下面是广播接收的代码,通过发送广播来控制音乐的播放,停止等。代码如下:[java] view plaincopy public static final String PLAYSTATE_CHANGED = "com.android.music.playstatechanged"; p转载 2016-08-01 14:56:03 · 2521 阅读 · 0 评论 -
Android Audio Policy小记
http://blog.youkuaiyun.com/ifloveelse/article/details/44097125转载 2017-09-07 17:38:06 · 916 阅读 · 0 评论 -
Android M AudioPolicy 分析
1.AudioPolicyService基础AudioPolicy在Android系统中主要负责Audio"策略"相关的问题。它和AudioFlinger一起组成了Android Audio系统的两个服务。一个负责管理audio的“路由”,一个负责管理audio“设备”。在Android M 版本的系统中,这两个服务都是在系统启动的过程中,通过MediaServer来加载的。AudioPo转载 2017-09-07 17:33:52 · 642 阅读 · 0 评论 -
audio_policy.conf文件分析
不同的Android产品在音频的设计上通常是存在差异的,而这些差异可以同过Audio的配置文件audio_policy.conf来获得。在Android系统中音频配置文件存放路径有两处,存放地址可以从AudioPolicyManagerBase.cpp文件中知道: #define AUDIO_POLICY_VENDOR_CONFIG_FILE "/vendor/etc/audio_pol转载 2017-09-07 17:24:27 · 1748 阅读 · 1 评论 -
Android6.0.1音乐apk获得audioFocus的流程
在android6.0.1版本上,使用了audioFocus的方式来抢占音频使用权;那么各个音频apk就要遵守 audioFocus的各种规定和用法。下面分几个流程说明一下各个情况下的 audioFocus使用。在audio系统中,上层各个功能部分的分层大概如下图所示:其中,针对audioFocus功能,在当打开Music 的 apk时,这个apk主动向 AudioManage原创 2016-09-20 17:32:54 · 4001 阅读 · 0 评论 -
Android 6.0 新功能及主要 API 变更
伴随着新的特性和功能, Android 6.0 (API 级别 23)带来了一系列系统和 API 行为的变更。这篇文章中将介绍一些在应用程序中需要理解和注意的主要变更点。如果你之前已经发布过 Android 应用程序,要意识到这些变更对应用程序的影响。运行时权限这个版本中引入了新的权限模型,现在用户可以在运行时直接管理应用程序的权限。这个模型基于用户对权限控制的转载 2016-09-06 21:16:56 · 1280 阅读 · 0 评论 -
Android如何判断当前手机是否正在播放音乐,并获取到正在播放的音乐的信息
我想实现如下的场景,判断当前Android手机上是否正在播放音乐,如果是,通过某个特定的手势,或者点击某个按键,将当前我正在听的音乐共享出去。第一步,就是判断当前是否有音乐正在播放。最开始我想得有点复杂,以为要深入framework或更下层去做手脚才行,找了一下资料,发现AudioManager对外暴露了接口。[java] view plain co转载 2016-09-01 16:52:11 · 12687 阅读 · 0 评论 -
AudioFlinger,AudioPolicyService and Audio track分析
ContentsAndroid音频系统之AudioFlinger(一).. 21.1 AudioFlinger. 21.1.1 AudioFlinger服务的启动和运行... 2Android音频系统之AudioFlinger(二).. 61.1.1 音频设备的管理... 6Android音频系统之AudioFling转载 2016-08-02 17:45:56 · 2117 阅读 · 0 评论 -
Android中的Audio播放:竞争Audio之Audio Focus的应用
Android是多任务系统,Audio系统是竞争资源。Android2.2之前,没有内建的机制来解决多个程序竞争Audio的问题,2.2引入了称作AudioFocus的机制来管理对Audio资源的竞争的管理与协调。本文主要讲解AudioFocus的使用。按照AudioFocus的机制,在使用AudioStream之前,需要申请AudioFocus,在获得AudioFocus之后才可以使用相转载 2016-09-09 17:18:14 · 465 阅读 · 0 评论 -
Android中的Audio播放:控制Audio输出通道切换
Audio 输出通道有很多,Speaker、headset、bluetooth A2DP等。通话或播放音乐等使用Audio输出过程中,可能发生Audio输出通道的切换。比如,插入有线耳机播放音乐时,声音是从耳机发出的;而此时拔出耳机,Audio输出通道会发生切换。如果音乐播放器不做处理,Audio输出是被切换到扬声器的,声音直接从Speaker发出。我们在编写程序时,要捕获并按照需求来处理这样的事转载 2016-09-09 17:16:37 · 1175 阅读 · 0 评论 -
回音消除技术概述
来源 http://av.imaschina.com一、 回音消除技术的基础概念 回音消除已经替代了早期的回音抑制,回音抑制最早始于20世纪50年代,在卫星通讯环境中用来控制由于比较长的信号延时而听到的回音。最早的回音消除理论在20世纪60年代在AT&T贝尔实验室中发展起来,但是直到20世纪70年代末,由于受到电子行业的技术能力限制,商用回音消除产品一直没有取得太大的发展。转载 2016-03-15 19:45:59 · 1449 阅读 · 0 评论 -
Speex编解码在Android上实现
以前在应用中使用到了Speex编解码,近来总结了一下Speex在Android上的实现。Speex是一套主要针对语音的开源免费,无专利保护的音频压缩格式。Speex工程着力于通过提供一个可以替代高性能语音编解码来降低语音应用输入门槛 。另外,相对于其它编解码,Speex也很适合网络应用,在网络应用上有着自己独特的优势。同时,Speex还是GNU工程的一部分,在改版的BSD协议中得到了很好的支持转载 2016-03-15 19:43:48 · 1055 阅读 · 0 评论 -
解密回声消除技术之二(应用篇)
(接《解密回声消除技术之一(理论篇)》)从应用平台来看,根据笔者多年的经验,可以把回声消除分为两大类:基于DSP等实时平台的回声消除技术和基于Windows等非实时平台的回声消除技术。两者的技术难度和重点是不一样的。三、基于DSP平台的回声消除技术回声消除技术传统的应用领域是各种嵌入式设备,包括各种电信网络设备和终端设备。网络设备比如交换机,网关等等,终端则转载 2016-03-15 19:18:30 · 664 阅读 · 0 评论 -
ALSA声卡驱动中的DAPM详解之一:kcontrol
DAPM是Dynamic Audio Power Management的缩写,直译过来就是动态音频电源管理的意思,DAPM是为了使基于linux的移动设备上的音频子系统,在任何时候都工作在最小功耗状态下。DAPM对用户空间的应用程序来说是透明的,所有与电源相关的开关都在ASoc core中完成。用户空间的应用程序无需对代码做出修改,也无需重新编译,DAPM根据当前激活的音频流(playback/c转载 2016-01-27 15:01:57 · 1279 阅读 · 0 评论 -
Linux ALSA 声卡驱动之八:ASoc中的Platform
1. Platform驱动在ASoC中的作用前面几章内容已经说过,ASoC被分为Machine,Platform和Codec三大部件,Platform驱动的主要作用是完成音频数据的管理,最终通过CPU的数字音频接口(DAI)把音频数据传送给Codec进行处理,最终由Codec输出驱动耳机或者是喇叭的音信信号。在具体实现上,ASoC有把Platform驱动分为两个部分:snd_soc_plat转载 2016-01-27 14:49:27 · 777 阅读 · 0 评论 -
Linux ALSA 声卡驱动之七:ASoc中的Codec
1. Codec简介在移动设备中,Codec的作用可以归结为4种,分别是:对PCM等信号进行D/A转换,把数字的音频信号转换为模拟信号对Mic、Linein或者其他输入源的模拟信号进行A/D转换,把模拟的声音信号转变CPU能够处理的数字信号对音频通路进行控制,比如播放音乐,收听调频收音机,又或者接听电话时,音频信号在codec内的流通路线是不一样的对音频信号做出相应的处理,例如音量控转载 2016-01-27 14:16:48 · 824 阅读 · 0 评论 -
Linux ALSA 声卡驱动之六:ASoc架构中的Machine
前面一节的内容我们提到,ASoC被分为Machine、Platform和Codec三大部分,其中的Machine驱动负责Platform和Codec之间的耦合以及部分和设备或板子特定的代码,再次引用上一节的内容:Machine驱动负责处理机器特有的一些控件和音频事件(例如,当播放音频时,需要先行打开一个放大器);单独的Platform和Codec驱动是不能工作的,它必须由Machine驱动把它们结转载 2016-01-27 10:43:56 · 527 阅读 · 0 评论 -
Linux ALSA 声卡驱动之五:移动设备中的ALSA(ASoc)
1. ASoC的由来ASoC--ALSA System on Chip ,是建立在标准ALSA驱动层上,为了更好地支持嵌入式处理器和移动设备中的音频Codec的一套软件体系。在ASoc出现之前,内核对于SoC中的音频已经有部分的支持,不过会有一些局限性: Codec驱动与SoC CPU的底层耦合过于紧密,这种不理想会导致代码的重复,例如,仅是wm8731的驱动,当时Lin转载 2016-01-27 10:28:07 · 522 阅读 · 0 评论 -
Linux ALSA 声卡驱动之四:Control设备的创建
声明:本博内容均由http://blog.youkuaiyun.com/droidphone原创,转载请注明出处,谢谢!Control接口Control接口主要让用户空间的应用程序(alsa-lib)可以访问和控制音频codec芯片中的多路开关,滑动控件等。对于Mixer(混音)来说,Control接口显得尤为重要,从ALSA 0.9.x版本开始,所有的mixer工作都是通过control接口转载 2016-01-27 10:21:29 · 468 阅读 · 0 评论 -
Linux ALSA 声卡驱动之二:声卡的创建
声明:本博内容均由http://blog.youkuaiyun.com/droidphone原创,转载请注明出处,谢谢!1. struct snd_card 1.1. snd_card是什么snd_card可以说是整个ALSA音频驱动最顶层的一个结构,整个声卡的软件逻辑结构开始于该结构,几乎所有与声音相关的逻辑设备都是在snd_card的管理之下,声卡驱动的第一个动作通常就是创建一个snd_c转载 2016-01-26 18:00:58 · 937 阅读 · 0 评论 -
Linux ALSA 声卡驱动之一:ALSA架构简介
声明:本博内容均由http://blog.youkuaiyun.com/droidphone原创,转载请注明出处,谢谢!一. 概述 ALSA是Advanced Linux Sound Architecture 的缩写,目前已经成为了linux的主流音频体系结构,想了解更多的关于ALSA的这一开源项目的信息和知识,请查看以下网址:http://www.alsa-project.org/。转载 2016-01-26 17:42:39 · 560 阅读 · 0 评论 -
Linux ALSA 声卡驱动之三:PCM设备的创建
声明:本博内容均由http://blog.youkuaiyun.com/droidphone原创,转载请注明出处,谢谢!1. PCM是什么PCM是英文Pulse-code modulation的缩写,中文译名是脉冲编码调制。我们知道在现实生活中,人耳听到的声音是模拟信号,PCM就是要把声音从模拟转换成数字信号的一种技术,他的原理简单地说就是利用一个固定的频率对模拟信号进行采样,采样后的信号转载 2016-01-27 10:06:32 · 493 阅读 · 0 评论 -
ALSA声卡驱动中的DAPM详解之二:widget-具备路径和电源管理信息的kcontrol
上一篇文章中,我们介绍了音频驱动中对基本控制单元的封装:kcontrol。利用kcontrol,我们可以完成对音频系统中的mixer,mux,音量控制,音效控制,以及各种开关量的控制,通过对各种kcontrol的控制,使得音频硬件能够按照我们预想的结果进行工作。同时我们可以看到,kcontrol还是有以下几点不足:只能描述自身,无法描述各个kcontrol之间的连接关系;没有相应的电源转载 2016-01-27 15:15:32 · 587 阅读 · 0 评论 -
ALSA声卡驱动中的DAPM详解之三:如何定义各种widget
上一节中,介绍了DAPM框架中几个重要的数据结构:snd_soc_dapm_widget,snd_soc_dapm_path,snd_soc_dapm_route。其中snd_soc_dapm_path无需我们自己定义,它会在注册snd_soc_dapm_route时动态地生成,但是对于系统中的widget和route,我们是需要自己进行定义的,另外,widget所包含的kcontrol与普通的k转载 2016-01-27 15:28:18 · 621 阅读 · 0 评论 -
ALSA声卡驱动中的DAPM详解之四:在驱动程序中初始化并注册widget和route
前几篇文章我们从dapm的数据结构入手,了解了代表音频控件的widget,代表连接路径的route以及用于连接两个widget的path。之前都是一些概念的讲解以及对数据结构中各个字段的说明,从本章开始,我们要从代码入手,分析dapm的详细工作原理:如何注册widget如何连接两个widget一个widget的状态裱画如何传递到整个音频路径中/*********************转载 2016-01-27 15:32:12 · 1021 阅读 · 0 评论 -
解密回声消除技术之一(理论篇)
一、前言因为工作的关系,笔者从2004年开始接触回声消除(Echo Cancellation)技术,而后一直在某大型通讯企业从事与回声消除技术相关的工作,对回声消除这个看似神秘、高端和难以理解的技术领域可谓知之甚详。要了解回声消除技术的来龙去脉,不得不提及作为现代通讯技术的理论基础——数字信号处理理论。首先,数字信号处理理论里面有一门重要的分支,叫做自适应信号处理。而在经典的教材里转载 2016-03-15 19:17:07 · 1186 阅读 · 0 评论 -
intel Baytrail 平台audio驱动match流程
ALSA和ASoC简介 ALSA,即 Advanced Linux Sound Architecture,高级 Linux 声音架构的简称,它在 Linux操作系统上提供了音频和 MIDI(Musical Instrument Digital Interface,音乐设备数字化接口)的支持。ASoC,即 ALSA System on Chip ,是建立在标准 ALS原创 2016-02-01 15:21:41 · 4212 阅读 · 0 评论 -
Android Audio System线性音量和对数音量的转换
Android的音频系统的代码中,应用程序对每个音频流的音量做出调整后,最终会转换为一个系数K,所有的音频数据在输出到硬件之前,都要乘以系数K,只要应用程序发出调整音量的调用,中间层的Audio System就会重新计算系数K的值。对应用程序来说,音量控制通常都是按照线性进行调整的,比如对于具有15级音量的音频流来说,我们预期每级的音量变化都是相当的,也就是说:从第5级调到第6级,和从第7级调到第转载 2016-01-27 16:05:25 · 1381 阅读 · 0 评论 -
Android Audio System之三:AudioPolicyService和AudioPolicyManager
引言 AudioPolicyService是Android音频系统的两大服务之一,另一个服务是AudioFlinger,这两大服务都在系统启动时有MediaSever加载,加载的代码位于:frameworks/base/media/mediaserver/main_mediaserver.cpp。AudioFlinger主要负责管理音频数据处理以及和硬件抽象层相关的工作。本文主要介绍Au转载 2016-01-27 15:59:59 · 1808 阅读 · 0 评论