Oreo 功能

如何开始使用 Xamarin.Android 开发适用于最新版 Android 的应用。

Android 8.0 Oreo 是 Google 发布的最新版 Android。 Android Oreo 提供了 Xamarin.Android 开发人员感兴趣的许多新功能。 这些功能包括通知通道、通知锁屏提醒、XML 自定义字体、可下载字体、自动填充和画中画 (PIP)。 Android Oreo 包含用于这些新功能的新 API,如果使用 Xamarin.Android 8.0 及更高版本,可在 Xamarin.Android 应用中使用这些 API。

Android Oreo 主图图像

本文旨在帮助你开始开发适用于 Android 8.0 Oreo 的 Xamarin.Android 应用。 它介绍如何安装必要的更新、如何配置 SDK 以及如何创建用于测试的仿真器(或设备)。 还概述了 Android 8.0 Oreo 中的新功能,并提供了示例应用的链接,这些示例应用说明了如何在 Xamarin.Android 应用中使用 Android Oreo 功能。

要求

若要在基于 Xamarin 的应用中使用 Android Oreo 功能,需满足以下要求:

  • Visual Studio - 如果使用的是 Windows,则需要 Visual Studio 版本 15.5 或更高版本。 如果使用的是 Mac,则需要 Visual Studio for Mac 版本 7.2.0。

  • Xamarin.Android - 必须安装 Xamarin.Android 8.0 或更高版本并配置 Visual Studio。

  • Android SDK - 必须通过 Android SDK 管理器安装 Android SDK 8.0 (API 26) 或更高版本。

入门

若要开始结合使用 Android Oreo 和 Xamarin.Android,必须先下载并安装最新的工具和 SDK 包,然后才能创建 Android Oreo 项目:

  1. 更新到 Visual Studio 的最新版本。

  2. 通过 SDK 管理器安装 Android 8.0.0 (API 26) 或更高版本的包和工具

  3. 创建面向 Android Oreo (API 26) 的新 Xamarin.Android 项目。

  4. 配置仿真器或设备以测试 Android Oreo 应用。

以下部分介绍其中的每个步骤:

更新 Visual Studio 和 Xamarin.Android

若要向 Visual Studio 添加 Android Oreo 支持,请执行以下操作:

  • 对于 Visual Studio 2019,请使用 SDK 管理器 安装 API 级别 26.0 或更高版本。

  • 如果你使用的是 Visual Studio 2017:

    1. 请更新到 Visual Studio 2017 版本 15.7 或更高版本(请参阅更新 Visual Studio 2017)。

    2. 使用 SDK 管理器 安装 API 级别 26.0 或更高版本。

有关适用于 Android Oreo 的 Xamarin 支持的详细信息,请参阅 Xamarin.Android 8.0 发行说明

安装 Android SDK

若要使用 Xamarin.Android 8.0 创建项目,必须首先使用 Xamarin Android SDK 管理器安装适用于Android 8.0 (Oreo) 或更高版本的 SDK 平台。 还必须安装 Android SDK Tools 26.0 或更高版本。

  1. 启动 SDK 管理器(在 Visual Studio 中单击“工具”>“Android”>“Android SDK 管理器”)。

  2. 安装 Android 8.0 (Oreo) 包。 如果使用 Android SDK 仿真器,请确保包含所需的 x86 系统映像

    在 Android SDK 管理器中选择 Android 8.0 包

  3. 安装 Android SDK Tools 26.0.2 或更高版本、Android SDK 平台工具 26.0.0 或更高版本以及 Android SDK 生成工具 26.0.0(或更高版本)

    在 Android SDK 管理器中选择 Android SDK Tools 26

启动 Xamarin.Android 项目

新建 Xamarin.Android 项目。 如果你不熟悉如何使用 Xamarin 开发 Android,请参阅 Hello, Android 了解如何创建 Xamarin.Android 项目。

创建 Android 项目时,必须将版本设置配置为面向 Android 8.0 或更高版本。 例如,若要将项目目标指向 Android 8.0,必须将项目的 Android API 级别目标配置为“Android 8.0 (API 26)”。 建议同时将目标框架级别设置为 API 26 或更高级别。 有关配置 Android API 级别的详细信息,请参阅了解 Android API 级别

配置仿真器或设备

如果在安装 Android SDK Tools 26.0 或更高版本后,尝试启动默认的基于Google GUI 的 AVD 管理器,可能会出现以下错误对话框,指示你改用命令行 AVD 管理器工具 avdmanager

显示此消息是因为 Google 不再提供支持 API 26.0 及更高版本的独立 GUI AVD 管理器。 对于 Android 8.0 Oreo,必须使用 Xamarin Android Emulator 管理器或命令行 avdmanager 工具创建适用于 Android Oreo 的虚拟设备。

