谷歌也会删除对现有API的访问权限或限制现有API的功能

2020-06-30 10:21:34 来源: INeng财经

谷歌奉献,谷歌带走。每个新的Android版本都会引入许多新的API,这些API可以改善现有应用程序的功能或打开新的应用程序类别。另一方面,Google也会删除对现有API的访问权限或限制现有API的功能,以提高Android平台的安全性。Android Q版本没有什么不同,我们已经谈论了很多有关共享存储,剪贴板访问,通知和其他API的更改。在今年的Google I / O开发者大会上,Google宣布了Android Q中的新API,这些API对用户和移动游戏开发者特别有趣:AudioPlaybackCapture和Thermal API。

移动游戏是一个巨大的行业,没有任何迹象表明很快会放缓,特别是在美国,中国和印度等市场。随着越来越多的人在智能手机上花费时间玩游戏和社交媒体,人们希望在线共享游戏体验也就不足为奇了。

Android从一开始就支持截图,但是自从引入MediaProjection API的 Android 5.0 Lollipop以来,才支持捕获屏幕视频。遗憾的是,此API不允许第三方应用程序在其他应用程序中记录内部音频输出,从而迫使第三方屏幕录像机记录从设备的麦克风输出的外部音频。三星和华为等OEM 提供了系统应用程序来在屏幕录制期间录制内部音频输出,但是其他设备的所有者要正确录制其设备的视频和音频输出的唯一方法是购买第三方配件。幸运的是,Google终于在Android Q中为第三方应用程序引入了一种从其他应用程序录制音频的方法。

Google将AudioPlaybackCapture API描述为屏幕捕获的类似物,但用于音频录制。尽管到目前为止唯一可使用该API的应用是Google的Live Caption,这是一种可访问性工具,可为设备上正在播放的任何视频添加字幕,但该API的文档指出,其主要目的是允许流媒体应用捕获正在播放的音频。游戏。想想移动游戏玩家将他们的会话流式传输到Twitch或YouTube等服务上。该API旨在不影响正在捕获音频的应用程序的音频等待时间,使其非常适合于游戏记录,因此音频和视频不会同步。

与Android早期不同,Google对新API的态度更为谨慎。仅当捕获音频的应用程序和进行捕获的应用程序都满足特定要求时,才可以使用AudioPlaybackCapture。以下是这些要求的摘要:

为了使第三方应用程序捕获应用程序的音频,必须满足以下要求:

该应用程序的清单中必须将allowAudioPlaybackCapture设置为true或未设置。(对于定位到Android Q的应用程序,默认情况下为true,但是可以针对定位到Android Pie的应用程序进行手动设置。)

产生音频的应用程序的音频使用类型必须为USAGE_MEDIA,USAGE_GAME或USAGE_UNKNOWN。

音频捕获策略(setAllowedCapturePolicy)必须设置为ALLOW_CAPTURE_BY_ALL。可以在运行时设置此策略,但是必须重新开始播放才能使策略更改生效。如果设置了ALLOW_CAPTURE_BY_SYSTEM,则只有系统应用程序可以录制音频(但受到限制,因为它们无法保存音频,将其传递给第三方应用程序或以大于16kHz的16位单声道质量录制)。

为了使一个应用程序录制另一个应用程序的音频,必须满足以下要求:

该应用程序必须弹出MediaProjectionManager.createScreenCaptureIntent提示,并且用户必须接受它。

该应用必须拥有RECORD_AUDIO权限。

该应用程序必须与要录制音频的应用程序位于同一用户配置文件中。

我可以想象,大多数游戏将允许使用此新API的应用捕获其音频,但是游戏可能需要一些时间才能更新以支持它。另一方面,不要因为授权问题而期望任何音乐或视频流应用程序支持第三方的此API。但是,如果应用程序将其音频捕获策略设置为ALLOW_CAPTURE_BY_SYSTEM,则Google施加的限制意味着音乐和视频流应用程序的开发人员应该可以通过系统启用音频捕获来改善可访问性。

要了解有关Android Q中AudioPlaybackCapture API的更多信息,请查看此页面。

在Android Q中使用Thermal API监控节流

热节流几乎完全由系统管理,没有来自受节流影响最大的应用程序的输入甚至通知。如果设备的资源过于紧张,则大多数设备都会限制CPU和GPU的速度,从而损害游戏的性能。作为游戏开发人员,您真的无能为力,只能在更改任何设置之前警告用户有关更改可能会对性能产生潜在影响的警告。

但是,借助Android Q中新的Thermal API,应用程序可以收到针对性能节制的不同阶段的回调,从而使开发人员有机会通过减少需要大量CPU,GPU或调制解调器使用的活动来帮助减轻设备的压力。例如,游戏可以动态降低分辨率,直到设备不再受GPU限制为止,或者Maps应用可以禁用增强现实导航等增强功能以减少CPU负载。

要使用此新API,应用程序会在PowerManager(addThermalStatusListener)中注册一个侦听器,然后系统会向应用程序发送以下热量状态代码之一:

THERMAL_STATUS_NONE:“没有节流。”

THERMAL_STATUS_LIGHT:“在不影响UX的情况下进行光调节”。

THERMAL_STATUS_MODERATE:“在不严重影响UX的情况下进行适度的调节。”

THERMAL_STATUS_SEVERE:“严重影响用户体验的节流阀。”

THERMAL_STATUS_CRITICAL:“平台已尽一切努力来降低功耗。”

THERMAL_STATUS_EMERGENCY:“平台上的关键组件由于热条件而关闭。设备功能将受到限制。”

THERMAL_STATUS_SHUTDOWN:“需要立即关闭。

对Thermal API的支持显然需要Android Q,但另一个要求是增加了新的HAL。谷歌表示,Android Q上的Pixel设备(即Pixel,Pixel XL,Pixel 2,Pixel 2 XL,Pixel 3,Pixel 3 XL,Pixel 3a和Pixel 3a XL)支持Thermal API,但Google正在努力增加支持对于其他设备。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。