Android 3.1 API

API 級別: 12

開發人員可使用 Android 3.1 平台 (HONEYCOMB_MR1) 可做為 適用於 Android SDK 的可下載元件。可下載的平台包括 Android 程式庫和系統映像檔,以及一組模擬器外觀 內容。可下載的平台不含任何外部程式庫。

開發人員可以用 Android 3.1 平台 適用於 Android SDK 的可下載元件。可下載的平台包括 Android 程式庫和系統映像檔,以及一組模擬器外觀 內容。如要開始針對 Android 3.1 進行開發或測試 使用 Android SDK Manager 將這個平台下載到 SDK。

API 總覽

以下各節提供開發人員最新資訊的技術總覽 ,包括架構 API 的新功能和異動 上一個版本

USB API

Android 3.1 版推出了強大的全新 API,讓開發人員能夠 整合已連結的周邊裝置和平台上執行的應用程式。 這些 API 是以 USB (通用序列匯流排) 堆疊和服務為基礎 平台內建,包括支援 USB 主機和裝置 互動情形開發人員可透過 API 建立能 探索、通訊及管理 USB。

堆疊和 API 可區分兩種基本 USB 硬體類型, Android 裝置使用主機或外部硬體 就是主辦人:

  • USB 裝置是一部已連結的硬體,取決於 做為主機使用的 Android 裝置。例如大部分的輸入裝置、滑鼠 和搖桿都是 USB 裝置,許多相機、集線器等都屬於這種裝置。
  • USB 配件是搭載 USB 的連接硬體 主機控制器、提供相關電源,並且可用來 使用 USB 連接的 Android 裝置,許多周邊裝置皆可連接 例如機器人控制器、音樂設備、運動自行車 等等。

無論是 USB 裝置和 USB 配件, 平台的 USB API 可在附加或連接時 以及標準介面、端點和傳輸模式 (控制權、大量和乾擾)。

USB API 包含在 android.hardware.usb 套件中。 中央類別為 UsbManager 用於識別和通訊的輔助方法 USB 裝置和 USB 配件應用程式可以取得 UsbManager,然後查詢附加的清單 並與裝置或配件進行通訊或管理。 UsbManager 也會宣告意圖動作 系統廣播訊息;當裝置連接 USB 裝置或配件時, 已卸離。

其他類別包括:

  • UsbDevice,代表外部的類別 硬體,以 USB 裝置的形式連接 (Android 裝置 )。
  • UsbAccessory,代表外部硬體 已連接為 USB 主機 (搭配 USB 的 Android 裝置使用 裝置)。
  • UsbInterfaceUsbEndpoint:可讓您存取標準 USB 裝置的介面和端點
  • UsbDeviceConnectionUsbRequest,用於傳送和接收資料及控管 對 USB 裝置傳送或接收訊息,同步且非同步。
  • UsbConstants,可提供 宣告端點類型、裝置類別等。

請注意,雖然平台已內建 USB 堆疊,但實際支援 特定裝置上的 USB 主機和開放式配件模式 製造商具體來說,主機模式需要使用合適的 USB 傳輸線 同時維護用於 Android 裝置的控制器硬體和控制器

此外,開發人員也可以要求篩選 Google Play 的內容,例如: 使用者的裝置不支援 可用的 USB 支援。如要要求篩選,請新增一或兩個元素 新增至應用程式資訊清單,並適當:

  • 如果應用程式只能向支援 USB 的裝置顯示 主機模式 (USB 裝置連線),請宣告此元素:

    <uses-feature android:name="android.hardware.usb.host" android:required="true">

  • 如果應用程式只能向支援 USB 的裝置顯示 配件 (USB 主機連線),請宣告此元素:

    <uses-feature android:name="android.hardware.usb.accessory" android:required="true">

如需瞭解如何開發與應用程式互動 USB 配件,請參閱 開發人員說明文件

如要查看使用 USB Host API 的範例應用程式,請參閱 ADB 測試小米裝置 啟動器

