Oreo 功能
如何開始使用 Xamarin.Android 開發最新版 Android 的應用程式。
Android 8.0 Oreo 是 Google 提供的最新版本 Android。 Android Oreo 為 Xamarin.Android 開發人員提供了許多感興趣的新功能。 這些功能包括通知通道、通知徽章、XML 中的自定義字型、可下載的字型、自動填滿,以及圖片中的圖片(PIP)。 Android Oreo 包含這些新功能的新 API,當您使用 Xamarin.Android 8.0 和更新版本時,這些 API 可供 Xamarin.Android 應用程式使用。
本文的結構可協助您開始開發適用於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 – 必須使用 Visual Studio 安裝及設定 Xamarin.Android 8.0 或更新版本。
Android SDK – Android SDK 8.0(API 26)或更新版本必須透過 Android SDK 管理員安裝。
快速入門
若要開始使用 Android Oreo 搭配 Xamarin.Android,您必須先下載並安裝最新的工具和 SDK 套件,才能建立 Android Oreo 專案:
更新為最新版本的Visual Studio。
透過 SDK 管理員安裝 Android 8.0.0 (API 26) 或更新版本的套件和工具。
建立以 Android Oreo 為目標的新 Xamarin.Android 專案(API 26)。
設定模擬器或裝置以測試 Android Oreo 應用程式。
下列各節將說明這些步驟:
更新 Visual Studio 和 Xamarin.Android
若要將 Android Oreo 支援新增至 Visual Studio,請執行下列動作:
針對 Visual Studio 2019,請使用 SDK 管理員 安裝 API 層級 26.0 或更新版本。
如果您使用 Visual Studio 2017:
更新至 Visual Studio 2017 15.7 版或更新版本(請參閱 更新 Visual Studio 2017)。
使用 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 或更新版本。
啟動 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 Manager 或命令行 avdmanager
工具來建立 Android Oreo 的虛擬設備。
若要使用 Android 裝置管理員 來建立和管理虛擬設備,請參閱使用 Android 裝置管理員 管理虛擬設備。 若要建立沒有 Android 裝置管理員 的虛擬設備,請遵循下一節中的步驟。
使用avdmanager建立虛擬設備
若要使用 avdmanager 來建立新的虛擬設備,請遵循下列步驟:
開啟 [命令提示字元] 視窗,並將 設定
JAVA_HOME
為計算機上的 Java SDK 位置。 針對一般的 Xamarin 安裝,您可以使用下列命令:setx JAVA_HOME "C:\Program Files\Java\jdk1.8.0_131"
將 Android SDK
bin
資料夾的位置新增到您的PATH
。 針對一般的 Xamarin 安裝,您可以使用下列命令:setx PATH "%PATH%;C:\Program Files (x86)\Android\android-sdk\tools\bin"
關閉 [命令提示字元] 視窗,然後開啟新的 [命令提示字元] 視窗。 使用 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"
出現提示 時,是否要建立自定義硬體設定檔 [否] ,您可以輸入 否 並接受預設硬體配置檔。 如果您說 是, avdmanager 會提示您輸入自定義硬體配置檔的問題清單。
在您 avdmanager 建立虛擬設備之後,它會包含在裝置下拉功能表中:
如需設定 Android 模擬器以進行測試和偵錯的詳細資訊,請參閱 在 Android 模擬器上進行偵錯。
如果您使用實體裝置,例如 Nexus 或 Pixel,您可以透過自動透過無線 (OTA) 更新來更新裝置,或下載系統映像並直接刷新您的裝置。 如需手動將裝置更新至 Android Oreo 的詳細資訊,請參閱 Nexus 和 Pixel Devices 的 Factory 映射。
新功能
Android Oreo 引進各種新功能,例如通知通道、通知徽章、XML 中的自定義字型、可下載字型、自動填滿和圖片中的圖片。 下列各節會反白顯示這些功能,並提供連結以協助您開始在應用程式中使用這些功能。
通知通道
通知通道 是應用程式定義的通知類別。 您可以為每個需要傳送的通知類型建立通知通道,而且您可以建立通知通道來反映應用程式使用者所做的選擇。 新的通知通道功能可讓您對不同類型的通知提供更細緻的控制。 例如,如果您要實作傳訊應用程式,您可以為使用者所建立的每個交談群組建立個別的通知通道。
通知通道 說明如何建立通知通道,並用它來張貼本機通知。
通知徽章
通知徽章是出現在應用程式圖示上的小點,如下列螢幕快照所示:
這些點表示與該應用程式圖示相關聯的應用程式中有一或多個通知通道的新通知, 這些是使用者尚未關閉或採取行動的通知。 用戶可以長時間按下圖示,以一眼查看與通知徽章相關聯的通知、關閉或對長時間按下功能表的通知採取行動。
如需通知徽章的詳細資訊,請參閱 Android 開發人員 通知徽章 主題。
XML 中的自定義字型
Android Oreo 引進 XML 中的字型,可讓您將自定義字型併入為資源。 支援 OpenType (.otf) 和 TrueType (.ttf) 字型格式。 若要將字型新增為資源,請執行下列動作:
建立 Resources/font 資料夾。
將您的字型檔案(例如, .ttf 和 .otf 檔案)複製到 Resources/font。
如有必要,請重新命名每個字型檔案,使其遵守Android檔案命名慣例(例如,在檔名中只使用小寫 a-z、 0-9和底線)。 例如,字型檔案
Pacifico-Regular.ttf
可以重新命名為 類似的內容pacifico.ttf
。在版面配置 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 檔案,描述多個字型以及樣式和粗細詳細數據。 如需詳細資訊,請參閱 XML 中的 Android 開發人員字型主題。
可下載字型
從 Android Oreo 開始,應用程式可以從提供者要求字型,而不是將它們結合到 APK 中。 字型只會視需要從網路下載。 此功能可減少 APK 大小、節省手機記憶體和行動資料使用量。 您也可以安裝 Android 支援連結庫 26 套件,在 Android API 14 版和更新版本上使用此功能。
當您的應用程式需要字型時,您會建立 FontsRequest
物件(指定要下載的字型),然後將它傳遞至 FontsContract
下載字型的方法。 下列步驟將更詳細地描述字型下載程式:
具現化 FontRequest 物件。
子類別和具現化 FontsContract.FontRequestCallback。
實作 FontRequestCallback.OnTypeFaceRetrieved 方法,用來處理字型要求的完成。
實作 FontRequestCallback.OnTypeFaceRequestFailed 方法,用來通知您的應用程式在字型要求程式期間發生的任何錯誤。
呼叫 FontsContract.RequestFonts 方法,從字型提供者擷取字型。
當您呼叫 RequestFonts
方法時,它會先檢查字型是否在本機快取(從先前呼叫 的 RequestFont
)。 如果未快取,它會呼叫字型提供者、以異步方式擷取字型,然後叫用 方法 OnTypeFaceRetrieved
將結果傳回您的應用程式。
如需下載字型的詳細資訊,請參閱 Android 開發人員 可下載字型 主題。
自動填寫
Android Oreo 中的新 自動填滿 架構可讓使用者更輕鬆地處理重複的工作,例如登入、帳戶建立和信用卡交易。 用戶花費較少的時間重新輸入資訊(這可能會導致輸入錯誤)。 您的應用程式必須先在系統設定中啟用自動填滿服務,才能使用自動填滿架構(用戶可以啟用或停用自動填入)。
如需新自動填入功能以及如何優化應用程式以進行自動填入的詳細資訊,請參閱 Android 開發人員 自動填滿架構 主題。
圖片圖片(PIP)
Android Oreo 讓活動能夠在圖片中啟動 (PIP) 模式,並重疊另一個活動的螢幕。 此功能適用於視訊播放。
若要指定您的應用程式活動可以使用 PIP 模式,請在 Android 指令清單中將下列旗標設定為 true:
android:supportsPictureInPicture
若要指定活動在 PIP 模式中應如何運作,請使用新的 PictureInPictureParams 物件。 PictureInPictureParams
代表一組參數,您用來初始化和更新 PIP 模式中的活動(例如,活動的慣用外觀比例)。 Android Oreo 中已新增 Activity
下列新的 PIP 方法:
EnterPictureInPictureMode – 將活動置於 PIP 模式。 活動會放在畫面的角落,而畫面的其餘部分會填入畫面上先前的活動。
SetPictureInPictureParams – 更新 活動的 PIP 組態設定(例如外觀比例變更)。
其他功能
Android Oreo 包含許多其他新功能,例如 Emoji 支援連結庫、位置 API、背景限制、應用程式寬域色彩、新的音頻編解碼器、WebView 增強功能、改進的鍵盤瀏覽支援,以及適用於高效能低延遲音頻的新 AAudio (pro audio) API,如需這些功能的詳細資訊,請參閱 Android 開發人員 Android Oreo 功能和 API 主題。
行為變更
Android Oreo 包含各種系統和 API 行為變更,可能會影響現有應用程式的功能。 這些變更描述如下。
背景執行限制
為了改善用戶體驗,Android Oreo 會對應用程式在背景中執行時可以執行的動作施加限制。 例如,如果使用者正在觀看視訊或播放遊戲,在背景中執行的應用程式可能會損害在前景中執行的視訊密集型應用程式效能。 因此,Android Oreo 會對未與使用者直接互動的應用程式設定下列限制:
背景服務限制 – 當應用程式在背景中執行時,它有幾分鐘的視窗,仍然允許建立和使用服務。 在該視窗結束時,Android 會停止應用程式的背景服務,並將它 視為閑置。
廣播限制 – 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 行為變更。