Android 的录音分享特性
一、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 的录音分享特性相关推荐
- 浅谈android应用之版本特性
文章目录 1. 前言 2. 版本介绍 2.1 Android 2.2 Froyo 2.2 Android 3.0 Honeycomb 2.3 Android 4.0 Ice Cream Sandwic ...
- 上百个Android开源项目分享
转载地址:[http://blog.csdn.net/bboyfeiyu/article/details/12234163] 上百个Android开源项目分享,希望对android开发有帮助. And ...
- android开发微信分享隐藏logo,前两天刚刚做了微信分享自定义logo和文字,做个标记,从零开始记录...
首先要有一个认证过的公众号,才会有权限 打开微信的jsskd 使用说明 在页面中引入微信的js文件 引入后 配置config wx.config({ debug: true, // 开启调试模式,调用 ...
- Android 实时录音和回放,边录音边播放 (KTV回音效果)
原文地址为: Android 实时录音和回放,边录音边播放 (KTV回音效果) 上一篇介绍了如何使用Mediarecorder来录音,以及播放录音.不过并没有达到我的目的,一边录音一边播放.今天就讲解 ...
- Android 4.0 平台特性
Android 4.0 平台特性 API等级:14 Android4.0 是一次重要的平台发布版,为用户和应用程序开发者增加了大量的新特性.在下面我们将讨论的所有新特性和API中,因为它将 Andr ...
- Android 4.0新特性(中文)
Android 4.0新特性(中文) 转自http://www.eoeandroid.com/thread-103300-1-1.html android4.0 SDK发布有一段时间了,在eoe上找到 ...
- android java 录音放大_Android实现录音功能实现实例(MediaRecorder)
本文介绍了Android实现录音的实例代码(MediaRecorder),分享给大家,具体如下: Android提供了两个API用于录音的实现:MediaRecorder 和 AudioRecord, ...
- 上百个Android开源项目分享 .
上百个Android开源项目分享,希望对android开发有帮助. Android PDF 阅读器 http://sourceforge.net/projects/andpdf/files/ 个人记账 ...
- Android麦克风录音的实现
最近公司有一个业务,就是通过IM发送音频,我用的是环信的第三方,自定义发送音频,写了一个录音的demo,录制完成之后发送. 这个Demo测试之后感觉还不错,分享一下. 一.添加权限: <uses ...
最新文章
- WinCE 和Win Mobile的关系
- php使用redis命令,PHP 使用 Redis
- 在 WxHtmlWindow 中调用默认浏览器
- CTreeCtrl控件的使用小记
- redis应用之——注册、登录
- Eclipse热部署插件(Jrebel) 下载安装教程
- 浅析ASP.NET回车提交事件[转]
- mysql 关联查询_Mysql查询优化器,再也不会因为该什么时候建立索引发愁了
- Chapter 3: 常用SQL * PLUS命令
- eclipse 环境 JUnit 测试框架(junit.framework.* 与 org.junit.*)
- Illustrator 教程,如何在 Illustrator 中编辑路径?
- Android中处理崩溃异常和分析日志的两种思路
- URLDecoder和URLEncoder详解
- 西门子PLC S7-200 SMART简介
- AC/DC、DC/DC转换器基础指南(二)
- Amnesia失忆症攻略(本篇+later+crowd)
- word无法自动修复计算机怎么办,电脑Word问题解决办法
- js replace使用方法
- matlab 逻辑回归实现,逻辑回归原理介绍及Matlab实现
- HDU 5976 Detachment 题解(贪心+逆元+前缀和,积)
热门文章
- Slowly Change Dimention 常见三种类型
- 【论文解读--MPC控制】Dynamic Locomotion in the MIT Cheetah 3 Through Convex Model-Predictive Control
- 计算机网络协议有那些,计算机网络协议有哪些
- 团体程序设计天梯赛-练习集-L1-031. 到底是不是太胖了
- Ubuntu14.04搭建LXR本地服务器阅读Linux内核代码
- ServiceNow主要模块介绍
- uniapp showToast
- photoshop---压缩图片大小/给人物换衣服
- 【生活小捣鼓】登录PC端某网站,需要他人(不在身边)手机扫二维码,这时候该怎么办?
- Java基础知识(八) Java平台与内存管理