一、Android Q之前的录音功能

在之前的Android版本中,录音是不能并发的,这里涉及一个概念——音频焦点。

在录音场景下,申请的音频焦点为:Gain Transient Exclusive,也就是短暂且排他的焦点,这就决定了同时只能有一个应用在录音。

详情请参见我的另一篇博客。

二、Android Q的录音分享特性

这里区分两个概念:捕获和共享。

  • 捕获:应用A捕获应用B的音频
  • 共享:应用A和B共享音频输入的数据

2.1 AudioRecord和MediaRecord

在AudioRecord和MediaRecord API中,都有一个 setPrivacySensitive的属性,这个属性可以为True或者False。

  • 如果为True,说明这个应用的录音是隐私敏感的,它不能被其他应用获取
  • 如果为False,说明这个应用的录音是不敏感的,它可能分享

链接为: isPrivacySensitive

2.2 AudioSource

AudioSource定义了音频输入的来源,包括:

  • Default
  • Mic
  • Camcorder
  • Unprocessed
  • Remote Submix
  • Uplink
  • Downlink
  • Voice Call
  • Voice Communication
  • Voice Recognition
  • Voice Performance

其中Camcorder和Communication是默认隐私敏感的,而Voice_Call、Voice_Uplink、Voice_Downlink则不能设置PrivacySensitive属性。

Voice_Call、Uplink、Downlink没有明确说明,但是从直觉上来说,这几个应该也是隐私敏感的才对。

链接为:MediaRecorder.AudioSource

2.3 新的录音分享规则

新的录音分享功能以优先级的方式来进行管理,优先级的规则为:

  • 特权应用的优先级高于普通应用
  • 前台应用的优先级高于后台应用
  • 隐私敏感的应用优先级高于不隐私敏感的应用
  • 后打开的应用优先级高于先打开的应用
  • 两个普通的应用永远也无法进行录音共享
  • 在某些场景下,特权应用与普通应用可以共享录音

其中

  • 特权应用:预装在手机上的应用,包括:无障碍服务和语音助手(手机自带的录音机不知道算不算)
  • 普通应用:用户手动安装的应用

链接为: Sharing audio input

2.4 录音共享的场景

录音共享的场景主要有4个:

  • 语音助手与普通应用
当语音助手在后台,且普通应用没有使用隐私敏感的音频源时,可以同时录音
  • 无障碍服务与普通应用
当无障碍服务在前台,且普通应用没有使用隐私敏感的音频源时,可以同时录音
  • 普通应用与普通应用
- 两个普通应用永远也无法同时录音
- 隐私敏感属性高于前后台属性,也就是说如果一个隐私敏感的应用在后台,一个不隐私敏感的应用在前台,那么能获取录音数据的是隐私敏感的应用
- 如果两个应用的隐私敏感属性相同,那么后打开的应用获取录音数据
  • 语音通话与普通应用
- 通话应用永远能获取音频
- 如果另一个应用是无障碍服务,它也能获取音频
- 如果另一个应用是特权应用,且能够Capture_Audio_Output,那么它也能获取

Captrue_Audio_Output是一个系统保留的服务,三方应用是无法使用的。链接为:CAPTURE_AUDIO_OUTPUT

2.5 音频捕获的场景

音频捕获有两种情况:

  • 应用A捕获应用B播放的音频
  • 应用A捕获应用B的音频输入

2.5.1 捕获音频输出

通过Capture Playback方法,能够捕获其他应用输出的音频,但这依赖两个应用的设置。

在应用B的Audio Attributes属性里,需要设置Allow Capture By ***,可以设置为All、System或者None。

应用A则需要申请Audio Record权限,并设置捕获的音频属性,包括:

  • Usage:捕获特定Usage的音频,默认可以捕获Media、Game、Unkown
  • UID:捕获特定UID的音频

当然,也可以设置排除特定Usage、UID的音频。

2.5.2 捕获音频输入

通过Capture Audio Output方法,可以捕获Audio Source为:

  • Voice Call
  • Voice Uplink
  • Voice Downlink
  • Remote Submix

这个方法是系统保留的,三方应用是无法使用的。

三、iOS上类似的功能

iOS平台上的对应能力叫RePlayKit,可以理解为系统录屏功能,这个功能能够与某些应用进行录音共享。

  • 在RePlayKit 1上,它的架构是这样的,它返回的是Moive数据:

  • 在RePlayKit 2上,它的架构是这样的,它返回AV Sample数据。

