Android 2.3 API

API 級別:9

對於開發人員而言,Android 2.3 (GINGERBREAD) 平台可做為 Android SDK 的可下載元件使用。可下載的平台包括 Android 程式庫和系統映像檔,以及一組模擬器外觀 內容。如要開始針對 Android 2.3 進行開發或測試,請使用 Android SDK Manager 將平台下載至 SDK。

API 總覽

以下各節提供 2.3 版開發人員新功能的技術總覽,包括新功能和框架 API 相較於先前版本的變更。

以 SIP 為基礎的 IP 網路語音傳遞技術

該平台現在包含 SIP 通訊協定堆疊和架構 API,可讓開發人員建構網路電話應用程式。應用程式可透過 API 提供 語音通話功能,你不必管理工作階段、傳輸層級 無論是通訊或音訊等 由平台的 SIP API 和服務公開。

SIP API 可在 android.net.sip 套件中使用。主要類別為 SipManager,應用程式會使用這個類別設定及管理 SIP 設定檔,然後發起音訊通話及接聽音訊通話。建立音訊通話後,應用程式可以將通話設為靜音、開啟喇叭模式、傳送 DTMF 音調等。應用程式也可以使用 SipManager 即可建立一般 SIP 連線。

如需平台基礎 SIP 堆疊與服務,可透過以下裝置取得: 將由製造商及相關電信業者自行決定因此,應用程式應先使用 isApiSupported() 方法檢查是否支援 SIP,再向使用者提供通話功能。

如要使用 SIP API,應用程式必須在下列時間內要求使用者授予權限: 在資訊清單檔案中宣告 <uses-permission android:name="android.permission.INTERNET"><uses-permission android:name="android.permission.USE_SIP">

此外,開發人員也可以要求在 Google Play 上進行篩選,讓裝置未包含平台 SIP 堆疊和服務的使用者無法發現其應用程式。如要要求篩選,請將 <uses-feature android:name="android.software.sip" android:required="true"><uses-feature android:name="android.software.sip.voip"> 新增至應用程式資訊清單。

詳情請參閱 SIP 開發人員指南。

近距離無線通訊 (NFC)

Android 2.3 包含 NFC 堆疊和架構 API,可讓開發人員讀取使用者觸碰支援 NFC 的裝置時所發現的 NDEF 標記,以標記貼紙、智慧海報,甚至是其他裝置中的元素。

平台提供基本 NFC 服務,可與裝置搭配使用 以便找出進入範圍內的標記在發現標記時,平台會透過廣播 Intent 通知應用程式,並將標記的 NDEF 訊息附加至 Intent 做為額外內容。應用程式可以建立意圖篩選器 辨識並處理目標標記和訊息。舉例來說,在收到 標記時,應用程式會擷取 NDEF 訊息、加以儲存, 或以其他方式處理使用者

android.nfc 套件中會提供 NFC API。主要類別如下:

NFC 通訊功能仰賴裝置硬體中的無線技術,因此特定裝置是否支援平台的 NFC 功能,取決於製造商。如要判斷目前裝置是否支援 NFC,應用程式可以呼叫 isEnabled() 來查詢 NfcAdapter。不過,無論基礎硬體是否支援,NFC API 一律都會存在。

如要使用 NFC API,應用程式必須在資訊清單檔案中宣告 <uses-permission android:name="android.permission.NFC">,向使用者要求權限。

此外,開發人員也可以要求篩選 Google Play 的內容,例如: 如果使用者的裝置不支援這項功能 NFC。如要要求篩選,請將 <uses-feature android:name="android.hardware.nfc" android:required="true"> 新增至應用程式資訊清單。

如要查看使用 NFC API 的範例應用程式,請參閱 NFCDemo

陀螺儀和其他感應器

Android 2.3 新增平台和 API 支援,可用於幾種新的感應器讀取類型,包括陀螺儀、旋轉向量、線性加速度、重力感應器和氣壓計。開發人員可以使用新的感應器讀數建立回應應用程式 快速流暢地變更裝置位置和動作的精確變化。無論是執行在應用程式架構或原生程式碼中,Sensor API 都會將陀螺儀和其他感應器變更回報給相關應用程式。

請注意,每部裝置都提供一組特定的硬體感應器 將由裝置製造商自行決定。

開發人員可以要求在 Google Play 上進行篩選,讓裝置不提供陀螺儀感應器的使用者無法發現其應用程式。方法是在應用程式資訊清單中加入 <uses-feature android:name="android.hardware.sensor.gyroscope" android:required="true">

