Nougat 功能

如何開始使用 Xamarin.Android 開發 Android Nougat 應用程式。

本文概述 Android Nougat 中介紹的功能,說明如何準備 Xamarin.Android 以進行 Android Nougat 開發,並提供範例應用程式的連結,說明如何在 Xamarin.Android 應用程式中使用 Android Nougat 功能。

概觀

Android Nougat 是 Google 對 Android 6.0 Marshmallow 的後續工作。 Xamarin.Android 支援 Xamarin Android 7.0 和更新版本中的 Android 7.x 系結 。 Android Nougat 會為以下所述的 Nougat 功能新增許多新的 API;當您使用 Xamarin.Android 7.0 時,Xamarin.Android 應用程式可以使用這些 API。

Hero images of Android tablets and phones running Android Nougat

如需 Android 7.x API 的詳細資訊,請參閱 Android API 參考。 如需已知的 Xamarin.Android 7.0 問題清單,請參閱 版本資訊

Android Nougat 為 Xamarin.Android 開發人員提供了許多感興趣的新功能。 這些功能包括:

  • 多視窗支援 – 這項增強功能可讓使用者一次在畫面上開啟兩個應用程式。

  • 通知增強 功能 – Android Nougat 中重新設計的通知系統包含 直接回復 功能,可讓使用者直接從通知 UI 快速響應簡訊。 此外,如果您的應用程式建立已接收訊息的通知,新的 配套通知 功能可以在收到多個訊息時,將通知組合在一起作為單一群組。

  • 數據儲存器 – 這項功能是新的系統服務,可協助減少應用程式使用的行動電話數據;它可讓使用者控制應用程式使用行動數據的方式。

此外,Android Nougat 為應用程式開發人員帶來了許多其他感興趣的增強功能,例如新的網路安全性設定功能、Go 上的 Doze、金鑰證明、新的快速 設定 API、多重地區設定支援、ICU4J API、WebView 增強功能、Java 8 語言功能的存取、範圍目錄存取、自定義指標 API、平臺 VR 支援、虛擬檔案,以及背景處理優化。

本文說明如何使用Android Nougat開始建置應用程式,以試用新功能,並規劃移轉或功能以以新的Android Nougat 平台為目標。

需求

若要在以 Xamarin 為基礎的應用程式中使用新的 Android Nougat 功能,需要下列專案:

  • Visual Studio 或 Visual Studio for Mac – 如果您使用 Visual Studio 版本 4.2.0.628 或更新版本,則需要 Visual Studio Tools for Xamarin。 如果您使用 Visual Studio for Mac,則需要 6.1.0 版或更新版本的 Visual Studio for Mac。

  • Xamarin.Android – 您必須使用 Visual Studio 或 Visual Studio for Mac 安裝及設定 Xamarin.Android 7.0 或更新版本。

  • Android SDK - Android SDK 7.0 (API 24) 或更新版本必須透過 Android SDK 管理員安裝。

  • Java Developer Kit – 如果您要針對 API 層級 24 或更新版本進行開發,則 Xamarin Android 7.0 開發需要 JDK 8 或更新版本(JDK 8 也支援早於 24 的 API 層級)。 如果您使用自定義控件或 Forms Previewer,則需要 64 位版本的 JDK 8。

重要

Xamarin.Android 不支援 JDK 9。

請注意,必須使用 Xamarin C6SR4 或更新版本重建應用程式,才能可靠地使用 Android Nougat。 因為 Android Nougat 只能連結至 NDK 提供的原生連結庫,所以使用連結庫的現有應用程式,例如 Mono.Data.Sqlite.dll 在 Android Nougat 上執行時,如果未正確建置,可能會當機。

快速入門

若要開始使用 Android Nougat 搭配 Xamarin.Android,您必須先下載並安裝最新的工具和 SDK 套件,才能建立 Android Nougat 專案:

  1. 從 Xamarin 安裝最新的 Xamarin.Android 更新。

  2. 安裝 Android 7.0 (API 24) 套件和工具或更新版本。

  3. 建立以 Android Nougat 為目標的新 Xamarin.Android 專案。

  4. 設定 Android Nougat 的模擬器或裝置。

下列各節將說明這些步驟:

安裝 Xamarin 更新

若要新增 Android Nougat 的 Xamarin 支援,請將 Visual Studio 或 Visual Studio for Mac 中的更新通道變更為穩定通道,並套用最新的更新。 如果您也需要目前只能在 Alpha 或 Beta 通道中使用的功能,則可以切換至 Alpha 或 Beta 通道(Alpha 和 Beta 通道也提供 Android 7.x 的支援)。 如需如何變更更新(發行)通道的資訊,請參閱變更 更新 通道。

安裝 Android SDK