iOS平台上的中断设计为:

  • 系统录屏比in App Recording接口的优先级更高
  • 系统录屏比录音的优先级更高

Android 的录音分享特性相关推荐

  1. 浅谈android应用之版本特性

    文章目录 1. 前言 2. 版本介绍 2.1 Android 2.2 Froyo 2.2 Android 3.0 Honeycomb 2.3 Android 4.0 Ice Cream Sandwic ...

  2. 上百个Android开源项目分享

    转载地址:[http://blog.csdn.net/bboyfeiyu/article/details/12234163] 上百个Android开源项目分享,希望对android开发有帮助. And ...

  3. android开发微信分享隐藏logo,前两天刚刚做了微信分享自定义logo和文字,做个标记,从零开始记录...

    首先要有一个认证过的公众号,才会有权限 打开微信的jsskd 使用说明 在页面中引入微信的js文件 引入后 配置config wx.config({ debug: true, // 开启调试模式,调用 ...

  4. Android 实时录音和回放,边录音边播放 (KTV回音效果)

    原文地址为: Android 实时录音和回放,边录音边播放 (KTV回音效果) 上一篇介绍了如何使用Mediarecorder来录音,以及播放录音.不过并没有达到我的目的,一边录音一边播放.今天就讲解 ...

  5. Android 4.0 平台特性

    Android 4.0 平台特性 API等级:14  Android4.0 是一次重要的平台发布版,为用户和应用程序开发者增加了大量的新特性.在下面我们将讨论的所有新特性和API中,因为它将 Andr ...

  6. Android 4.0新特性(中文)

    Android 4.0新特性(中文) 转自http://www.eoeandroid.com/thread-103300-1-1.html android4.0 SDK发布有一段时间了,在eoe上找到 ...

  7. android java 录音放大_Android实现录音功能实现实例(MediaRecorder)

    本文介绍了Android实现录音的实例代码(MediaRecorder),分享给大家,具体如下: Android提供了两个API用于录音的实现:MediaRecorder 和 AudioRecord, ...

  8. 上百个Android开源项目分享 .

    上百个Android开源项目分享,希望对android开发有帮助. Android PDF 阅读器 http://sourceforge.net/projects/andpdf/files/ 个人记账 ...

  9. Android麦克风录音的实现

    最近公司有一个业务,就是通过IM发送音频,我用的是环信的第三方,自定义发送音频,写了一个录音的demo,录制完成之后发送. 这个Demo测试之后感觉还不错,分享一下. 一.添加权限: <uses ...

最新文章

  1. WinCE 和Win Mobile的关系
  2. php使用redis命令,PHP 使用 Redis
  3. 在 WxHtmlWindow 中调用默认浏览器
  4. CTreeCtrl控件的使用小记
  5. redis应用之——注册、登录
  6. Eclipse热部署插件(Jrebel) 下载安装教程
  7. 浅析ASP.NET回车提交事件[转]
  8. mysql 关联查询_Mysql查询优化器,再也不会因为该什么时候建立索引发愁了
  9. Chapter 3: 常用SQL * PLUS命令
  10. eclipse 环境 JUnit 测试框架(junit.framework.* 与 org.junit.*)
  11. Illustrator 教程,如何在 Illustrator 中编辑路径?
  12. Android中处理崩溃异常和分析日志的两种思路
  13. URLDecoder和URLEncoder详解
  14. 西门子PLC S7-200 SMART简介
  15. AC/DC、DC/DC转换器基础指南(二)
  16. Amnesia失忆症攻略(本篇+later+crowd)
  17. word无法自动修复计算机怎么办,电脑Word问题解决办法
  18. js replace使用方法
  19. matlab 逻辑回归实现,逻辑回归原理介绍及Matlab实现
  20. HDU 5976 Detachment 题解(贪心+逆元+前缀和,积)

热门文章

  1. Slowly Change Dimention 常见三种类型
  2. 【论文解读--MPC控制】Dynamic Locomotion in the MIT Cheetah 3 Through Convex Model-Predictive Control
  3. 计算机网络协议有那些,计算机网络协议有哪些
  4. 团体程序设计天梯赛-练习集-L1-031. 到底是不是太胖了
  5. Ubuntu14.04搭建LXR本地服务器阅读Linux内核代码
  6. ServiceNow主要模块介绍
  7. uniapp showToast
  8. photoshop---压缩图片大小/给人物换衣服
  9. 【生活小捣鼓】登录PC端某网站,需要他人(不在身边)手机扫二维码,这时候该怎么办?
  10. Java基础知识(八) Java平台与内存管理