做者: Don Turner, 开发技术推广工程师, Android Media 团队html
Android Q 新引入的 AudioPlaybackCapture API 容许应用获取其它应用中的音频。在这个 API 的帮助下,开发者将顺利处理多种业务场景,为用户提供轻松简便的内容分享与无障碍体验。android
部分常见用例包括:编程
不过,在某些状况下,开发者可能并不但愿本身应用的音频被获取。本文解释了音频获取对用户的影响,并介绍了一些防止获取的具体操做,在必要时,开发者们能够经过这些操做以禁止其它应用获取本身的音频。bash
为了获取其它应用的音频,应用必须首先从用户那里得到 RECORD_AUDIO 权限。app
此外,应用还需在获取开始前调用 MediaProjectionManager.createScreenCaptureIntent(),这会向用户显示以下对话框:ui
应用中的音频在默认设置下可否被获取,取决于应用的目标 API 等级,详细行为以下表所示:google
有时候,开发者可能并不但愿其它应用获取本身的音频,好比说,当音频包含:3d
应用的音频获取政策有两种:
1.针对全部音频。
2.针对单个音频播放器。
您能够经过如下两种方式,禁止第三方应用获取应用中的全部音频:
1.请将下方代码添加至 AndroidManifest.xml
<application
...
android:allowAudioPlaybackCapture="false"/>
复制代码
2.经过编程的方式,禁止获取行为: 在播放音频文件前,运行下方代码
AudioManager.setAllowedCapturePolicy(ALLOW_CAPTURE_BY_SYSTEM)
复制代码
若是您想限制某个播放器的获取功能,请在建立它时设置获取政策:
AudioAttributes.Builder.setAllowedCapturePolicy(ALLOW_CAPTURE_BY_SYSTEM)
复制代码
该方法适用于播放内容包含多类受权协议的状况,好比说,同时含有受版权保护的内容与免版税的内容。
在默认设置下,系统应用和部件可以获取用途为 MEDIA (媒体), GAME (游戏) 和 UNKNOWN (未知) 的音频文件,这会用于支持实时字幕等重要的无障碍功能。
在极少数状况下,开发者也但愿本身可以像管理第三方应用同样,禁止系统应用获取音频。请注意,当您禁止系统获取时,任何第三方应用的获取也将被禁止。
该操做只能经过程序方式实现,请您在播放音频前运行如下代码:
AudioManager.setAllowedCapturePolicy(ALLOW_CAPTURE_BY_NONE)
复制代码
如需禁止某个播放器获取音频,请在建立它时设置如下获取政策:
AudioAttributes.Builder.setAllowedCapturePolicy(ALLOW_CAPTURE_BY_NONE)
复制代码
若是应用的目标 API 等级为 28 或如下,并且您但愿容许音频获取,请在应用的 manifest.xml 文件中添加 android:allowAudioPlaybackCapture="true"
若是您但愿禁止部分或所有音频被获取,请根据上文所示操做更新应用。
更多内容,请前往 Android 开发者官方文档查看。
点击这里提交产品反馈建议