若要使用 Xamarin Android 7.0 建立專案,您必須先使用 Android SDK 管理員來安裝 SDK Platform Android N (API 24) 或更新版本。 您必須安裝最新的 Android SDK 工具

  1. 啟動 Android SDK 管理員(在 Visual Studio for Mac 中,使用工具開啟 Android SDK 管理員...;在 Visual Studio 中,使用 Tools >> Android > SDK Manager)。

  2. 安裝 Android 7.0 (API 24) 或更新版本:

    Selecting Android 7.0 packages in the Android SDK Manager

  3. 安裝最新的 Android SDK 工具:

    Selecting the latest Android SDK tools in the Android SDK Manager

    您必須安裝 Android SDK 工具修訂 25.2.2 或更新版本、Android SDK 平臺工具 24.0.3 或更新版本,以及 Android SDK 建置工具 24.0.2 或更新版本。

  4. 確認已針對 JDK 1.8 設定 Java 開發工具套件位置

    Configuring the JDK 8 path under Tools options

    若要在 Visual Studio 中檢視此設定,請按兩下 [工具>選項 > Xamarin > Android 設定]。 在 Visual Studio for Mac 中,按兩下 [ 喜好設定 > 專案 > SDK 位置 > Android]。

啟動 Xamarin.Android 專案

建立新的 Xamarin.Android 專案。 如果您不熟悉使用 Xamarin 進行 Android 開發,請參閱 Hello,Android 以瞭解如何建立 Xamarin.Android 專案。

當您建立 Android 專案時,您必須將版本設定設為以 Android 7.0 或更新版本為目標。 例如,若要以 Android 7.0 專案為目標,您必須將專案的目標 Android API 層級設定為 Android 7.0 (API 24 - Nougat)。 建議您將目標架構層級設定為 API 24 或更新版本。 如需設定 Android API 層級層級的詳細資訊,請參閱 瞭解 Android API 層級

注意

目前,您必須將 [最低 Android 版本 ] 設定為 Android 7.0 (API 24 - Nougat), 才能將您的應用程式部署至 Android Nougat 裝置或模擬器。

設定模擬器或裝置

如果您使用模擬器,請啟動 Android AVD Manager,並使用下列設定建立新的裝置:

  • 裝置:Nexus 5X、Nexus 6、Nexus 6P、Nexus Player、Nexus 9 或 Pixel C。
  • 目標:Android 7.0 - API 層級 24
  • ABI:x86 或 x86_64

例如,此虛擬設備已設定為模擬 Nexus 6:

Configuring an AVD using Nexus 6 device, Android 7.0 target, and Intel Atom x86 CPU/ABI

如果您使用實體裝置,例如 Nexus 5X、6 或 9,您可以透過無線自動更新來更新裝置,或下載系統映像並直接刷新您的裝置。 如需手動將裝置更新為 Android Nougat 的詳細資訊,請參閱 OTA Images for Nexus Devices

請注意,Android Nougat 不支援 Nexus 5 裝置。

新功能

Android Nougat 引進各種新功能,例如多窗口支援、通知增強功能和數據儲存器。 下列各節會反白顯示這些功能,並提供連結以協助您開始在應用程式中使用這些功能。

多視窗模式

多視窗模式可讓使用者一次以完整的多任務支持開啟兩個應用程式。 這些應用程式可以在分螢幕模式中並排執行 (橫向) 或一個以上 (直向) 。 用戶可以在應用程式之間拖曳分隔器來調整其大小,而且可以剪下並貼上應用程式之間的內容。 當兩個應用程式以多視窗模式顯示時,選取的活動會在未選取的活動暫停但仍然可見時繼續執行。 多視窗模式不會修改 Android 活動生命週期。

Example apps running in multi-window mode in both portrait and landscape

您可以設定 Xamarin.Android 應用程式的活動如何支援多視窗模式。 例如,您可以設定屬性,以多重視窗模式設定應用程式的大小下限和預設高度和寬度。 您可以使用新的 Activity.IsInMultiWindowMode 屬性來判斷您的活動是否處於多視窗模式。 例如:

if (!IsInMultiWindowMode) {
    multiDisabledMessage.Visibility = ViewStates.Visible;
} else {
    multiDisabledMessage.Visibility = ViewStates.Gone;
}

MultiWindowPlayground 範例應用程式包含 C# 程式代碼,示範如何利用多個視窗使用者介面與您的應用程式。

如需多視窗模式的詳細資訊,請參閱 多窗口支援

增強型通知

Android Nougat 引進重新設計的通知系統。 它具有新的直接回復功能,可讓使用者直接在通知 UI 中快速回復內送簡訊的通知。 從 Android 7.0 開始,當收到多個訊息時,通知訊息可以組合成單一群組。 此外,開發人員可以自定義通知檢視、利用通知中的系統裝飾,並在產生通知時利用新的通知範本。

直接回復

當使用者收到傳入訊息的通知時,Android Nougat 可讓您回復通知內的訊息(而不是開啟訊息應用程式以傳送回復)。 此內嵌回復功能可讓使用者在通知介面內快速響應簡訊或簡訊:

Screenshot of a notification with an inline Direct Reply field

