Android P 新功能和API介绍


Android P 为用户和开发人员引入了强大的新功能和新的用户接口,本文档将重点介绍这些新功能和新的用户接口。

目录

使用Wi-Fi RTT进行室内定位


Android P 增加了对IEEE 802.11mc Wi-Fi协议 ( 也称为 Wi-Fi 往返时间协议 RTT :Wi-Fi Round-Trip-Time ) 的支持,让您可以利用应用程序进行室内定位。

在支持Android P 的硬件设备上,您的应用可以使用新的RTT API来测量与附近支持 RTT的 Wi-Fi 接入点(AP)的距离。设备必须启用位置并启用Wi-Fi扫描(在设置>位置下),并且您的应用必须具有ACCESS_FINE_LOCATION 的权限。设备不需要连接到接入点来使用 RTT。为了保护使用者的隐私,手机能够确定到 AP 的距离,但AP不会记录用户的信息。

如果您的设备检测到3个或更多有效的AP,则可以使用多点定位算法来估算最适合这些测量值的设备位置。其结果通常精确到1至2米范围内。

通过这种准确性,您可以构建出新的特性,如室内导航,基于位置的细微服务,如消除歧义的语音控制(例如,“打开这个灯”)和基于位置的信息(如“此产品是否存在的特别优惠?”)。

返回目录

支持显示切割


Android P 支持最新的边缘到边缘( edge-to-edge )屏幕,并为原来相机和扬声器区域提供显示屏,。要确定这些切割区域的存在的位置,请使用getDisplayCutout() 方法新的窗口布局属性 layoutInDisplayCutoutMode允许您的应用程序将其内容布置在设备的切口周围。您可以将此属性设置为以下值之一:

  • LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT
  • LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS
  • LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER

您可以在运行Android P的任何设备或模拟器上模拟屏幕截图,如下所示:

  1. 启用开发者选项。
  2. 在开发人员选项屏幕中,向下滚动到绘图部分,然后选择模拟带有剪切的显示。
  3. 选择切口的大小。

注意:我们建议您使用运行Android P的设备或模拟器测试切割区域的内容显示

返回目录

通知增强


Android P 引入了多项对通知的增强功能,所有这些功能都可供 Android P 及更高版本的开发人员使用。

增强的信息体验


从Android 7.0(API级别24)开始,您可以添加一个操作来回复邮件或直接从通知中输入其他文本。Android P通过以下方式增强了此功能:

  • 支持图像:Android P 现在可以在手机上的消息通知中显示图像,您可以使用setData() 在消息上显示图像。
  • 会话参与者的简化支持:新 Notification.Person 类用于识别参与对话的人员,包括他们的虚拟形象和URI。许多其他的API,比如 addMessage()现在利用这个Person 类而不是CharSequence
  • 将答复另存为草稿:EXTRA_REMOTE_INPUT_DRAFT 当用户无意中关闭消息通知时,您的应用可以检索系统中未发送的答复 。您可以使用此额外功能预先填充应用中的文本字段,以便用户完成回复。
  • 确定对话是否是群组对话:您可以setGroupConversation() 用来有目的地将对话标识为群组对话或非群组对话。
  • 为意图设置动作:setSemanticAction() 方法允许您为动作提供语义含义,如标记为读取,删除,回复等。
  • SmartReply:Android P 用 RemoteInput.setChoices() 向用户提供一系列标准响应,用来支持快捷回复。

频道设置,广播和免打扰


Android O 引入了Notification Channels, 可让您为要每种类型的通知创建一个用户可自定义的频道。Android P 通过以下更改简化了通知渠道设置:

  • 阻止频道组:用户现在可以在应用的通知设置中阻止整组频道。您可以使用该 isBlocked() 方法来确定某个组何时被阻止,不发送该组中频道的任何通知。此外,您的应用可以使用新getNotificationChannelGroup() 方法查询当前频道组设置 。
  • 新的广播意图类型:Android系统现在在通知频道和频道组的阻塞状态发生变化时发送广播意图。拥有被阻止的频道或群组的应用可以监听这些意图并作出相应的反应。有关这些意图操作和额外信息的更多信息,请参阅参考中更新的常量列表 NotificationManager 。有关对广播意图作出反应的信息,请参阅 广播。
  • 新的免打扰优先级类别: NotificationManager.Policy 有两个新的策略常量:( PRIORITY_CATEGORY_ALARMS 警报优先)和 PRIORITY_CATEGORY_MEDIA_SYSTEM_OTHER (媒体,系统和游戏声音优先)。

