Android 餅圖功能

如何使用 Xamarin.Android 開始開發 Android 9 Pie 的應用程式。

Android 9 Pie 現在可從Google取得。 此版本提供許多新功能和 API,而且許多新功能和 API 都需要利用最新 Android 裝置中的新硬體功能。

Android Pie hero image

本文的結構可協助您開始開發適用於Android Pie的 Xamarin.Android 應用程式。 它說明如何安裝必要的更新、設定 SDK,以及準備模擬器或裝置進行測試。 它也提供Android Pie中新功能的大綱,並提供範例原始程式碼,說明如何使用一些重要的Android Pie功能。

Xamarin.Android 9.0 提供 Android Pie 的支援。 如需 Android Pie Xamarin.Android 支援的詳細資訊,請參閱 Android P Developer Preview 3 版本資訊。

需求

下列清單需要使用以 Xamarin 為基礎的應用程式中的 Android Pie 功能:

  • Visual Studio – 建議使用 Visual Studio 2019。 如果您使用 Visual Studio 2017,請在 Windows 上更新至 Visual Studio 2017 15.8 版或更新版本。 在 macOS 上,更新至 Visual Studio 2017 for Mac 7.6 版或更新版本。

  • Xamarin.Android – Xamarin.Android 9.0.0.17 或更新版本必須隨 Visual Studio 一起安裝(Xamarin.Android 會自動安裝為使用 .NET 進行行動裝置開發工作負載的一部分)。

  • Java Developer Kit – Xamarin Android 9.0 開發需要 JDK 8(或者您可以嘗試預覽 Microsoft 的 OpenJDK 發行版)。 JDK8 會自動安裝為行動裝置開發與 .NET 工作負載的一部分。

  • Android SDK – Android SDK API 28 或更新版本必須透過 Android SDK 管理員安裝。

開始使用

若要開始使用 Xamarin.Android 開發 Android Pie 應用程式,您必須先下載並安裝最新的工具和 SDK 套件,才能建立第一個 Android Pie 專案:

  1. 建議使用 Visual Studio 2019。 如果您使用 Visual Studio 2017,請更新至 Visual Studio 2017 15.8 版或更新版本。 如果您使用 Visual Studio for Mac,請更新至 Visual Studio 2017 for Mac 7.6 版或更新版本。

  2. 透過 SDK 管理員安裝 Android Pie (API 28) 套件和工具。

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

  4. 設定模擬器或裝置以測試 Android Pie 應用程式。

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

更新 Visual Studio 2017

建議使用 Xamarin 建置 Android Pie 應用程式時,建議使用 Visual Studio 2019。

如果您使用 Visual Studio 2017,請更新至 Visual Studio 2017 15.8 版或更新版本(如需指示,請參閱將 Visual Studio 2017 更新至最新版本)。 在 macOS 上,更新至 Visual Studio 2017 for Mac 7.6 或更新版本(如需指示,請參閱 設定及安裝 Visual Studio for Mac)。

安裝 Android SDK