要使用 Android 设备管理器创建和管理虚拟设备,请参阅使用 Android 设备管理器管理虚拟设备。 若要创建不包含 Android 设备管理器的虚拟设备,请按照下一部分中的步骤进行操作。

使用 avdmanager 创建虚拟设备

若要使用 avdmanager 创建新的虚拟设备,请遵循以下步骤

  1. 打开“命令提示符”窗口,将 JAVA_HOME 设置为计算机上 Java SDK 的位置。 对于典型的 Xamarin 安装,可以使用以下命令:

    setx JAVA_HOME "C:\Program Files\Java\jdk1.8.0_131"
    
  2. 将 Android SDK bin 文件夹的位置添加到 PATH。 对于典型的 Xamarin 安装,可以使用以下命令:

    setx PATH "%PATH%;C:\Program Files (x86)\Android\android-sdk\tools\bin"
    
  3. 关闭该“命令提示符”窗口,打开一个新的“命令提示符”窗口。 使用 avdmanager 命令创建新的虚拟设备。 例如,若要使用适用于 API 级别 26 的 x86 系统映像创建名为 AVD-Oreo-8.0 的 AVD,请使用以下命令

    avdmanager create avd -n AVD-Oreo-8.0 -k "system-images;android-26;google_apis;x86"
    
  4. 当系统提示你“是否要创建自定义硬件配置文件 [no]”时,你可以输入“否”并接受默认硬件配置文件。 如果你选择“是”,avdmanager 会提示你提供自定义硬件配置文件的问题列表

使用 avdmanager 创建虚拟设备后,该设备将包含在设备下拉菜单中

新 AVD 已添加到设备下拉菜单

有关配置 Android Emulator 进行测试和调试的详细信息,请参阅在 Android Emulator 上调试

如果使用的是物理设备(例如,Nexus 或 Pixel),则可以通过自动无线 (OTA) 更新来更新设备,或下载系统映像并直接刷新设备。 有关手动将设备更新到 Android Oreo 的详细信息,请参阅 Nexus 和 Pixel 设备的出厂映像

新增功能

Android Oreo 引入了各种新功能,如通知通道、通知锁屏提醒、XML 自定义字体、可下载字体、自动填充和画中画。 以下各节重点介绍这些功能,并提供可帮助你在应用中开始使用这些功能的链接。

通知通道

通知通道是应用定义的通知类别。 你可以为需要发送的每种通知类型创建通知通道,还可以创建通知通道以反映应用用户所做的选择。 利用新的通知通道功能,你可以为用户提供对各种通知的细化控制。 例如,如果要实现消息传递应用,可以为用户创建的每个会话组创建单独的通知通道。

如需了解如何创建通知通道并将其用于发布本地通知,请参阅通知通道

通知锁屏提醒

通知锁屏提醒是显示在应用图标上方的小点,如以下屏幕截图所示:

应用图标上的示例通知锁屏提醒

这些点表示与该应用图标相关联的应用中有一个或多个通知通道的新通知 - 这些通知是用户尚未解除或未执行的通知。 用户可以长按图标,浏览与通知锁屏提醒相关的通知,从出现的长按菜单取消或执行通知。

有关通知锁屏提醒的详细信息,请参阅 Android 开发人员通知锁屏提醒主题。

XML 自定义字体

Android Oreo 引入了 XML 字体,这使你能够将自定义字体合并为资源。 支持 OpenType (.otf)和 TrueType (.ttf) 字体格式。 若要将字体添加为资源,请执行以下操作:

  1. 创建“Resources/font”文件夹

  2. 将字体文件(例如,.ttf 和 .otf 文件)复制到“Resources/font”文件夹

  3. 如有必要,请重命名每个字体文件,使其遵循 Android 文件命名约定(即,在文件名中仅使用小写 a - z、0 - 9 和下划线)。 例如,可以将字体文件 Pacifico-Regular.ttf 重命名为类似 pacifico.ttf 的文件名。

  4. 使用布局 XML 中的新 android:fontFamily 属性应用自定义字体。 例如,下面的 TextView 声明使用添加的 pacifico.ttf 字体资源

    <TextView
      android:text="Example Text in Pacifico Regular"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:fontFamily="@font/pacifico" />
    

还可以创建一个字体系列 XML 文件,该文件描述多种字体以及样式和粗细等详细信息。 有关详细信息,请参阅 Android 开发人员 XML 字体主题。

可下载字体

从 Android Oreo 开始,应用可以向提供程序请求字体,而不是将其绑定到 APK。 仅在需要时才从网络下载字体。 此功能可减少 APK 大小、节省手机内存和蜂窝数据的使用量。 还可以通过安装 Android 支持库 26 包在 Android API 版本 14 及更高版本上使用此功能。