返回目录

多相机支持和相机更新


现在,您可以从运行Android P的设备上的两个或更多物理摄像头同时访问流。在具有双前置或双后置摄像头的设备上,您可以创建无法使用单个摄像头实现的创新功能,例如无缝缩放,散景,和立体视觉。该API还允许您调用逻辑或融合的相机流,以便在两台或更多台相机之间自动切换。

相机的其他改进包括新的会话参数有助于减少初始捕捉期间的延迟,而Surface共享可让相机客户端处理各种使用情况,而无需停止和启动相机流式传输。我们还添加了基于显示器的闪光灯支持的 API 以及访问应用程序级图像稳定和特殊效果的OIS时间戳。

Android P还支持支持deveices上的外部USB / UVC相机。

返回目录

ImageDecoder用于位图和绘图


Android P引入 ImageDecoder 了用于解码图像的新方法。您应该使用 ImageDecoder解码图像而不是BitmapFactory和 BitmapFactory.Options API。

ImageDecoder可以让你创建一个Drawable或一个 Bitmap字节缓冲区,一个文件或一个URI。要解码图像,首先调用createSource() 编码图像的来源。然后,通过调用 decodeBitmap() 或 decodeDrawable() 传递ImageDecoder.Source对象来创建一个 Bitmap或一个 Drawable。要更改默认设置,请传递OnHeaderDecodedListener给 decodeBitmap() 或decodeDrawable()ImageDecoder调用onHeaderDecoded() 图像获取默认宽度和高度。如果编码图像是动画GIF或WebP,则 decodeDrawable() 返回Drawable,(它AnimatedImageDrawable类的一个实例)

您可以使用不同的方法来设置图像属性。这些包括:

  • 要将解码图像缩放到确切的大小,请调用setResize()设置目标尺寸。您还可以使用样本大小缩放图像。直接传递样本大小setResize(),或者调用getSampledSize()找出ImageDecoder最有效的样本。
  • 要在缩放的图像范围内裁剪图像,请调用setCrop()
  • 创建一个可变的Bitmap可调用setMutable(true)

ImageDecoder还可以让您为图像添加自定义和复杂的效果,如圆角或圆圈蒙版。setPostProcessor() 与PostProcessor 类的一个实例一起使用来执行所需的任何绘图命令。

返回目录

动画


Android P引入了一个新 AnimatedImageDrawable 类来绘制和显示GIF和WebP动画图像。 AnimatedImageDrawable与AnimatedVectorDrawable类似 ,RenderThread驱动动画AnimatedImageDrawable。RenderThread 使用工作线程进行解码,因此解码不会干扰RenderThread。此实现允许您的应用拥有动画图像,而无需管理其更新或干扰应用的UI线程。

一个AnimagedImageDrawable可以用新的ImageDecoder解码 。以下代码片段显示了如何使用ImageDecoder来解码AnimatedImageDrawable

Drawable d = ImageDecoder.decodeDrawable(...);
if (d instanceof AnimatedImageDrawable) {
    ((AnimatedImageDrawable) d).start();   // Prior to start(), the first frame is displayed
}

ImageDecoder有几种方法可以让你进一步修改图像。例如,您可以使用 setPostProcessor() 方法来修改图像的外观,例如应用圆形蒙版或四舍五入的角。

返回目录

HDR VP9视频,HEIF图像压缩和媒体API


Android P 增加了对高动态范围(HDR)VP9 Profile 2的内置支持,因此您现在可以通过YouTube,Play电影和其他支持HDR的设备向用户提供支持HDR的电影。

