API 級別: 12
開發人員可以使用 Android 3.1 平台 (HONEYCOMB_MR1
) 做為 Android SDK 的可下載元件。可下載的平台內含一個 Android 程式庫和系統映像檔,以及一組模擬器外觀等項目。可下載平台不含外部程式庫。
對開發人員來說,Android 3.1 平台是 Android SDK 的可下載元件。可下載的平台內含一個 Android 程式庫和系統映像檔,以及一組模擬器外觀等項目。如要開始針對 Android 3.1 進行開發或測試,請使用 Android SDK Manager 將平台下載至 SDK。
API 總覽
下列各節將概略說明 Android 3.1 中為開發人員提供的新功能,包括自上個版本以來的新功能和架構 API 變更。
USB API
Android 3.1 推出了強大的全新 API,可將已連結的周邊裝置與在平台上執行的應用程式整合。API 是以平台內建的 USB (通用序列匯流排) 堆疊和服務為基礎,包括支援 USB 主機和裝置互動。開發人員可以使用 API 建立應用程式,以便探索、通訊及管理透過 USB 連接的各種裝置類型。
堆疊和 API 會根據 Android 裝置做為主機,還是外部硬體做為主機,區分兩種基本類型的 USB 硬體:
- 「USB 裝置」是已連結的硬體,視 Android 裝置而定。舉例來說,大多數的輸入裝置、滑鼠和搖桿都是 USB 裝置,許多攝影機、集線器等都屬於 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 主機連接的外部硬體 (將 Android 裝置當做 USB 裝置使用)。UsbInterface
和UsbEndpoint
:提供裝置標準 USB 介面和端點的存取權。UsbDeviceConnection
和UsbRequest
:能以同步、非同步的方式收發資料和控制 USB 裝置間的訊息。UsbConstants
提供用於宣告端點類型、裝置類別等項目的常數。
請注意,雖然平台內建 USB 堆疊,但特定裝置上的 USB 主機和開放式配件模式實際支援情形是由製造商決定。特別是,主機模式需要使用 Android 裝置中的適當 USB 控制器硬體。
此外,開發人員也可以要求 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 主機 API 的範例應用程式,請參閱 ADB 測試和任務啟動器
MTP/PTP API
Android 3.1 提供全新的 MTP API,可讓應用程式直接與已連結的相機和其他 PTP 裝置互動。這個新的 API 可讓應用程式輕鬆接收裝置附加和移除的通知、管理裝置上的檔案和儲存空間,以及傳輸檔案和中繼資料。MTP API 會實作 MTP (媒體傳輸通訊協定) 規格的 PTP (圖片傳輸通訊協定) 子集。
MTP API 位於 android.mtp
套件中,並提供以下類別:
MtpDevice
會封裝透過 USB 主機匯流排已連線的 MTP 裝置。應用程式可以對這個類型的物件例項化,然後使用其方法取得儲存在其裝置和物件的相關資訊,以及開啟連線和傳輸資料。以下列舉一些方法:getObjectHandles()
會傳回裝置上所有符合指定格式和父項物件的控制代碼清單。如要取得物件的相關資訊,應用程式可將控制代碼傳遞至getObjectInfo()
。importFile()
可讓應用程式將物件資料複製到外部儲存空間中的檔案。這項呼叫可能會基於資料大小和裝置速度而封鎖一段時間,因此請使用雜訊執行緒。open()
可讓應用程式開啟已連線的 MTP/PTP 裝置。getThumbnail()
會以位元組陣列的形式傳回物件的縮圖。
MtpStorageInfo
會保留 MTP 裝置上儲存單位的相關資訊,對應 MTP 規格第 5.2.2 節所述的 StorageInfo 資料集。此類別中的方法可讓應用程式取得儲存空間單元的說明字串、可用空間、最大儲存空間容量、儲存空間 ID 和磁碟區 ID。MtpDeviceInfo
會保留對應於 DeviceInfo 資料集所對應的 MTP 裝置資訊,如 MTP 規格第 5.1.1 節所述。類別中的方法可讓應用程式取得裝置的製造商、型號、序號和版本。MtpObjectInfo
會保留儲存在 MTP 裝置上的物件資訊,與 MTP 規格第 5.3.1 節所述的 ObjectInfo 資料集相對應。類別中的方法可讓應用程式取得物件的大小、資料格式、關聯類型、建立日期和縮圖資訊。MtpConstants
提供用於宣告 MTP 檔案格式代碼、關聯類型和保護狀態的常數。
支援新的輸入裝置和動作事件
Android 3.1 擴充了輸入子系統,以在所有檢視畫面和視窗中支援新的輸入裝置和新型動作事件。開發人員可以建構這些功能,讓使用者除了鍵盤和觸控螢幕外,還能使用滑鼠、軌跡球、搖桿、遊戲手把和其他裝置與應用程式互動。
針對處理滑鼠、滾輪和軌跡球的輸入,平台支援兩個新的動作事件動作:
ACTION_SCROLL
:說明非觸控式捲動動作的指標位置,例如滑鼠滾輪或點按地點。在 MotionEvent 中,AXIS_HSCROLL
和AXIS_VSCROLL
軸的值會指定相對捲動移動。ACTION_HOVER_MOVE
:在未按下任何按鈕時回報滑鼠目前的位置,以及自上次HOVER_MOVE
事件以來的任何中繼點。尚不支援懸停進入與離開通知。
為了支援搖桿和遊戲搖桿,InputDevice
類別包含以下新的輸入裝置來源:
SOURCE_CLASS_JOYSTICK
:來源裝置有搖桿。SOURCE_CLASS_BUTTON
:來源裝置有按鈕或按鍵。SOURCE_GAMEPAD
:來源裝置有遊戲手把按鈕,例如KEYCODE_BUTTON_A
或KEYCODE_BUTTON_B
。隱含SOURCE_CLASS_BUTTON
SOURCE_JOYSTICK
:來源裝置有搖桿的軸。隱含 SOURCE_CLASS_JOYSTICK。
為了描述這些新來源的動作事件,以及來自滑鼠和軌跡球的動作事件,平台現在定義了 MotionEvent
的軸代碼,類似於 KeyEvent
上定義按鍵代碼的方式。搖桿和遊戲控制器的新軸代碼包括 AXIS_HAT_X
、AXIS_HAT_Y
、AXIS_RTRIGGER
、AXIS_ORIENTATION
、AXIS_THROTTLE
等。現有的 MotionEvent
軸會以 AXIS_X
、AXIS_Y
、AXIS_PRESSURE
、AXIS_SIZE
、AXIS_TOUCH_MAJOR
、AXIS_TOUCH_MINOR
、AXIS_TOOL_MAJOR
、AXIS_TOOL_MINOR
和 AXIS_ORIENTATION
表示。
此外,MotionEvent
會定義一些一般軸代碼,以便在架構不知道如何對應特定軸時使用。特定裝置可以使用一般軸代碼將自訂動作資料傳送至應用程式。如需軸及其預期解讀的完整清單,請參閱 MotionEvent
類別說明文件。
平台會批次為應用程式提供動作事件,因此單一事件可能包含目前位置和多個所謂的歷史移動。應用程式應使用 getHistorySize()
取得歷來樣本數,然後使用 getHistoricalAxisValue()
擷取並處理所有歷來範例。之後,應用程式應使用 getAxisValue()
處理目前的範例。
您可以使用特殊的存取子方法來擷取某些軸。例如,應用程式可以呼叫 getX()
,而不用呼叫 getAxisValue()
。具有內建存取子的軸包括 AXIS_X
、AXIS_Y
、AXIS_PRESSURE
、AXIS_SIZE
、AXIS_TOUCH_MAJOR
、AXIS_TOUCH_MINOR
、AXIS_TOOL_MAJOR
、AXIS_TOOL_MINOR
和 AXIS_ORIENTATION
。
每個輸入裝置都有系統指派的專屬 ID,也可以提供多個來源。如果裝置提供多個來源,多個來源可以提供使用相同軸的軸資料。舉例來說,來自觸控來源的觸控事件會使用 X 軸顯示螢幕位置資料,而搖桿來源的搖桿事件則會改用 X 軸做為刻度位置。因此,應用程式必須根據來源的來源解讀軸值。處理動作事件時,應用程式應使用 InputDevice
類別的方法來判斷裝置或來源支援的軸。具體來說,應用程式可以使用 getMotionRanges()
查詢裝置的所有軸或特定來源的所有軸。在這兩種情況下,InputDevice.MotionRange
物件中傳回的軸範圍資訊都會指定每個軸值的來源。
最後,由於搖桿、遊戲手把、滑鼠和軌跡球的動作事件不是觸控事件,因此平台會新增回呼方法,將這些事件做為「一般」動作事件傳遞至 View
。具體來說,它會透過呼叫 onGenericMotionEvent()
(而非 onTouchEvent()
) 向 View
回報非觸控動作事件。
平台會根據事件來源類別,以不同方式分派一般動作事件。SOURCE_CLASS_POINTER
事件會前往指標下方的 View
,類似於觸控事件的運作方式。所有其他項目則均指向目前聚焦的 View
。舉例來說,這表示 View
必須取得焦點,才能接收搖桿事件。應用程式可以視需要改為實作 onGenericMotionEvent()
,在活動或對話方塊層級處理這些事件。
如要查看使用搖桿動作事件的範例應用程式,請參閱 GameControllerInput 和 GameView。
RTP API
Android 3.1 將 API 公開至內建的 RTP (即時傳輸通訊協定) 堆疊,可讓應用程式用來管理隨選或互動式資料串流。特別是,如果應用程式提供 VOIP、推送轉播、會議通訊和音訊串流功能,就能使用 API 啟動工作階段,並透過任何可用網路傳輸或接收資料串流。
android.net.rtp
套件提供 RTP API。類別包括:
RtpStream
是串流的基礎類別,可透過 RTP 傳送及接收具有媒體酬載的網路封包。AudioStream
,RtpStream
的子類別,可透過 RTP 傳輸音訊酬載。AudioGroup
本機音訊中樞,用於管理及混音裝置喇叭、麥克風和AudioStream
。AudioCodec
,其中包含您為AudioStream
定義的轉碼器集合。
為了支援語音會議和類似用法,應用程式會將兩個類別執行個體化為串流的端點:
AudioStream
會指定遠端端點,當中包含網路對應和已設定的AudioCodec
。AudioGroup
代表一或多個AudioStream
的本機端點。AudioGroup
會混合所有AudioStream
,並視需要與裝置喇叭和麥克風互動。
最簡單的使用方式就是單一遠端端點和本機端點。
如要瞭解較複雜的用途,請參閱 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」和「none」。如要將小工具宣告為可水平和垂直調整大小,請提供「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 類別
- 新的
ViewPropertyAnimator
類別可讓開發人員輕鬆為View
物件上的特定屬性建立動畫。類別會自動處理及最佳化屬性動畫,方便您在View
物件上管理多個同時播放的動畫。ViewPropertyAnimator
的使用方式非常簡單。如要為View
的屬性建立動畫,請呼叫animate()
來建構該View
的ViewPropertyAnimator
物件。請使用ViewPropertyAnimator
上的方法指定要建立動畫的屬性及建立動畫的方式。舉例來說,如要將View
淡出至透明,請呼叫alpha(0);
。ViewPropertyAnimator
物件會處理相關細節,包括設定基礎Animator
類別並啟動該類別,然後算繪動畫。
- 新的
- 動畫背景顏色
- 新的
getBackgroundColor()
和setBackgroundColor(int)
方法可讓您取得/設定動畫背後的背景顏色,僅適用於視窗動畫。目前背景必須是黑色,可使用任何所需的 Alpha 等級。
- 新的
- 從
ViewAnimator
取得動畫比例- 新的
getAnimatedFraction()
方法可讓您從ValueAnimator
取得目前的動畫片段,即最近影格更新中使用的經過時間/內插片段。
- 新的
UI 架構
- 強制算繪圖層
- 新的
buildLayer()
方法可讓應用程式強制建立檢視畫面的圖層,並讓檢視畫面立即算繪。舉例來說,應用程式可在啟動動畫之前,使用這個方法將檢視畫面算繪到圖層。如果檢視畫面很複雜,請在開始動畫前將其算繪為圖層,可避免略過影格。
- 新的
- 相機距離
- 應用程式可以使用新方法
setCameraDistance(float)
,設定相機與檢視畫面的距離。這可讓應用程式進一步控管檢視畫面的 3D 轉換,例如旋轉。
- 應用程式可以使用新方法
- 透過 DatePicker 取得日曆檢視畫面
- 新的
getCalendarView()
方法可讓您從DatePicker
執行個體取得CalendarView
。
- 新的
- 在檢視畫面卸離時取得回呼
- 新的
View.OnAttachStateChangeListener
可讓您在 View 附加或從視窗卸離時接收回呼。使用addOnAttachStateChangeListener()
新增事件監聽器,並使用addOnAttachStateChangeListener()
將其移除。
- 新的
- 片段導覽標記事件監聽器、新的 onInflate() 簽名
- 新方法
setOnBreadCrumbClickListener()
提供掛鉤,可讓應用程式攔截片段導覽標記點擊,並在前往點擊的返回堆疊項目或片段前採取任何必要動作。 - 在
Fragment
類別中,onInflate(attrs, savedInstanceState)
已淘汰。請改用onInflate(activity, attrs, savedInstanceState)
。
- 新方法
- 在新分頁中顯示搜尋結果
ACTION_WEB_SEARCH
意圖的EXTRA_NEW_SEARCH
資料鍵可讓您在新的瀏覽器分頁中開啟搜尋,而不是在現有分頁中開啟。
- 可繪項目文字遊標
- 您現在可以使用新的資源屬性
textCursorDrawable
,指定可繪項目做為文字遊標使用。
- 您現在可以使用新的資源屬性
- 在遠端檢視畫面中設定顯示的子項
RemoteViews
子類別提供新的便利方法setDisplayedChild(viewId, childIndex)
,可用來設定在ViewAnimator
和AdapterViewAnimator
子類別中顯示的子項,例如AdapterViewFlipper
、StackView
、ViewFlipper
和ViewSwitcher
。
- 遊戲手把和其他輸入裝置的通用鍵
KeyEvent
會新增一系列通用按鍵碼,以容納遊戲手把按鈕。該類別也會新增isGamepadButton(int)
和其他幾種輔助方法,以處理按鍵碼。
圖像
- 管理點陣圖的輔助工具
setHasAlpha(boolean)
可讓應用程式指出點陣圖中的所有像素都是不透明 (false),或者某些像素可能包含非不透明的 Alpha 值 (true)。請注意,部分設定 (例如 RGB_565) 會忽略這個呼叫,因為其不支援每個像素的 Alpha 值。這可做為繪圖提示,因為在某些情況下,已知不透明的點陣圖會比含有不透明每個像素 Alpha 值的繪圖更快。getByteCount()
可取得點陣圖的大小 (以位元組為單位)。getGenerationId()
可讓應用程式查明點陣圖是否已修改,例如用於快取。sameAs(android.graphics.Bitmap)
會決定指定的點陣圖與尺寸、設定或像素資料是否與目前的點陣圖不同。
- 設定相機位置和旋轉
Camera
新增了rotate()
和setLocation()
這兩種新方法,用於控制 3D 轉換的相機位置。
網路
- 高效能 Wi-Fi 鎖定
- 全新高效能 Wi-Fi 鎖定,可讓應用程式維持高效能 Wi-Fi 連線,即使裝置螢幕關閉也不受影響。
長期串流播放音樂、影片或語音內容的應用程式可能會取得高效能 Wi-Fi 鎖定,確保即使螢幕關閉時也能維持串流效能。由於這種鎖定的耗電量較高,因此應用程式在需要長時間執行連線時,應該取得高效能 Wi-Fi。
如要建立高效能鎖定,請在對
createWifiLock()
的呼叫中將WIFI_MODE_FULL_HIGH_PERF
做為鎖定模式傳遞。
- 全新高效能 Wi-Fi 鎖定,可讓應用程式維持高效能 Wi-Fi 連線,即使裝置螢幕關閉也不受影響。
長期串流播放音樂、影片或語音內容的應用程式可能會取得高效能 Wi-Fi 鎖定,確保即使螢幕關閉時也能維持串流效能。由於這種鎖定的耗電量較高,因此應用程式在需要長時間執行連線時,應該取得高效能 Wi-Fi。
- 更多流量統計資料
- 應用程式現在可以使用
TrafficStats
中的新方法,存取更多網路用量類型的統計資料。應用程式可以使用這些方法取得特定 UID 的 UDP 統計資料、封包數、TCP 傳輸/接收酬載位元組和區段。
- 應用程式現在可以使用
- SIP 驗證使用者名稱
- 應用程式現在可以使用新方法
getAuthUserName()
和setAuthUserName()
,取得並設定設定檔的 SIP 驗證使用者名稱。
- 應用程式現在可以使用新方法
下載管理員
- 處理完成的下載作業
- 應用程式現在可以啟動下載作業,只在完成時通知使用者。如要啟動這類下載程序,應用程式會透過要求物件的
setNotificationVisibility()
方法傳遞VISIBILITY_VISIBLE_NOTIFY_ONLY_COMPLETION
。 - 新方法
addCompletedDownload()
可讓應用程式將檔案新增至下載資料庫,以便由「下載」應用程式管理。
- 應用程式現在可以啟動下載作業,只在完成時通知使用者。如要啟動這類下載程序,應用程式會透過要求物件的
- 顯示依大小排序的下載內容
- 應用程式可以將新的額外的
INTENT_EXTRAS_SORT_BY_SIZE
新增至ACTION_VIEW_DOWNLOADS
意圖,以依大小排序的模式啟動「下載」應用程式。
- 應用程式可以將新的額外的
輸入法編輯器架構
- 取得輸入法的額外值鍵
InputMethodSubtype
會新增containsExtraValueKey()
方法,檢查是否已為子類型儲存 ExtraValue 字串,以及getExtraValueOf()
方法,從 ExtraValue 雜湊擷取中擷取特定鍵/值。
媒體
- 全新的串流音訊格式
- 媒體架構新增了對原始 ADTS AAC 內容的內建支援,可改善串流音訊,並支援 FLAC 音訊,提供最高品質的 (無損) 壓縮音訊內容。詳情請參閱支援的媒體格式文件。
在已停止的應用程式上啟動控制項
從 Android 3.1 版開始,系統的套件管理員會追蹤處於已停止狀態的應用程式,並提供一種方法控制應用程式在背景處理程序和其他應用程式中的啟動。
請注意,應用程式的停止狀態與活動的停止狀態不同。系統會分別管理這兩個停止狀態。
平台會定義兩個新的意圖旗標,讓傳送者指定是否要允許該意圖啟用已停止的應用程式中的元件。
FLAG_INCLUDE_STOPPED_PACKAGES
:在潛在目標清單中納入已停止應用程式的意圖篩選器。FLAG_EXCLUDE_STOPPED_PACKAGES
:從潛在目標清單中排除已停止應用程式的意圖篩選器。
若未在意圖中定義這兩個標記或兩個標記,預設行為是在潛在目標清單中納入已停止應用程式的篩選器。
請注意,系統會將 FLAG_EXCLUDE_STOPPED_PACKAGES
新增至「所有廣播意圖」。此操作能防止背景服務的廣播訊息,避免意外或不必要的啟動已停止運作應用程式的元件。背景服務或應用程式可以藉由新增 FLAG_INCLUDE_STOPPED_PACKAGES
標記來覆寫這個行為,藉此廣播應允許啟用已停止應用程式的意圖。
應用程式首次安裝但尚未啟動,以及使用者手動停止應用程式時 (位於「管理應用程式」頁面),應用程式會處於停止狀態。
應用程式首次啟動與升級的通知
平台會透過兩個新的意圖動作,新增改進的應用程式首次啟動通知,並升級:
ACTION_PACKAGE_FIRST_LAUNCH
:在應用程式首次啟動時 (也就是應用程式首次從已停止狀態移出) 時,傳送至應用程式的安裝程式套件。資料包含套件名稱。ACTION_MY_PACKAGE_REPLACED
:通知應用程式已更新,並以現有版本安裝新版本。系統只會將這個值傳送到已取代的應用程式。不含任何額外資料。如要接收回應,請為這個動作宣告意圖篩選器。您可以使用該意圖觸發程式碼,讓應用程式在升級後恢復至適當的執行狀態。這個意圖會直接傳送至應用程式,但前提是應用程式處於啟動狀態 (而非處於停止狀態) 時升級。
核心公用程式
- LRU 快取
- 檔案描述元
int
- 您現在可以使用新方法
getFd()
或detachFd()
取得ParcelFileDescriptor
的原生檔案描述元 int。
- 您現在可以使用新方法
WebKit
- 檔案配置 Cookie
CookieManager
現在支援使用file:
URI 配置的 Cookie建構WebView
或CookieManager
執行個體之前,您可以使用setAcceptFileSchemeCookies()
啟用/停用檔案配置 Cookie 的支援功能。在CookieManager
執行個體中,您可以透過呼叫allowFileSchemeCookies()
來檢查檔案配置 Cookie 是否已啟用。
- 登入要求通知
- 為了支援 Android 3.0 中導入的瀏覽器自動登入功能,新方法
onReceivedLoginRequest()
會通知主機應用程式,系統已處理使用者的自動登入要求。
- 為了支援 Android 3.0 中導入的瀏覽器自動登入功能,新方法
- 移除的類別和介面
- 數個類別和介面在先前處於已淘汰狀態後,已從公用 API 中移除。詳情請參閱 API 差異報表。
Browser
瀏覽器應用程式新增下列功能以支援網頁應用程式:
- 支援內嵌播放 HTML5
<video>
標記中的影片。系統會盡可能使用硬體加速播放。 - 為所有網站 (行動裝置和電腦) 提供固定位置元素的圖層支援。
新功能常數
平台新增硬體功能常數,讓開發人員可在應用程式資訊清單中宣告,以通知外部實體,例如 Google Play 對這個平台版本支援的新硬體功能的應用程式要求。開發人員可以在 <uses-feature>
資訊清單元素中宣告這些功能和其他功能常數。
android.hardware.usb.accessory
:應用程式使用 USB API 與透過 USB 連線的外部硬體裝置通訊,並做為主機運作。android.hardware.usb.host
:應用程式使用 USB API 與透過 USB 連接的外部硬體裝置通訊,並做為裝置使用。
Google Play 會根據 <uses-feature>
資訊清單元素中宣告的功能篩選應用程式。如要進一步瞭解如何在應用程式資訊清單中宣告功能,請參閱「Google Play 篩選器」。
API 差異報表
如需 Android 3.1 (API 級別 12) 所有 API 變更的詳細檢視畫面,請參閱 API 差異報表。
API 級別
Android 3.1 平台提供新版架構 API。Android 3.1 API 會獲派一個整數 ID (12),儲存在系統本身中。這個 ID 稱為「API 級別」,可讓系統在安裝應用程式之前正確判斷應用程式是否與系統相容。
如要在應用程式中使用 Android 3.1 中導入的 API,您需要針對 Android 3.1 SDK 平台提供的 Android 程式庫編譯應用程式。視您的需求而定,您可能還需要在應用程式資訊清單中的 <uses-sdk>
元素中加入 android:minSdkVersion="12"
屬性。
詳情請參閱「什麼是 API 級別?」一文。