若要在應用程式中支援這項功能,您必須透過 RemoteInput 物件將內嵌回復動作新增至您的應用程式,讓使用者可以直接透過通知 UI 的文字回復。 例如,下列程式代碼會 RemoteInput 建置 來接收文字輸入、建置回復動作的暫止意圖,並建立已啟用遠端輸入的動作:

// Build a RemoteInput for receiving text input:
var remoteInput = new Android.Support.V4.App.RemoteInput.Builder (EXTRA_REMOTE_REPLY)
    .SetLabel (GetString (Resource.String.reply))
    .Build ();

// Build a Pending Intent for the reply action to trigger:
PendingIntent replyIntent = PendingIntent.GetBroadcast (ApplicationContext,
                                conversation.ConversationId,
                                GetMessageReplyIntent (conversation.ConversationId),
                                PendingIntentFlags.UpdateCurrent);

// Build an Android 7.0 compatible Remote Input enabled action:
NotificationCompat.Action actionReplyByRemoteInput = new NotificationCompat.Action.Builder (
    Resource.Drawable.notification_icon,
    GetString (Resource.String.reply),
    replyIntent).AddRemoteInput (remoteInput).Build ();

此動作會新增至通知:

// Create the notification:
NotificationCompat.Builder builder = new NotificationCompat.Builder (ApplicationContext)
   .SetSmallIcon (Resource.Drawable.notification_icon)
   ...
   .AddAction (actionReplyByRemoteInput);

傳訊服務範例應用程式包含 C# 程式代碼,示範如何使用 物件擴充通知RemoteInput。 如需將內嵌回復動作新增至適用於 Android 7.0 或更新版本之應用程式的詳細資訊,請參閱 Android 回復通知 主題。

配套通知

Android Nougat 可以將通知訊息分組在一起(例如,依訊息主題),並顯示群組,而不是每個個別的訊息。 此 配套通知 功能可讓使用者在一個動作中關閉或封存一組通知。 使用者可以向下滑動以展開通知組合,以詳細檢視每個通知:

Screenshot example of bundled notifications

若要支援配套通知,您的應用程式可以使用 Builder.SetGroup 方法來組合類似的通知。 如需 Android N 中配套通知群組的詳細資訊,請參閱 Android 統合通知 主題。

自訂檢視

Android Nougat 可讓您使用系統通知標頭、動作和可展開的版面配置來建立自定義通知檢視。 如需 Android Nougat 中自定義通知檢視的詳細資訊,請參閱 Android 通知增強功能 主題。

數據儲存器

從 Android Nougat 開始,使用者可以啟用封鎖背景數據使用量的新 資料儲存器 設定。 此設定也會發出訊號,讓您的 app 盡可能在前景使用較少的數據。 連線 ivityManager 已在 Android Nougat 中擴充,讓您的 app 可以檢查使用者是否已啟用 Data Saver,讓您的 app 能夠在啟用 Data Saver 時努力限制其數據使用量。

如需 Android Nougat 中新資料儲存器功能的詳細資訊,請參閱 Android 優化網路數據使用量 主題。

應用程式快捷方式

Android 7.1 引進了 應用程式快捷方式 功能,讓用戶能夠快速啟動應用程式的一般或建議工作。 若要啟動快捷方式功能表,用戶會長按應用程式圖示以取得第二個或更多個 -- 功能表會出現快速震動。 放開媒體會導致功能表保持:

Example screen of an app shortcut menu for a messaging app

此功能僅適用於 API 層級 25 或更高版本。 如需 Android 7.1 中新應用程式快捷方式功能的詳細資訊,請參閱 Android 應用程式快捷方式 主題。

範例程式碼

有數個 Xamarin.Android 範例可用來示範如何利用 Android Nougat 功能:

  • MultiWindowPlayground 示範如何使用 Android Nougat 中可用的多視窗 API。 您可以將範例應用程式切換為多視窗模式,以查看它如何影響應用程式的生命週期和行為。

  • 傳訊服務 是使用 傳送通知 NotificationCompatManager的簡單服務。 它也會使用 物件擴充通知 RemoteInput ,以允許 Android Nougat 裝置直接透過通知中的文字回復,而不需要開啟應用程式。

  • 使用中通知 示範如何使用 NotificationManager API 來告訴您應用程式目前顯示的通知數目。

  • 範圍目錄存取 示範如何使用範圍目錄存取 API 輕鬆存取特定目錄。 這是必須定義 READ_EXTERNAL_STORAGEWRITE_EXTERNAL_STORAGE 指令清單中許可權的替代方案。

  • 直接開機 說明如何在裝置加密的記憶體中儲存數據,該記憶體在輸入任何使用者認證(PIN/Pattern/Password) 之前和之後,一律可供使用。

摘要

本文介紹 Android Nougat,並說明如何在 Android Nougat 上安裝及設定 Xamarin.Android 開發的最新工具和套件。 它也提供 Android Nougat 中可用的主要功能概觀,其中包含範例原始碼的連結,可協助您開始建立 Android Nougat 應用程式。