android 9为ieee 802.11mc wi-fi协议添加了平台支持(也称为wi-fi往返时间,rtt),可以让你在应用中使用室内定位功能。在提供硬件支持的android 9设备上,在启动位置服务并勾选“允许获取地理位置信息”选项后,应用就可以使用rtt api测量与附近wi-fi接入点(ap)的距离。设备不需要连接到ap便可以使用rtt,而且为了保护隐私,只有手机能够确定距离,而ap不可以。
通过测量从设备到三个或更多ap的距离,你可以计算设备位置至1到2米的精度。这种精确度允许你创建更多新的体验:室内导航、基于位置的细粒度服务,例如,模糊语音控制;以及基于位置的资讯服务。
jobscheduler是android的一项核心服务,它可以帮助你针对低耗电模式、应用待机模式以及后台限制,妥善进行各种任务的调度。在android 9中,jobscheduler可以帮助用户处理与网络相关的任务,并与运营商单独提供的网络状态信号相协调。任务现在可以声明预估数据量、信号预取以及指定详细的网络要求——运营商可以报告网络状况是拥塞还是不计量,然后jobscheduler会根据网络状态管理作业。例如,当网络拥塞时,jobscheduler可能推迟大型网络请求;而在网络可以不计量使用时,则可以运行多种预加载作业(例如,预读标题)来改进用户体验。
用于nfc支付和安全交易的open mobile api
android 9将globalplatform open mobile api的实现添加至平台中。在支持的设备上,应用可以使用omapi api访问安全元素(se),以启用智能卡支付等安全服务。硬件抽象层(hal)提供了必要的api,用于枚举多种可用的secure elements (如ese, uicc等)。
android 9借助art运行时提高了应用的性能表现与运行效率。谷歌扩展了art对执行特征的使用,以优化应用并减少已编译应用代码的内存占用量。art现可使用特征文件信息在设备上重写dex文件,帮助多个常见应用的内存占用减少11%。谷歌期望借此减少系统dex内存使用量并加快应用启动时间。
kotlin优化
kotlin是android开发的一等编程语言,谷歌在kotlin性能方面进行了长期资源投入,同时持续加大对kotlin的支持,如优化kotlin代码性能。在android 9中,谷歌已经改进了一些编译器优化,尤其是那些针对循环的编译器优化,以实现更好的性能。谷歌还将继续与jetbrains合作,优化kotlin生成的代码。只需保持更新android studio上的kotlin插件,你就能获得所有最新的kotlin性能更新。
在android 9中,谷歌希望进一步打造更为现代的android平台与运行应用,进而推动谷歌在安全性、性能和稳定性这三方面长远目标的实现。
谷歌在去年就已经宣布过google play将要求所有应用在2018年11月之前针对android oreo (targetsdkversion 26或更高)进行更新。因此,若你的应用目标平台版本早于android 4.2 (api等级17),用户在安装你的应用时,系统会弹出警告对话框。
从android 9开始,你可以在支持多摄像头api的设备上通过两个或更多实体摄像头同时访问视频流;在配有双前置或双后置摄像头的设备上,实现单摄像头无法实现的创新功能:如无缝变焦、散景和立体视觉。该api还允许你调用可以在两台或更多台摄像头之间自动切换的逻辑或混合摄像头视频流。
摄像头的其他改进还包括:利用新的会话参数(session parameters)来减少初始捕捉时的延迟,表面(surface)共享技术让摄像头客户端无须重启视频流便可处理各种场景。此外,谷歌还加入了相关api,提供基于屏幕闪光灯支持及ois时间戳的访问权限。
android 9增加了对hdr vp9 profile 2的内置支持。现在,你可以在支持hdr的设备上,把启用hdr功能的视频内容分享给你的用户。
另外,谷歌还添加了对heif (heic) 图像编码的平台支持。heif是目前比较流行的一种的压缩格式,它改善了图片的压缩效果,并减少了图片的储存空间以及网络流量。引入平台支持后,开发者可以方便地从后台服务器传输并使用heif图像。一旦确定你的应用与该数据格式兼容,可用于分享或者显示,开发者可以尝试将heif设定为应用内图片的储存格式。此外,你还可以通过imagedecoder将jpeg文件转化为heic文件,或通过bitmap factory从jpeg文件中获取位图。你亦可使用androidx库中的heifwriter从yuv字节缓冲区、surface以及位图中写入heif静态图像。
开发者可以调用dynamics processing api对音频进行动态处理,通过分离出特定频率的声音,降低过大的音量,或者增强过小的音量,来改善应用的音频质量。比如说,即便说话者声音小,离麦克风远,而且外界环境十分嘈杂,你的应用依然可以有效捕捉并他/她的声音,并进行相应优化。该api提供了多声场、多频段的动态处理效果,包括一个预均衡器、一个多频段压缩器,一个后均衡器以及一个串联的音量限制器。
imagedecoder api让开发者可以通过一种更简单的方式将图像解码为位图或drawable。imagedecoder允许你从字节缓冲区、文件或uri创建位图或drawable。相比bitmapfactory有以下几个优势:支持精确缩放,支持单步解码至硬件存储器,支持解码后处理,以及动画图像解码。
android 9引入了统一的身份验证对话框,提示用户进行操作。应用不再需要自行设计对话框,而是通过调用biometricprompt api触发系统对话框。除指纹识别以外(包括屏幕下指纹识别),该api还支持面部识别以及虹膜识别。
若你的应用仍在使用自行设计的指纹识别对话框,谷歌建议尽快转用biometricprompt api。
android 9新增了高可信度用户确认(android protected confirmation),该功能通过可信执行环境(tee)确保提示文本被真实用户确认。只有在用户成功确认之后,tee才会签发该文本,让应用进行后续验证步骤。
谷歌还加入了一个新的keystore类——strongbox,并提供相应的api来支持那些提供了防入侵硬件措施的设备,比如独立的cpu,内存以及安全存储。你可以在keygenparameterspec里进行设置,决定是否把密钥交给strongbox安全芯片来保存。
android 9内置对dns over tls的支持:若网络dns服务器提供支持,设备会自动将dns查询升级为tls查询。用户可以通过更改“网络和互联网”设置下的隐私dns (private dns)模式来管理dns over tls行为。自行运行dns查询的应用可以通过调用新的linkproperties.isprivatednsactive() api来获取dns模式相关信息。
为了将所有网络流量从明文(未加密的http)逐步迁移至tls,谷歌更改了网络安全配置的默认设置,以阻止所有明文流量,强制应用通过tls建立网络连接,除非开发者明确允许特定域名使用明文传输。
android 9将进一步扩展编译器级别的安全缓解措施,借助运行时危险行为监测进一步加强平台安全建设。android 9通过控制流程完整性(cfi)技术解决了代码重用(code-reuse)和任意代码执行两大漏洞,并扩展了cfi在媒体框架和其它关键安全组件内的使用范围,如nfc与蓝牙。同时,android 9还针对android常见内核的llvm编译添加了cfi内核支持。
此外,android 9还将整数溢出检查器(integer overflow sanitizer)的使用范围扩展到其他库,以缓解内存损坏与信息泄露这两个问题。谷歌调高了检查器在以下两类库中的优先级:1)存在历史漏洞,2)需要处理复杂且不受信任的输入,如libui、libnl和libmediaplayerservice一类的库都在调整范围内。
android 9新加入多项机制,进一步加强对用户隐私的保护。系统禁止所有处于空闲状态的应用对话筒、摄像头和所有sensormanager传感器的访问。当应用的uid空闲时,麦克风将会报告“无音频信号”,传感器将会停止报告事件,应用使用的摄像头也会断开连接,并在应用试图访问时生成错误。在大多数情况下,这些限制不会对现有应用造成新的问题,但建议你从应用中移除此类传感器请求。
android 9还让用户控制是否允许访问平台build.serial识别码(它被read_phone_state权限保护)。自android 8.0以来,直接访问此识别码的功能已被弃用。你可以调用build.getserial()方法,访问build.serial识别码。
android 9中添加文字放大镜工具(magnifier widget),提升文本选择方面的用户体验。由于该放大器提供了可以在文本上方拖拽的文本放大面板,所以有助于用户精准地定位光标或文本选择手柄。该功能可以灵活运用在所有附加在窗口的视图上,个性化小部件和定制文本呈现均是不错的应用场景。该放大器工具还可以提供任何视图或界面的放大版本,而不仅仅是文本。
android 9赋予了手机强大的学习能力:系统能够根据用户在使用过程中展露的习惯与偏好,进行自我学习与适应——从长续航到人性化应用推荐,android 9可以智能预测,保持流畅的用户体验。
谷歌与deepmind合作推出了动态电量管理特性,利用机器学习技术对系统资源进行有限分配,专注于用户最常用的应用。如果你已经针对低耗电模式、应用待机模式以及后台限制对你的应用进行过相关优化,那么它应该已经能够和动态电量管理特性进行完美配合。
slices能够有效帮助用户节省操作时间,不需要通过全屏体验就能够使用应用的部分功能。借助配套ui模板,slices能够将应用内容以高动态、富交互的形式插入到多个使用场景中,比如google search和assistant。
app actions是一种全新的应用推荐方式。开发者可以利用这个功能,让更多人看到自己的应用并提高用户参与度。借助机器学习技术,app actions能对应用的语义意图和使用场景进行分析,并根据分析结果在适当的时机向用户推荐你的应用。
文本识别与smart linkify
在android 9中,谷歌对识别文本的机器学习模型进行了扩展,使其可以借助textclassifier api识别出类似日期或航班号这样的信息。此外,smart linkify允许开发者通过linkify api使用文本识别模块完成多项操作,比如对用户可采取的操作提出建议。smart linkify让系统在文本识别精确度与速度上有提升。
android 9.0对神经网络api进行了扩展与改进,进一步优化android对机器学习硬件加速的支持。神经网络api 1.1共增加了对9个新算子的支持,它们分别是pad、batchtospacend、spacetobatchnd、transpose、strided slice、mean、div、sub和squeeze。tensorflow lite就是一个已经用上此api的典型机器学习框架。
在android 9中,谷歌大幅度改进了用户界面,让它更简洁,更易于操作;对于开发者而言,这些变更能够让用户更加容易搜索,使用和管理你的应用。
android 9现在迎来了全新的系统导航,让多任务切换及关联应用探索变得更加简单。你只需要向上滑动屏幕就可以全屏预览最近使用过的应用,轻触预览页后便可以切换至所选应用。
android 9中加入了凹口屏支持,让你的应用可以充分利用最新全面屏。该功能可以在大部分应用中无缝工作,系统会通过调整状态栏高度将应用内容与屏幕缺口区域分开。如果你的应用含有沉浸式内容,你可调用display cutout apis确认缺口形状与位置,然后请求围绕缺口进行全屏布局。另外,谷歌还加入了开发者选项来模拟任意设备上的凹口形状,从而简化了应用支持凹口屏幕所需的构建以及测试流程。
今天早上谷歌正式面向全球推送了android 9 pie正式版系统更新,官方称,android 9利用人工智能技术,让你的手机更加智能、简洁与人性化。
来源: it之家(青岛)