Google于2018年3月8日悄无声息的推送了Android P,Android P 为用户和开发者引入众多新特性和新功能。
利用 Wi-Fi RTT 进行室内定位
Android P 添加了对 IEEE 802.11mc Wi-Fi 协议(也称为 Wi-Fi Round-Trip-Time (RTT))的平台支持,从而让开发者的应用可以利用室内定位功能。
在提供硬件支持的 Android P 设备上,应用可以使用全新的 RTT API 来测量与附近支持 RTT 的 Wi-Fi 接入点 (AP) 的距离。 设备必须已启用定位并开启了 Wi-Fi 扫描(在 Settings > Location 下),同时开发者的应用必须具有 ACCESS_FINE_LOCATION
权限。 设备不需要连接至 AP 即可使用 RTT。 为保证隐私性,只有手机可以确定与 AP 的距离;AP 不具备该信息。
如果开发者的设备测量与 3 个或更多 AP 的距离,开发者可以使用一个多点定位算法来预估与这些测量值最相符的设备位置。 结果通常精准至 1 至 2 米。
//注:该处在2018.3.8的版本中还有bug,WIFI_RTT_RANGING_SERVICE没有添加到@ServiceName标记中WifiRttManager wifiRttManager = (WifiRttManager) getSystemService(Context.WIFI_RTT_RANGING_SERVICE); RangingRequest.Builder builder = new RangingRequest.Builder(); builder.addAccessPoint(); builder.addWifiAwarePeer(); wifiRttManager.startRanging(builder.build(), () -> {...}, new RangingResultCallback{...});
通过这种精确性,开发者可以打造新的体验,例如楼内导航、基于精细位置的服务,如无歧义语音控制(例如,“打开这盏灯”),以及基于位置的信息(如 “此产品是否有特别优惠?”)。
屏幕缺口支持
Android P 支持最新的全面屏以及为摄像头和扬声器预留空间的凹口屏幕。 通过全新的 DisplayCutout
类,可以确定非功能区域的位置和形状,这些区域不应显示内容。 要确定这些凹口屏幕区域是否存在及其位置,请使用getDisplayCutout()
函数。
全新的窗口布局属性layoutInDisplayCutoutMode
让开发者的应用可以为设备凹口屏幕周围的内容进行布局。 开发者可以将此属性设为下列值之一:
-
LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT
-
LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS
-
LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER
开发者可以按如下方法在任何运行 Android P 的设备或模拟器上模拟屏幕缺口:
-
启用开发者选项。
2.在 Developer options 屏幕中,向下滚动至 Drawing 部分并选择 Simulate a display with a cutout。
3.选择凹口屏幕的大小。
注:建议通过使用运行 Android P 的设备或模拟器测试凹口屏幕周围的内容显示。
通知
Android P 引入了多个通知增强功能,可供以 Android P 及更高版本作为目标平台的开发者使用。
附带了照片的 MessagingStyle。