Android audio
文章平均质量分 79
维民所止1226
再出发
展开
-
Audio基础知识
全文来自网络搜集。3.1.1 声音处理 一般我们人耳能听到的声音频率为20-20kHz,对不同频段的感知和理解不一样,所以在音效处理方面有很多发挥的空间。 声音涉及到的面很多,包括物理、语言学等方面的研究。 声波是机械波的一种。机械波(MechanicalWave)是由机械振荡产生的,它的传播需要介质的支持。它有如下特点:l 介质本身并不会随着机械转载 2016-12-23 18:17:39 · 7589 阅读 · 4 评论 -
Android 7.0 Audio: AudioPolicyService和他的码农APM
AudioPolicyService负责音频策略处理,包括根据手机的各种状态和器件的存在、插拔状态、用户使能状态,给不同的audio stream选择不同的输入输出设备,控制不同设备的增益等。代码层面,该类则主要是维护3个线程looper,通过不同的辅助类,向client提供服务。 AudioPolicyService的相关类关系如下, 同AudioFlinger,A原创 2016-12-16 16:38:01 · 8801 阅读 · 6 评论 -
Android 7.0 Audio :通话中的音频调用接口
对于Audio在通话中的处理,根据不同的功能,有不同的调用路径, 1) 通话中 打开speaker 流程 enableSpeaker 对于在通话中打开扬声器,走图示1的调用路径, 在telephony部分,调用流程如下,InCallAudioManager. enableSpeaker--telecomAdapter.setAudi原创 2016-12-23 18:07:02 · 11995 阅读 · 1 评论 -
Android 7.0 Audio: 按键调节音量的调用过程
(只简单描述调用过程,需对照代码看,不画图了,也不贴代码)1.在key Event处理部分,Phonewindow会捕获到音量按键事件,Phonewindow.onkeydown-- MediaSessionLegacyHelper.getHelper(getContext()).sendAdjustVolumeBy 2.调节音量的时候要处理3件事情,界面显示、播放提示音、调节原创 2016-12-23 18:00:18 · 10235 阅读 · 0 评论 -
Android 7.0 Audio : Andriod Audio Overview
整个android平台的音频框架图如下, APP音乐播放器,录音,音效设置,电话,声音设置,视频播放器等使用声音的软件。 FrameworkMediaPlayer和MediaRecorder,AudioTrack和AudioRecorder,提供声音播放和录制。MediaPlayer/MediaRecorder功能更强大,也更易于使用。Au原创 2016-12-22 19:00:51 · 2606 阅读 · 0 评论 -
Android 7.0 Audio: AudioFlinger介绍和初始
对于AF的分析,先看其所在层的位置以及相关的交互类, 之前的版本,AF在Main_MediaServer.cpp里面启动,在android N,AF在main_audioserver.cpp里面启动, ALOGI("ServiceManager: %p", sm.get()); AudioFlinger::instanti原创 2016-12-22 18:53:33 · 8414 阅读 · 0 评论 -
Android 7.0 Audio: AudioSystem相关类浅析
AudioSystem在audio框架中的关系和位置如图所示, AudioSystem提供native接口,通过jni访问native提供的audio功能,在native层,有一个对应的AudioSystem.cpp文件 Jave层主要功能清单可见代码。 这里定义了音频流的类型、输入输出器件类型等。 对于比较复杂的,如音频输入输出器件的名称如下,原创 2016-12-21 11:09:50 · 5562 阅读 · 0 评论 -
Android 7.0 Audio: Mediaplayer
1.1.1 播放代码MediaPlayer类是android framework提供的多媒体类,可以用来播放音频、视频和流媒体,MediaPlayer包含了Audio和Video的播放功能。 其基本的方法和功能简介如下:MediaPlayer 构造方法 create 创建一个要播放的多媒体 getCurrentPosition原创 2016-12-14 14:31:23 · 3465 阅读 · 0 评论 -
Android N Audio: Mute Microphone流程
下图是通过AudioManager进行setMicrophoneMute的过程, 应用可通过AudioManager获取系统服务,再调用服务提供的接口进行mute操作, public void setMicrophoneMute(boolean on) { IAudioService service = getService(原创 2016-11-30 20:51:46 · 3844 阅读 · 0 评论 -
Android N Audio: setMasterVolume流程2
如上,应用部分通过setMasterVolume,最终调用到AF的setMasterVolume, status_t AudioFlinger::setMasterVolume(float value){ for (size_t i = 0; i AutoMutex lock(mHardwareLock); AudioHw原创 2016-12-05 20:33:22 · 2542 阅读 · 0 评论 -
Android N Audio: Audio Track play
对于AT在应用层开始play,到AF打开输出通道的调用流程如下图示,代码分析就不赘述了,AT:AudioTrack AF:AudioFlinger AS:AudioSystemAPII:AudioPolicyInterfaceImpl APS:AudioPolicyService APM:AudioPolicyManager 在openOutput之后, 经过艰难的跋涉,原创 2016-12-12 21:47:46 · 1946 阅读 · 0 评论 -
Android N Audio: AF的设备加载
audio_interfaces音频设备接口有如下几类,每个类下有具体的输入输入设备,static const char * const audio_interfaces[] = { AUDIO_HARDWARE_MODULE_ID_PRIMARY, AUDIO_HARDWARE_MODULE_ID_A2DP, AUDIO_HARDWARE_MOD原创 2016-12-08 19:34:52 · 2999 阅读 · 0 评论 -
Android N Audio: AudioTrack 向上通知的路径
在前面介绍创建AudioTrack的native实例后,会调用set,这里就在搭建进行native AudioTrack和java层进行通信的桥梁audioCallback,android_media_AudioTrack.cpp lpTrack = new AudioTrack(); case MODE_STREAM:原创 2016-12-14 17:37:05 · 887 阅读 · 0 评论 -
Android N Audio: AudioTrack 介绍
AudioTrack被用于PCM音频流的回放。它的使用方式如下, //bufferint bufsize = AudioTrack.getMinBufferSize(8000,//采样率: AudioFormat.CHANNEL_CONFIGURATION_STEREO,//双声道 Audi原创 2016-12-14 17:35:35 · 1311 阅读 · 0 评论