Android P 增加了对 HEIF(heic)图像编码支持,以节省存储和网络数据(使用MediaMuxerMediaExtractor类)。借助Android P 设备上的平台支持,您可以轻松发送和利用来自后端服务器的HEIF图像。一旦确定您的应用程序与此数据格式兼容以供共享和显示,请在您的应用程序中尝试使用HEIF格式存储图像。您可以使用ImageDecoder 或 BitmapFactory 执行 jpeg-to-heic 转换。

Android P 还增加了MediaPlayer2,该播放器支持使用的播放列表DataSourceDesc。创建一个MediaPlayer2使用实例MediaPlayer2.create()

Media metrics 现在也可从AudioTrackAudioRecordMediaDrm类。

Android P为MediaDRM课程添加了新的方法来 获取指标,HDCP级别,安全级别和会话数量,并为安全级别和安全停靠添加更多控制。有关详细信息,请参阅API差异报告。

返回目录

Job Scheduler中的数据流量管理


Android P 的 JobScheduler已得到改进,可以更好地为用户处理与网络相关的作业,并与运营商分别提供的网络状态信号协调工作。

任务现在可以声明其估计的数据大小预取信号并指定详细的网络要求 – 运营商可以将网络报告为拥塞 或未计量JobScheduler然后根据网络状态管理工作。例如,当网络拥塞时, JobScheduler可能推迟大型网络请求。在未计量的网络上时,JobScheduler可以运行预取作业以改善用户体验,例如通过预取标题。

添加任务时,请确保使用setEstimatedNetworkBytes(), setIsPrefetch()setRequiredNetwork()在适当时帮助JobScheduler正确处理任务。执行任务时,请务必使用Network返回的对象 JobParameters.getNetwork()。否则,您将隐式使用设备的默认网络,这可能不符合您的要求,导致意外的数据使用情况。

返回目录

神经网络API 1.1


Neural Networks API在Android 8.1(API等级27)中引入,可加速Android上的设备上机器学习。Android P 扩展并改进了API,增加了对九种新操作的支持 – Pad,BatchToSpaceND,SpaceToBatchND,Transpose,Stripped Slice,Mean,Div,Sub和Squeeze。

返回目录

自动填充框架


Android 8.0(API级别26)引入了自动填充框架,这使得在应用中填写表单变得更加容易。Android P 引入了自动填充服务可以实现的多项改进,以在填写表单时进一步增强用户体验。有关更多详细信息,请参阅自动填充框架页面。

返回目录

安全增强


Android P引入了许多新的安全功能,包括统一的指纹验证对话框和敏感交易的高保证用户确认。有关更多详细信息,请参阅 安全更新页面。

Android备份的客户端加密


Android P 支持使用客户端秘密对Android备份进行加密。由于此隐私措施,需要设备的 PIN 模式或密码才能从用户设备备份的数据中恢复数据。要详细了解此新功能背后的技术,请参阅 Google Cloud Key Vault Service 白皮书。

要了解有关在Android设备上备份数据的更多信息,请参阅 数据备份概述。

返回目录

无障碍


Android P引入了一些操作,属性和方法,以便您更轻松地使用辅助功能框架,以增强用户的辅助功能。

要详细了解如何使您的应用更易于访问并构建辅助功能服务,请参阅辅助功能。

返回目录

导航

我们添加了新的属性,您可以使用这些属性来改善从屏幕一部分到另一部分的导航。您可以使用这些属性来帮助用户在应用中浏览文本,并快速将用户带到应用界面的特定部分。

例如,在购物应用程序中,屏幕阅读器可以将用户直接从一个交易类别导航到下一个类别,而无需移动这些类别中的每个项目。

辅助功能窗格标题


在Android P之前,无障碍服务无法轻易确定屏幕的特定部分何时更新,例如片段转换期间。

在Android P中,部分现在有称为可访问性窗格标题的标题。辅助功能服务可以接收对这些标题的更改,使他们能够提供有关已更改内容的更详细信息。

