Android 4.1 相容性定義
修訂版本 3
上次更新日期:2013 年 6 月 24 日
Copyright © 2012, Google Inc. Al rights reserved.
compatibility@android.com
目錄
1.簡介
2.資源
3.軟體
3.1.管理API 相容性
3.2.軟體 API 相容性
3.2.1.權限
3.2.2.建構 Parameters
3 .2.3。意圖相容性
3.2.3.1.核心應用程式意圖
3.2.3.2。意圖覆寫值
3.2.3.3。意圖命名空間
3.2.3.4。廣播意圖
3.3.原生 API 相容性
3.3.1 應用程式二進位介面
3.4.網頁相容性
3.4.1.WebView 相容性
3.4.2。瀏覽器相容性
3.5. API 行為相容性
3.6. API 命名空間
3.7.
3.8 版的虛擬機器相容性使用者介面可用性
3.8.1。小工具
3.8.2。通知
3.8.3。搜尋
3.8.4。吐司
3.8.5。主題
3.8.6。 Live Wal papers
3.8.7。近期應用程式顯示版面配置
3.8.8。輸入管理 設定
3.8.9。鎖定畫面遠端控制
3.9 D裝置管理
3.10 無障礙功能
3.11 文字轉語音
4.應用程式封裝相容性:
5.多媒體相容性
5.1.媒體轉碼器
5.2。影片編碼
5.3.錄音
5.4.音訊延遲時間:
5.5。網路通訊協定
6.開發人員工具相容性
7.硬體相容性
7.1.顯示和圖形
7.1.1.
7.1.2 版的螢幕設定。cs
7.1.3 顯示指標 Screen Orientation
7.1.4。2D 和 3D 圖形加速功能
7.1.5。舊版應用程式相容性模式
7.1.6。 Screen Types
7.1.7.
螢幕技術 7.2。在put Devices
7.2.1。鍵盤
7.2.2.非觸控導覽功能
7.2.3。導覽鍵
7.2.4. 觸控螢幕輸入
7.2.5。模擬觸控輸入
7.2.6。麥克風
7.3.感應器
7.3.1.加速計
7.3.1.加速計
7.3.2。磁力儀
7.3.3. GPS
7.3.4。陀螺儀
7.3.5。氣壓計
7.3.6.溫度計
7.3.7。 Photometer
7.3.8。鄰近感應器
7.4.資料連線
7.4.1.電話通訊系統
7.4.2。 IEEE 802.11 (Wi-Fi)
7.4.2.1. Wi-Fi Direct
7.4.3. Bluetooth
7.4.4。近距離無線通訊
7.4.5.最低網路功能
7.5. Cameras
7.5.1.後置鏡頭:
7.5.2。前置鏡頭
7.5.3. Camera API 行為
7.5.4.相機方向
7.6.記憶體與儲存空間
7.6.1.最低記憶體和儲存空間
7.6.2.應用程式共用儲存空間
7.7. USB
8. Performance Compatibility
9.安全性模型相容性
9.1.權限
9.2.UID 和程序隔離
9.3。檔案系統權限
9.4.替代執行環境
10.軟體相容性測試
10.1. Compatibility Test Suite
10.2。 CTS Verifier
10.3。參考應用程式
11.可更新的軟體
12.與我們聯絡
附錄 A - 藍牙測試程序
1.
簡介
本文列出裝置必須符合的條件,才能
與 Android 4.1 相容。
使用「必須」、「不得」、「必要」、「應當」、「應當不」、「應當」、「不得」、「應當不」、「建議」、「可」和「選用」等詞彙,是根據 RFC2119
[資源, 1] 中定義的 IETF 標準。
本文所用的「裝置實作者」或「實作者」是指開發搭載 Android 4.1 的硬體/軟體解決方案的個人或
機構。「裝置
實作」或「實作」是指所開發的硬體/軟體解決方案。
如要與 Android 4.1 相容,裝置實作方式必須符合
本相容性定義中列出的規定,包括任何透過參照整合的文件
。
如果這個定義或第 10 節所述的軟體測試沒有說明、
模稜兩可或不完整,則由開發人員負責確保與現有實作相容。
因此,Android 開放原始碼計畫 [Resources, 3] 是 Android 的參考
和首選實作項目。我們強烈
鼓勵裝置實作者
盡可能以 Android 開放原始碼計畫提供的「上游」原始碼為基礎,實作裝置。雖然某些
元件理論上可以用其他實作方式取代,但我們強烈建議不要這麼做,因為通過軟體測試會變得
更加困難。
實作者有責任確保與標準 Android 實作項目的完整行為
相容性,包括
Compatibility Test Suite 和其他項目。最後,請注意,本文件明確禁止某些元件替換和
修改。
2. 資源
1. IETF RFC2119 需求層級:http://www.ietf.org/rfc/rfc2119.txt
2. Android 相容性計畫總覽:
http://source.android.com/compatibility/index.html
3. Android 開放原始碼計畫:http://source.android.com/
4.API 定義和說明文件:
http://developer.android.com/reference/packages.html
5. Android 權限參考資料:
http://developer.android.com/reference/android/Manifest.permission.html
6. android.os.Build 參考資料:
http://developer.android.com/reference/android/os/Build.html
7. Android 4.1 允許的版本字串:
http://source.android.com/compatibility/4.1/versions.html
8. Renderscript:
http://developer.android.com/guide/topics/graphics/renderscript.html
9. 硬體加速:
http://developer.android.com/guide/topics/graphics/hardware-accel.html
10. android.webkit.WebView 類別:
http://developer.android.com/reference/android/webkit/WebView.html
11. HTML5:http://www.whatwg.org/specs/web-apps/current-work/multipage/
12. HTML5 離線功能:http://dev.w3.org/html5/spec/Overview.html#offline
13. HTML5 影片標記:http://dev.w3.org/html5/spec/Overview.html#video
14. HTML5/W3C geolocation API:http://www.w3.org/TR/geolocation-API/
15。 HTML5/W3C webdatabase API:http://www.w3.org/TR/webdatabase/
16。 HTML5/W3C IndexedDB API:http://www.w3.org/TR/IndexedDB/
17。 Dalvik 虛擬機器規格:可在 Android 原始碼中找到,位於
dalvik/docs
18。 AppWidgets:
http://developer.android.com/guide/practices/ui_guidelines/widget_design.html
19. 通知:
http://developer.android.com/guide/topics/ui/notifiers/notifications.html
20. 應用程式資源:http://code.google.com/android/reference/available-
resources.html
21. 狀態列圖示樣式指南:
http://developer.android.com/guide/practices/ui_guidelines/icon_design_status_bar.html
22. Search Manager:
http://developer.android.com/reference/android/app/SearchManager.html
23. Toast:http://developer.android.com/reference/android/widget/Toast.html
24。 主題:http://developer.android.com/guide/topics/ui/themes.html
25. R.style 類別:http://developer.android.com/reference/android/R.style.html
26。Live Wal papers:http://developer.android.com/resources/articles/live-
wal papers.html
27. Android 裝置管理:
http://developer.android.com/guide/topics/admin/device-admin.html
28. android.app.admin.DevicePolicyManager 類別:
http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html
29. Android Accessibility Service API:
http://developer.android.com/reference/android/accessibilityservice/package-
summary.html
30. Android Accessibility API:
http://developer.android.com/reference/android/view/accessibility/package-
summary.html
31.Eyes Free 專案:http://code.google.com/p/eyes-free
32. 文字轉語音 API:
http://developer.android.com/reference/android/speech/tts/package-
summary.html
33. 參考工具說明文件 (適用於 ADB、aapt、ddm):
http://developer.android.com/guide/developing/tools/index.html
34. Android apk 檔案說明:
http://developer.android.com/guide/topics/fundamentals.html
35.資訊清單檔案:http://developer.android.com/guide/topics/manifest/manifest-
intro.html
36.Monkey 測試工具:
https://developer.android.com/studio/test/other-testing-tools/monkey
37. Android android.content.pm.PackageManager 類別 和 硬體 Features
清單:
http://developer.android.com/reference/android/content/pm/PackageManager.html
38.支援多個螢幕:
http://developer.android.com/guide/practices/screens_support.html
39. android.util.DisplayMetrics:
http://developer.android.com/reference/android/util/DisplayMetrics.html
40. android.content.res.Configuration:
http://developer.android.com/reference/android/content/res/Configuration.html
41. android.hardware.SensorEvent:
http://developer.android.com/reference/android/hardware/SensorEvent.html
42. Bluetooth API:
http://developer.android.com/reference/android/bluetooth/package-summary.html
43. NDEF 推送通訊協定:http://source.android.com/compatibility/ndef-push-
protocol.pdf
44. MIFARE MF1S503X:http://www.nxp.com/documents/data_sheet/MF1S503x.pdf
45。 MIFARE MF1S703X:http://www.nxp.com/documents/data_sheet/MF1S703x.pdf
46。 MIFARE MF0ICU1:http://www.nxp.com/documents/data_sheet/MF0ICU1.pdf
47。 MIFARE MF0ICU2:
http://www.nxp.com/documents/short_data_sheet/MF0ICU2_SDS.pdf
48. MIFARE AN130511:
http://www.nxp.com/documents/application_note/AN130511.pdf
49. MIFARE AN130411:
http://www.nxp.com/documents/application_note/AN130411.pdf
50. 相機方向 API:
http://developer.android.com/reference/android/hardware/Camera.html#setDisplayOrientation(int)
51. android.hardware.Camera:
http://developer.android.com/reference/android/hardware/Camera.html
52. Android 開放式配件:
http://developer.android.com/guide/topics/usb/accessory.html
53. USB 主機 API:http://developer.android.com/guide/topics/usb/host.html
54. Android 安全性和權限參考資料:
http://developer.android.com/guide/topics/security/security.html
55. Android 應用程式:http://code.google.com/p/apps-for-android
56. android.app.DownloadManager 類別:
http://developer.android.com/reference/android/app/DownloadManager.html
57.Android 檔案傳輸:http://www.android.com/filetransfer
58. Android 媒體格式:http://developer.android.com/guide/appendix/media-
formats.html
59. HTTP Live Streaming Draft Protocol: http://tools.ietf.org/html/draft-pantos-http-
live-streaming-03
60.NFC 連線移轉:http://www.nfc-
forum.org/specs/spec_list/#conn_handover
61. 使用 NFC 進行藍牙安全簡易配對:http://www.nfc-
forum.org/resources/AppDocs/NFCForum_AD_BTSSP_1_0.pdf
62. Wifi 多播 API:
http://developer.android.com/reference/android/net/wifi/WifiManager.MulticastLock.html
63. Action Assist:
http://developer.android.com/reference/android/content/Intent.html#ACTION_ASSIST
64. USB 充電規格:
http://www.usb.org/developers/devclass_docs/USB_Battery_Charging_1.2.pdf
65. Android Beam:http://developer.android.com/guide/topics/nfc/nfc.html
66. Android USB Audio:
http://developer.android.com/reference/android/hardware/usb/UsbConstants.html#USB_CLASS_AUDIO
67. Android NFC 分享設定:
http://developer.android.com/reference/android/provider/Settings.html#ACTION_NFCSHARING_SETTINGS
68. Wifi Direct (Wifi P2P):
http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.html
69. 媒體遠端控制器:
http://developer.android.com/reference/android/media/RemoteControlClient.html
70. Motion Event API:
http://developer.android.com/reference/android/view/MotionEvent.html
71.觸控輸入設定:http://source.android.com/tech/input/touch-
devices.html
許多這些資源是直接或間接從 Android 4.1 SDK 衍生而來,
且功能上與該 SDK 說明文件中的資訊完全相同。在任何
情況下,如果這個相容性定義或相容性測試套件與
SDK 說明文件不一致,則以 SDK 說明文件為準。
上述參考資料提供的任何技術細節,都會視為
納入此相容性定義的一部分。
3.軟體
3.1.受管理的 API 相容性
受管理的 (以 Dalvik 為基礎) 執行環境是 Android 應用程式的主要載具。
Android 應用程式設計介面 (API) 是一系列的
Android 平台介面,可供在受管理 VM
環境中執行的應用程式使用。裝置實作項目必須提供完整實作項目,
包括所有已記錄的行為,以及 Android
4.1 SDK 公開的任何已記錄 API [Resources, 4]。
裝置實作 M須遵守以下規定:不得省略任何受管理的 API、變更 API 介面或
簽章、偏離說明中的行為,或包含無操作,除非
此相容性定義明確允許。
這個相容性定義允許某些類型的硬體,因為 Android
包含裝置實作可略過的 API。在這種情況下,API 必須
仍存在,且以合理方式運作。如要瞭解這項情境的具體
規定,請參閱第 7 節。
3.2.軟性 API 相容性
除了第 3.1 節中的受管理 API 之外,Android 也包含了重要的
僅限執行階段的「軟性」API,例如 Intent、權限和
無法在應用程式編譯時強制執行的 Android 應用程式類似層面。
3.2.1.權限
裝置實作人員必須支援並強制執行所有權限常數,如
權限參考資料頁面所述 [Resources, 5]。請注意,第 10 節
列出與 Android 安全性模式相關的其他要求。
3.2.2.建構參數
Android API 在 android.os.Build 類別中包含多個常數
[Resources, 6],用於描述目前的裝置。為在各裝置實作中提供一致且有意義的值,下表列出這些值的格式其他
限制,裝置實作必須
遵循這些限制。
參數
註解
目前執行的 Android 系統版本,以人類可讀的格式顯示。這個欄位必須包含 [Resources, 7] 中定義的字串值的
android.os.Build.VERSION.RELEASE
之一。
目前執行中的 Android 系統版本,以第三方應用程式程式碼可存取的格式。
android.os.Build.VERSION.SDK
如果是 Android 4.1,這個欄位必須是整數值 16。
目前執行中的 Android 系統版本,格式可供第三方應用程式程式碼存取。
android.os.Build.VERSION.SDK_INT
如果是 Android 4.1,這個欄位必須設為整數值 16。
裝置實作者選擇的值,用於指定目前執行的 Android
系統的特定版本,以人類可讀格式呈現。這個值絕對不應重複用於提供給
android.os.Build.VERSION.INCREMENTAL
使用者的不同版本。這個欄位的常見用途是指出系統
用來產生建構的建構編號或來源控制變更 ID。這個欄位沒有特定格式規定,但必須
「不是」空值或空字串 ("")。
裝置實作者選擇的值,用來識別裝置使用的特定內部硬體,格式為
人類可讀。這個欄位的可能用途是指出驅動裝置的板卡特定修訂版本
android.os.Build.BOARD
。這個欄位的值必須能以 7 位元 ASCI 編碼,且符合規則運算式
"^[a-zA-Z0-9.,_-]+$"。
裝置實作者選擇的值,用於識別製造裝置的公司、機構、個人等名稱,以人類可讀的格式呈現。
這個欄位的可能用途是指出原始設備製造商 (
android.os.Build.BRAND
) 和/或銷售裝置的電信業者。這個欄位的值必須能以 7 位元 ASCI 編碼,且符合
規則運算式「^[a-zA-Z0-9.,_-]+$」
。
原生程式碼的指令集名稱 (CPU 類型 + ABI 慣例)。請參閱第 3.3 節:原生 API
android.os.Build.CPU_ABI
相容性。
原生程式碼的第二個指令集名稱 (CPU 類型 + ABI 慣例)。請參閱第 3.3 節:
原生
android.os.Build.CPU_ABI2
API 相容性。
裝置實作者選擇的 value,用於識別主體的特定設定或修訂版本
android.os.Build.DEVICE
裝置的 (有時稱為「工業設計」)。這個欄位的值必須能以 7 位元
ASCI 編碼,且符合規則運算式「^[a-zA-Z0-9.,_-]+$」。
這個字串可用於唯一識別此版本。應以人類可讀的方式呈現。必須遵循以下
範本:
$(BRAND)/$(PRODUCT)/$(DEVICE):$(VERSION.RELEASE)/$(ID)/$(VERSION.INCREMENTAL):$(TYPE)/$(TAGS)
例如:
android.os.Build.FINGERPRINT
acme/mydevice/generic:4.1/JRN53/3359:userdebug/test-keys
指紋不得包含空白字元。如果上述範本中的其他欄位含有
空白字元,則必須在版本指紋中以其他字元取代,例如
底線 ("_") 字元。這個欄位的值必須能以 7 位元 ASCI 編碼。
硬體名稱 (來自核心指令列或 /proc)。
android.os.Build.HARDWARE
應是人類可讀的合理格式。這個欄位的值必須能以 7 位元 ASCI 編碼,且符合規則運算式「^[a-
zA-Z0-9.,_-]+$」。
以人類可讀格式,唯一標示建構所在主機的字串。
android.os.Build.HOST
對這個欄位的特定格式沒有任何規定,但不得為空值或空字串 ("")。
裝置實作者選擇的 ID,用於參照特定版本,以人類可讀的格式呈現。這個
欄位可以與 android.os.Build.VERSION.INCREMENTAL 相同,但應為一個足夠
android.os.Build.ID
有意義的值,方便使用者區分軟體版本。這個欄位的值必須能以 7 位元 ASCI 編碼
,且符合規則運算式「^[a-zA-Z0-9.,_-]+$」。
產品原始設備製造商 (OEM) 的商標名稱。
android.os.Build.MANUFACTURER
這個欄位的具體格式沒有任何規定,但不得為空值或空字串 ("")。
裝置實作者選擇的值,包含使用者熟知的裝置名稱。這個
android.os.Build.MODEL
應與裝置行銷和銷售給使用者的名稱相同。
這個欄位的具體格式沒有任何規定,但請注意,這個欄位不得為空值或空字串 ("")。
裝置實作者選擇的值必須包含產品的開發名稱或代碼名稱
android.os.Build.PRODUCT
(SKU)。必須是人類可讀的格式,但不一定是供使用者查看。這個
欄位的值必須能以 7 位元 ASCI 編碼,且符合規則運算式「^[a-zA-Z0-9.,_-]+$」。
硬體序號 (如有)。這個欄位的值必須能以 7 位元 ASCI 編碼,且必須符合
android.os.Build.SERIAL
的規則運算式「^([a-zA-Z0-9]{0,20})$」。
裝置實作者選擇的標記清單,以半形逗號分隔,可進一步區分版本。
android.os.Build.TAGS
的範例為「unsigned,debug」。這個欄位的值必須能以 7 位元 ASCI 編碼,且符合規則運算式
"^[a-zA-Z0-9.,_-]+$"。
android.os.Build.TIME
這個值代表建構作業發生的時間戳記。
裝置實作者選擇的值,用於指定版本的執行階段設定。這個欄位
應具有與三種常見 Android 執行階段設定相對應的值:
android.os.Build.TYPE 的「user」
、「userdebug」或「eng」。這個欄位的值必須能以 7 位元 ASCI 編碼,且符合規則運算式「^[a-zA-Z0-9.,_-]+$」。
產生版本的使用者 (或自動化使用者) 的名稱或使用者 ID。
android.os.Build.USER
的具體格式沒有任何規定,但不得為空值或空字串 ("")。
3.2.3.意圖相容性
裝置實作項目必須遵循 Android 的鬆散耦合意圖系統,如
下文所述。「符合」的意思是指裝置實作者
必須提供 Android 活動或服務,指定相符的意圖篩選器,並
為每個指定的意圖模式繫結及實作正確的行為。
3.2.3.1.核心應用程式意圖
Android 上游專案定義了許多核心應用程式,例如聯絡人、
日曆、相片庫、音樂播放器等。裝置實作者可以將
這些應用程式替換為其他版本。
不過,任何此類替代版本都必須遵循上游專案提供的相同 Intent 模式。
舉例來說,如果裝置含有其他音樂播放器,
則仍須遵循第三方應用程式發出的 Intent 模式,才能選取歌曲。
下列應用程式視為核心 Android 系統應用程式:
桌面時鐘
瀏覽器
日曆
聯絡人
相片庫
全球搜尋
啟動器
音樂
設定
核心 Android 系統應用程式包括各種活動或服務元件
,這些元件視為「公開」。也就是說,「android:exported」屬性可能不存在,或是
的值可能為「true」。
在核心 Android 系統應用程式中定義的每個 Activity 或 Service,如果不是透過 android:exported 屬性標示為非公開 (值為「false」),則裝置實作項目必須包含同類型元件,實作與核心 Android 系統應用程式相同的意圖篩選器模式。
換句話說,裝置實作項目可以取代核心 Android 系統應用程式;
但如果要取代,則裝置實作項目必須支援所有意圖模式,這些模式是由每個核心 Android 系統應用程式定義。
3.2.3.2.意圖覆寫值
Android 是可擴充的平台,因此裝置實作必須允許第三方應用程式覆寫第 3.2.3.2 節中所參照的每個意圖
模式。
上游 Android 開放原始碼實作內容預設會允許這項功能;
裝置實作者必須避免將特殊權限附加至系統應用程式使用
這些 Intent 模式,或防止第三方應用程式繫結至這些模式並接管
控制權。這項禁止行為包括但不限於
停用「選擇器」使用者介面,該介面可讓使用者在多個
應用程式之間進行選擇,這些應用程式會處理相同的 Intent 模式。
不過,如果預設活動為資料 URI 提供更具體的篩選器
,裝置實作項目可能會為特定 URI 模式 (例如 http://play.google.com) 提供預設活動。
舉例來說,指定資料 URI
"http://www.android.com"的意圖篩選器,比瀏覽器篩選器的 "http://" 更為明確。裝置
實作項目必須提供使用者介面,讓使用者修改意圖的預設活動
。
3.2.3.3.意圖命名空間
裝置實作不得包含任何 Android 元件,這些元件會使用 android.* 或 com.android.* 命名空間中的 ACTION、CATEGORY 或其他鍵
字串,遵循任何
新意圖或廣播意圖模式。裝置實作者絕對不應
納入任何 Android 元件,這些元件會使用屬於其他機構的套件空間中的 ACTION、CATEGORY 或其他鍵字串,
遵循任何新的意圖或廣播意圖模式。
裝置實作者不得修改或擴充任何「意圖」
模式,這些模式是第 3.2.3.1 節所列核心應用程式所使用的模式。裝置實作可能會
納入意圖模式,使用明確且與其
自身組織相關聯的命名空間。
這項禁止規定與第 3.6 節中指定的 Java 語言類別相同。
3.2.3.4.廣播意圖
第三方應用程式會依賴平台廣播特定意圖,以便通知
硬體或軟體環境的變更。
Android 相容裝置必須在回應適當的系統事件時,發布公開廣播意圖。
如要瞭解廣播意圖,請參閱 SDK 說明文件。
3.3.原生 API 相容性
3.3.1 應用程式二進位檔介面
在 Dalvik 中執行的受管理程式碼可將應用程式
.apk 檔案中提供的原生程式碼,轉換為為適當裝置硬體架構編譯的 ELF .so 檔案。
由於原生程式碼高度依賴基礎處理器技術,Android
會在 Android 的 ndk 中定義多個應用程式二進位檔介面 (ABI),請參閱檔案 docs/CPU-ARCH-ABIS.html。
如果裝置實作項目與一或多個
定義的 ABI 相容,則應實作與 Android NDK 的相容性,如下所示。
如果裝置實作內容支援 Android ABI,則:
必須支援在受管理環境中執行的程式碼,以便將其轉換為原生程式碼,並使用標準 Java Native Interface (JNI) 語義。
必須與下列清單中的每個必要程式庫相容 (即標頭相容),並支援 ABI。
必須透過 android.os.Build.CPU_ABI API 準確回報裝置支援的原生應用程式二進位介面 (ABI)。
必須只回報 Android NDK 最新版本中,在檔案 docs/CPU-ARCH-ABIS.txt 中說明的 ABI。
應使用上游 Android 開放原始碼專案提供的來源程式碼和標頭檔案進行建構。
包含原生程式碼的應用程式必須支援下列原生程式碼 API:
libc (C 程式庫)
libm (數學程式庫)
C++ 的最低支援
JNI 介面
liblog (Android 記錄)
libz (Zlib 壓縮)
libdl (動態連結器)
libGLESv1_CM.so (OpenGL ES 1.0)
libGLESv2.so (OpenGL ES 2.0)
libEGL.so (原生 OpenGL 介面管理)
libjnigraphics.so
libOpenSLES.so (OpenSL ES 1.0.1 音訊支援)
libOpenMAXAL.so (OpenMAX AL 1.0.1 支援)
libandroid.so (原生 Android 活動支援)
支援 OpenGL,如以下所述
請注意,Android NDK 的未來版本可能會支援其他 ABI。
如果裝置實作不相容於現有的預先定義 ABI,
就絕對不應回報支援任何 ABI。
原生程式碼相容性很難處理。因此,我們再次強調,
裝置實作人員應盡可能使用上游
實作項目,以確保相容性。
3.4.網頁相容性
3.4.1.WebView 相容性
Android 開放原始碼實作項目會使用 WebKit 轉譯引擎來
實作 android.webkit.WebView。由於無法為網路轉譯系統開發
完整的測試套件,因此裝置實作者必須在 WebView 實作中使用
特定的上游 WebKit 版本。具體來說:
裝置實作項目的 android.webkit.WebView 實作項目必須
以 534.30 為基礎
,這項 WebKit 版本來自上游 Android 開放原始碼樹狀結構
,適用於 Android 4.1。這個版本包含 WebView 的特定功能和安全性
修正程式。裝置導入者可在
WebKit 導入中加入自訂設定;不過,任何這類自訂設定都不得變更 WebView 的
行為,包括算繪行為。
WebView 回報的使用者代理程式字串必須採用以下格式:
Mozilla/5.0 (Linux; U; Android $(VERSION); $(LOCALE); $(MODEL)
Build/$(BUILD) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.1
Mobile Safari/534.30
$(VERSION) 字串的值必須與
$(VERSION) 字串的值必須與
android.os.Build.VERSION.RELEASE 的值相同
$(LOCALE) 字串的值應遵循 ISO 國家/地區代碼和語言慣例,並應參照裝置目前設定的
語言代碼
$(MODEL) 字串的值必須與
android.os.Build.MODEL 的值相同
$(BUILD) 字串的值必須與
android.os.Build.ID 的值相同
裝置導入作業可省略使用者代理程式字串中的 Mobile
WebView 元件應盡可能支援 HTML5
[Resources, 11]。
最低要求:裝置實作必須支援 WebView 中與 HTML5 相關的各項
API:
應用程式快取/離線作業 [Resources, 12]
<video> 代碼 [Resources, 13]
地理位置 [Resources, 14]
此外,裝置實作必須支援 HTML5/W3C 網路儲存 API
[Resources, 15],且應支援 HTML5/W3C IndexedDB API [Resources,
16]。請注意,網頁開發標準機構正在轉向偏好
IndexedDB over webstorage,IndexedDB 預計將成為日後 Android 版本的必要
元件。
HTML5 API 和 JavaScript API 等,預設情況下都必須在 WebView 中停用,
除非開發人員透過一般 Android API 明確啟用這些 API。
3.4.2.瀏覽器相容性
裝置實作必須包含獨立的瀏覽器應用程式,供一般
使用者瀏覽網頁。獨立瀏覽器可能會以 WebKit 以外的瀏覽器技術
為基礎。不過,即使使用其他瀏覽器應用程式,提供給第三方應用程式的
android.webkit.WebView 元件仍必須以 WebKit 為基礎,如第 3.4.1 節所述。
實作項目可在獨立的 Browser
應用程式中提供自訂使用者代理程式字串。
獨立瀏覽器應用程式 (無論是基於上游 WebKit 瀏覽器
應用程式,還是第三方替代品) 應盡可能支援
HTML5 [資源, 11]。最低限度,裝置實作必須支援
與 HTML5 相關聯的各項 API:
應用程式快取/離線作業 [Resources, 12]
<video> 標記 [Resources, 13]
地理位置 [Resources, 14]
此外,裝置實作必須支援 HTML5/W3C 網路儲存空間 API
[Resources, 15],且應支援 HTML5/W3C IndexedDB API [Resources,
16]。請注意,隨著網路開發標準機構逐漸偏好
IndexedDB 而非 webstorage,IndexedDB 預計將成為 Android 日後版本的必要
元件。
3.5. API 行為相容性
每種 API 類型 (受管理、軟體、原生和網頁) 的行為都必須
與上游 Android 開放原始碼
專案的首選實作方式相符 [Resources, 3]。以下是部分相容性方面的注意事項:
裝置不得變更標準 Intent 的行為或語義
Devices MUST NOT alter the lifecycle or lifecycle semantics of a particular type
of system component (such as Service, Activity, ContentProvider, etc.)
Devices MUST NOT change the semantics of a standard permission
以上列表並未詳盡無遺。Compatibility Test Suite (CTS) 會測試
平台的大部分行為相容性,但不會測試 al 。
實作者有責任確保與 Android
開放原始碼專案的行為相容性。因此,裝置實作者應盡可能使用 Android 開放原始碼計畫提供的原始碼,而非重新實作系統的重要部分。
3.6. API 命名空間
Android 遵循 Java
程式設計語言定義的套件和類別命名空間慣例。為確保與第三方應用程式的相容性,裝置
實作者
絕對不得對這些
套件命名空間
進行任何禁止的修改 (請參閱下文):
java.*
javax.*
sun.*
android.*
com.android.*
禁止的修改項目包括:
裝置實作項目不得透過變更任何方法或類別簽章,或移除
類別或類別欄位,修改 Android 平台上公開公開的 API。
裝置實作項目可以修改 API 的基礎實作項目,但
此類修改不得影響任何公開 API 的已宣告行為和 Java 語言
簽章。
裝置實作項目不得在上述 API 中新增任何公開元素 (例如
類別或介面、或現有類別或介面的欄位或方法)。
「公開公開的元素」是指任何未使用上游 Android 原始程式碼中使用的「@hide」
標記修飾的結構。換句話說,裝置
實作者不得在上述命名空間
中公開新的 API,或變更現有的 API。裝置實作者可以進行僅限內部使用的修改,但這些
修改絕對不得宣傳或以其他方式提供給開發人員。
裝置導入者可以新增自訂 API,但任何這類 API 都不得位於
由其他機構擁有或參照的命名空間。舉例來說,裝置
實作者絕對不應將 API 新增至 com.google.* 或類似的命名空間;只有
Google 可以這麼做。同樣地,Google 絕對不應將 API 新增至其他公司的
命名空間。此外,如果裝置實作內容包含標準 Android 命名空間以外的自訂 API,則這些 API 必須封裝在 Android 共用程式庫中,以便只影響明確使用這些 API 的應用程式 (透過 <uses-library> 機制),而不會影響這些 API 的記憶體用量。
如果裝置實作者提出改善上述包裝區域名稱空間之一的建議
(例如在現有 API 中加入實用的新功能,或新增 API),
實作者應前往 source.android.com,並根據該網站上的資訊開始提供
變更和程式碼的程序。
請注意,上述限制與
Java 程式設計語言中 API 命名標準慣例相符。本節旨在強化這些
慣例,並透過納入此相容性定義來使其具約束力。
3.7.虛擬機器相容性
裝置實作項目必須支援完整的 Dalvik Executable (DEX) 位元碼
規格和 Dalvik 虛擬機器語意 [Resources, 17]。
裝置實作項目必須設定 Dalvik,以便根據上游 Android 平台和下表所指定的方式分配記憶體。
如要瞭解螢幕大小和螢幕密度的定義,請參閱
第 7.1.1 節。
請注意,下方指定的記憶體值視為最低值,且裝置
實作可能會為每個應用程式分配更多記憶體。
螢幕大小
螢幕密度
應用程式記憶體
smal / normal / large
ldpi / mdpi
16MB
smal / normal / large
tvdpi / hdpi
32MB
smal / normal / large
xhdpi
64MB
xlarge
mdpi
32MB
xlarge
tvdpi / hdpi
64MB
xlarge
xhdpi
128MB
3.8.使用者介面相容性
3.8.1.小工具
Android 定義了元件類型,以及對應的 API 和生命週期,可讓
應用程式將「AppWidget」公開給最終使用者 [Resources, 18]。Android
開放原始碼參考版本包含啟動器應用程式,其中包含使用者
介面操作功能,可讓使用者在
主畫面上新增、查看及移除 AppWidget。
裝置實作項目可替代參考啟動器 (即
主畫面) 的替代方案。替代啟動器應內建支援 AppWidget,
並提供使用者介面操作功能,以便直接在啟動器中新增、設定、查看及移除
AppWidget。替代啟動器可省略這些使用者介面元素
;不過,如果省略這些元素,裝置實作必須
提供可從啟動器存取的獨立應用程式,讓使用者能夠新增、
設定、查看及移除 App Widget。
裝置實作項目必須能夠算繪 4 x 4 的
標準格狀大小小工具。詳情請參閱 Android SDK
說明文件 [Resources, 18] 中的「應用程式小工具設計指南」。
3.8.2.通知
Android 包含 API,可讓開發人員使用裝置的硬體和軟體功能,通知使用者重要事件
[資源,19]。
部分 API 可讓應用程式使用
硬體 (特別是聲音、震動和燈光) 執行通知或吸引注意力。裝置實作項目必須
支援使用硬體功能的通知,如 SDK
說明文件所述,並盡可能使用裝置實作硬體。
舉例來說,如果裝置實作項目包含震動器,則必須正確
實作震動 API。如果裝置實作缺少硬體,則必須將
對應的 API 實作為無操作。請注意,
第 7 節會進一步說明這項行為。
此外,實作程序必須正確轉譯 API [Resources, 20] 或狀態/系統列圖示
樣式指南 [Resources, 21] 中提供的所有資源 (圖示、聲音
檔案等)。裝置導入者可以提供與 參考 Android 開源
導入的通知不同,但替代通知系統必須支援上述的現有通知資源。
Android 4.1 支援豐富通知,例如針對
持續通知的互動式 View。裝置實作項目必須按照 Android API 說明文件的說明,正確顯示及執行豐富的
通知。
3.8.3.搜尋功能
Android 包含 API [Resources, 22],可讓開發人員將搜尋功能整合到應用程式中,並將應用程式資料公開至全球系統搜尋功能。
一般來說,這個功能包含單一系統層級的使用者介面
,可讓使用者輸入查詢,並在使用者輸入時顯示建議,以及顯示
結果。
Android API 可讓開發人員重複使用這個介面,在自家應用程式中提供搜尋功能,並將結果提供給常見的全球搜尋使用者介面。
裝置實作項目必須包含單一共用全系統搜尋使用者介面,能夠根據使用者輸入內容提供即時建議。
裝置
實作項目必須實作 API,讓開發人員能夠重複使用此使用者介面,在自己的應用程式中提供搜尋功能。
裝置實作項目
必須實作 API,讓第三方應用程式在全球搜尋模式下執行時,能夠在
搜尋框中新增建議。如果沒有
安裝使用這項功能的第三方應用程式,預設行為應是顯示
網路搜尋引擎結果和建議。
3.8.4.通知
應用程式可以使用「Toast」API (定義於 [Resources, 23]),向使用者顯示短暫的非
模式字串,這些字串會在短時間後消失。裝置
實作項目必須以某種高
可見度方式,向應用程式和使用者顯示 Toast。
3.8.5.主題
Android 提供「主題」機制,讓應用程式在整個活動或應用程式中套用樣式。
Android 3.0 推出了新的「Holo」或「全像」
主題,提供一組定義樣式,供應用程式開發人員使用,以便配合 Android SDK [Resources, 24] 定義的 Holo 主題外觀。
裝置
實作項目不得變更任何向
應用程式 [Resources, 25]公開的 Holo 主題屬性。
Android 4.0 推出了新的「裝置預設」主題,提供一組定義樣式的樣式,供
應用程式開發人員使用,以便配合裝置實作者定義的裝置
主題外觀和風格。裝置實作項目可能會修改向應用程式公開的
DeviceDefault 主題屬性 [Resources, 25].
3.8.6.動態桌布
Android 定義了元件類型和對應的 API 和生命週期,讓
應用程式可向使用者顯示一或多個「動態桌布」[Resources, 26]。
動態桌布是具有有限輸入功能的動畫、圖案或類似圖片,可做為桌布顯示,並在其他應用程式後方運作。
如果硬體可以執行所有 Live 桌布,且不會對其他應用程式造成負面影響,且在合理的幀率下執行,且不會對功能造成限制,則可視為可靠地執行 Live 桌布。
如果硬體限制導致桌布和/或應用程式發生異常、耗用過多 CPU 或電池電力,或是以不合理的低幀率運作,則系統會判定硬體無法執行動態桌布。
舉例來說,某些動態桌布可能會使用 Open GL 1.0 或 2.0
內容轉換為圖形。
不支援多個 OpenGL 內容的硬體上,無法穩定執行動態桌布,因為動態桌布使用
OpenGL 內容時,可能會與其他同樣使用 OpenGL 內容的應用程式發生衝突。
裝置實作項目應實作即時桌布,以便如上述
所述可靠地執行即時桌布。如果裝置實作項目無法如上述所述可靠地執行動態桌布,就絕對不應實作動態桌布。
3.8.7.近期應用程式顯示畫面
上游 Android 4.1 原始碼包含使用者介面,可使用應用程式縮圖圖片顯示近期應用程式,該圖片會顯示使用者上次離開應用程式時的應用程式圖形狀態。
裝置實作可能會變更或
移除這個使用者介面;不過,我們預計在日後的 Android 版本中,
更廣泛地使用這項功能。我們強烈
建議裝置實作項目使用上游 Android 4.1 使用者介面 (或類似的以縮圖為基礎的介面) 來支援近期應用程式,否則可能無法與
未來版本的 Android 相容。
3.8.8.輸入管理設定
Android 4.1 支援輸入管理引擎。Android 4.1 API
可讓自訂應用程式 IME 指定可供使用者調整的設定。裝置實作項目
必須提供使用者在任何時間存取 IME 設定的方法,前提是裝置顯示的 IME 提供此類使用者設定。
3.8.9. 鎖定畫面遠端控制功能
Android 4.0 推出了對 Remote Control API 的支援,讓媒體應用程式
整合在遠端檢視畫面中顯示的播放控制項,例如裝置
鎖定畫面 [Resources, 69]。裝置實作應支援
在裝置鎖定畫面中嵌入遙控器。
3.9 裝置管理
Android 4.1 包含可讓具備安全性意識的應用程式在系統層級執行裝置
管理功能的功能,例如透過 Android Device Administration API [Resources,
27] 強制執行密碼政策或
執行遠端清除作業。裝置實作項目必須提供
DevicePolicyManager 類別的實作項目 [Resources, 28],且應支援 Android SDK 說明文件 [Resources,
27] 中定義的 裝置管理政策。
注意:雖然上述部分規定適用於
Android 4.1,但未來版本的相容性定義預計會將這些規定改為「必須」
。也就是說,這些要求在 Android 4.1 中為選用項目,但在日後的版本中將會變成必備項目
。強烈建議
現有和新款搭載 Android 4.1 的裝置符合 Android 4.1 中的這些需求,否則升級至未來版本時將無法達到 Android 相容性。
3.10 無障礙功能
Android 4.1 提供無障礙層,可協助身心障礙使用者更輕鬆地操作
裝置。此外,Android 4.1 提供平台 API,可讓
無障礙服務實作項目接收使用者和系統事件的回呼,並產生其他回饋機制,例如文字轉語音、觸覺
回饋,以及 Trackball /D-Pad 導覽 [Resources, 29]。
裝置實作項目
必須提供與預設 Android 實作項目一致的 Android 無障礙架構實作項目。
具體來說,裝置實作方式必須符合下列要求。
裝置實作項目必須透過 android.accessibilityservice API 支援第三方無障礙服務實作項目
implementations [Resources,
30]。
裝置實作項目必須產生 AccessibilityEvents,並以與預設 Android 實作項目一致的方式,將這些事件傳送至所有已註冊的 AccessibilityService 實作項目。
裝置實作項目必須提供使用者可存取的機制,以便啟用
和停用無障礙服務,並必須在回應 android.provider.Settings.ACTION_ACCESSIBILITY_SETTINGS 意圖時顯示此介面。
此外,裝置實作項目應在裝置上提供
無障礙服務的實作項目,並提供機制,讓使用者在裝置設定期間
啟用無障礙服務。您可以透過 Eyes Free 專案,取得輔助服務的開放原始碼實作項目
[資源,31]。
3.11 文字轉語音
Android 4.1 包含 API,可讓應用程式使用文字轉語音 (TTS)
服務,並允許服務供應商提供 TTS 服務的實作項目
[Resources, 32]。裝置實作項目必須符合以下與
Android TTS 架構相關的規定:
裝置實作項目必須支援 Android TTS 架構 API,且
應包含支援裝置上可用語言的 TTS 引擎。
請注意,上游 Android 開放原始碼軟體包含完整的
TTS 引擎實作功能。
裝置實作功能必須支援第三方 TTS 引擎的安裝作業。
裝置實作功能必須提供可供使用者存取的介面,讓
使用者選取要用於系統層級的 TTS 引擎。
4.應用程式封裝相容性
裝置實作項目必須安裝並執行由官方 Android SDK 中包含的
「aapt」工具產生的 Android「.apk」檔案 [Resources, 33]。
裝置實作不得擴充 .apk [Resources, 34]、Android 明細 [Resources, 35]、Dalvik 位元碼 [Resources, 17] 或轉譯腳本位元碼 [Resources, 17] 格式,否則會導致這些檔案無法在其他相容裝置上正確安裝及執行。
裝置實作程序應使用 Dalvik 的參考上游實作項目,以及參考實作項目的套件管理系統。
5.多媒體相容性
裝置實作必須包含至少一種音訊輸出方式,例如
喇叭、耳機插孔、外接喇叭連線等。
5.1.媒體編解碼
裝置實作必須支援
Android SDK 說明文件 [Resources, 58] 中指定的核心媒體格式,除非本
文件明確允許。具體來說,裝置實作必須支援下表中定義的媒體格式、
編碼器、解碼器、檔案類型和容器格式。
這些編解碼全都提供為 Android 開放原始碼計畫中偏好的 Android
實作項目的 software 實作。
請注意,Google 和開放手機聯盟並未
表示這些編解碼不受第三方專利限制。
如果您打算在硬體或軟體產品中使用此原始碼,建議您
在實作此程式碼時 (包括在開放原始碼軟體
或共享軟體中) 取得相關專利持有人的專利授權。
請注意,這些表格並未列出大部分視訊編解碼的特定位元率需求
,因為目前的裝置硬體不一定支援與相關標準指定的必要位元率完全對應的位元率
。相反地,裝置
實作項目應支援硬體上可行的最高位元率,最高可達
規格定義的限制。
檔案類型 /
格式 /
類型
編碼器
解碼器
詳細資料
容器
編碼器
格式
支援
必備
單聲道/立體聲/5.0/5.1*
MPEG-4
裝置實作時必備
AAC 設定檔
包含麥克風硬體
必備
標準取樣
(AAC LC)
並定義
3GPP
速率從 8 到 48
android.hardware.microphone。
(.3gp)
kHz。
MPEG-4
支援
(.mp4,
MPEG-4
單聲道/立體聲/5.0/5.1*
.m4a)
HE AAC
內容
ADTS 原始
必備
Profile
標準取樣
AAC (.aac,
(AAC+)
速率從 16 到 48
以 kHz 解碼。
Android
3.1 以上版本,
支援
MPEG-4
必須為裝置
編碼
mono/stereo/5.0/5.1*
HE AAC v2
實作,包括
Android
內容
Profile
麥克風硬體和
4.0 以上版本,ADIF
標準取樣
(進階
定義
不
速率從 16 到 48
AAC+)
android.hardware.microphone
支援)
kHz。
MPEG-TS
MPEG-4
(.ts, not
Audio
REQUIRED for device
Support for
seekable,
Object Type
implementations that include
mono/stereo content
Android
ER AAC
microphone hardware and
REQUIRED
with standard
3.0+)
ELD
define
sampling rates from
(Enhanced
android.hardware.microphone
16 to 48 kHz.
低延遲
AAC)
必備
裝置實作所需
4.75 到 12.2 kbps
AMR-NB
包含麥克風硬體
必備
3GPP (.3gp)
取樣率為 8 kHz
並定義
android.hardware.microphone。
必填
裝置實作時必填
9 個比率,從 6.60
AMR-WB
開始,包含麥克風硬體
必填
kbit/s 至 23.85 kbit/s
3GPP (.3gp)
並定義
採樣率 @ 16kHz
android.hardware.microphone。
單聲道/立體聲 (不支援
多聲道)。
音訊
取樣率最高可達
48 kHz (但建議在
44.1
必須
FLAC
kHz 輸出裝置上使用 44.1 kHz (因為 48
FLAC (.flac) 僅
(Android 3.1 以上版本)
至 44.1 kHz
下採樣器
不包含低通濾波器)。
建議使用 16 位元
;24 位元
則不套用抖動。
單聲道/立體聲 8-
320Kbps 固定
MP3
必填
MP3 (.mp3)
(CBR) 或變動
位元率 (VBR)
類型 0 和
MIDI 類型 0 和 1。
1 (.mid,
DLS Version 1 和
.xmf, .mxmf)
2. XMF 和 Mobile
RTTTL/RTX
MIDI
必備
XMF。支援
(.rtttl、.rtx)
鈴聲格式
OTA (.ota)
RTTTL/RTX、OTA、
iMelody
和 iMelody
(.imy)
Ogg (.ogg)
Vorbis
必備
Matroska
(.mkv)
8 位元和 16 位元
線性 PCM** (速率
視硬體限制而定
)。裝置
必須支援
PCM/WAVE
必備
必備
WAVE (.wav)
採樣速率
原始 PCM 錄音
8000、16000 和 44100 Hz
頻率
JPEG
必備
必備
Base+progressive
JPEG (.jpg)
GIF
必備
GIF (.gif)
圖片
PNG
必備
必備
PNG (.png)
BMP
必備
BMP (.bmp)
WEBP
必備
必備
WebP (.webp)
必備
裝置實作
3GPP
(包括相機硬體) 和
(.3gp)
H.263
必備
define android.hardware.camera
MPEG-4
或
(.mp4)
android.hardware.camera.front。
3GPP
(.3gp)
必備
MPEG-4
(.mp4)
裝置實作
MPEG-TS
包含相機硬體和
Baseline 設定檔
影片
H.264 AVC
必備
(.ts, AAC
定義 android.hardware.camera
(BP)
僅音訊,
或
不是
android.hardware.camera.front.
可尋找,
Android
3.0+)
MPEG-4
必備
3GPP (.3gp)
SP
WebM (.webm)
必備
和 Matroska
VP8
(Android
(.mkv, Android
2.3.3+)
4.0+)
*注意:僅需將 5.0/5.1 內容下混音;錄製或算繪 2 個以上的
頻道為選用項目。 **注意:必須使用 16 位元線性 PCM 擷取功能。8 位元線性 PCM
擷取功能並非必要。
5.2 影片編碼
Android 裝置實作包含後置鏡頭,並宣告
android.hardware.camera 應支援下列影片編碼設定檔。
HD (如果裝置支援
SD (低品質) SD (高品質)
硬體)
H.264 Baseline
H.264 Baseline
影片轉碼器
H.264 Baseline Profile
Profile
Profile
影片
176 x 144 像素
480 x 360 像素
1280 x 720 像素
解析度
影片格式12 fps
30 fps
30 fps
速率
500 Kbps 或
影片位元率 56 Kbps
2 Mbps 或更高
更高
音訊轉碼器 AAC-LC
AAC-LC
AAC-LC
音訊
1 (單聲道)
2 (立體聲)
2 (立體聲)
頻道
音訊位元率 24 Kbps
128 Kbps
192 Kbps
5.3.錄音功能
當應用程式使用 android.media.AudioRecord API 開始錄製
音訊串流時,裝置實作 (包含麥克風硬體) 和
宣告 android.hardware.microphone 必須使用以下行為來取樣及錄製音訊:
裝置應顯示大致平坦的振幅與頻率
特性;具體來說,從 100 Hz 到 4000 Hz,±3 dB 的
頻率。
音訊輸入靈敏度應設為 1000 Hz 時,90 dB 聲音功率級別
(SPL) 來源會產生 16 位元樣本的 2500 rms。
PCM 振幅等級應以線性方式追蹤輸入 SPL 變化,至少在 30 dB 範圍內,從 -18 dB 到 +12 dB 的 90 dB SPL 麥克風。
總諧波失真應低於 1Khz 的 1% 和 90 dB SPL 輸入
等級。
除了上述錄音規格外,當應用程式開始使用
android.media.MediaRecorder.AudioSource.VOICE_RECOGNITION 音訊來源來錄製音訊串流時:
如果有雜訊消除處理,則必須停用。
如果有自動增益控制,則必須停用。
注意:雖然上述部分規定在
Android 4.1 中列為「SHOULD」,但未來版本的相容性定義預計會將這些規定改為「MUST」。
也就是說,這些要求在 Android 4.1 中為選用項目,但在日後的版本中將會變成必備項目
。強烈建議
現有和新款搭載 Android 4.1 的裝置符合 Android 4.1 中的這些需求,否則升級至未來版本時將無法達到 Android 相容性。
5.4.音訊延遲
音訊延遲的廣義定義是指從應用程式要求
音訊播放或錄音操作,到裝置實際執行操作的時間間隔。
許多類型的應用程式都需要短延遲,才能達到
即時效果,例如音效或 VoIP 通訊。裝置實作項目
包含麥克風硬體,並宣告 android.hardware.microphone
,應符合本節所述的音訊延遲要求。如要進一步瞭解裝置實作可能會在何種情況下省略麥克風硬體,請參閱第 7 節
。
本節的目的為:
「冷輸出延遲」的定義為應用程式
要求音訊播放,與聲音開始播放之間的間隔,且音訊系統
在要求前處於閒置狀態且已關閉電源
「溫輸出延遲」的定義為應用程式
要求音訊播放,與聲音開始播放之間的間隔,且音訊系統
在要求前處於閒置狀態
「連續輸出延遲」的定義為應用程式
要求音訊播放,與聲音開始播放之間的間隔,且音訊系統
在要求前處於閒置狀態
「冷輸入延遲」的定義為應用程式
要求音訊錄製,與聲音開始錄製之間的間隔,且音訊系統
和麥克風在要求前處於閒置狀態
「連續輸入延遲」的定義為環境音發生時,與聲音開始錄製之間的間隔,且裝置處於錄製模式
根據上述定義,裝置實作應具備下列各項
屬性:
冷輸出延遲為 100 毫秒或更短
溫輸出延遲為 10 毫秒或更短
連續輸出延遲為 45 毫秒或更短
冷輸入延遲為 100 毫秒或更短
連續輸入延遲為 50 毫秒或更短
注意:雖然上述規定適用於 Android 4.1 的「應」
未來版本的「相容性定義」預計會將這些規定改為「必須」
。也就是說,這些規定在 Android 4.1 中為選用規定,但在未來版本中將為必用規定
。
強烈建議
現有和新款搭載 Android 4.1 的裝置符合 Android 4.1 中的這些需求,否則升級至未來版本時將無法
達到 Android 相容性。
如果裝置實作符合本節的規定,則可能會透過 android.content.pm.PackageManager 類別回報「android.hardware.audio.low-
latency」功能,以便回報
低延遲音訊支援功能。 [Resources, 37]
反之,如果裝置實作不符合這些要求,則
不得回報支援低延遲音訊。
5.5.網路通訊協定
裝置必須支援 Android SDK 說明文件 [Resources, 58] 中
指定的媒體網路通訊協定,以便播放音訊和影片。具體來說,裝置
必須支援下列媒體網路 proto 欄:
RTSP (RTP、SDP)
HTTP(S) 漸進式串流
HTTP(S) 即時串流草稿通訊協定,第 3 版 [資源,59]
6.開發人員工具相容性
裝置實作方式必須支援
Android SDK 提供的 Android 開發人員工具。具體來說,Android 相容裝置必須與以下項目相容:
Android Debug Bridge (簡稱 ADB) [Resources, 33]
裝置實作項目必須支援
Android SDK 中說明的所有 ADB 功能。裝置端的 adb 守護程序必須處於停用狀態,
且必須提供可供使用者存取的機制,以便啟用 Android 偵錯橋接器。
Dalvik 偵錯監控服務 (稱為 ddms) [Resources, 33]
裝置實作必須支援所有 ddms 功能,如 Android SDK 中的說明所述。
由於 ddms 使用 adb,ddms 的支援功能應預設為停用,但在使用者啟用 Android 偵錯橋接器時,必須支援 ddms。
Monkey [Resources, 36]
裝置實作必須包含 Monkey 架構,並讓應用程式
可使用。
大多數以 Linux 為基礎的系統和 Apple Macintosh 系統,都能使用標準 Android SDK 工具辨識 Android 裝置,無須額外支援;但 Microsoft
Windows 系統通常需要為新 Android 裝置提供驅動程式。
(例如,
新的供應商 ID 和有時新的裝置 ID 需要
Windows 系統的專屬 USB 驅動程式)。如果裝置實作項目未受到標準 Android SDK 中提供的
adb 工具
所辨識,裝置實作者必須提供 Windows 驅動程式,讓開發人員可以使用 ADB 通訊協定連線至裝置。這些
驅動程式
必須提供給 Windows XP、Windows Vista 和 Windows 7,包括
32 位元和 64 位元版本。
7.硬體相容性
如果裝置包含具有對應 API 的特定硬體元件 (適用於
第三方開發人員),則裝置實作必須按照 Android SDK 說明文件中
所述實作該 API。如果 SDK 中的 API 與
硬體元件互動,而該元件屬於選用元件,且裝置實作項目
不具備該元件:
完整的類別定義 (如 SDK 所述) 必須存在於元件的
API,
API 的行為必須以某種合理的方式實作為無操作
API 方法必須傳回 SDK 說明文件允許的空值
API 方法必須傳回類別的無操作實作項目,如果 SDK 說明文件不允許空值
API 方法不得擲回 SDK 說明文件未記錄的例外狀況
如果這些需求適用的情況,通常是電信 API:
即使在非手機裝置上,這些 API 也必須以合理的無操作方式實作。
裝置實作項目必須透過 android.content.pm.PackageManager 類別的 getSystemAvailableFeatures() 和 hasSystemFeature(String) 方法,準確回報硬體設定
資訊。
[Resources, 37]
7.1.顯示和圖形
Android 4.1 包含可自動調整應用程式素材資源和 UI 版面配置的功能,以便在各種硬體設定下順利執行第三方應用程式 [Resources, 38]。
裝置必須正確實作這些 API 和行為,詳情請參閱本節。
本節規定中參照的單位定義如下:
「實際對角線尺寸」是螢幕亮起部分兩個對角角落之間的距離,單位為英寸
。
「dpi」(「每英寸點數」) 是指一條線性
水平或垂直距離為 1 英寸時所包含的像素數。如果列出 dpi 值,水平和
垂直 dpi 都必須在範圍內。
「顯示比例」是指螢幕較長的尺寸與較短
尺寸的比率。舉例來說,如果螢幕解析度為 480 x 854 像素,則會是 854 / 480 =
1.779,或大約「16:9」。
「密度獨立像素」或「dp」是指以 160 dpi 螢幕為基準的虛擬像素單位,計算方式為:像素 = dp * (密度 / 160)。
7.1.1.螢幕設定
螢幕大小
Android UI 架構支援各種螢幕大小,並允許
應用程式透過 SCREENLAYOUT_SIZE_MASK 使用 android.content.res.Configuration.screenLayout 查詢裝置螢幕大小 (又稱「螢幕版面配置」)。
裝置實作項目必須回報正確的螢幕
大小,如 Android SDK 說明文件 [Resources, 38] 所定義,並由
上游 Android 平台決定。具體來說,裝置實作必須根據下列邏輯密度獨立像素 (dp)
螢幕尺寸,回報
正確的螢幕大小。
裝置的螢幕大小必須至少為 426 dp x 320 dp (「小」)
回報螢幕大小為「正常」的裝置,其螢幕大小必須至少為 480
dp x 320 dp
回報螢幕大小為「大」的裝置,其螢幕大小必須至少為 640
dp x 480 dp
回報螢幕大小為「超大」的裝置,其螢幕大小必須至少為 960
dp x 720 dp
此外,裝置的螢幕大小必須至少為 2.5 英寸的實體對角線
大小。
裝置絕對不得變更所回報的螢幕大小。
應用程式可選擇透過 AndroidManifest.xml 檔案中的 <supports-
screens> 屬性,指出支援的螢幕大小。裝置實作必須
正確遵循應用程式所聲明支援的小、一般、大和特大
螢幕,如 Android SDK 說明文件所述。
螢幕顯示比例
顯示比例必須介於 1.3333 (4:3) 和 1.85 (16:9) 之間。
螢幕密度
Android UI 架構會定義一組標準邏輯密度,協助
應用程式開發人員指定應用程式資源。裝置實作項目必須透過
android.util.DisplayMetrics API
回報下列任一邏輯 Android 架構密度,並以此標準密度執行應用程式。
120 dpi,稱為「ldpi」
160 dpi,稱為「mdpi」
213 dpi,稱為「tvdpi」
240 dpi,稱為「hdpi」
320 dpi,稱為「xhdpi」
480 dpi,稱為「xxhdpi」
裝置實作應定義標準 Android 架構密度,
此密度應數值上最接近螢幕的實際密度,除非邏輯密度
數值上最接近螢幕的實際密度,除非邏輯密度
將回報的螢幕大小推至低於支援的最小值。如果標準 Android
架構密度與實際密度數值最接近,導致螢幕
大小小於最小支援的相容螢幕大小 (320 dp 寬度),
裝置實作項目應回報標準 Android 架構
密度,而非下一個較低的密度。
7.1.2.顯示指標
裝置實作項目必須針對
android.util.DisplayMetrics [Resources, 39] 中定義的所有顯示指標回報正確值。
7.1.3.螢幕方向
裝置必須支援應用程式動態調整螢幕方向,以便切換為直向或
橫向螢幕方向。也就是說,裝置必須遵循應用程式針對特定螢幕方向提出的
要求。裝置實作項目可以選取
直向或橫向螢幕方向做為預設。
裝置必須在透過 android.content.res.Configuration.orientation、android.view.Display.getOrientation() 或其他 API 進行查詢時,回報裝置目前的正確方向。
變更
螢幕方向時,裝置不得變更回報的螢幕大小或密度。
裝置必須回報支援的螢幕方向 (
android.hardware.screen.portrait 和/或 android.hardware.screen.landscape)
且必須回報至少一種支援的方向。舉例來說,如果裝置採用
固定方向橫向螢幕 (例如電視或筆記型電腦),則必須只回報
android.hardware.screen.landscape。
7.1.4.2D 和 3D 圖形加速功能
裝置實作必須同時支援 OpenGL ES 1.0 和 2.0,如 Android SDK 說明文件所述
並詳述。裝置實作也必須
支援 Android Renderscript,詳情請參閱 Android SDK 說明文件
[Resources, 8]。
裝置實作也必須正確識別自己是否支援
OpenGL ES 1.0 和 2.0。也就是說:
受管理的 API (例如透過 GLES10.getString() 方法) 必須回報
支援 OpenGL ES 1.0 和 2.0
。原生 C/C++ OpenGL API (也就是透過
libGLES_v1CM.so、libGLES_v2.so 或 libEGL.so 提供給應用程式的 API) 必須回報支援
OpenGL ES 1.0 和 2.0。
裝置實作可能會實作任何所需的 OpenGL ES 擴充功能。
不過,裝置實作必須透過 OpenGL ES 管理和
原生 API 回報所支援的擴充功能字串,反之,則不得回報
不支援的擴充功能字串。
請注意,Android 4.1 支援應用程式可選指定
需要特定 OpenGL 紋理壓縮格式。這些格式通常由供應商提供。
Android 4.1 不需要裝置實作項目即可實作
任何特定紋理壓縮格式。不過,應用程式應透過
OpenGL API 中的 getString() 方法,準確回報任何支援的
紋理壓縮格式。
Android 4.1 包含一種機制,可讓應用程式宣告想要在應用程式、活動、視窗或
View 層級
啟用 2D 圖形的硬體加速功能,方法是使用資訊清單標記 android:hardwareAccelerated 或直接使用
API cal s [Resources, 9]。
在 Android 4.1 中,裝置實作項目必須預設啟用硬體加速功能,
如果開發人員要求禁用硬體加速功能,則必須
設定 android:hardwareAccelerated="false",或直接透過 Android View API 禁用硬體加速功能。
此外,裝置實作方式必須與 Android
SDK 說明文件中的硬體加速功能一致 [Resources, 9]。
Android 4.1 包含 TextureView 物件,可讓開發人員直接將
硬體加速 OpenGL ES 紋理整合為 UI 階層中的算繪目標。
裝置實作項目必須支援 TextureView API,且必須展現
與上游 Android 實作項目一致的行為。
7.1.5.舊版應用程式相容模式
Android 4.1 指定「相容模式」,其中架構會以「正常」螢幕大小等同 (320dp 寬度) 模式運作,以便支援舊版
應用程式,這些應用程式並未針對舊版 Android 開發,且不支援螢幕大小
獨立性。
裝置實作項目必須支援舊版應用程式
相容模式,這項模式是由上游 Android 開放原始碼實作。也就是說,裝置實作不得變更啟用
相容性模式的觸發條件或門檻,也不得變更相容性
模式本身的行為。
7.1.6.螢幕類型
裝置導入螢幕可分為兩種類型:
固定像素顯示器導入方式:螢幕是單一面板,僅支援
單一像素寬度和高度。螢幕通常會與裝置實體整合
。例如手機、平板電腦等。
可變像素顯示器實作:裝置實作無
嵌入式螢幕,並包含 VGA、HDMI 或
無線顯示器連接埠等影片輸出端口,或是具有可變更像素
尺寸的嵌入式螢幕。例如電視、機上盒等。
固定像素裝置實作
固定像素裝置實作項目可使用任何像素尺寸的螢幕,
前提是符合本相容性定義所定義的條件。
固定像素實作可能會包含用於外接
螢幕的視訊輸出連接埠。不過,如果該螢幕用於執行應用程式,裝置就必須符合下列
規定:
裝置必須回報與固定像素螢幕相同的螢幕設定和顯示指標,如
第 7.1.1 和 7.1.2 節所述。
裝置必須回報與固定像素螢幕相同的邏輯密度。
裝置必須回報與固定像素螢幕相同或非常接近
的螢幕尺寸。
舉例來說,如果平板電腦的對角線尺寸為 7 吋,解析度為 1024x600 像素,則
視為固定像素大 mdpi 顯示器實作。如果裝置包含以 720p 或 1080p 顯示的視訊
輸出埠,則裝置實作必須調整
輸出內容,以便應用程式只在大型 mdpi 視窗中執行,無論
是否使用固定像素顯示器或視訊輸出埠。
可變像素裝置實作
可變像素裝置實作項目必須支援 1280x720 或
1920x1080 (即 720p 或 1080p)。採用可變像素
螢幕的裝置實作方式,絕對不應支援任何其他螢幕設定或模式。使用可變像素螢幕的裝置
實作項目可能會在執行階段或啟動期間變更螢幕設定或
模式。舉例來說,機上盒使用者可能會將
720p 螢幕換成 1080p 螢幕,而裝置實作可能會相應調整
。
此外,變動像素裝置實作項目必須針對這些像素尺寸回報下列
設定值:
1280x720 (也稱為 720p):'large' 螢幕大小、'tvdpi' (213 dpi) 密度
1920x1080 (也稱為 1080p):'large' 螢幕大小、'xhdpi' (320 dpi) 密度
為了清楚起見,變動像素裝置實作項目在 Android 4.1 中僅限於
720p 或 1080p,且必須設定為回報螢幕大小和
密度值,如上所述。
7.1.7.螢幕技術
Android 平台包含 API,可讓應用程式將豐富的圖形算繪至螢幕。
除非本文件另有規定,否則裝置必須支援 Android SDK 定義的所有 API。
具體來說:
裝置必須支援可算繪 16 位元彩色圖形的螢幕,且
應支援可算繪 24 位元彩色圖形的螢幕。
裝置必須支援可算繪動畫的螢幕。
所使用的顯示器技術必須具有 0.9
和 1.1 之間的像素顯示比例 (PAR)。也就是說,像素長寬比必須接近正方形 (1.0),容許值為 10%
。
7.2.輸入裝置
7.2.1.鍵盤
裝置實作:
必須支援輸入管理架構 (可讓第三方開發人員建立輸入管理引擎,例如軟體鍵盤),詳情請參閱 http://developer.android.com
。必須提供至少一個軟體鍵盤實作 (無論是否有硬體鍵盤)
。可納入其他軟體鍵盤實作
。可納入硬體鍵盤
。請勿納入與 android.content.res.Configuration.keyboard 中指定的格式不相符的硬體鍵盤
[Resources, 40]
(也就是 QWERTY 或 12 鍵)
7.2.2。
非觸控導覽功能
裝置實作:
可省略非觸控導覽選項 (也就是可省略 Trackball、D-Pad 或
輪)
必須回報
android.content.res.Configuration.navigation [Resources, 40]
的正確值
必須提供合理的替代使用者介面機制,用於選取及編輯文字,且與輸入管理引擎相容。
上游 Android 開放原始碼軟體包含選取機制
,適合用於缺乏非觸控導覽輸入功能的裝置。
7.2.3.導覽鍵
「Home」、「Menu」和「Back」功能對於 Android 導覽
模式至關重要。裝置實作項目必須在執行應用程式時,隨時向使用者提供這些函式。
這些功能可透過
專用實體按鈕 (例如機械式或電容式觸控按鈕) 實作,也可以
透過專用軟體鍵、手勢、觸控面板等實作。Android
4.1 支援這兩種實作方式。
Android 4.1 推出了對輔助動作的支援 [Resources, 63]。裝置
實作項目必須在執行應用程式時,隨時向使用者提供輔助動作。
這項功能可透過硬體或軟體鍵實現。
裝置實作項目可使用螢幕的特定部分來顯示
導覽鍵,但必須符合下列規定:
裝置實作項目的導覽鍵必須使用螢幕的特定部分,且不得供應用程式使用,且不得遮蓋或以其他方式
干擾螢幕的部分,以供應用程式使用。
裝置實作項目必須提供螢幕的部分,讓
應用程式符合第 7.1.1 節定義的規定。
裝置實作項目必須在應用程式指定
SYSTEM_UI_FLAG_LOW_PROFILE 時,以不顯眼的「低調」模式 (例如調暗) 顯示導覽鍵。
當應用程式
指定 SYSTEM_UI_FLAG_HIDE_NAVIGATION 時,裝置實作項目必須隱藏導覽鍵。
當
targetSdkVersion <= 10 時,裝置實作項目必須向應用程式顯示 Menu 鍵,但當
targetSdkVersion > 10 時,則不應顯示 Menu 鍵。
裝置實作項目必須向符合第 7.1.1 節定義的條件規定的應用程式提供部分顯示畫面。
7.2.4.觸控螢幕輸入
裝置實作項目應具備某種指標輸入系統 (
類似滑鼠或觸控)。不過,如果裝置實作不支援指標
輸入系統,則不得回報 android.hardware.touchscreen 或
android.hardware.faketouch 功能常數。
裝置實作項目包含指標輸入系統:
應支援完整的獨立追蹤指標,如果裝置輸入系統
支援多個指標
,則必須回報 android.content.res.Configuration.touchscreen
[Resources, 40] c 的值,以對應
裝置
上的特定觸控螢幕類型。Android 4.0 支援各種觸控螢幕、觸控板和假設觸控
輸入裝置。以觸控螢幕為基礎的裝置實作會與
顯示畫面相關聯 [Resources, 71],讓使用者有直接操作畫面上
項目的感覺。由於使用者是直接觸碰螢幕,系統不需要
要求任何額外操作元素,用來指出要操作的物件。相反地,觸控模擬介面會提供使用者輸入系統,可模擬觸控螢幕的部分功能。
舉例來說,滑鼠或遙控器會驅動螢幕上的游標,以模擬觸控操作,但使用者必須先指向或將焦點放在目標上,
然後再點選。
滑鼠、觸控板、以陀螺儀為基礎的空中滑鼠、
陀螺儀指標、搖桿和多點觸控觸控板等許多輸入裝置,都能支援假觸控互動。
Android 4.0 包含功能常數 android.hardware.faketouch,該常數
對應高保真非觸控 (也就是以指標為基礎) 輸入裝置,例如
滑鼠或觸控板,可充分模擬以觸控為基礎的輸入 (包括基本
手勢支援),並指出裝置支援模擬的
觸控螢幕功能子集。宣告假觸控功能的裝置實作項目
必須符合第 7.2.5 節的假觸控需求。
裝置實作項目必須回報正確的功能,對應使用者的
輸入類型。裝置實作包含觸控螢幕 (單點觸控或更高)
時,必須回報平台功能常數 android.hardware.touchscreen。回報平台功能常數
android.hardware.touchscreen 的裝置
實作項目,也必須回報平台功能常數
android.hardware.faketouch。不含
觸控螢幕的裝置實作 (僅依賴指標裝置) 不得回報任何觸控螢幕
功能,且必須符合第 7.2.5 節的假
觸控功能規定,才能回報 android.hardware.faketouch。
7.2.5.假觸控輸入
宣告支援 android.hardware.faketouch
的裝置實作必須符合上述假觸控要求,且必須支援兩個或多個獨立指標輸入的 distinct
追蹤。
7.2.6.麥克風
:裝置實作可能會省略麥克風。不過,如果裝置實作
省略麥克風,則不得回報 android.hardware.microphone 功能常數
,且必須依照第 7 節實作音訊錄音 API 為無操作。
相反地,如果裝置實作具備麥克風,則必須:
必須回報 android.hardware.microphone 功能常數
應符合第 5.4 節的音訊品質規定
應符合第 5.5 節的音訊延遲規定
7.3.感應器
Android 4.1 包含用於存取各種感應器類型的 API。裝置
實作通常可以省略這些感應器,如以下
子部分所述。如果裝置包含特定感應器類型,且該類型具有對應的 API
(適用於第三方開發人員),則裝置實作項目必須實作該 API,如 Android SDK 說明文件所述
。舉例來說,裝置實作:
必須依據
android.content.pm.PackageManager 類別,準確回報感應器是否存在。 [Resources, 37]
必須透過
SensorManager.getSensorList() 和類似方法,返回支援的感應器的正確清單
必須合理地處理其他感應器 API (例如,在應用程式嘗試註冊事件監聽器時,根據情況傳回 true
或 false
;在沒有對應感應器時,不呼叫
感應器事件監聽器;等等)
必須使用 Android SDK
說明文件
中定義的相關國際單位制 (即公制) 值,針對每種感應器類型回報所有感應器測量值 [Resources, 41]
上述清單並非完整,Android SDK 的行為已在說明文件中記錄,
可視為權威來源。
某些感應器類型是合成感應器,也就是說,它們可以從
一或多個其他感應器提供的資料衍生而來。例如方向感應器和線性加速度感應器。
裝置實作項目應實作這些感應器
類型,前提是裝置包含必要的實體感應器。
Android 4.1 API 引入了「串流」感應器的概念,這種感應器會
持續傳回資料,而非僅在資料變更時才傳回。裝置
實作項目必須持續為任何 Android 4.1 SDK 說明文件中指出的資料流感應器 API
提供定期資料樣本。
7.3.1.加速計
裝置實作應包含 3 軸加速度計。如果裝置
實作包含 3 軸加速計,則應能夠以 120 Hz 以上的頻率傳送事件。
請注意,雖然上述
加速計頻率在 Android 4.1 中為「應」
,但未來版本的
相容性定義預計會將這些項目變更為
「必須」
。也就是說,這些標準在 Android 4.1 中為選用標準,但在日後的版本中將會變為必備標準
。
強烈建議執行 Android 4.1 的現有裝置和新裝置符合 Android 4.1 的這些需求 ,以便
升級至未來的平台版本
必須遵循 Android 感應器座標系統,詳情請參閱
Android API (請參閱 [Resources, 41])
必須能夠在任何三維al 向量
上測量從自由落體到兩倍重力 (2g) 或以上的值
必須具有 8 位元或以上的準確度
必須具有不超過 0.05 m/s^2 的標準差
7.3.2.磁力計
裝置實作應包含 3 軸磁力計 (即指南針)。如果
裝置包含 3 軸磁力計,則必須符合以下條件:
必須能夠以 10 Hz 以上的頻率傳送事件
必須遵循 Android 感應器座標系統,詳情請參閱
Android API (請參閱 [Resources, 41])。
必須能夠擷取足以涵蓋
地磁場的場強範圍
必須具備 8 位元精確度或更高
必須具備不超過 0.5 µT 的標準差
7.3.3. GPS
裝置實作項目應包含 GPS 接收器。如果裝置實作
包含 GPS 接收器,則應加入某種形式的「輔助 GPS」
技術,以盡量縮短 GPS 鎖定時間。
7.3.4.迴轉儀
裝置實作應包含迴轉儀 (即角變化感應器)。
除非裝置也包含 3 軸加速計,否則不應包含迴轉儀感應器。
如果裝置實作包含陀螺儀,則必須符合下列條件:
必須進行溫度補償
必須能夠測量高達 5.5*Pi 弧度/秒的方向變更
(即每秒約 1,000 度)
應能夠以 200 Hz 以上的頻率傳送事件。請注意,雖然上述
陀螺儀頻率在 Android 4.1 中列為「SHOULD」,但
未來版本的相容性定義預計會將這些項目變更為
「MUST」。也就是說,這些標準在 Android 4.1 中為選用標準,但在日後的版本中將會變為必備標準
。
強烈建議執行 Android 4.1 的現有裝置和新裝置符合 Android 4.1 中的這些要求 ,這樣
才能升級至未來的平台版本
必須具備 12 位元或更高精確度
必須具備每 Hz 1e-7 弧度^2 / 秒^2 以下的變異 (每 Hz 變異,
或弧度^2 / 秒)。變化範圍可隨取樣率而異,但必須受到此值的
限制。換句話說,如果您以 1 Hz 的取樣率測量陀螺儀
的變異,結果應不超過 1e-7 弧度^2/秒^2。
必須盡可能將時間戳記設為硬體事件發生時的時間。
必須移除常數延遲。
7.3.5.氣壓計
裝置實作可能會包含氣壓計 (即環境氣壓感應器)。如果
裝置實作包含氣壓計,則必須:
必須能夠以 5 Hz 或更高的頻率傳送事件
必須具備足夠的精確度,才能估算高度
必須進行溫度補償
7.3.7。溫度計
裝置實作可能會,但不應包含溫度計 (即
溫度感應器)。如果裝置實作包含溫度計,則必須
測量裝置 CPU 的溫度。請勿測量任何其他
溫度。 (請注意,此感應器類型已在 Android 4.1 API 中淘汰)。
7.3.7.光度計
裝置實作可能會包含光度計 (即環境光感應器)。
7.3.8.鄰近感應器
裝置實作可能會包含鄰近感應器。如果裝置實作
確實包含鄰近感應器,則必須在螢幕
相同方向測量物體的鄰近度。也就是說,接近感應器必須以偵測
靠近螢幕的物體為優先,因為這個感應器類型的首要意圖,就是偵測使用者正在使用的
手機。如果裝置實作包含使用
其他方向的近接感應器,則絕對不應透過此 API 存取。如果裝置
實作項目具有鄰近感應器,則該感應器必須具備 1 位元或更高的準確度。
7.4.資料連線
7.4.1.電話服務
Android 4.1 API 和本文件所使用的「電話服務」是指與透過 GSM 或
CDMA 網路撥打語音電話和傳送 SMS 訊息相關的
硬體。雖然這些語音通話可能會或不會以封包交換方式進行,但在 Android 4.1 中,這些通話會視為與任何可能透過相同網路實作的資料連線無關。
換句話說,Android 的「telephony」
功能和 API 具體指的是語音通話和簡訊;舉例來說,如果裝置
實作無法撥打電話或傳送/接收簡訊,則
不得回報「android.hardware.telephony」功能或任何子功能,無論
是否使用行動網路進行資料連線。
Android 4.1 可用於不含電話硬體的裝置。也就是說,
Android 4.1 與非手機裝置相容。不過,如果裝置
實作包含 GSM 或 CDMA 電話功能,則必須
完整支援該技術的 API。不含通訊服務
硬體的裝置實作項目必須將 ful API 實作為無操作。
7.4.2. IEEE 802.11 (WiFi)
Android 4.1 裝置實作應支援一或多種 802.11 的形式
(b/g/a/n 等)如果裝置實作內容包含 802.11 支援功能,則
必須實作對應的 Android API。
裝置實作項目必須實作多播 API,如 SDK
說明文件所述 [資源, 62]。裝置實作 (包含 Wi-Fi 支援)
必須支援多播 DNS (mDNS)。裝置實作不得在任何運作期間篩除 mDNS
封包 (224.0.0.251),包括螢幕未處於
活動狀態時。
7.4.2.1. WiFi Direct
裝置實作應支援 Wifi Direct (Wifi 對等端對端)。如果
裝置實作確實支援 Wifi direct,則必須實作 SDK 說明文件 [Resources, 68] 中所述的
對應 Android API。如果
裝置實作項目支援 Wifi 直連,則必須支援一般 Wifi 作業
同時支援 Wifi 和 Wifi 直連作業
7.4.3。
藍牙
裝置實作應包含藍牙收發器。裝置
實作項目如果包含藍牙收發器,就必須啟用 SDK 說明文件中所述的 RFCOMM 型藍牙 API [Resources, 42]。
裝置
實作項目應實作相關的藍牙設定檔,例如 A2DP、
AVRCP、OBEX 等,視裝置而定。
相容性測試套件包含涵蓋 Android
RFCOMM Bluetooth API 基本操作的案例。不過,由於藍牙是裝置之間的通訊協定
,因此無法透過在單一裝置上執行的單元測試進行完整測試。
因此,裝置實作方式也必須通過附錄 A 所述的人為操作藍牙
測試程序。
7.4.4.近距離無線通訊
裝置實作應包含轉換器和相關硬體,以便支援
近距離無線通訊 (NFC)。如果裝置實作包含 NFC
硬體,則必須符合以下條件:
必須從
android.content.pm.PackageManager.hasSystemFeature() 方法回報 android.hardware.nfc 功能。
[資源, 37]
必須能夠透過下列 NFC
standards:
必須能夠以 NFC 論壇讀取器/寫入器的角色運作 (依據 NFC 論壇技術規格 NFCForum-TS-DigitalProtocol-1.0 定義)
透過下列 NFC 標準:
NfcA (ISO14443-3A)
NfcB (ISO14443-3B)
NfcF (JIS 6319-4)
IsoDep (ISO 14443-4)
NFC 論壇標籤類型 1、2、3、4 (由 NFC 論壇定義)
應能夠透過下列
NFC 標準讀取及寫入 NDEF 訊息。
請注意,雖然下列 NFC 標準在 Android 4.1 中列為
「應」
,但未來版本的相容性定義預計會變更為「必須」。也就是說,這些標準在
Android 4.1 中為選用標準,但在日後的版本中將會變成必要標準。強烈建議
執行 Android 4.1 的現有和新裝置
符合這些 Android 4.1 的
規定,這樣才能升級至未來的
平台版本。
NfcV (ISO 15693)
必須能夠透過以下對等端到對等端標準和通訊協定傳輸和接收資料:
ISO 18092
LLCP 1.0 (由 NFC 論壇定義)
SDP 1.0 (由 NFC 論壇定義)
NDEF Push Protocol [Resources, 43]
SNEP 1.0 (由 NFC 論壇定義)
必須支援 Android Beam [Resources, 65]:
必須實作 SNEP 預設服務器。
預設 SNEP 伺服器收到的有效 NDEF 訊息
必須使用 android.nfc.ACTION_NDEF_DISCOVERED 意圖,將訊息分派給應用程式
。在設定中停用
Android Beam 時,請務必不要停用傳送傳入 NDEF
訊息的例項。
裝置實作必須遵循
android.settings.NFCSHARING_SETTINGS 意圖,以便顯示 NFC 分享
設定 [Resources, 67]。
必須實作 NPP 伺服器。NPP 伺服器收到的郵件
必須以與 SNEP 預設伺服器相同的方式處理。
必須實作 SNEP 用戶端,並在啟用 Android Beam 時嘗試將外寄 P2P NDEF
傳送至預設 SNEP 伺服器。如果找不到預設的
SNEP 伺服器,則用戶端必須嘗試傳送至 NPP
伺服器。
必須允許前景活動使用 android.nfc.NfcAdapter.setNdefPushMessage 和
android.nfc.NfcAdapter.setNdefPushMessageCal 回傳,以及
android.nfc.NfcAdapter.enableForegroundNdefPush,以設定傳出 P2P NDEF 訊息。
應預設啟用 Android Beam。
必須支援 NFC 連線轉交至 Bluetooth,前提是裝置
支援 Bluetooth 物件推送設定檔。
使用
android.nfc.NfcAdapter.setBeamPushUris 時,裝置實作項目必須
支援將連線交接至藍牙,方法是實作
「Connection Handover version 1.2」[Resources, 60] 和「Bluetooth Secure
Simple Pairing Using NFC version 1.0」 [Resources, 61] 規格,這些規格可在
NFC 論壇
中找到。這類實作方法的 SHOULD 會使用 SNEP GET 要求
來透過 NFC 交換交接要求 / 選取記錄,且
必須使用 Bluetooth 物件推送設定檔,才能進行實際的 Bluetooth 資料傳輸
。
在 NFC 探索模式下,必須為所有支援的技術進行 pol。
在裝置喚醒、螢幕處於活動狀態且解鎖鎖定螢幕時,應處於 NFC 探索模式。
(請注意,上述 JIS、ISO 和 NFC 論壇
規格並未提供公開連結)。
此外,裝置實作項目可能會為下列 MIFARE 技術提供讀取器/寫入器支援:
MIFARE Classic (NXP MF1S503x [Resources, 44], MF1S703x [Resources, 44])
MIFARE Ultralight (NXP MF0ICU1 [Resources, 46], MF0ICU2 [Resources, 46])
NDEF on MIFARE Classic (NXP AN130511 [Resources, 48], AN130411
[Resources, 49])
請注意,Android 4.1 以上版本包含這些 MIFARE 類型的 API。如果裝置
實作項目支援讀取/寫入器角色的 MIFARE,則必須:
必須實作對應的 Android API,如
Android SDK
所述
必須回報
android.content.pm.PackageManager.hasSystemFeature()
方法中的 com.nxp.mifare 功能。
[Resources, 37] 請注意,這不是標準的 Android 功能,因此
不會顯示為 PackageManager 類別的常數。
請務必不要實作對應的 Android API,也不要回報
com.nxp.mifare 功能,除非也實作一般 NFC 支援功能,如
本節所述
如果裝置實作項目不含 NFC 硬體,則請務必不要從
android.content.pm.PackageManager.hasSystemFeature() 方法 [Resources, 37]
宣告
android.hardware.nfc 功能,
並請務必以無操作方式實作 Android 4.1 NFC API。
由於 android.nfc.NdefMessage 和 android.nfc.NdefRecord 類別代表
與通訊協定無關的資料表示格式,因此裝置實作項目必須
實作這些 API,即使不支援 NFC 或宣告
android.hardware.nfc 功能。
7.4.5.最低網路功能
裝置實作必須支援一或多種資料
網路。具體來說,裝置實作必須支援至少一種
資料標準,且能達到 200 Kbit/秒或更高的傳輸速率。
��
裝置可能會實作多種資料連線形式。
7.5.相機
裝置實作應包含後置鏡頭,並可視情況納入
前置鏡頭。後置鏡頭是位於
裝置
螢幕對面側邊的相機,也就是拍攝裝置遠端場景的相機,就像
傳統相機一樣。前置鏡頭是位於
裝置
螢幕同側的鏡頭,也就是通常用於拍攝使用者的鏡頭,例如
視訊會議和類似應用程式。
7.5.1.後置鏡頭
裝置實作應包含後置鏡頭。如果裝置
實作包含後置相機,則必須符合以下條件:
必須具備至少 2000 萬畫素的解析度
應在相機驅動程式中實作硬體自動對焦或軟體自動對焦 (對應用程式軟體而言應為透明)
可使用固定對焦或 EDOF (擴大景深) 硬體
可使用閃光燈。
如果相機包含閃光燈,當 android.hardware.Camera.PreviewCal 後端例項已在相機預覽畫面上註冊時,閃光燈必須處於關閉狀態,除非應用程式已明確啟用閃光燈,也就是啟用 Camera.Parameters 物件的 FLASH_MODE_AUTO 或 FLASH_MODE_ON 屬性。
請注意,這項限制不適用於
裝置內建的系統相機應用程式,只適用於使用 Camera.PreviewCallback 的第三方應用程式
。
7.5.2.前置鏡頭
裝置實作可能包含前置鏡頭。如果裝置實作
包含前置鏡頭,則必須符合以下條件:
解析度至少為 VGA (即 640 x 480 像素)
不得將前置鏡頭用於 Camera API 的預設值。也就是說,
Android 4.1 中的相機 API 具備前置鏡頭專屬支援,
裝置實作項目不得將 API 設定為將前置鏡頭視為預設後置鏡頭,即使前置鏡頭是裝置上唯一的相機也一樣。
應用程式可使用第 7.5.1 節所述的功能 (例如自動對焦、閃光燈等),但不得將後置鏡頭視為預設相機。
應用程式在
CameraPreview 中顯示的串流必須水平反射 (即鏡像),如下所示:
如果裝置實作項目可由使用者旋轉 (例如透過加速計時器自動旋轉,或透過使用者輸入手動旋轉),相機預覽畫面必須以水平方向反射 (即鏡像),相對於裝置目前的方向。
如果應用程式已明確要求相機螢幕透過
android.hardware.Camera.setDisplayOrientation() [Resources, 50]
方法旋轉,相機預覽畫面必須以水平方向反射,相對於應用程式指定的方向。
否則,預覽畫面必須以裝置的預設水平軸反射。
必須以與
攝影機預覽圖片串流相同的方式,鏡像顯示預覽畫面顯示的圖片。 (如果裝置實作不支援
後視圖,則此規定顯然不適用。)
請勿鏡像最終擷取的靜態圖片或影片串流,這些串流會傳回至
應用程式回呼或儲存至媒體儲存空間
7.5.3。相機 API 行為
裝置實作必須針對相機相關 API 實作以下行為,包括前置鏡頭和後置鏡頭:
1.
如果應用程式從未呼叫
android.hardware.Camera.Parameters.setPreviewFormat(int),則
裝置必須使用 android.hardware.PixelFormat.YCbCr_420_SP 來處理應用程式回呼提供的預覽資料。
2.如果應用程式註冊了 android.hardware.Camera.PreviewCallback
例項,且系統在預覽
格式為 YCbCr_420_SP 時呼叫 onPreviewFrame() 方法,則傳遞至 onPreviewFrame() 的 byte[] 中的資料
必須採用 NV21 編碼格式。也就是說,NV21 必須是預設值。
3.裝置實作必須支援 YV12 格式 (如
android.graphics.ImageFormat.YV12 常數所示),用於預覽
前置和後置鏡頭的相機畫面。(硬體視訊解碼器和相機可以
使用任何原生像素格式,但裝置實作必須支援
轉換為 YV12。)
無論裝置是否包含
硬體自動對焦或其他功能,裝置實作項目都必須實作 Android
4.1 SDK 說明文件 [Resources, 51]) 中提供的完整 Camera API。舉例來說,缺少自動對焦功能的相機
仍須呼叫任何已註冊的 android.hardware.Camera.AutoFocusCallback
例項 (即使這與非自動對焦相機無關)。請注意,
這項做法適用於前置相機。舉例來說,雖然大多數前置
相機不支援自動對焦,但 API 的回傳值仍必須如
所述「偽造」。
如果底層
硬體支援這項功能,裝置實作必須辨識並遵循在 android.hardware.Camera.Parameters 類別中定義為
常數的每個參數名稱。如果裝置硬體不支援某項功能,
API 必須符合說明文件的規定。相反地,裝置實作不得
尊重或辨識傳遞至
android.hardware.Camera.setParameters() 方法的字串常數,除非這些常數已在 android.hardware.Camera.Parameters 上標示為
常數。也就是說,如果硬體允許,裝置
實作項目就必須支援所有標準相機參數,且不得支援自訂相機參數類型。
裝置實作時,如果相機拍攝新相片,且相片的項目已
新增至媒體儲存空間,則必須廣播 Camera.ACTION_NEW_PICTURE 意圖。
裝置實作時,如果相機錄製新影片,且相片的項目已
新增至媒體儲存空間,則必須廣播 Camera.ACTION_NEW_VIDEO 意圖。
7.5.4.相機方向
如果有前置和後置鏡頭,兩者的方向都必須調整,確保相機的長邊
與螢幕的長邊對齊。也就是說,當
裝置以橫向方向握持時,相機就必須以
橫向方向拍攝圖片。無論裝置的自然方向為何,這項設定都適用;也就是說,這項設定適用於以橫向為主要方向的裝置,也適用於以直向為主要方向的裝置。
7.6.記憶體與儲存空間
7.6.1.記憶體和儲存空間下限
裝置實作項目必須至少有 340 MB 的記憶體可供核心
和使用者空間使用。340MB 必須是除了用於
硬體元件 (例如無線電、影片等) 的記憶體之外,不受核心
控制的記憶體。
裝置實作項目必須有至少 350 MB 的非揮發性儲存空間,
可用於應用程式私人資料。也就是說,/data 分區必須至少有 350 MB。
Android API 包含下載管理工具,應用程式可使用這項工具下載
資料檔案 [Resources, 56]。下載管理員的裝置實作
必須能夠下載大小至少 100 MB 的個別檔案,並將其儲存至
預設的「快取」位置。
7.6.2.應用程式共用儲存空間
裝置實作項目必須為應用程式提供共用儲存空間。提供的共用
儲存空間大小必須至少為 1 GB。
裝置實作項目必須預設為掛載共用儲存空間,
「開箱即用」。如果共用儲存空間未掛載至 Linux 路徑 /sdcard,
則裝置必須包含從 /sdcard 到實際掛載點的 Linux 符號連結。
裝置實作必須依照說明,對這個共用儲存空間強制執行
android.permission.WRITE_EXTERNAL_STORAGE 權限。
否則,任何取得該
權限的應用程式都必須能寫入共用儲存空間。
裝置實作可能會提供可讓使用者存取的可移除儲存空間硬體,
例如 Secure Digital 卡。或者,裝置實作項目也可能將
內部 (不可移除) 儲存空間,當作應用程式的共用儲存空間。
無論使用的共用儲存空間形式為何,裝置實作項目都必須
提供某些機制,以便從主機
電腦存取共用儲存空間的內容,例如 USB 大量儲存空間 (UMS) 或媒體傳輸通訊協定 (MTP)。
裝置實作項目可使用 USB 大量儲存空間,但應使用媒體傳輸通訊協定。
如果裝置實作支援媒體傳輸協定:
裝置實作項目應與參考的 Android
MTP 主機、Android 檔案傳輸 [Resources, 57] 相容。
裝置實作項目應回報 0x00 的 USB 裝置類別。
裝置實作項目應回報「MTP」的 USB 介面名稱。
如果裝置實作項目缺少 USB 連接埠,則必須透過其他方式 (例如網路檔案
系統),讓主機電腦
存取共用儲存空間的內容。
以下兩個常見的例子可說明這一點。如果裝置實作項目包含
SD 卡插槽,以滿足共用儲存空間需求,則必須
隨裝置附上 1 GB 以上大小的 FAT 格式 SD 卡,並
預設掛載。或者,如果裝置實作使用內部固定
儲存空間來滿足這項需求,該儲存空間必須為 1 GB 或更大,且
必須掛載至 /sdcard (如果
掛載至其他位置,/sdcard 必須是指向實體位置的符號連結)。
裝置實作包含多個共用儲存空間路徑 (例如同時有
SD 卡插槽和共用內部儲存空間),應修改核心應用程式 (例如媒體掃描器和 ContentProvider),以便透明支援放置在兩個
位置的檔案。
7.7. USB
裝置實作應包含 USB 用戶端連接埠,並應包含
USB 主機連接埠。
如果裝置實作包含 USB 用戶端連接埠:
該連接埠必須可透過標準 USB-A 連接埠連線至 USB 主機
該連接埠應使用裝置端的 micro USB 板型規格。強烈建議
現有和新款執行 Android 4.1 的裝置符合
Android 4.1 中的這些規定,這樣才能升級至未來的
平台版本
,且應將連接埠置於邊緣中央。裝置實作項目
應將埠放在裝置底部 (依照自然
方向),或為所有應用程式 (包括主畫面
) 啟用軟體螢幕旋轉功能,以便在裝置以
埠朝下的方式顯示時,正確繪製螢幕畫面。強烈建議
現有和新款搭載 Android 4.1 的裝置符合 Android 4.1 中的這些需求,以便日後升級至未來的平台版本。
如果裝置實作包含 USB 主機埠:
可使用非標準埠格式,但必須搭配纜線或
纜線將埠轉換為標準 USB-A 的裝置出貨
必須實作 Android 的 USB 主機 API,如 Android 的 SDK 說明所述
[Resources, 52]
必須實作 USB 音訊類別,如 Android 的 SDK 說明所述
[Resources, 66]
應實作 USB 電池充電規格支援
[Resources, 64]
現有和新款搭載 Android 4.1 的裝置強烈建議
遵循 Android 4.1 中的這些需求,以便日後升級至未來的平台版本
如果裝置實作包含 USB 主機埠:
可使用非標準埠格式,但必須搭配纜線或
纜線將埠轉換為標準 USB-A 的裝置出貨
必須實作 Android 的 USB 主機埠 API,如 Android 的 SDK 說明所述
[Resources, 53]
裝置實作必須實作 Android 的偵錯橋接。
如果裝置
實作省略 USB 用戶端埠,則必須透過區域網路 (例如 Ethernet 或 802.11)
8.
效能相容性
裝置實作項目必須符合下表中定義的 Android 4.1
相容裝置關鍵效能指標:
指標
效能門檻
備註
以下應用程式
應在指定時間內啟動。
啟動時間的計算方式是
總共用於完成載入
瀏覽器:少於
應用程式的預設活動,
應用程式
1300 毫秒
包括啟動
啟動時間
聯絡人:少於
Linux 程序,將 Android 載入
700 毫秒
套件至 Dalvik VM,以及 cal
設定:少於
onCreate。
700 毫秒
當有多個應用程式
已啟動時,重新
啟動
已同時
執行的應用程式
後,
應用程式
必須
花費的時間少於原始
啟動時間。
9.安全性模型相容性
裝置實作項目必須實作與 Android
平台安全性模型一致的安全性模型,如 Android 開發人員文件中「API 中的安全性和權限」參考文件 [Resources, 54] 所定義。
裝置
實作項目
必須支援自簽應用程式的安裝作業,且不必
要求任何第三方/主管機關提供額外的權限/憑證。
具體來說,相容裝置
必須支援以下各節所述的安全機制。
9.1.權限
裝置實作必須支援 Android 權限模型,如
Android 開發人員文件 [Resources, 54]所定義。具體來說,實作項目
必須依 SDK 說明文件所述,強制執行每項權限;不得省略、變更或忽略任何
權限。只要新權限 ID 字串不在 android.*
命名空間中,實作項目就可能會新增其他
權限。
9.2.UID 和程序隔離
裝置實作必須支援 Android 應用程式沙箱模型,
其中每個應用程式都會以獨特的 Unix 風格 UID 執行,並在不同的程序中執行。
裝置實作必須支援以相同的 Linux 使用者 ID 執行多個應用程式,前提是應用程式已正確簽署及建構,如
安全性和權限參考資料 [Resources, 54] 所定義。
9.3.檔案系統權限
裝置實作必須支援 Android 檔案存取權限模式,如「安全性和權限」參考資料 [Resources, 54]中所定義。
9.4.替代執行環境
裝置實作項目可能會包含執行應用程式的執行階段環境,
使用其他軟體或技術,而非 Dalvik 虛擬機器或原生
程式碼。不過,這些替代執行環境不得違反 Android 安全性模式或已安裝 Android 應用程式的安全性,如本節所述。
替代執行階段本身必須是 Android 應用程式,並遵循
標準 Android 安全性模型,如第 9 節的其他部分所述。
替代執行階段不得授予存取權,以便存取受保護的資源,這些資源受到未透過 <uses-
permission> 機制在執行階段的 AndroidManifest.xml 檔案中要求的
權限保護。
替代執行階段絕對不允許應用程式使用受 Android 權限保護的功能,因為這些權限僅限於系統應用程式使用。
替代執行階段必須遵循 Android 沙箱模型。具體來說:
替代執行階段應透過 PackageManager 將應用程式安裝到不同的
Android 沙箱 (即 Linux 使用者 ID 等)
替代執行階段可提供單一 Android 沙箱,供使用替代執行階段的所有
應用程式共用
替代執行階段和使用替代執行階段安裝的應用程式絕對不可重複使用裝置上安裝的任何其他應用程式的沙箱,除非透過
標準 Android 機制共用使用者 ID 和簽署憑證
替代執行階段不得以任何方式啟動、授予或授予其他
應用程式任何超級使用者 (root) 或任何其他使用者 ID 的權限。
其他執行階段的 .apk 檔案可納入裝置
實作項目的系統映像,但必須使用與用於簽署裝置實作項目中其他
應用程式的金鑰不同的金鑰進行簽署。
安裝應用程式時,替代執行階段必須針對應用程式使用的
Android 權限,取得使用者的同意。也就是說,如果應用程式需要使用具有對應 Android 權限 (例如相機、GPS 等) 的裝置資源,替代執行階段必須通知使用者,應用程式
將能夠存取該資源。
如果執行階段環境未以這種方式記錄
應用程式功能,則在使用該執行階段安裝任何應用程式時,執行階段環境必須列出執行階段本身持有的所有
權限。
10.軟體相容性測試
裝置實作必須通過本節所述的所有測試。
不過,請注意,沒有任何軟體測試套件是全面性的。因此,
強烈建議裝置實作者盡可能減少對 Android 4.1 參考和偏好實作的
變更次數,這些實作方式可從 Android 開放原始碼專案取得。
這樣一來,您就不會因為引入導致不相容問題的錯誤,而需要重新調整應用程式,或更新裝置。
10.1.
相容性測試套件:裝置實作項目必須使用裝置上的最終
發布軟體,通過 Android 相容性測試套件 (CTS) 測試 [資源,2],才能從 Android 開放原始碼專案取得。此外,裝置實作者應盡可能使用 Android 開放原始碼樹狀結構中的
參考實作,並
務必確保在 CTS 中出現歧義的情況下,以及在任何
參考原始碼部分的重新實作中,都能維持相容性。
CTS 設計用於在實際裝置上執行。就像任何軟體一樣,CTS 本身可能
含有錯誤。CTS 的版本會與此相容性定義
獨立,且可能會為 Android 4.1 發布多個 CTS 修訂版本。裝置
實作項目必須通過裝置
軟體完成時可用的最新 CTS 版本。
10.2. CTS Verifier
裝置實作項目必須在 CTS Verifier 中正確執行所有適用的案例。
CTS 驗證工具是 Compatibility Test Suite 的一部分,
由人工操作員執行,用於測試自動化系統無法測試的功能,例如相機和感應器的正確運作。
CTS 驗證工具可測試多種硬體,包括部分可選的硬體。
裝置實作必須通過所有硬體測試,例如,如果裝置具有加速計,則必須在 CTS Verifier 中正確執行加速計測試案例。
此相容性定義文件中,如果功能標示為可選,則相關測試案例
可省略或略過。
如上所述,每部裝置和每個版本都必須正確執行 CTS 驗證工具。
不過,由於許多版本都非常相似,因此裝置實作人員不必
在僅有細微差異的版本上明確執行 CTS 驗證工具。具體來說,
裝置實作項目與已通過 CTS Verifier 的實作項目不同,僅在所包含的語言代碼、品牌等方面有所差異,因此可以省略 CTS Verifier
測試。
10.3.參考應用程式
裝置導入者必須使用以下開放
原始碼應用程式測試導入相容性:
「Apps for Android」應用程式 [Resources, 55]
Replica Island (可在 Android Market 取得)
上述每個應用程式都必須在導入中正確啟動及運作,
導入才會視為相容。
11.可更新軟體
裝置實作必須包含可取代整個
系統軟體的機制。這個機制不需要執行「即時」升級作業,也就是說,可能需要重新啟動裝置
。
您可以使用任何方法,只要能取代裝置上預先安裝的軟體
。舉例來說,以下任一做法都能滿足
這項要求:
透過重新啟動進行離線更新的無線下載 (OTA)
透過 USB 從主機 PC 進行「連結」更新
透過重新啟動和從可移除儲存空間的檔案進行「離線」更新
使用的更新機制務必支援不清除使用者資料的更新方式。也就是說,
更新機制必須保留應用程式私人資料和應用程式
共用資料。請注意,上游 Android 軟體包含符合此需求的更新機制
。
如果在裝置推出後,但在與 Android
相容性團隊協商後,判定為影響第三方應用程式相容性的合理產品壽命期間,發現裝置導入作業中出現錯誤,則裝置導入者必須透過可依照上述機制套用的軟體更新,修正該錯誤。
12.與我們聯絡
如需說明,您可以透過電子郵件 (compatibility@android.com) 與本文作者聯絡
,並提出您認為本文未涵蓋的任何問題。
附錄 A - 藍牙測試程序
相容性測試套件包含涵蓋 Android
RFCOMM 藍牙 API 基本操作的案例。不過,由於藍牙是裝置之間的通訊協定
,因此無法透過在單一裝置上執行的單元測試進行完整測試。
因此,裝置實作必須通過下文所述的人為操作藍牙
測試程序。
測試程序會根據 Android
開放原始碼專案樹狀結構中的 BluetoothChat 範例應用程式進行。這個程序需要兩部裝置:
候選裝置實作項目,執行要測試的軟體版本;
已知相容的獨立裝置實作項目,以及
從要測試的裝置實作項目所得出的模型,也就是「已知良好」
裝置實作項目
下方的測試程序分別將這些裝置稱為「候選」和「已知良好」裝置。
設定和安裝
1.透過 Android 原始碼樹狀結構的「make samples」建構 BluetoothChat.apk
2。在已知正常運作的裝置上安裝 BluetoothChat.apk
3.在候選裝置上安裝 BluetoothChat.apk
測試應用程式控制藍牙
1.在候選裝置上啟動 BluetoothChat,同時停用藍牙
2。確認候選裝置已開啟藍牙,或透過對話方塊提示使用者
開啟藍牙
測試配對和通訊
1.在兩部裝置上啟動 Bluetooth Chat 應用程式
2.在 BluetoothChat 中,使用
選單
讓已知可用的裝置可供偵測。在候選裝置上,透過 BluetoothChat
內部 (使用「選單」) 掃描藍牙裝置,並與已知良好的裝置配對
4.從每部裝置傳送 10 封以上訊息,並確認另一部裝置
正確收到
5.按下「Home」
6,關閉兩部裝置上的 BluetoothChat 應用程式。使用裝置的「設定」應用程式,將每部裝置解除配對
在反向
方向
1.在兩部裝置上啟動 Bluetooth Chat 應用程式。
2.在 BluetoothChat 中讓候選裝置可供偵測 (使用
選單)。
3.在已知正常運作的裝置上,透過 BluetoothChat
內的選單掃描藍牙裝置,並與候選裝置配對。
4.從每部裝置傳送 10 或以上訊息,並確認另一部裝置
是否正確收到這些訊息。
5.在兩部裝置上關閉藍牙聊天應用程式,方法是連續按下「返回」按鈕
,直到回到啟動器畫面。
測試重新啟動
1.在兩部裝置上重新啟動 Bluetooth Chat 應用程式。
2.從每部裝置傳送 10 或以上訊息,並確認另一部裝置
是否正確收到這些訊息。
注意:上述測試有部分情況會使用「Home」結束測試部分,
而部分則會使用「Back」。這些測試並非多餘,也不是可選項目:其目的是
驗證 Bluetooth API 和堆疊在活動
明確終止 (透過使用者按下「返回」按鈕,該按鈕會呼叫 finish()) 和隱含傳送至背景 (透過使用者按下「Home」鍵) 時,是否都能正常運作。
每個測試序列都必須按照說明進行
。
Android 4.1 相容性定義
這個頁面中的內容和程式碼範例均受《內容授權》中的授權所規範。Java 與 OpenJDK 是 Oracle 和/或其關係企業的商標或註冊商標。
上次更新時間:2025-03-26 (世界標準時間)。
[[["容易理解","easyToUnderstand","thumb-up"],["確實解決了我的問題","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["缺少我需要的資訊","missingTheInformationINeed","thumb-down"],["過於複雜/步驟過多","tooComplicatedTooManySteps","thumb-down"],["過時","outOfDate","thumb-down"],["翻譯問題","translationIssue","thumb-down"],["示例/程式碼問題","samplesCodeIssue","thumb-down"],["其他","otherDown","thumb-down"]],["上次更新時間:2025-03-26 (世界標準時間)。"],[],[]]