@acess
关于录音,你说的有一部分是对的,我之前没看 Android Q 的文档,所以我上面的描述有误,刚才认真研究了下谷歌的官方文档。我重新表述一下:
– 录声音的问题
从 Android Q 开始提供 API,让第三方 app 也可以录制系统声音(也就是说,10 以前的版本是不行的)。
第三方 app 录制声音,有如下限制:
* 被录制声音的 app 如果 target API 是 28 或以下( 9 或以下),除非 app 在 manifest 里声明,否则默认 [禁止] 录制这些 app 的声音。
* 被录制声音的 app 如果 target API 是 29 ( Android Q ),或者是系统 app 录制声音,则允许录制游戏、媒体或者未知类别的声音。
* 应用可以声明禁止其他 app 录制声音,只要应用声明了,不管什么 app 都不能录音。
总之简单来说,除非 app 升级到了 target Android Q,否则除了系统 app 以外,第三方是不能录音的,而且仅限于媒体、游戏和未知类别(像通话什么的显然还是禁止录制的)。
关于这个限制,我觉得主要还是隐私、版权方面的考虑,因为如果允许 app 随便录音是非常危险的,所以在录音和录屏的时候会有弹窗警告并且在任务栏显示显眼的图标(比如流氓 app 有可能有办法获取微信语音或者通话内容)。另外版权的问题,这点老外很看中,比如 PS4 之类的游戏机提供录制功能,但是一些游戏也可以禁止你录制,或者一些歌曲没有声音。通话录音也是这样了,比如 iOS 和原生 Android 都不允许通话录音。
所以在 Android 10 以前,录屏软件的声音都是从麦克风获取的(我之前用的就这样),后来 10 自带了录屏功能,我就没关注了(所以我之前仍然谷歌没开放这个限制)。
********
– 关于录麦克风的问题
如我之前说的,两个普通 app 不允许同时录音(优先级较低的得到的声音是空白的),但是对于游戏直播的情况,只有一个 app 在录音(所以不会触发两个普通 app 不能同时获取麦克风声音的限制),那是可以做到又录屏又录声音的。
当然通话录音仍然是不允许的。