要指定节的标题,请使用新 android:accessibilityPaneTitle 属性。您还可以更新在运行时使用的UI部分的标题setAccessibilityPaneTitle()。例如,您可以为Fragment对象的内容区域提供标题 。

基于标题的导航


如果您的应用显示包含逻辑标题的内容,请将新 android:accessibilityHeading 属性设置trueView代表这些标题的实例 。这允许用户从一个标题导航到下一个标题。当用户与屏幕阅读器交互时,此导航过程特别方便。

组导航和输出


屏幕阅读器传统上使用该 android:focusable属性来确定屏幕的哪些部分应该被读取为单位。有时,这些屏幕阅读器需要将多个View对象的内容指定 为一个单元。这样,用户就可以理解这些视图在逻辑上相互关联。

在Android P之前,您需要将每个内部View对象标记为不可聚焦,并将包含它们的组标记 为可聚焦。这种安排导致一些View标记为焦点的事件使键盘导航变得更加麻烦。

在Android P中,在使对象可聚焦的副作用不理想的情况下,您可以使用新 android:screenReaderFocusable属性代替android:focusable属性View。屏幕阅读器应该关注所有已设置android:screenReaderFocusableandroid:focusable要设置的元素true

便利行动


Android P支持代表用户执行便捷操作:

与工具提示互动
辅助功能框架中的新功能使您可以访问 应用界面中的工具提示。使用 getTooltipText() 阅读工具提示的文本,并使用新的 ACTION_SHOW_TOOLTIP 和ACTION_HIDE_TOOLTIP 指示的情况下,View可以显示或隐藏自己的工具提示。
新的全局动作
Android P AccessibilityService 中引入了对两个新设备操作的支持 。现在,您的服务可以分别帮助用户锁定设备并使用GLOBAL_ACTION_LOCK_SCREEN 和GLOBAL_ACTION_TAKE_SCREENSHOT 操作截取屏幕截图 。

窗口更改细节


当应用程序同时重绘多个窗口时,Android P可以更轻松地跟踪应用程序窗口的更新。当一个 TYPE_WINDOWS_CHANGED事件发生时,可以使用 getWindowChanges() API来确定如何在Windows已经改变。在多窗口更新期间,每个窗口现在都会生成自己的一组事件。该getSource() 方法返回与每个事件关联的窗口的根视图。

如果应用程序为其 对象定义了可访问性窗格标题View,则您的服务可以识别应用程序的UI何时更新。当一个TYPE_WINDOW_STATE_CHANGED 事件发生时,使用由返回的新类型 getContentChangeTypes() ,以确定如何在窗口发生了变化。例如,框架现在可以检测窗格何时具有新标题或窗格何时消失。

返回目录

旋转屏幕


为了消除无意的旋转,我们添加了一种新的模式,即使设备位置发生变化,也会固定当前的方向。通过按系统栏中的新按钮,用户可以在需要时手动触发旋转。

在大多数情况下,应用程序的兼容性影响应该非常小。但是,如果您的应用具有任何自定义旋转行为或使用任何深奥的屏幕方向设置,则可能会遇到在用户旋转首选项始终设置为纵向之前可能未被注意的问题。我们鼓励您查看应用的所有关键活动中的轮换行为,并确保所有屏幕方向设置仍提供最佳体验。

有关更多详细信息,请参阅关联的 行为更改。

注:新的旋转模式可让用户在需要时使用系统栏中的按钮手动触发旋转。

返回目录

版权所有丨如未注明,均为原创,转载请注明转自:https://whonee.net/android-p-features-and-apis.html

历史上的今天:

  1. 2019:  Android 6.0 系统几个默认的修改-亮度|音量|最大音量|通知铃声|WIFI打开|24小时制|打开未知源(0)

《Android P 新功能和API介绍》有9个想法

  1. 近来好多都在谈论这个P的事,越来越跟水果系统靠了,也越来越像黑莓系统一样用手势了。

    PS:你的文章的目录化,这个是插件还是嘛?!

发表评论

电子邮件地址不会被公开。 必填项已用*标注