如需 API 詳細資料,請參閱 Sensor

支援多部相機

應用程式現在可以使用裝置上可用的任何攝影機,拍攝相片或影片。Camera 可讓您 應用程式會查詢可用的相機數量 各自的特性

如要查看存取前置鏡頭的程式碼範例,請參閱 ApiDemos 範例應用程式中的 CameraPreview.java

Camera API 也新增了以下功能:

可混合音效

平台的媒體架構新增了對個別曲目或全域音訊效果的支援,包括低音加強、耳機虛擬化、均衡器和混響。

如要查看音效效果的程式碼範例,請參閱 ApiDemos 範例應用程式中的 AudioFxDemo.java

媒體架構也新增了以下功能:

  • 新增支援 JPEG 檔案 EXIF 中繼資料中的高度標記。新增方法 getAltitude(),用於擷取 EXIF 高度標記的值。
  • 新的 setOrientationHint() 方法可讓應用程式在錄製影片時告知 MediaRecorder 方向。

下載管理員

平台提供全新的 DownloadManager 系統服務 這個 API 能處理長時間執行的 HTTP 下載作業應用程式可以要求將 URI 下載至特定目的地檔案。DownloadManager 將在背景進行下載,處理 HTTP 互動 並在連線失敗或連線中斷與系統時重新嘗試下載 就會重新開機。

  • 應用程式可以取得 DownloadManager 的執行個體 方法是呼叫 getSystemService(String) 並傳遞 DOWNLOAD_SERVICE。要求存取的應用程式 透過這個 API 下載的內容,應為 ACTION_NOTIFICATION_CLICKED 註冊廣播接收器, 當使用者在通知中點選正在執行的下載項目,或從 下載 UI。
  • DownloadManager.Request 類別可讓應用程式提供要求新下載作業所需的所有資訊,例如要求 URI 和下載目的地。要求 URI 是唯一的必要參數。請注意,預設的下載目的地為共用磁碟區, 如果系統需要重新取得空間供系統使用,可以刪除您的檔案。如要持續儲存下載內容,請在外部儲存空間中指定下載目的地 (請參閱 setDestinationUri(Uri))。
  • DownloadManager.Query 類別提供的方法,可讓應用程式查詢及篩選有效的下載項目。

StrictMode

為協助開發人員監控及改善應用程式效能,平台提供了名為 StrictMode 的新系統設施。在應用程式中實作時,StrictMode 會擷取並通知 開發人員免於意外磁碟或網路活動造成應用程式效能下降 例如應用程式主執行緒上發生的活動 (接收 UI 作業和動畫也會執行)。 開發人員可以評估 StrictMode 中發生的網路和磁碟用量問題,並視需要加以修正,讓主要執行緒更有回應,並避免向使用者顯示 ANR 對話方塊。

  • StrictMode 是核心類別,主要整合為 視覺上這個類別提供便利方法,可管理適用於執行個體的執行緒和 VM 政策。
  • StrictMode.ThreadPolicyStrictMode.VmPolicy 會保留您定義並套用至執行緒和 VM 例項的政策。

深入瞭解如何使用 StrictMode 最佳化 應用程式,請參閱 android.os.StrictMode 的類別說明文件和程式碼範例。