MTP/PTP API

Android 3.1 版提供新的 MTP API,可讓應用程式直接互動 連接攝影機和其他 PTP 裝置新的 API 可讓您輕鬆 應用程式,以便在裝置附加及移除時接收通知。 管理裝置上的檔案和儲存空間,以及將檔案和中繼資料轉移至 並直接從他人身上學到知識MTP API 導入 PTP (圖片傳輸通訊協定) 子集 MTP (媒體傳輸通訊協定) 規格的 1。

MTP API 包含在 android.mtp 套件中, 這些類別:

  • MtpDevice 會封裝裝置的 MTP 裝置。 。應用程式可將 存取這類裝置,然後使用 物件,以及開啟連線和傳輸資料 部分方法包括:
    • getObjectHandles() 會傳回裝置上所有物件的控制代碼清單 符合指定的格式和父項如要取得物件相關資訊, 應用程式可將控制代碼傳遞至 getObjectInfo()
    • importFile() 可讓應用程式將物件的資料複製到外部檔案 如果 30 天內讀取資料不到一次 建議使用 Coldline Storage這個呼叫可能會隨心所欲封鎖一段時間,取決於 資料大小和裝置速度,因此應由頻率組成 。
    • open() 讓應用程式開啟已連接的 MTP/PTP 裝置。
    • 可退貨 (費用:getThumbnail()) 做為位元組陣列的物件縮圖。
  • MtpStorageInfo 含有儲存空間的相關資訊 MTP 裝置上的單位,對應於 MTP 規格第 5.2.2 節。類別中的方法可讓應用程式 取得儲存單位的說明字串、可用空間、最大儲存空間容量 包括儲存空間 ID 和磁碟區 ID
  • MtpDeviceInfo 會存放 MTP 裝置的相關資訊 對應 MTP 第 5.1.1 節所述的 DeviceInfo 資料集 規格。這個類別中的方法可讓應用程式取得裝置的 製造商、型號、序號和版本。
  • MtpObjectInfo 會保留所儲存物件的相關資訊 在 MTP 裝置上,對應於第一節所述的 ObjectInfo 資料集 5.3.1 MTP 規格。類別中的方法可讓應用程式取得 物件的大小、資料格式、關聯類型、建立日期和縮圖 可能不準確或不適當
  • MtpConstants 提供用於宣告 MTP 檔案的常數 格式代碼、關聯類型和保護狀態

支援新的輸入裝置和動作事件

Android 3.1 擴充了輸入子系統,支援新的輸入裝置和全新輸入裝置和新設備 所有檢視畫面和視窗中的動作事件類型。開發人員可以在 Google Cloud 的協助下 讓使用者透過滑鼠與應用程式互動 軌跡球、搖桿、遊戲墊和其他裝置,除了鍵盤和 觸控螢幕

如要處理滑鼠、滾輪和軌跡球輸入,則平台支援 兩項新的動作事件動作:

  • ACTION_SCROLL,用於說明指標 非觸控式捲動動作 (例如滑鼠滾輪) 的位置 。在 MotionEvent 中,AXIS_HSCROLLAXIS_VSCROLL 軸的值會指定相對捲動 動作。
  • ACTION_HOVER_MOVE,回報目前情形 未按下任何按鈕時,會移動滑鼠的位置,以及任何中間的 自上次HOVER_MOVE事件以來的距離。懸停進入及離開 目前不支援通知功能。

若要支援搖桿和遊戲搖桿,InputDevice 類別 包括下列新的輸入裝置來源:

描述這些新來源和滑鼠中的動作事件 和軌跡球,現在平台現在可以在 MotionEvent 上定義軸代碼,類似於在 KeyEvent 上定義按鍵碼的方式。全新搖桿的軸代碼 和遊戲控制器 AXIS_HAT_XAXIS_HAT_YAXIS_RTRIGGERAXIS_ORIENTATIONAXIS_THROTTLE等人。 現有的 MotionEvent 軸表示 AXIS_XAXIS_YAXIS_PRESSUREAXIS_SIZEAXIS_TOUCH_MAJORAXIS_TOUCH_MINORAXIS_TOOL_MAJORAXIS_TOOL_MINORAXIS_ORIENTATION

