自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 收藏
  • 关注

原创 Android调节音量分析

音量调节接口我们知道Android Audio的音量调节接口是通过AudioManager的setStreamVolume实现的,这个函数的实现在AudioService的setStreamVolume函数中,然后会调用到setStreamVolumeInt,这个函数首先通过streamState.setIndex发送音量调节的广播通知app更新UI。然后通过消息机制走到setDeviceVolume函数。注:如果要实现硬调音,也就是调节dsp音量不调节安卓音量,可以把config_useFixedVol

2021-01-19 13:32:59 2390

原创 Android耳返功能的实现

本文要介绍的是一个耳返功能,就是实现插入usb mic之后就打通一个usb mic到speaker的回环,把拿到的usb mic的数据直接写到下行。有两种方案,一种方式是audio hal拿到mic数据之后创建一个新的线程把数据写入到playback的pcm节点中,这种方式有个缺点就是需要在hal层写一个简单的混音算法(一般就是保证不越界的情况下两个数据相加),以及没办法处理重采样的问题。另一种方式是数据上报到AudioFlinger,这种方式就解决了重采样和混音的问题,但是这个方式的缺点就是延时相对来说会

2020-11-25 11:15:07 5018 2

原创 高通AudioHAL分析

这篇文章主要介绍一下AudioFlinger到hal层的一些工作流程。我们知道AudioFlinger从FIFO种读取到数据之后会调用hal的out_write函数去写入数据,我们就以这个函数为入口展开分析。out_write函数这个函数首先是有一些out->devices的判断,然后会判断是否是standby,如果是会调用start_output_stream去打开输出设备。这个函数后面再仔细分析,我们通过start_output_stream去看一下打开设备的流程。start_output

2020-08-31 16:45:49 6048

原创 Android音频管理:AudioFlinger分析

1.Android音频框架概述Audio是Android平台非常重要的一个组成部分,负责音频数据的输出采集,音频流的控制,音量调节,音频设备的管理等。我们先来简单介绍一下播放一首音乐的流程:首先应用层点击播放音乐的时候应用会通过mediaplayer接口去启动Android系统的播放器NuPlayer。其实mp3或者flac等格式的音频文件就是一个特殊的压缩文件,所以播放一个音频文件首先要做的就是要去解压缩,Nuplayer通过mediaextractor(高通的有自己的解封装模块mmparser)去解封

2020-08-17 09:04:33 15179 2

原创 Android Q共享音频输入

api介绍Android Q允许多个应用同时录音。下面摘录一下官方说明:当两个应用试图捕获音频时,它们都可以接收输入信号,或者其中一个可能会受到静默处理。四种主要方案如下:Google 助理 + 普通应用无障碍服务 + 普通应用两个普通应用语音通话 + 普通应用Google 助理 + 普通应用Google 助理属于特权应用,因为其预先安装在设备上并且拥有 RoleManager.ROLE_ASSISTANT 角色。拥有此角色的任何其他预安装应用都会受到类似处理。Android 根据

2020-06-17 16:16:09 7566 4

原创 慢动作视频不能播放问题

问题原因分析:这个问题的原因是audiotrack的setPlaybackRate函数调用isSampleRateSpeedAllowed_l去判断采样率是否满足需要的最小值,通过跟log发现计算出来的最小值(minFrameCount)大于mFrameCount,而mFrameCount是获取audio hal层的一个latency去计算sample rate,这个播放在hal层走的是offl...

2020-01-15 18:31:58 2649

原创 代码中添加audiodump方法

代码中添加audiodump方法抓取dump的命令:setprop vendor.vidc.dec.log.in 1setprop vendor.vidc.dec.log.out 1dumpsys | grep -iE ‘audio|media’ > data/vendor/media/audio_dump.txtadb shell dumpsys media.audio_fli...

2020-01-15 17:42:28 1739

原创 Windows下安装配置Django环境

Windows下安装配置Django环境安装pythonpython官网下载安装python3.6配置python3.6路径: 把python3.6的安装路径配置到path环境变量中python虚拟环境安装安装virtualenvpip install virtualenv新建virtualenv进入到py3目录的Scripts下面输入activate.bat进入该虚拟环境,...

2018-10-12 15:08:45 873

原创 高比特率音频格式兼容性较差

问题描述: mtk的项目播放高比特率的音频杂音,这个问题的本质是播放IEEE的float型32位pcm数据有噪音。 根本原因分析: mtk原始组件无法处理32位浮点数据,因此需要在提取器上进行。 解决方案: 在提取器上将32位浮点数据更改为16位数据,然后发送mtk原始组件,也就是在wavextractor里面把32位的数据转换成16位的数据,然后再去交给解码库解码。 代码实现:...

2018-08-21 15:34:32 660

原创 应用黑名单以及静默安装的实现

需求描述: 1.主要给上层应用提供一个添加应用黑名单接口,被添加到黑名单的应用用户无法对其进行安装。同时也可以对这个黑名单进行增加和删除 2.给上层应用提供一个静默安装卸载的接口,应用调用这个接口可以实现应用的静默安装和卸载。具体实现: 一.应用黑名单添加: 1.在PackageManagerService中创建一个数据库用来存储这些应用的包名,同时实现对于此数据库的增删改查。 2....

2018-08-21 15:17:19 1153

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除