UI 架構

  • 支援過度捲動
    • 新增支援 View 和 Widget 中的過度捲動功能。在 View 中,應用程式可以 為特定檢視畫面啟用/停用過度捲動、設定疊加模式、控制 過度捲動距離,並處理過度捲動的結果。
    • 在小工具中,應用程式可以控制捲動特性,例如 動畫、彈簧和過度捲動距離。詳情請參閱 android.view.Viewandroid.widget.OverScroller
    • ViewConfiguration 也提供 getScaledOverflingDistance()getScaledOverscrollDistance() 方法。
    • 新增 overScrollModeoverScrollFooteroverScrollHeader 屬性,用於控制超出捲動行為。
  • 支援觸控篩選
    • 新增觸控篩選支援,讓應用程式能改善 保護檢視畫面的安全性。例如: 觸控篩選是適當的做法,以確保使用者動作 (例如 授權要求、購買商品或點擊 廣告。詳情請參閱 View 類別說明文件
    • 檢視畫面元素的新 filterTouchesWhenObscured 屬性,可宣告在檢視畫面視窗遭其他可見視窗遮蔽時,是否要篩選觸控動作。將其設為 "true" 時,只要在檢視畫面視窗上方顯示快訊、對話方塊或其他視窗,檢視畫面就不會收到觸控事件。請參閱查看安全性 說明文件

    如要查看觸控篩選器的程式碼範例,請參閱 ApiDemos 範例應用程式中的 SecureView.java

  • 改善事件管理功能
    • 輸入事件的新基礎類別 InputEvent。這個類別提供方法,讓應用程式判斷事件的意義,例如查詢事件來源的 InputDevice。KeyEventMotionEventInputEvent 的子類別。
    • 輸入裝置的新基礎類別 InputDevice。這個類別會儲存特定輸入裝置功能的相關資訊,並提供方法,讓應用程式決定如何解讀輸入裝置的事件。
  • 改善動作事件
    • MotionEvent API 已擴充為加入「指標 ID」 資訊,讓應用程式追蹤個別手指的 上下移動即可類別會新增各種方法,讓應用程式 能有效處理動作事件
    • 輸入系統現在已擁有邏輯,可使用新的函式產生動作事件 指標 ID 資訊,並在新指標停止運作時統整 ID。系統會在動作事件期間分別追蹤多個指標 ID,並評估最後一組和下一組指標之間的距離,確保指標的連續性。
  • 文字選取控制項
    • 新的 setComposingRegion 方法可讓應用程式標示 撰寫文字的文字區域,維持目前的樣式。A 罩杯 getSelectedText 方法會將所選文字傳回 應用程式。這些方法可在 BaseInputConnectionInputConnectionInputConnectionWrapper 中使用。
    • 全新 textSelectHandletextSelectHandleLefttextSelectHandleRighttextSelectHandleWindowStyle <TextView> 的屬性,用於參照將由 用來顯示文字選取錨點,以及包含 視窗。
  • 活動控制項
  • 通知文字和圖示樣式
  • 超大螢幕

    平台現在支援超大螢幕尺寸,例如平板電腦可能會使用的螢幕尺寸。開發人員可以指定 只要在資訊清單中新增 <supports screens ... android:xlargeScreens="true"> 元素,即可支援額外的大螢幕 檔案。應用程式可以使用新的資源限定詞 xlarge, 標記超大型螢幕專用的資源如要進一步瞭解如何支援超大型螢幕和其他螢幕大小,請參閱「支援多種螢幕」。

    圖形

    內容供應程式

    • 新的 AlarmClock 供應器類別,可用於設定或處理鬧鐘。提供者包含 ACTION_SET_ALARM 意圖動作和額外項目,可用於啟動活動,在鬧鐘應用程式中設定新的鬧鐘。如要接收 SET_ALARM 意圖,應用程式應建立需要 SET_ALARM 權限的活動。如要建立新的鬧鐘,應用程式應使用 Context.startActivity(),讓使用者可以選擇要使用的鬧鐘應用程式。
    • MediaStore 支援新的意圖動作 PLAY_FROM_SEARCH,可讓應用程式搜尋音樂媒體 盡可能自動播放搜尋結果的內容。舉例來說 應用程式便可藉由語音辨識指令的結果觸發這個 Intent 聽音樂。
    • MediaStore 也會新增一個 MEDIA_IGNORE_FILENAME 標記,用來通知媒體 掃描程式忽略所含目錄及其子目錄中的媒體。 開發人員可以藉此避免在圖片庫中顯示圖像,並 同樣地,避免應用程式音效和音樂出現在「音樂」中 應用程式。
    • Settings 提供者新增「活動」動作 APPLICATION_DETAILS_SETTINGSMANAGE_ALL_APPLICATIONS_SETTINGS,可讓應用程式顯示詳細資料 或顯示「管理應用程式」畫面。
    • ContactsContract 提供者會新增 ContactsContract.CommonDataKinds.SipAddress 資料種類, 儲存聯絡人的 SIP (網路電話) 位址。

    位置

    • LocationManager 現在可追蹤應用程式 觸發 Wake Lock 或 Wi-Fi 鎖定 WorkSource 這個系統管理的類別,可識別 應用程式。

      LocationManager 會追蹤所有要求定期更新的用戶端,並在設定最小更新時間時,以 WorkSource 參數的形式告知其供應商。網路位置供應商會使用 WorkSource 追蹤 應用程式啟動的 Wake Lock 和 Wi-Fi 鎖定,並將之加入應用程式的 「管理應用程式」回報電池用量。

    • LocationManager 新增了幾種新方法,讓活動註冊可根據指定條件接收定期或一次性的位置更新 (請參閱下文)。
    • 新的 Criteria 類別可讓應用程式指定 一組用來選取位置供應商的條件。舉例來說,供應商可以依據準確度、耗電量、回報海拔高度、速度和方位的能力,以及金錢成本來排序。

    儲存空間

    • Android 2.3 新增了 StorageManager 支援 OBB (不透明二進位檔 Blob) 檔案。雖然 OBB 平台支援 適用於建立及管理 OBB 檔案的開發工具。 2011 年初才開放使用。
    • Android 2.3 平台針對不含 SD 卡的裝置新增官方支援功能 (雖然在沒有實體 SD 卡的情況下,它會提供虛擬 SD 卡分區)。isExternalStorageRemovable() 是一種簡便的方法,可讓應用程式 判斷是否有實體 SD 卡。

    套裝管理員

    電話通訊系統

    對活動生命週期、視窗的原生存取權

    Android 2.3 版為使用原生軟體的應用程式提供一系列 API 再也不是件繁重乏味的工作這類應用程式感興趣的架構類別包括:

    • NativeActivity 是新的活動類別類型,其中 生命週期回呼會直接在原生程式碼中實作。NativeActivity 及其基礎原生程式碼會在系統中執行,就像其他活動一樣,具體來說,它們會在 Android 應用程式的系統程序中執行,並在應用程式的主 UI 執行緒上執行,而且會收到與其他活動相同的生命週期回呼。
    • 新的 InputQueue 類別和回呼介面可讓原生程式碼管理事件排序。
    • 新的 SurfaceHolder.Callback2 介面可讓原生程式碼管理 SurfaceHolder
    • Window 中的新 takeInputQueuetakeSurface() 方法可讓原生程式碼管理事件和介面。

    如需使用原生程式碼或下載 NDK 的完整資訊, 請參閱「Android NDK」頁面。

    Dalvik 執行階段

    新的資訊清單元素和屬性

    • 新增 <supports-screens> 元素的 xlargeScreens 屬性,用於指出應用程式是否支援超大型的螢幕板型規格。詳情請參閱「支援多螢幕」。
    • <activity> 元素的 android:screenOrientation 屬性新值:
      • "reverseLandscape":Activity 要求 螢幕方向為橫向,轉向與一般方向相反 橫向。
      • "reversePortrait":Activity 要求 螢幕的直向,以與一般方向相反的方向旋轉 直向。
      • "sensorLandscape":Activity 要求 螢幕的橫向模式,但可以利用感應器變更 以及螢幕朝向的方向
      • "sensorPortrait":活動希望螢幕為直向,但可以使用感應器變更螢幕的方向。
      • "fullSensor":方向由實體方向感應器決定:螢幕會根據使用者移動裝置的方式旋轉。無論裝置通常會執行哪些操作,這個值都允許 4 種可能的旋轉方向 (例如,某些裝置通常不會使用 180 度旋轉)。

    新權限

    • com.android.permission.SET_ALARM:允許應用程式播送意圖,為使用者設定鬧鐘。處理 SET_ALARM 意圖動作的活動應要求此權限。
    • android.permission.USE_SIP:允許應用程式使用 SIP API 撥打或接聽網路通話。
    • android.permission.NFC:允許應用程式使用 NFC API 讀取 NFC 標記。

    新功能常數

    這個平台新增了幾項可供開發人員宣告的新硬體功能 應用程式清單。這可讓開發人員控管應用程式在 Google Play 上發布時的篩選方式。

    如要進一步瞭解如何宣告功能並用於篩選,請參閱 <uses-feature> 的說明文件。

    API 差異比較報表

    如需 Android 2.3 (API 級別 9) 中所有 API 異動內容的詳細資料,請參閱 API 差異比較表

    API 級別

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

    如要在應用程式中使用 Android 2.3 中推出的 API,您必須根據 Android 2.3 SDK 平台提供的 Android 程式庫編譯應用程式。根據您的需求 需要新增android:minSdkVersion="9" 屬性設為應用程式所用 <uses-sdk> 元素中的 資訊清單。如果應用程式僅設計用於在 Android 2.3 以上版本上執行,宣告這項屬性可防止應用程式在舊版平台上安裝。

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