此外,MotionEvent 會定義一些一般性 當架構不知道如何對應 各軸的名稱特定裝置可以使用通用軸代碼傳送自訂的 將動作資料傳送至應用程式有關軸及其預定用途的完整清單 請參閱 MotionEvent 類別說明文件

這個平台分批提供動作事件給應用程式,因此 事件可能包含一個當前位置以及多個所謂的歷史運動。 應用程式應使用 getHistorySize() 來取得 然後擷取並處理所有歷來樣本 樣本 (依序使用 getHistoricalAxisValue())。接著,應用程式應處理 使用 getAxisValue() 的範例。

部分軸可使用特殊的存取子方法擷取。例如: 應用程式可以呼叫 getX(),而不用呼叫 getAxisValue()。內建存取子的軸包括 AXIS_XAXIS_YAXIS_PRESSUREAXIS_SIZEAXIS_TOUCH_MAJORAXIS_TOUCH_MINORAXIS_TOOL_MAJORAXIS_TOOL_MINORAXIS_ORIENTATION

每個輸入裝置都有專屬的系統指派 ID,也可能會提供 來自多個來源如果裝置提供多種來源,會有多個來源 能以同一軸提供軸資料舉例來說 來自觸控來源的螢幕定位資料使用 X 軸,而搖桿 來自搖桿來源的事件會使用 X 軸做為線條位置 。因此,應用程式必須解讀軸 會根據其來源環境設定值處理動作時 事件,應用程式應在 InputDevice 上使用方法 類別,以判斷裝置或來源所支援的軸。具體而言 應用程式可以使用 getMotionRanges() 查詢裝置的所有軸或指定的所有軸 裝置來源。在這兩種情況下,傳回的軸範圍資訊 InputDevice.MotionRange 物件會為 每個軸的值

最後,由於搖桿、遊戲墊、滑鼠和滑鼠等動作事件 軌跡球不是觸控事件,則平台會新增 以「通用」的形式傳遞至 View動作事件 具體來說,它會回報非觸控動作事件 呼叫 onGenericMotionEvent() (而不是 onTouchEvent()) 時會導致 View

平台會根據不同的 事件來源類別。SOURCE_CLASS_POINTER 項活動 前往指標底下的 View,就像輕觸 事件。所有其他項目都會移至目前聚焦的View。 例如,這表示 View 必須先聚焦才能 接收搖桿事件如有需要,應用程式可在子資源層級處理這些事件 改為實作 onGenericMotionEvent()

查看使用搖桿動作的範例應用程式 事件,請參閱 GameControllerInputGameView 一起使用。

RTP API

Android 3.1 向其內建的 RTP (即時傳輸通訊協定) 公開 API 應用程式可用於管理隨選或互動式資料 以及串流尤其是提供 VOIP、推送交談、會議通訊功能的應用程式 和音訊串流可以使用 API 啟動工作階段,以及傳輸或接收 以及透過任何可用網路進行的資料串流。

RTP API 位於 android.net.rtp 套件中。等級 包括:

為了支援語音會議和類似用途,應用程式須執行例項化 用兩個類別做為串流的端點:

最簡單的用法涉及單一遠端端點和本機端點。 如需較複雜的使用方式,請參閱 AudioGroup

如要使用 RTP API,應用程式必須於下列日期要求使用者授予權限: 正在宣告 <uses-permission android:name="android.permission.INTERNET"> 。此外,如要取得裝置麥克風,應用程式還必須授予 <uses-permission android:name="android.permission.RECORD_AUDIO"> 權限。

可調整大小的應用程式小工具

從 Android 3.1 開始,開發人員可以建立主畫面小工具 可調整大小,包括水平、垂直或兩個軸。使用者按住 顯示大小調整控點的小工具,然後拖曳水平和/或垂直方向 控點來變更版面配置格線的大小。