如果应用需要字体,则可创建 FontsRequest 对象(指定要下载的字体),然后将其传递给 FontsContract 方法以下载字体。 以下步骤更详细介绍了字体下载过程:

  1. 安装 FontRequest 对象。

  2. 子类化并实例化 FontsContract.FontRequestCallback

  3. 实现 FontRequestCallback.OnTypeFaceRetrieved 方法,该方法用于处理字体请求的完成。

  4. 实现 FontRequestCallback.OnTypeFaceRequestFailed 方法,该方法用于在字体请求过程中向应用通知发生的任何错误。

  5. 调用 FontsContract.RequestFonts 方法,从字体提供程序检索字体。

调用 RequestFonts 方法时,它首先从先前对 RequestFont 的调用中检查该字体是否在本地进行缓存。 如果未缓存此字体,它将调用字体提供程序,异步检索字体,然后通过调用 OnTypeFaceRetrieved 方法将结果传递回应用。

有关可下载字体的详细信息,请参阅 Android 开发人员可下载字体主题。

自动填充

Android Oreo 中的新自动填充框架使用户能够更轻松地处理重复性任务,如登录、帐户创建和信用卡交易。 用户花费在重新键入信息的时间会更短(这可能会导致输入错误)。 必须在系统设置中启用自动填充服务(用户可以启用或禁用自动填充)之后,你的应用才能使用自动填充框架。

有关新的自动填充功能以及如何优化应用以进行自动填充的详细信息,请参阅 Android 开发人员自动填充框架主题。

画中画 (PIP)

Android Oreo 使活动可以在画中画 (PIP) 模式下启动,从而覆盖另一个活动的屏幕。 此功能适用于视频播放。

要指定应用的活动可使用 PIP 模式,请在 Android 清单中将以下标志设置为 true:

android:supportsPictureInPicture

要指定活动处于 PIP 模式时的行为方式,请使用新的 PictureInPictureParams 对象。 PictureInPictureParams 表示一组参数,用于在 PIP 模式下初始化和更新活动(例如活动的首选纵横比)。 以下新的 PIP 方法已添加到 Android Oreo 中的 Activity

  • EnterPictureInPictureMode - 使活动处于 PIP 模式下。 活动位于屏幕的角落,而屏幕的其余部分则由屏幕上的前一个活动填充。

  • SetPictureInPictureParams - 更新活动的 PIP 配置设置(例如,纵横比的变化)。

其他功能

Android Oreo 包含许多其他新功能,例如表情符号支持库、Location API、背景限制、应用的宽范围颜色、新音频编解码器、Web 视图增强、改进的键盘导航支持和用于高性能低延迟音频的新 AAudio(pro 音频)API,有关这些功能的详细信息,请参阅 Android 开发人员 Android Oreo 功能与 API 主题。

行为更改

Android Oreo 包括各种系统和 API 行为更改,这些更改可能会影响现有应用的功能。 这些更改如下所述。

后台执行限制

为了改进用户体验,Android Oreo 对应用在后台运行时可以执行的操作设置了限制。 例如,如果用户正在观看视频或玩游戏,在后台运行的应用可能会影响在前台运行的视频密集型应用的性能。 因此,Android Oreo 对未与用户直接交互的应用设置了以下限制:

  1. 后台服务限制 - 当应用在后台运行时,会产生一个只有几分钟的时间窗,在此时间内仍可以创建和使用服务。 该时间窗结束后,Android 会停止应用的后台服务,并将其视为空闲

  2. 广播限制 - Android 7.0 (API 25) 对应用注册接收的广播设置了限制。 在 Android Oreo 中,这些限制更加严格。 例如,Android Oreo 应用无法再为其清单中的隐式广播注册广播接收器。

有关新的后台执行限制的详细信息,请参阅 Android 开发人员后台执行限制主题。

重大更改

面向 Android Oreo 或更高版本的应用必须修改其应用才能支持以下更改(如果适用):

  • Android Oreo 弃用了设置单个通知的优先级的功能。 取而代之,可在创建通知通道时设置建议的重要性级别。 你分配给通知通道的重要性级别适用于你向其发送的所有通知消息。

  • 对于面向 Android Oreo 的应用,由于对在后台启动的服务设置了新的限制,PendingIntent.GetService() 不起作用。 如果面向的是 Android Oreo,则应改用 PendingIntent.GetBroadcast

视频

使用 C# 开发 Android 8.0 Oreo

总结

本文介绍了 Android Oreo,并说明如何为 Android Oreo 上的 Xamarin.Android 开发安装和配置最新的工具和包。 它概述了 Android Oreo 提供的关键功能,并提供了多个新功能的示例源代码链接。 它提供了指向 API 文档和 Android 开发人员主题的链接,帮助你开始为 Android Oreo 创建应用。 它还重点介绍了可能影响现有应用的最重要的 Android Oreo 行为更改。