抓取网页音频(Android系统捕获应用先决条件的方法和方法介绍(图))
优采云 发布时间: 2022-02-04 19:25抓取网页音频(Android系统捕获应用先决条件的方法和方法介绍(图))
Android10 引入了 AudioPlaybackCapture API。应用程序可以使用此 API 复制其他应用程序正在播放的音频。此功能类似于 screen采集,但 采集 对象是音频。主要用例是想要捕获正在播放的游戏音频的视频流应用程序。
请注意,Capture API 不会影响正在捕获音频的应用程序的延迟。
构建捕获应用程序先决条件
为确保安全和隐私,捕获播放音频功能施加了一些限制。为了能够捕获音频,应用程序必须满足以下要求:
捕捉音频
要从其他应用捕获音频,您的应用必须构造一个 AudioRecord 对象并向其添加 AudioPlaybackCaptureConfiguration。请按照以下步骤操作:
调用以构建 AudioPlaybackCaptureConfiguration。通过调用将配置传递给 AudioRecord。限制音频内容的捕获
应用程序可以使用以下方法限制它们可以捕获的音频:
请注意,您不能同时使用 addMatchingUsage() 和 excludeUsage() 方法。您必须选择其中之一。同样,您不能同时使用 addMatchingUid() 和 excludeUid()。
允许捕获播放的音频
您可以配置应用程序以防止其他应用程序捕获其音频。只有当应用程序满足以下要求时,才能从应用程序中捕获音频:
用法
生成音频的播放器必须,或。
捕获策略
播放器的捕获策略必须是 ,它允许其他应用程序捕获正在播放的音频。这可以通过多种方式完成:
如果满足这些先决条件,应用程序可以捕获播放器生成的任何音频。
注意:能否捕获应用的音频也取决于应用的targetSdkVersion。禁用系统捕获
上述允许捕获的保护仅适用于应用程序。默认情况下,Android 系统组件可以捕获正在播放的音频。其中许多组件是由 Android 供应商定制的,并支持辅助功能和字幕等功能。因此,我们建议应用程序允许系统捕获它们播放的音频。在极少数情况下,您可以将此捕获策略设置为 .
在运行时设置策略
在您的应用程序运行时,您可以调用 AudioManager.setAllowedCapturePolicy() 来更改捕获策略。如果调用该方法时MediaPlayer或AudioTrack正在播放音频,则对应的音频不受影响。您必须关闭并重新打开播放器或轨道才能使策略更改生效。
策略 = 清单 + AudioManager + AudioAttributes
由于可以在多个位置指定捕获策略,因此了解如何确定有效策略非常重要。您应该始终应用最严格的捕获策略。例如,即使 AudioManager#setAllowedCapturePolicy 设置为 ALLOW_CAPTURE_BY_ALL,清单中带有 setAllowedCapturePolicy="false" 的应用也绝不会允许非系统应用捕获其音频。同样,如果 AudioManager#setAllowedCapturePolicy 设置为 ALLOW_CAPTURE_BY_ALL 并且清单设置为 setAllowedCapturePolicy="true",但媒体播放器的 AudioAttributes 是使用 AudioAttributes.Builder#setAllowedCapturePolicy(ALLOW_CAPTURE_BY_SYSTEM) 构建的,非系统应用将无法捕获此媒体播放播放器播放的音频。
下表总结了清单属性和活动策略的影响:
allowAudioPlaybackCaptureALLOW_CAPTURE_BY_ALLALLOW_CAPTURE_BY_SYSTEMALLOW_CAPTURE_BY_NONE
真的
任何应用程序
仅限系统
没有捕获
错误的
仅限系统
仅限系统
没有捕获