開發人員可以定義 小工具 AppWidgetProviderInfo 中繼資料中的 resizeMode 屬性。下列項目的值: resizeMode 屬性包含「水平」、「垂直」和「無」。 如要將小工具宣告為可水平和垂直調整大小,請提供所需的值 「Horizontal|vertical」。

範例如下:

<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
    android:minWidth="294dp"
    android:minHeight="72dp"
    android:updatePeriodMillis="86400000"
    android:previewImage="@drawable/preview"
    android:initialLayout="@layout/example_appwidget"
    android:configure="com.example.android.ExampleAppWidgetConfigure"
    android:resizeMode="horizontal|vertical" >
</appwidget-provider>

如要進一步瞭解主畫面小工具,請參閱應用程式小工具 說明文件。

動畫架構

  • 新增 ViewPropertyAnimator 類別
  • 動畫背景顏色
  • ViewAnimator 取得動畫分數

UI 架構

圖形

  • 管理點陣圖的輔助程式
    • setHasAlpha(boolean) 可讓應用程式表示 點陣圖中的所有像素都已知不透明 (false),或者部分像素 像素可能包含非不透明的 Alpha 值 (true)。請注意,部分設定 (例如 如同 RGB_565) 所以呼叫遭到忽略,因為該呼叫不支援每個像素的 Alpha 值 輕鬆分配獎金這的用意是繪圖提示,在某些情況下 比起不透明的繪製案例 以像素為單位的 Alpha 值
    • getByteCount() 會取得點陣圖大小 一個位元組
    • getGenerationId()可讓應用程式 指出點陣圖是否遭到修改,例如用於快取
    • sameAs(android.graphics.Bitmap):決定 指出特定點陣圖的尺寸是否與目前的點陣圖不同 或像素資料
  • 設定相機位置和旋轉

網路

  • 高效能 Wi-Fi 鎖定
    • 全新的高效能 Wi-Fi 鎖定機制,可讓應用程式 或高效能 Wi-Fi 連線。 如果應用程式長時間串流播放音樂、影片或語音,就能取得 高效能 Wi-Fi 鎖定功能,即使螢幕開啟時也能持續串流效能 已關閉。由於這個程序耗用較多電力,應用程式應該 如果需要長時間運作的 Wi-Fi 以獲得最佳效能和最安全的連線

      如要建立高效能鎖定,請在以下位置中傳遞 WIFI_MODE_FULL_HIGH_PERF 做為鎖定模式: 呼叫 createWifiLock()

  • 更多流量統計資料
    • 應用程式現在可以存取更多網路用量類型的統計資料 在 TrafficStats 中使用新方法。應用程式可以使用 取得 UDP 統計資料、封包數、TCP 傳輸/接收酬載位元組數,以及 指定 UID 的區隔
  • SIP 驗證使用者名稱

下載管理員

IME 架構

媒體

  • 全新的串流音訊格式
    • 媒體架構已內建對原始 ADTS AAC 內容的支援, 改善串流音訊,並支援 FLAC 音訊,以達到最佳品質 壓縮的音訊內容。請參閱支援的媒體格式

停止時啟動控制項 應用程式

從 Android 3.1 版開始,系統的套件管理員會追蹤 也就是提供控制方法 以及透過背景程序及其他應用程式啟動的容器。

請注意,應用程式的停止狀態與 Activity 的 已停止狀態。系統會分別管理這兩個停止狀態。

平台定義了兩個新的意圖旗標,可讓傳送者指定 是否應該允許 Intent 啟動已停止的元件 應用程式。

如果意圖中都未定義上述兩個標記,或是兩者都未定義,系統會採用預設值 是要將已停止的應用程式篩選器列入 潛在目標。