若要使用 Xamarin.Android 9.0 建立專案,您必須先使用 Android SDK 管理員來安裝適用於 Android Pie 的 SDK 平臺(API 層級 28) 或更新版本。

  1. 啟動 SDK 管理員。 在 Visual Studio 中,按兩下 [工具 > Android Android > SDK 管理員]。 在 Visual Studio for Mac 中,按兩下 [工具 > SDK 管理員]。

  2. 在右下角,按兩下角,按下齒輪圖示,然後選取 [存放庫 > Google[不支援]

    Setting the Repository to Google

  3. 安裝 Android Pie SDK 套件,其列在 [平臺] 索引標籤中列為 Android SDK Platform 28(如需使用 SDK 管理員的詳細資訊,請參閱 Android SDK 安裝程式):

    Installing Android Pie packages

  4. 如果您使用模擬器,請建立支援 API 層級 28 的虛擬設備。 如需建立虛擬設備的詳細資訊,請參閱使用 Android 裝置管理員 管理虛擬設備。

啟動 Xamarin.Android 專案

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

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

設定裝置或模擬器

如果您使用實體裝置,例如 Nexus 或 Pixel,您可以依照 Nexus 和 Pixel 裝置的 Factory 映像中的指示,將裝置更新為 Android Pie。

如果您使用模擬器,請為 API 層級 28 建立虛擬設備,然後選取以 x86 為基礎的映射。 如需使用 Android 裝置管理員 建立和管理虛擬設備的相關信息,請參閱使用 Android 裝置管理員 管理虛擬設備。 如需使用Android模擬器進行測試和偵錯的相關信息,請參閱 在Android模擬器上進行偵錯。

新功能

Android Pie 引進了各種新功能。 其中一些新功能旨在利用最新 Android 裝置所提供的新硬體功能,而其他則設計用來進一步增強 Android 用戶體驗:

  • 顯示剪下支援 – 提供 API 來尋找較新 Android 裝置上畫面頂端剪下的位置和形狀

  • 通知增強 功能 – 通知訊息現在可以顯示影像,而新的 Person 類別可用來簡化交談參與者。

  • 室內定位 – WiFi 來回時間通訊協議的平台支援,讓應用程式能夠使用WiFi裝置在室內設定中流覽。

  • 多 相機 支援 – 提供從多個實體相機同時存取串流的功能(例如雙前端和雙背相機)。

下列各節會反白顯示這些功能,並提供簡短的程式代碼範例,協助您開始在應用程式中使用這些功能。

顯示剪裁支援

許多具有邊緣對邊緣螢幕的較新 Android 裝置,在相機和喇叭的顯示器頂端有 顯示剪下 (或 “notch” )。 下列螢幕快照提供剪裁的模擬器範例:

Android emulator simulating a cutout

若要管理應用程式視窗在裝置上顯示其內容的方式與顯示剪裁,Android Pie 已新增 LayoutInDisplayCutoutMode 視窗配置屬性。 這個屬性可以設定為下列其中一個值:

例如,若要防止應用程式視窗與剪裁區域重疊,請將版面配置剪裁模式設定為 永不

Window.Attributes.LayoutInDisplayCutoutMode =
    Android.Views.LayoutInDisplayCutoutMode.Never;

下列範例提供這些剪下模式的範例。 左側的第一個螢幕快照是處於非全螢幕模式的應用程式。 在中央螢幕快照中,應用程式會以設為LayoutInDisplayCutoutModeShortEdges的全屏幕LayoutInDisplayCutoutMode顯示。 請注意,應用程式的白色背景延伸至顯示剪裁區域:

Example display cutout modes in emulator

在最後一個螢幕快照(右側上方)中, LayoutInDisplayCutoutMode 會設定為 LayoutInDisplayCutoutModeShortNever ,然後才進入全螢幕。 請注意,不允許應用程式的白色背景延伸至顯示剪裁區域。

如果您需要裝置上剪下區域的詳細資訊,您可以使用新的 DisplayCutout 類別。 DisplayCutout 代表無法用來顯示內容的顯示區域。 您可以使用這項資訊來擷取剪裁的位置和形狀,讓您的 app 不會嘗試在此非功能區域中顯示內容。

如需 Android P 中新剪裁功能的詳細資訊,請參閱 顯示剪裁支援

通知增強功能

Android Pie 引進下列增強功能,以改善傳訊體驗:

  • 通知通道(在 Android Oreo引進)現在支持封鎖通道群組。

  • 通知系統有三個新的「不要打擾」類別(優先處理警示、系統音效和媒體來源)。 此外,還有七個新的「不要打擾」模式可用來隱藏視覺中斷(例如徽章、通知燈、狀態欄外觀,以及啟動全螢幕活動)。

  • 已新增 Person 類別,以代表郵件的寄件者。 使用此類別有助於藉由識別參與交談的人員(包括其虛擬人偶和 URI)來優化每個通知的轉譯。

  • 通知現在可以顯示影像。

下列範例說明如何使用新的 API 來產生包含影像的通知。 在下列螢幕快照中,會張貼文字通知,後面接著內嵌影像的通知。 當通知展開時(如右側所示),會顯示第一個通知的文字,並放大第二個通知中內嵌的影像:

Example notification with image

下列範例說明如何在Android Pie 通知中包含影像,並示範新 Person 類別的使用方式:

  1. 建立 Person 代表傳送者的物件。 例如,寄件者的名稱和圖示會包含在 中 fromPerson

    Icon senderIcon = Icon.CreateWithResource(this, Resource.Drawable.sender_icon);
    Person fromPerson = new Person.Builder()
        .SetIcon(senderIcon)
        .SetName("Mark Sender")
        .Build();
    
  2. Notification.MessagingStyle.Message建立 ,其中包含要傳送的映射,將映像傳遞至新的 Notification.MessagingStyle.Message.SetData 方法。 例如:

    Uri imageUri = Uri.Parse("android.resource://com.xamarin.pminidemo/drawable/example_image");
    Notification.MessagingStyle.Message message = new Notification.MessagingStyle
            .Message("Here's a picture of where I'm currently standing", 0, fromPerson)
            .SetData("image/", imageUri);
    
  3. 將訊息新增至 Notification.MessagingStyle 物件。 例如:

    Notification.MessagingStyle style = new Notification.MessagingStyle(fromPerson)
            .AddMessage(message);
    
  4. 將此樣式插入通知產生器。 例如:

    builder = new Notification.Builder(this, MY_CHANNEL)
        .SetContentTitle("Tour of the Colosseum")
        .SetContentText("I'm standing right here!")
        .SetSmallIcon(Resource.Mipmap.ic_notification)
        .SetStyle(style)
        .SetChannelId(MY_CHANNEL);
    
  5. 發佈通知。 例如:

    const int notificationId = 1000;
    notificationManager.Notify(notificationId, builder.Build());
    

如需建立通知的詳細資訊,請參閱 本機通知

室內定位

Android Pie 提供 IEEE 802.11mc 的支援(也稱為 WiFi 來回時間WiFi RTT),讓應用程式能夠偵測到一或多個 Wi-Fi 存取點的距離。 使用這項資訊,您的應用程式 可以利用室內定位 ,精確度為一到兩公尺。 在提供 IEEE 801.11mc 硬體支援的 Android 裝置上,您的應用程式可以透過市集提供智慧設備的位置型控制或回合指示等導覽功能:

Example of indoor navigation using WiFi RTT

新的 WifiRttManager 類別和數個協助程式類別提供測量 Wi-Fi 裝置距離的方法。 如需 Android P 中引進的室內定位 API 的詳細資訊,請參閱 Android.Net.Wifi.Rtt

多重 相機 支援

許多較新的 Android 裝置都有雙前端和/或雙背相機,對於立體視覺、增強的視覺效果和改良的縮放功能等功能很有用。 Android P 引進了新的多 相機 API,可讓您的應用程式使用由兩部或多個實體相機支援的邏輯相機(或邏輯多相機)。 若要判斷裝置是否支援邏輯多相機,您可以查看裝置上每個相機的功能,以查看它是否支援 RequestAvailableCapabilitiesLogicalMulti 相機

Android Pie 也包含新的 SessionConfiguration 類別,可用來協助減少初始擷 取期間的延遲,並不需要啟動和啟動相機串流。

如需 Android P 中多重 相機 支援的詳細資訊,請參閱多相機支援和相機更新

其他功能

此外,Android Pie 支持數個其他新功能:

  • 新的 AnimatedImageDrawable 類別,可用於繪製和顯示動畫影像。

  • 取代的新 ImageDecoder 類別 BitmapFactoryImageDecoder 可以用來譯碼 AnimatedImageDrawable

  • 支援 HDR (高動態範圍) 視訊和 HEIF (高效圖像檔案格式) 影像。

  • JobScheduler 已增強,可更聰明地處理網路相關作業。 JobParameters 類別的新 GetNetwork 方法會傳回執行指定作業之任何網路要求的最佳網路。

如需最新 Android Pie 功能的詳細資訊,請參閱 Android 9 功能和 API

行為變更

當目標 Android 版本設定為 API 層級 28 時,即使未實作上述新功能,仍有數個平台變更可能會影響應用程式的行為。 下列清單是這些變更的簡短摘要:

  • 應用程式現在必須先要求前景許可權,才能使用前景服務。

  • 如果您的應用程式有多個進程,就無法跨進程共用單 一 WebView 資料目錄。

  • 不再允許依路徑直接存取另一個應用程式的數據目錄。

如需以 Android P 為目標之應用程式的行為變更詳細資訊,請參閱 行為變更

範例指令碼

AndroidPMiniDemo 是適用於 Android Pie 的 Xamarin.Android 範例應用程式,示範如何設定顯示剪下模式、如何使用新 Person 類別,以及如何傳送包含影像的通知。

摘要

本文介紹 Android Pie,並說明如何使用 Android Pie 安裝及設定 Xamarin.Android 開發的最新工具和套件。 它提供 Android Pie 中可用的主要功能概觀,其中幾個功能的範例原始程式碼。 其中包含 API 檔和 Android 開發人員主題的連結,可協助您開始建立適用於 Android Pie 的應用程式。 它也醒目提示了可能會影響現有應用程式的最重要的 Android Pie 行為變更。