栗子:public AudioRecord audiorecord;
audiorecord = new AudioRecord(MediaRecorder.AudioSource.REMOTE_SUBMIX,16000, AudioFormat.CHANNEL_IN_STEREO, AudioFormat.ENCODING_PCM_16BIT, minBufferSize);先说下REMOTE_SUBMIX工作原理:其实SUBMIX可以截取speaker/headphone/lineout等,分别对应AUDIO_DEVICE_OUT_SPEAKER/AUDIO_DEVICE_OUT_WIRED_HEADPHONE
/AUDIO_DEVICE_OUT_LINE.播放音乐时,Android系统直接创建的是MixerThread,不停往codec喂数据,然后声卡就播放出声音,
这时如果new AudioRecord(REMOTE_SUBMIX),Android会创建一个DuplicatingThread线程,从MixerThread线程里拷贝一份播放音乐
的数据,首先DuplicatingThread会把copy过来音频数据写到一块ringbuffer里,SUBMIX就从ringbuffer里读取数据,
这里读取的数据就是SUBMIX得到的数据,目前发现一个bug,就是在DuplicatingThread线程中
write的速度太慢,导致read的速度大于write速度,会导致每次读都丢2bytes的数据(待解决),
当播放音乐的时候同时,使用SUBMIX截取speaker音频数据时,流音量会降低(已知bug).今天我们来看下REMOTE_SUBMIX原理,废话不多说࿰

Android REMOTE_SUBMIX原理(九)相关推荐

  1. Android10.0 Binder通信原理(九)-AIDL Binder示例

    摘要:本节主要来讲解Android10.0 Binder中如何使用AIDL 阅读本文大约需要花费20分钟. 文章首发微信公众号:IngresGe 专注于Android系统级源码分析,Android的平 ...

  2. 【转】Android Activity原理以及其子类描述,androidactivity

        Android Activity原理以及其子类描述,androidactivity 简介 Activity是Android应用程序组件,实现一个用户交互窗口,我们可以实现布局填充屏幕,也可以实 ...

  3. Android测试原理(三)——使用Eclipse的ADT进行测试

    原文链接:http://developer.android.com/tools/testing/testing_eclipse.html 1.使用Eclipse的ADT进行测试 这次的主题介绍了怎么使 ...

  4. Android 颜色渲染(九) PorterDuff及Xfermode详解

    Android 颜色渲染(九)  PorterDuff及Xfermode详解 之前已经讲过了除ComposeShader之外Shader的全部子类, 在讲ComposeShader(组合渲染)之前,  ...

  5. android 开发art,Android应用开发之Android 系统启动原理(art 虚拟机)

    本文将带你了解Android应用开发之Android 系统启动原理(art 虚拟机),希望本文对大家学Android有所帮助. Android   系统启动原理(art 虚拟机) 一.虚拟机的启动 A ...

  6. android 实例源码解释,Android Handler 原理分析及实例代码

    Android Handler 原理分析 Handler一个让无数android开发者头疼的东西,希望我今天这边文章能为您彻底根治这个问题 今天就为大家详细剖析下Handler的原理 Handler使 ...

  7. Android RecyclerView(九)滑动监听综述

    Android RecyclerView(九)滑动监听 1 RecyclerView 的滑动监听 1.1 RecyclerView 设置滑动监听 mRecyclerView.setOnScrollLi ...

  8. Android布局原理与优化

    Android布局原理与优化 目录: 绘制原理 CPU与GPU Android 图形系统的整体架构 RenderThread 硬件加速和软件绘制 invalidate软件绘制流程 invalidate ...

  9. android view交替动画,Android View原理(View树遍历,View重绘,View动画)

    一.屏幕绘图基础 Android中的GUI系统是客户端和服务端配合的窗口系统,即后台运行了一个绘制服务,每个应用程序都是该服务端的一个客户端,当客户端需要绘制时,首先请求服务端创建一个窗口,然后在窗口 ...

最新文章

  1. linux安装google chrome
  2. 2021-03-28 收敛性常用一阶微分方程
  3. Intellij IDEA 使用学习
  4. 【渝粤教育】国家开放大学2018年秋季 2202T公共行政学 参考试题
  5. php stomp rabbitmq,docker环境下的RabbitMQ部署,Spring AMQP使用
  6. 一维卷积神经网络、卷积神经网络的基础知识
  7. python时域信号特征提取(各种因子)
  8. Android 程式开发:(二十)内容提供者 —— 20.6 自定义ContentProvider的使用
  9. 子div撑不开父div的几种解决方法
  10. android duiqi文字底部,Android中的文本/布局对齐(textAlignment,gravity)
  11. 软件工程:数据流图和结构图怎么画?
  12. java kdj macd_很好用的KDJ与MACD结合指标
  13. 对于提高团队开会效率的看法
  14. vue 微信登录(使用了vant)
  15. L1-054 福到了 (15 分)C语言
  16. 探索Whisper语音识别
  17. 程序猿健身之腹肌~基本版本
  18. c语言第一章,C语言修正版第一章
  19. [FineReport帆软]决策报表frm中实现添加监控声音报警
  20. 2018世界人工智能蓝皮书:看中国到底有多强!

热门文章

  1. NS3网络仿真(6): 总线型网络
  2. Appnium学习日记一(下载安装Appnium)
  3. linux应用编程之进程间同步
  4. IOS 之 NSBundle 使用
  5. 最火的开源项目及编程语言
  6. php利用ftp上传视频,PHP用FTP类上传文件视频等的简单实现方法
  7. 从Asp.net实现资源全球化和本地化
  8. VC++开发学习一(MFC中的CString类的常用的方法技巧介绍)
  9. android自动化测试抖音,全自动化的抖音启动速度测试
  10. python起简易http server