請注意,系統會把 FLAG_EXCLUDE_STOPPED_PACKAGES 加入所有廣播訊息中 意圖。這麼做可避免背景服務發送廣播訊息 在無意間或不小心啟動停滯應用程式的元件。 背景服務或應用程式可以透過新增 播送 FLAG_INCLUDE_STOPPED_PACKAGES 標記 應允許啟動已停止的應用程式的調用請求。

首次安裝應用程式時,並未處於停止狀態,但應用程式卻沒有 自動啟動,以及使用者手動停止 (位於「管理」分頁中) 應用程式)。

應用程式首次啟動與升級的通知

平台加入了改良版通知,適合應用程式首次啟動和 透過兩個全新意圖動作進行升級

  • ACTION_PACKAGE_FIRST_LAUNCH - 傳送到 應用程式首次啟動時的安裝程式套件 (也就是第一次從已停止狀態移出)。資料 包含套件名稱。
  • ACTION_MY_PACKAGE_REPLACED - 通知 應用程式已更新,但安裝新版本時 現有版本這只會傳送至被取代的應用程式。這項服務 不包含任何額外資料。如要接收,請宣告意圖篩選器 執行此動作您可以使用該意圖觸發程式碼,協助 升級後,應用程式回復 恢復正常運作

    這個意圖會直接傳送至應用程式,但僅限應用程式 是在啟動狀態 (非已停止狀態) 時升級。

核心公用程式

  • LRU 快取
    • 新的 LruCache 類別可讓應用程式受益 以節省大量資源應用程式可以使用此類別縮短花費時間 從網路運算或下載資料,同時維持 快取資料的記憶體用量。LruCache 是快取 可支援有一定數量值的有力參照。每當一個值 就會移至佇列的開頭將值加到整個 快取,該佇列結尾的值會遭到撤銷,且可能符合 例如垃圾收集
  • 檔案描述元為 int

WebKit

  • 檔案配置 Cookie
    • CookieManager 現在支援使用 這個 file: URI 配置。您可以使用 setAcceptFileSchemeCookies() 執行下列操作: 在建構執行個體之前,啟用/停用檔案配置 Cookie 的支援功能 共 WebViewCookieManager。在 CookieManager 執行個體,您可以檢查檔案配置 Cookie 呼叫 allowFileSchemeCookies() 加以啟用。
  • 登入要求通知
    • 為了支援 Android 3.0 所推出的瀏覽器自動登入功能, 新品 方法 onReceivedLoginRequest() 通知主機 已處理對使用者的自動登入要求。
  • 移除的類別和介面
    • 隨後,公用 API 已移除幾個類別和介面 先前處於已淘汰狀態請參閱 API 差異報表

Browser

瀏覽器應用程式新增了以下功能來支援網路 應用程式:

  • 支援在 HTML5 中內嵌影片內嵌播放 <video> 標記。盡可能使用硬體加速播放。
  • 針對所有網站上的固定位置元素提供圖層支援 (行動版和 電腦)。

新功能常數

平台新增了硬體功能常數,可供開發人員宣告 納入應用程式資訊清單中,藉此向外部實體告知 Google 說明應用程式要求支援全新硬體功能的需求 新功能開發人員聲明這些功能和其他功能 <uses-feature> 資訊清單元素中的常數。

Google Play 會根據 <uses-feature> 資訊清單元素中宣告的功能,篩選應用程式。如要進一步瞭解 在應用程式資訊清單中宣告功能,請參閱 Google Play 篩選器

API 差異報表

如需 Android 3.1 (API) 中所有 API 變更的詳細資料 等級 12),請參閱 API 差異報表

API 級別

Android 3.1 平台提供 架構 APIAndroid 3.1 API 會指派一個整數 ID 12,也就是 儲存於系統本身這個識別碼稱為「API 級別」 系統才能正確判斷 系統進行更新。

如要在應用程式中使用 Android 3.1 版中導入的 API, 您需要針對 Android 3.1 SDK 平台您可以視需求 可能 需要新增android:minSdkVersion="12" 屬性設為應用程式所用 <uses-sdk> 元素中的 資訊清單。

詳情請參閱「什麼是 API? 關卡?