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。主要類別如下:
NfcAdapter
,代表裝置上的 NFC 硬體。NdefMessage
,代表 NDEF 資料訊息 「記錄」資料傳輸資料會在 裝置和標記應用程式可接收來自ACTION_TAG_DISCOVERED
意圖的這些訊息。NdefRecord
:透過NdefMessage
傳送,可說明要分享的資料類型,並攜帶資料本身。
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
可讓您
應用程式會查詢可用的相機數量
各自的特性
- 新的
Camera.CameraInfo
類別可儲存相機的 位置特徵 (方向、前置或後置)。 Camera
類別中的新getNumberOfCameras()
和getCameraInfo()
方法可讓應用程式查詢相機可用 然後開啟所需相機- 新的
get()
方法可讓您 應用程式會擷取特定攝影機的CamcorderProfile
。 - 新的
getJpegEncodingQualityParameter()
可讓應用程式取得特定相機的相片拍攝品質等級。
如要查看存取前置鏡頭的程式碼範例,請參閱 ApiDemos 範例應用程式中的 CameraPreview.java。
Camera API 也新增了以下功能:
- 相機的新參數,包括對焦距離、對焦模式和預覽 FPS 上限/下限。新增
getFocusDistances()
、getPreviewFpsRange()
和getSupportedPreviewFpsRange()
以取得相機參數,以及setPreviewFpsRange()
以設定預覽影格速率。
可混合音效
平台的媒體架構新增了對個別曲目或全域音訊效果的支援,包括低音加強、耳機虛擬化、均衡器和混響。
- 新的
android.media.audiofx
套件提供 API,可存取音效。 - 新的
AudioEffect
是基礎類別 控制 Android 音訊架構提供的音效。 - 新的音訊工作階段 ID,可讓應用程式連結一組音訊
套用
AudioTrack
或MediaPlayer
例項的效果。 - 新的
AudioTrack
類別建構函式,可讓您建立具有特定工作階段 ID 的AudioTrack
。新增attachAuxEffect()
、getAudioSessionId()
和setAuxEffectSendLevel()
方法。 - 新增
attachAuxEffect()
、getAudioSessionId()
、setAudioSessionId(int)
和setAuxEffectSendLevel()
方法,以及支援的類型。
如要查看音效效果的程式碼範例,請參閱 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.ThreadPolicy
和StrictMode.VmPolicy
會保留您定義並套用至執行緒和 VM 例項的政策。
深入瞭解如何使用 StrictMode 最佳化
應用程式,請參閱 android.os.StrictMode
的類別說明文件和程式碼範例。
UI 架構
- 支援過度捲動
- 新增支援 View 和 Widget 中的過度捲動功能。在 View 中,應用程式可以 為特定檢視畫面啟用/停用過度捲動、設定疊加模式、控制 過度捲動距離,並處理過度捲動的結果。
- 在小工具中,應用程式可以控制捲動特性,例如
動畫、彈簧和過度捲動距離。詳情請參閱
android.view.View
和android.widget.OverScroller
。 ViewConfiguration
也提供getScaledOverflingDistance()
和getScaledOverscrollDistance()
方法。- 新增
overScrollMode
、overScrollFooter
和overScrollHeader
屬性,用於控制超出捲動行為。
- 支援觸控篩選
- 新增觸控篩選支援,讓應用程式能改善 保護檢視畫面的安全性。例如: 觸控篩選是適當的做法,以確保使用者動作 (例如 授權要求、購買商品或點擊 廣告。詳情請參閱 View 類別說明文件。
- 檢視畫面元素的新
filterTouchesWhenObscured
屬性,可宣告在檢視畫面視窗遭其他可見視窗遮蔽時,是否要篩選觸控動作。將其設為"true"
時,只要在檢視畫面視窗上方顯示快訊、對話方塊或其他視窗,檢視畫面就不會收到觸控事件。請參閱查看安全性 說明文件。
如要查看觸控篩選器的程式碼範例,請參閱 ApiDemos 範例應用程式中的 SecureView.java。
- 改善事件管理功能
- 輸入事件的新基礎類別
InputEvent
。這個類別提供方法,讓應用程式判斷事件的意義,例如查詢事件來源的 InputDevice。KeyEvent
和MotionEvent
是InputEvent
的子類別。 - 輸入裝置的新基礎類別
InputDevice
。這個類別會儲存特定輸入裝置功能的相關資訊,並提供方法,讓應用程式決定如何解讀輸入裝置的事件。
- 輸入事件的新基礎類別
- 改善動作事件
MotionEvent
API 已擴充為加入「指標 ID」 資訊,讓應用程式追蹤個別手指的 上下移動即可類別會新增各種方法,讓應用程式 能有效處理動作事件- 輸入系統現在已擁有邏輯,可使用新的函式產生動作事件 指標 ID 資訊,並在新指標停止運作時統整 ID。系統會在動作事件期間分別追蹤多個指標 ID,並評估最後一組和下一組指標之間的距離,確保指標的連續性。
- 文字選取控制項
- 新的
setComposingRegion
方法可讓應用程式標示 撰寫文字的文字區域,維持目前的樣式。A 罩杯getSelectedText
方法會將所選文字傳回 應用程式。這些方法可在BaseInputConnection
、InputConnection
和InputConnectionWrapper
中使用。 - 全新
textSelectHandle
、textSelectHandleLeft
,textSelectHandleRight
及textSelectHandleWindowStyle
<TextView>
的屬性,用於參照將由 用來顯示文字選取錨點,以及包含 視窗。
- 新的
- 活動控制項
ActivityInfo
會新增用於管理的常數 活動方向:SCREEN_ORIENTATION_FULL_SENSOR
,SCREEN_ORIENTATION_REVERSE_LANDSCAPE
、SCREEN_ORIENTATION_REVERSE_PORTRAIT
、SCREEN_ORIENTATION_SENSOR_LANDSCAPE
、 和SCREEN_ORIENTATION_SENSOR_PORTRAIT
。- 以下項目的新常數
IMPORTANCE_PERCEPTIBLE
:importance
欄位 位置:ActivityManager.RunningAppProcessInfo
。這個鍵 表示特定程序正在執行經認定為 不會直接察覺到舉例來說,應用程式 背景音樂播放。 - 用於將 Activity 標示為持久性的 Activity.setPersistent(boolean) 方法現已淘汰,且實作內容為無操作。
- 通知文字和圖示樣式
- 在
android.opengl.GLES20
類別中新增其餘的 OpenGL ES 2.0 方法glDrawElements()
和glVertexAttribPointer()
。 - 新增對
YV12
像素格式 (平面 4:2:0 YCrCb 格式) 的支援。 - 新的
AlarmClock
供應器類別,可用於設定或處理鬧鐘。提供者包含ACTION_SET_ALARM
意圖動作和額外項目,可用於啟動活動,在鬧鐘應用程式中設定新的鬧鐘。如要接收SET_ALARM
意圖,應用程式應建立需要 SET_ALARM 權限的活動。如要建立新的鬧鐘,應用程式應使用Context.startActivity()
,讓使用者可以選擇要使用的鬧鐘應用程式。 MediaStore
支援新的意圖動作PLAY_FROM_SEARCH
,可讓應用程式搜尋音樂媒體 盡可能自動播放搜尋結果的內容。舉例來說 應用程式便可藉由語音辨識指令的結果觸發這個 Intent 聽音樂。MediaStore
也會新增一個MEDIA_IGNORE_FILENAME
標記,用來通知媒體 掃描程式忽略所含目錄及其子目錄中的媒體。 開發人員可以藉此避免在圖片庫中顯示圖像,並 同樣地,避免應用程式音效和音樂出現在「音樂」中 應用程式。Settings
提供者新增「活動」動作APPLICATION_DETAILS_SETTINGS
和MANAGE_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 卡。 - 用於宣告硬體和軟體功能的新常數。請參閱下方的「新功能常數」一節。
PackageInfo
會新增firstInstallTime
和lastUpdateTime
欄位,用於儲存套件安裝和上次更新的時間。- 新的
getProviderInfo()
方法,可用於擷取特定內容提供者類別的所有已知資訊。 TelephonyManager
會新增用於指定 CDMA 的常數NETWORK_TYPE_EVDO_B
EVDO Rev B 網路類型。- 新的
getPsc()
方法會傳回 UMTS 網路中服務小格的主要雜湊編碼。 NativeActivity
是新的活動類別類型,其中 生命週期回呼會直接在原生程式碼中實作。NativeActivity
及其基礎原生程式碼會在系統中執行,就像其他活動一樣,具體來說,它們會在 Android 應用程式的系統程序中執行,並在應用程式的主 UI 執行緒上執行,而且會收到與其他活動相同的生命週期回呼。- 新的
InputQueue
類別和回呼介面可讓原生程式碼管理事件排序。 - 新的
SurfaceHolder.Callback2
介面可讓原生程式碼管理SurfaceHolder
。 Window
中的新takeInputQueue
和takeSurface()
方法可讓原生程式碼管理事件和介面。dalvik.system
會移除先前淘汰的幾個類別。- Dalvik 核心程式庫:
- 新集合:
ArrayDeque
、NavigableMap
、ConcurrentSkipListMap
、LinkedBlockingDeque
- 新的「
Arrays
」公用程式:binarySearch()
,copyOf()
、copyOfRange()
和其他來源。 HttpURLConnection
的CookieManager
。- 更完整的網路 API:
InterfaceAddress
、NetworkInterface
和IDN
File
讀取及寫入控制項String.isEmpty()
Normalizer
和Normalizer.Form
- 改善
javax.net.ssl
伺服器通訊端。
- 新集合:
- 新增
<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 標記。android.hardware.audio.low_latency
:應用程式使用低延遲時間 可能會遇到音訊輸入延遲或延遲的情況 輸出內容android.hardware.camera.front
:應用程式使用裝置的前置鏡頭。android.hardware.nfc
— 應用程式使用裝置中的 NFC 無線電功能。android.hardware.sensor.barometer
:應用程式使用裝置的氣壓計。android.hardware.sensor.gyroscope
:應用程式使用裝置的 陀螺儀感應器。android.software.sip
— 應用程式會在裝置上使用 SIP API。android.software.sip.voip
:應用程式在裝置上使用以 SIP 為基礎的 VoIP 服務。android.hardware.touchscreen.multitouch.jazzhand
:應用程式會在裝置螢幕上使用進階多點觸控功能,獨立追蹤五個以上的觸控點。
超大螢幕
平台現在支援超大螢幕尺寸,例如平板電腦可能會使用的螢幕尺寸。開發人員可以指定
只要在資訊清單中新增 <supports
screens ... android:xlargeScreens="true">
元素,即可支援額外的大螢幕
檔案。應用程式可以使用新的資源限定詞 xlarge
,
標記超大型螢幕專用的資源如要進一步瞭解如何支援超大型螢幕和其他螢幕大小,請參閱「支援多種螢幕」。
圖形
內容供應程式
位置
儲存空間
套裝管理員
電話通訊系統
對活動生命週期、視窗的原生存取權
Android 2.3 版為使用原生軟體的應用程式提供一系列 API 再也不是件繁重乏味的工作這類應用程式感興趣的架構類別包括:
如需使用原生程式碼或下載 NDK 的完整資訊, 請參閱「Android NDK」頁面。
Dalvik 執行階段
新的資訊清單元素和屬性
新權限
新功能常數
這個平台新增了幾項可供開發人員宣告的新硬體功能 應用程式清單。這可讓開發人員控管應用程式在 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? 關卡?