นิยามความเข้ากันได้กับ Android 2.2

Copyright © 2010, Google Inc. สงวนลิขสิทธิ์
[email protected]

สารบัญ

1. บทนำ
2. แหล่งข้อมูล
3. ซอฟต์แวร์
3.1. ความเข้ากันได้ของ Managed API
3.2. ความเข้ากันได้แบบ Soft API
3.3. ความเข้ากันได้ของ Native API
3.4. ความเข้ากันได้ของเว็บ
3.5. ความเข้ากันได้ของลักษณะการทํางานของ API
3.6. เนมสเปซของ API
3.7. ความเข้ากันได้ของเครื่องเสมือน
3.8. ความเข้ากันได้ของอินเทอร์เฟซผู้ใช้
4. ความเข้ากันได้ของซอฟต์แวร์อ้างอิง
5. ความเข้ากันได้ของแพ็กเกจแอปพลิเคชัน
6. ความเข้ากันได้ของมัลติมีเดีย
7. ความเข้ากันได้ของเครื่องมือสําหรับนักพัฒนาซอฟต์แวร์
8. ความเข้ากันได้ของฮาร์ดแวร์
8.1. จอแสดงผล
8.2. แป้นพิมพ์
8.3. การนำทางแบบไม่สัมผัส
8.4. การวางแนวหน้าจอ
8.5. การป้อนข้อมูลด้วยหน้าจอสัมผัส
8.6. USB
8.7. ปุ่มนำทาง
8.8. เครือข่ายไร้สาย
8.9. กล้อง
8.10. ตัวตรวจวัดความเร่ง
8.11. Compass
8.12. GPS
8.13. โทรศัพท์
8.14. หน่วยความจำและพื้นที่เก็บข้อมูล
8.15. พื้นที่เก็บข้อมูลที่ใช้ร่วมกันของแอปพลิเคชัน
8.16. บลูทูธ
9. ความเข้ากันได้ด้านประสิทธิภาพ
10. ความเข้ากันได้ของรูปแบบการรักษาความปลอดภัย
11. ชุดเครื่องมือทดสอบความเข้ากันได้
12. ซอฟต์แวร์ที่อัปเดตได้
13. ติดต่อเรา
ภาคผนวก ก - ขั้นตอนการทดสอบบลูทูธ

1. ข้อมูลเบื้องต้น

เอกสารนี้จะระบุข้อกำหนดที่โทรศัพท์มือถือต้องมีคุณสมบัติตรงตามเพื่อให้ใช้งานร่วมกับ Android 2.2 ได้

การใช้คําว่า "ต้อง" "ต้องไม่" "ต้อง" "ต้องไม่" "ควร" "ไม่ควร" "แนะนํา" "อาจ" และ "ไม่บังคับ" เป็นไปตามมาตรฐาน IETF ที่ระบุไว้ใน RFC2119 [แหล่งข้อมูล, 1]

"ผู้ติดตั้งใช้งานอุปกรณ์" หรือ "ผู้ติดตั้งใช้งาน" หมายถึงบุคคลหรือองค์กรที่พัฒนาโซลูชันฮาร์ดแวร์/ซอฟต์แวร์ที่ใช้ Android 2.2 ตามที่ใช้ในเอกสารนี้ "การติดตั้งใช้งานอุปกรณ์" หรือ "การติดตั้งใช้งาน" คือโซลูชันฮาร์ดแวร์/ซอฟต์แวร์ที่พัฒนาขึ้น

การติดตั้งใช้งานอุปกรณ์ต้องมีลักษณะดังนี้จึงจะถือว่าเข้ากันได้กับ Android 2.2

  • ต้องเป็นไปตามข้อกำหนดที่ระบุไว้ในนิยามความเข้ากันได้นี้ รวมถึงเอกสารที่รวมไว้ผ่านการอ้างอิง
  • ต้องผ่านชุดเครื่องมือทดสอบความเข้ากันได้ (CTS) ของ Android เวอร์ชันล่าสุดที่มีให้บริการ ณ เวลาที่ติดตั้งใช้งานซอฟต์แวร์ของอุปกรณ์ (CTS มีให้ใช้งานในโครงการโอเพนซอร์ส Android [แหล่งข้อมูล, 2]) CTS จะทดสอบคอมโพเนนต์หลายรายการที่ระบุไว้ในเอกสารนี้ แต่ไม่ใช่ทั้งหมด

ในกรณีที่คำจำกัดความนี้หรือ CTS ไม่ได้กล่าวถึง ไม่ชัดเจน หรือไม่สมบูรณ์ ผู้ใช้อุปกรณ์มีหน้าที่รับผิดชอบในการตรวจสอบความเข้ากันได้กับการใช้งานที่มีอยู่ ด้วยเหตุนี้ โครงการโอเพนซอร์ส Android [แหล่งข้อมูล 3] จึงถือเป็นทั้งข้อมูลอ้างอิงและการใช้งาน Android ที่แนะนำ เราขอแนะนำให้ผู้ติดตั้งใช้งานอุปกรณ์อิงตามซอร์สโค้ด "ต้นทาง" ที่มีอยู่ในโปรเจ็กต์โอเพนซอร์สของ Android แม้ว่าในทางทฤษฎีแล้ว คุณจะแทนที่คอมโพเนนต์บางอย่างด้วยการติดตั้งใช้งานทางเลือกได้ แต่เราไม่แนะนําอย่างยิ่งให้ทําเช่นนั้น เนื่องจากจะทำให้การผ่านข้อทดสอบ CTS ยากขึ้นอย่างมาก ผู้ติดตั้งใช้งานมีหน้าที่รับผิดชอบในการตรวจสอบว่าลักษณะการทำงานเข้ากันได้กับการใช้งาน Android มาตรฐานอย่างเต็มรูปแบบ ซึ่งรวมถึงและนอกเหนือจากชุดเครื่องมือทดสอบความเข้ากันได้ สุดท้าย โปรดทราบว่าเอกสารนี้ห้ามไม่ให้ใช้ชิ้นส่วนทดแทนและการดัดแปลงบางอย่างอย่างชัดเจน

2. แหล่งข้อมูล

  1. ระดับข้อกําหนด IETF RFC2119: http://www.ietf.org/rfc/rfc2119.txt
  2. ภาพรวมโปรแกรมความเข้ากันได้กับ Android: http://source.android.com/docs/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 2.2: http://source.android.com/docs/compatibility/2.2/versions.html
  8. คลาส android.webkit.WebView: http://developer.android.com/reference/android/webkit/WebView.html
  9. HTML5: http://www.whatwg.org/specs/web-apps/current-work/multipage/
  10. ข้อกำหนดของเครื่องเสมือน Dalvik: มีอยู่ในซอร์สโค้ด Android ที่ dalvik/docs
  11. AppWidget: http://developer.android.com/guide/practices/ui_guidelines/widget_design.html
  12. การแจ้งเตือน: http://developer.android.com/guide/topics/ui/notifiers/notifications.html
  13. แหล่งข้อมูลแอปพลิเคชัน: http://code.google.com/android/reference/available-resources.html
  14. คู่มือสไตล์ไอคอนแถบสถานะ: http://developer.android.com/guide/practices/ui_guideline /icon_design.html#statusbarstructure
  15. Search Manager: http://developer.android.com/reference/android/app/SearchManager.html
  16. ข้อความแจ้ง: http://developer.android.com/reference/android/widget/Toast.html
  17. วอลเปเปอร์ภาพเคลื่อนไหว: https://android-developers.googleblog.com/2010/02/live-wallpapers.html
  18. แอปสําหรับ Android: http://code.google.com/p/apps-for-android
  19. เอกสารประกอบของเครื่องมืออ้างอิง (สำหรับ adb, aapt, ddms): http://developer.android.com/guide/developing/tools/index.html
  20. คําอธิบายไฟล์ APK ของ Android: http://developer.android.com/guide/topics/fundamentals.html
  21. ไฟล์ Manifest: http://developer.android.com/guide/topics/manifest/manifest-intro.html
  22. เครื่องมือทดสอบ Monkey: https://developer.android.com/studio/test/other-testing-tools/monkey
  23. รายการฟีเจอร์ฮาร์ดแวร์ของ Android: http://developer.android.com/reference/android/content/pm/PackageManager.html
  24. การรองรับหน้าจอหลายหน้าจอ: http://developer.android.com/guide/practices/screens_support.html
  25. android.content.res.Configuration: http://developer.android.com/reference/android/content/res/Configuration.html
  26. android.util.DisplayMetrics: http://developer.android.com/reference/android/util/DisplayMetrics.html
  27. android.hardware.Camera: http://developer.android.com/reference/android/hardware/Camera.html
  28. พื้นที่พิกัดของเซ็นเซอร์: http://developer.android.com/reference/android/hardware/SensorEvent.html
  29. ข้อมูลอ้างอิงเกี่ยวกับความปลอดภัยและสิทธิ์ของ Android: http://developer.android.com/guide/topics/security/security.html
  30. Bluetooth API: http://developer.android.com/reference/android/bluetooth/package-summary.html

แหล่งข้อมูลเหล่านี้จำนวนมากมาจาก Android 2.2 SDK โดยตรงหรือโดยอ้อม และจะมีฟังก์ชันการทำงานเหมือนกับข้อมูลในเอกสารประกอบของ SDK นั้น ในกรณีที่นิยามความเข้ากันได้นี้หรือชุดเครื่องมือทดสอบความเข้ากันได้ขัดแย้งกับเอกสารประกอบ SDK ระบบจะถือว่าเอกสารประกอบ SDK ถูกต้อง รายละเอียดทางเทคนิคที่ระบุไว้ในข้อมูลอ้างอิงข้างต้นจะถือว่าเป็นส่วนหนึ่งของคำจำกัดความความเข้ากันได้นี้

3. ซอฟต์แวร์

แพลตฟอร์ม Android มีชุด API ที่มีการจัดการ ชุด API เดิม และชุด API ที่เรียกกันว่า "แบบซอฟต์" เช่น ระบบ Intent และ API ของเว็บแอปพลิเคชัน ส่วนนี้จะอธิบายรายละเอียดเกี่ยวกับ API แบบฮาร์ดและแบบซอฟต์ที่มีความสำคัญต่อความเข้ากันได้ รวมถึงลักษณะทางเทคนิคและอินเทอร์เฟซผู้ใช้ที่เกี่ยวข้องอื่นๆ การติดตั้งใช้งานอุปกรณ์ต้องเป็นไปตามข้อกำหนดทั้งหมดในส่วนนี้

3.1 ความเข้ากันได้ของ Managed API

สภาพแวดล้อมการเรียกใช้ที่มีการจัดการ (Dalvik) เป็นแพลตฟอร์มหลักสําหรับแอปพลิเคชัน Android Application Programming Interface (API) ของ Android คือชุดอินเทอร์เฟซแพลตฟอร์ม Android ที่แสดงต่อแอปพลิเคชันที่ทำงานในสภาพแวดล้อม VM ที่มีการจัดการ การใช้งานอุปกรณ์ต้องระบุการใช้งานที่สมบูรณ์ รวมถึงลักษณะการทำงานที่ระบุไว้ในเอกสารทั้งหมดของ API ที่ระบุไว้ในเอกสารซึ่ง SDK ของ Android 2.2 แสดง [แหล่งข้อมูล 4]

การติดตั้งใช้งานอุปกรณ์ต้องไม่ละเว้น API ที่มีการจัดการ เปลี่ยนแปลงอินเทอร์เฟซหรือลายเซ็น API เบี่ยงเบนจากลักษณะการทำงานที่ระบุไว้ หรือรวมการดำเนินการที่ไม่มีผล เว้นแต่จะได้รับอนุญาตโดยเจาะจงจากคำจำกัดความความเข้ากันได้นี้

3.2 ความเข้ากันได้แบบ Soft API

นอกจาก API ที่มีการจัดการจากส่วนที่ 3.1 แล้ว Android ยังมี API "แบบไม่บังคับ" ที่สำคัญซึ่งทำงานเฉพาะรันไทม์ในรูปแบบของ Intent, สิทธิ์ และลักษณะอื่นๆ ที่คล้ายกันของแอปพลิเคชัน Android ซึ่งไม่สามารถบังคับใช้ขณะคอมไพล์แอปพลิเคชันได้ ส่วนนี้จะอธิบายรายละเอียด API "แบบซอฟต์" และลักษณะการทํางานของระบบที่จําเป็นสําหรับความเข้ากันได้กับ Android 2.2 การติดตั้งใช้งานอุปกรณ์ต้องเป็นไปตามข้อกำหนดทั้งหมดที่แสดงในส่วนนี้

3.2.1. สิทธิ์

ผู้ติดตั้งใช้งานอุปกรณ์ต้องรองรับและบังคับใช้ค่าคงที่ของสิทธิ์ทั้งหมดตามที่ระบุไว้ในหน้าข้อมูลอ้างอิงเกี่ยวกับสิทธิ์ [แหล่งข้อมูล 5] โปรดทราบว่าส่วนที่ 10 แสดงข้อกำหนดเพิ่มเติมที่เกี่ยวข้องกับรูปแบบความปลอดภัยของ Android

3.2.2. พารามิเตอร์การสร้าง

API ของ Android มีค่าคงที่จํานวนหนึ่งในandroid.os.Build คลาส [Resources, 6] ที่มีไว้เพื่ออธิบายอุปกรณ์ปัจจุบัน ตารางด้านล่างมีข้อจำกัดเพิ่มเติมเกี่ยวกับรูปแบบของค่าเหล่านี้ ซึ่งการติดตั้งใช้งานอุปกรณ์ต้องเป็นไปตามข้อจำกัดดังกล่าวเพื่อให้ค่ามีความสอดคล้องกันและสื่อความหมาย

พารามิเตอร์ ความคิดเห็น
android.os.Build.VERSION.RELEASE เวอร์ชันของระบบ Android ที่ใช้งานอยู่ในปัจจุบันในรูปแบบที่มนุษย์อ่านได้ ช่องนี้ต้องมีค่าสตริงอย่างใดอย่างหนึ่งที่ระบุไว้ใน [ทรัพยากร, 7]
android.os.Build.VERSION.SDK เวอร์ชันของระบบ Android ที่ใช้งานอยู่ในปัจจุบันในรูปแบบที่โค้ดแอปพลิเคชันของบุคคลที่สามเข้าถึงได้ สำหรับ Android 2.2 ช่องนี้ต้องมีค่าจำนวนเต็มเป็น 8
android.os.Build.VERSION.INCREMENTAL ค่าที่นักติดตั้งใช้งานอุปกรณ์เลือกเพื่อระบุบิลด์ที่เฉพาะเจาะจงของระบบ Android ที่ใช้งานอยู่ในปัจจุบันในรูปแบบที่มนุษย์อ่านได้ ค่านี้ต้องไม่นําไปใช้ซ้ำกับบิลด์อื่นที่พร้อมให้บริการแก่ผู้ใช้ปลายทาง การใช้งานทั่วไปของช่องนี้คือเพื่อระบุหมายเลขบิลด์หรือตัวระบุการเปลี่ยนแปลงในระบบควบคุมแหล่งที่มาที่ใช้สร้างบิลด์ ไม่มีข้อกำหนดเกี่ยวกับรูปแบบที่เจาะจงของช่องนี้ ยกเว้นว่าต้องไม่มีค่าเป็น Null หรือสตริงว่าง ("")
android.os.Build.BOARD ค่าที่นักติดตั้งใช้งานอุปกรณ์เลือกเพื่อระบุฮาร์ดแวร์ภายในที่เฉพาะเจาะจงซึ่งอุปกรณ์ใช้ในรูปแบบที่มนุษย์อ่านได้ การใช้ช่องนี้ที่เป็นไปได้คือการระบุการแก้ไขที่เฉพาะเจาะจงของแผงวงจรที่จ่ายไฟให้อุปกรณ์ ไม่มีข้อกำหนดเกี่ยวกับรูปแบบที่เฉพาะเจาะจงของฟิลด์นี้ ยกเว้นว่าต้องไม่มีค่าเป็น Null หรือสตริงว่าง ("")
android.os.Build.BRAND ค่าที่ผู้ติดตั้งใช้งานอุปกรณ์เลือกเพื่อระบุชื่อบริษัท องค์กร บุคคลธรรมดา ฯลฯ ที่ผลิตอุปกรณ์ในรูปแบบที่มนุษย์อ่านได้ การใช้ช่องนี้ที่เป็นไปได้คือเพื่อระบุ OEM และ/หรือผู้ให้บริการที่ขายอุปกรณ์ ไม่มีข้อกำหนดเฉพาะเกี่ยวกับรูปแบบของฟิลด์นี้ ยกเว้นว่าต้องไม่มีค่าเป็น Null หรือสตริงว่าง ("")
android.os.Build.DEVICE ค่าที่ผู้ติดตั้งใช้งานอุปกรณ์เลือกเพื่อระบุการกำหนดค่าหรือการแก้ไขที่เฉพาะเจาะจงของบอดี้ (บางครั้งเรียกว่า "การออกแบบอุตสาหกรรม") ของอุปกรณ์ ไม่มีข้อกำหนดเกี่ยวกับรูปแบบที่เจาะจงของฟิลด์นี้ ยกเว้นว่าต้องไม่มีค่า Null หรือสตริงว่าง ("")
android.os.Build.FINGERPRINT สตริงที่ระบุบิลด์นี้โดยไม่ซ้ำกัน ควรเป็นชื่อที่มนุษย์อ่านได้ โดยต้องเป็นไปตามเทมเพลตนี้
$(BRAND)/$(PRODUCT)/$(DEVICE)/$(BOARD):$(VERSION.RELEASE)/$(ID)/$(VERSION.INCREMENTAL):$(TYPE)/$(TAGS)
ตัวอย่างเช่น
acme/mydevice/generic/generic:2.2/ERC77/3359:userdebug/test-keys
ฟิงเกอร์ปรินต์ต้องไม่มีอักขระที่เป็นช่องว่าง หากฟิลด์อื่นๆ ที่รวมอยู่ในเทมเพลตด้านบนมีอักขระที่เป็นช่องว่าง คุณต้องแทนที่อักขระเหล่านั้นในลายนิ้วมือของบิลด์ด้วยอักขระอื่น เช่น อักขระขีดล่าง ("_")
android.os.Build.HOST สตริงที่ระบุโฮสต์ที่ใช้สร้างบิลด์ที่ไม่ซ้ำกันในรูปแบบที่มนุษย์อ่านได้ ช่องนี้ไม่มีข้อกำหนดเกี่ยวกับรูปแบบที่เจาะจง ยกเว้นว่าต้องไม่มีค่าเป็น Null หรือสตริงว่าง ("")
android.os.Build.ID ตัวระบุที่ผู้ติดตั้งใช้งานอุปกรณ์เลือกเพื่ออ้างอิงถึงรุ่นที่เฉพาะเจาะจงในรูปแบบที่มนุษย์อ่านได้ ฟิลด์นี้อาจเหมือนกับ android.os.Build.VERSION.INCREMENTAL แต่ควรเป็นค่าที่มีความหมายเพียงพอสำหรับผู้ใช้ปลายทางในการแยกความแตกต่างระหว่างบิลด์ซอฟต์แวร์ ช่องนี้ไม่มีข้อกำหนดเกี่ยวกับรูปแบบที่เฉพาะเจาะจง ยกเว้นว่าต้องไม่มีค่าเป็น Null หรือสตริงว่าง ("")
android.os.Build.MODEL ค่าที่นักติดตั้งใช้งานอุปกรณ์เลือกซึ่งมีชื่อของอุปกรณ์ตามที่ผู้ใช้ปลายทางทราบ ชื่อนี้ควรเป็นชื่อเดียวกับที่ใช้ในการทําการตลาดและขายอุปกรณ์แก่ผู้ใช้ ไม่มีข้อกำหนดเฉพาะเกี่ยวกับรูปแบบของฟิลด์นี้ ยกเว้นว่าต้องไม่มีค่าเป็น Null หรือสตริงว่าง ("")
android.os.Build.PRODUCT ค่าที่ผู้ติดตั้งใช้งานอุปกรณ์เลือกซึ่งมีชื่อการพัฒนาหรือชื่อรหัสของอุปกรณ์ ต้องอ่านออกได้ แต่ไม่จำเป็นต้องมีไว้เพื่อให้ผู้ใช้ปลายทางดู ไม่มีข้อกำหนดเฉพาะเกี่ยวกับรูปแบบของฟิลด์นี้ ยกเว้นว่าต้องไม่มีค่าเป็น Null หรือสตริงว่าง ("")
android.os.Build.TAGS รายการแท็กที่คั่นด้วยคอมมาซึ่งผู้ติดตั้งใช้งานอุปกรณ์เลือกไว้เพื่อแยกความแตกต่างของบิลด์เพิ่มเติม เช่น "unsigned,debug" ฟิลด์นี้ต้องไม่มีค่า Null หรือสตริงว่าง ("") แต่ใช้แท็กเดียว (เช่น "release") ได้
android.os.Build.TIME ค่าที่แสดงการประทับเวลาที่บิลด์เกิดขึ้น
android.os.Build.TYPE ค่าที่ผู้ติดตั้งใช้งานอุปกรณ์เลือกซึ่งระบุการกำหนดค่ารันไทม์ของบิลด์ ช่องนี้ควรมีค่าอย่างใดอย่างหนึ่งที่สอดคล้องกับการกำหนดค่ารันไทม์ Android ทั่วไป 3 รายการ ได้แก่ "user", "userdebug" หรือ "eng"
android.os.Build.USER ชื่อหรือรหัสผู้ใช้ของผู้ใช้ (หรือผู้ใช้อัตโนมัติ) ที่สร้างบิลด์ ไม่มีข้อกำหนดเกี่ยวกับรูปแบบที่เจาะจงของช่องนี้ ยกเว้นว่าต้องไม่มีค่า Null หรือสตริงว่าง ("")

3.2.3. ความเข้ากันได้ของ Intent

Android ใช้ Intent เพื่อให้เกิดการผสานรวมแบบหลวมระหว่างแอปพลิเคชัน ส่วนนี้อธิบายข้อกําหนดที่เกี่ยวข้องกับรูปแบบ Intent ที่การติดตั้งใช้งานอุปกรณ์ต้องปฏิบัติตาม "ปฏิบัติตาม" หมายความว่าผู้ติดตั้งใช้งานอุปกรณ์ต้องระบุกิจกรรมหรือบริการ Android ที่ระบุตัวกรอง Intent ที่ตรงกันและเชื่อมโยงกับและใช้ลักษณะการทำงานที่ถูกต้องสำหรับรูปแบบ Intent ที่ระบุแต่ละรายการ

3.2.3.1. Intent ของแอปพลิเคชันหลัก

โปรเจ็กต์อัปสตรีมของ Android จะกำหนดแอปพลิเคชันหลักๆ หลายรายการ เช่น โปรแกรมโทรออก ปฏิทิน สมุดรายชื่อติดต่อ เครื่องเล่นเพลง และอื่นๆ ผู้ติดตั้งใช้งานอุปกรณ์อาจแทนที่แอปพลิเคชันเหล่านี้ด้วยเวอร์ชันอื่น

อย่างไรก็ตาม เวอร์ชันทางเลือกดังกล่าวต้องเป็นไปตามรูปแบบ Intent เดียวกันที่โปรเจ็กต์ต้นทางระบุ ตัวอย่างเช่น หากอุปกรณ์มีโปรแกรมเล่นเพลงอื่น อุปกรณ์ดังกล่าวยังคงต้องปฏิบัติตามรูปแบบ Intent ที่ออกโดยแอปพลิเคชันของบุคคลที่สามเพื่อเลือกเพลง

แอปพลิเคชันต่อไปนี้ถือเป็นแอปพลิเคชันหลักของระบบ Android

  • นาฬิกาตั้งโต๊ะ
  • เบราว์เซอร์
  • ปฏิทิน
  • เครื่องคิดเลข
  • กล้อง
  • รายชื่อติดต่อ
  • อีเมล
  • แกลเลอรี
  • GlobalSearch
  • ปืนยิงลูกระเบิด
  • LivePicker (นั่นคือแอปพลิเคชันเครื่องมือเลือกวอลเปเปอร์ภาพเคลื่อนไหว ซึ่งอาจไม่รวมอยู่ด้วยหากอุปกรณ์ไม่รองรับวอลเปเปอร์ภาพเคลื่อนไหวตามส่วนที่ 3.8.5)
  • การรับส่งข้อความ (หรือที่เรียกว่า "MMS")
  • เพลง
  • โทรศัพท์
  • การตั้งค่า
  • โปรแกรมบันทึกเสียง

แอปพลิเคชันระบบหลักของ Android ประกอบด้วยคอมโพเนนต์ต่างๆ ของกิจกรรมหรือบริการที่ถือว่า "สาธารณะ" กล่าวคือ แอตทริบิวต์ "android:exported" อาจไม่มีอยู่ หรืออาจมีค่าเป็น "true"

สําหรับกิจกรรมหรือบริการทุกรายการที่กําหนดไว้ในแอประบบหลักของ Android รายการใดรายการหนึ่งที่ไม่ได้ทําเครื่องหมายว่าไม่ใช่แบบสาธารณะผ่านแอตทริบิวต์ android:exported ที่มีค่าเป็น "เท็จ" การใช้งานอุปกรณ์ต้องประกอบด้วยคอมโพเนนต์ประเภทเดียวกันที่ใช้รูปแบบตัวกรอง Intent เดียวกันกับแอประบบหลักของ Android

กล่าวคือ การติดตั้งใช้งานอุปกรณ์อาจแทนที่แอประบบหลักของ Android แต่หากเป็นเช่นนั้น การติดตั้งใช้งานอุปกรณ์ต้องรองรับรูปแบบ Intent ทั้งหมดที่กําหนดโดยแอประบบหลักของ Android แต่ละแอปที่จะแทนที่

3.2.3.2. การลบล้าง Intent

เนื่องจาก Android เป็นแพลตฟอร์มที่ขยายได้ ผู้ติดตั้งใช้งานอุปกรณ์ต้องอนุญาตให้แอปพลิเคชันของบุคคลที่สามลบล้างรูปแบบ Intent แต่ละรูปแบบที่อ้างอิงในส่วนที่ 3.2.3.1 โปรเจ็กต์โอเพนซอร์สต้นทางของ Android อนุญาตการดำเนินการนี้โดยค่าเริ่มต้น ผู้ติดตั้งใช้งานอุปกรณ์ต้องไม่แนบสิทธิ์พิเศษไว้กับการใช้รูปแบบ Intent เหล่านี้ของแอปพลิเคชันระบบ หรือป้องกันไม่ให้แอปพลิเคชันของบุคคลที่สามเชื่อมโยงและควบคุมรูปแบบเหล่านี้ ข้อห้ามนี้รวมถึงแต่ไม่จำกัดเพียงการปิดใช้อินเทอร์เฟซผู้ใช้ "เครื่องมือเลือก" ซึ่งช่วยให้ผู้ใช้เลือกระหว่างแอปพลิเคชันหลายรายการที่จัดการรูปแบบ Intent เดียวกันทั้งหมด

3.2.3.3. เนมสเปซของ Intent

ผู้ติดตั้งใช้งานอุปกรณ์ต้องไม่รวมคอมโพเนนต์ Android ที่รองรับรูปแบบ Intent ใหม่หรือรูปแบบ Intent แบบออกอากาศโดยใช้สตริงคีย์ ACTION, CATEGORY หรืออื่นๆ ในเนมสเปซ android.* ผู้ติดตั้งใช้งานอุปกรณ์ต้องไม่รวมคอมโพเนนต์ Android ใดๆ ที่เป็นไปตามรูปแบบ Intent ใหม่หรือรูปแบบ Intent แบบออกอากาศโดยใช้สตริงคีย์ ACTION, CATEGORY หรืออื่นๆ ในพื้นที่แพ็กเกจที่เป็นขององค์กรอื่น ผู้ติดตั้งใช้งานอุปกรณ์ต้องไม่เปลี่ยนแปลงหรือขยายรูปแบบ Intent ที่แอปหลักที่ระบุไว้ในส่วนที่ 3.2.3.1 ใช้

ข้อห้ามนี้คล้ายกับข้อห้ามที่ระบุไว้สำหรับคลาสภาษา Java ในส่วน 3.6

3.2.3.4. เจตนาการออกอากาศ

แอปพลิเคชันของบุคคลที่สามอาศัยแพลตฟอร์มนี้เพื่อออกอากาศ Intent บางรายการเพื่อแจ้งให้ทราบถึงการเปลี่ยนแปลงในสภาพแวดล้อมของฮาร์ดแวร์หรือซอฟต์แวร์ อุปกรณ์ที่ใช้ร่วมกับ Android ได้ต้องออกอากาศ Intent การออกอากาศแบบสาธารณะเพื่อตอบสนองต่อเหตุการณ์ของระบบที่เหมาะสม คุณสามารถดูคำอธิบาย Intent แบบออกอากาศได้ในเอกสารประกอบ SDK

3.3 ความเข้ากันได้ของ API เดิม

โค้ดที่มีการจัดการซึ่งทำงานใน Dalvik สามารถเรียกใช้โค้ดแบบเนทีฟที่ระบุไว้ในไฟล์ .apk ของแอปพลิเคชันเป็นไฟล์ .so ของ ELF ที่คอมไพล์มาสำหรับสถาปัตยกรรมฮาร์ดแวร์ของอุปกรณ์ที่เหมาะสม การติดตั้งใช้งานอุปกรณ์ต้องรองรับโค้ดที่ทำงานในสภาพแวดล้อมที่มีการจัดการเพื่อเรียกใช้โค้ดเนทีฟโดยใช้นิพจน์ความหมาย Java Native Interface (JNI) มาตรฐาน API ต่อไปนี้ต้องพร้อมใช้งานสำหรับโค้ดเนทีฟ

  • libc (คลัง C)
  • libm (คลังคณิตศาสตร์)
  • อินเทอร์เฟซ JNI
  • libz (การบีบอัด Zlib)
  • liblog (การบันทึกของ Android)
  • รองรับ C++ เพียงเล็กน้อย
  • การรองรับ OpenGL ตามที่อธิบายไว้ด้านล่าง

การติดตั้งใช้งานอุปกรณ์ต้องรองรับ OpenGL ES 1.0 อุปกรณ์ที่ไม่มีการเร่งฮาร์ดแวร์ต้องใช้ OpenGL ES 1.0 โดยใช้โปรแกรมแสดงผลซอฟต์แวร์ การใช้งานอุปกรณ์ควรใช้ OpenGL ES 1.1 ให้ได้มากที่สุดเท่าที่ฮาร์ดแวร์ของอุปกรณ์รองรับ การใช้งานอุปกรณ์ควรมีการใช้งานสำหรับ OpenGL ES 2.0 หากฮาร์ดแวร์มีประสิทธิภาพที่เหมาะสมใน API เหล่านั้น

ไลบรารีเหล่านี้ต้องเข้ากันได้กับซอร์สโค้ด (กล่าวคือ เข้ากันได้กับส่วนหัว) และเข้ากันได้กับไบนารี (สำหรับสถาปัตยกรรมโปรเซสเซอร์หนึ่งๆ) กับเวอร์ชันที่โปรเจ็กต์โอเพนซอร์สของ Android มีให้ใน Bionic เนื่องจากการติดตั้งใช้งาน Bionic ใช้งานร่วมกับการติดตั้งใช้งานอื่นๆ ไม่ได้อย่างเต็มรูปแบบ เช่น ไลบรารี GNU C ผู้ติดตั้งใช้งานอุปกรณ์จึงควรใช้การติดตั้งใช้งาน Android หากผู้ติดตั้งใช้งานอุปกรณ์ใช้การติดตั้งใช้งานไลบรารีเหล่านี้แบบอื่น ผู้ติดตั้งใช้งานจะต้องตรวจสอบความเข้ากันได้ของส่วนหัว ไฟล์ไบนารี และลักษณะการทำงาน

การติดตั้งใช้งานอุปกรณ์ต้องรายงาน Application Binary Interface (ABI) เดิมที่อุปกรณ์รองรับอย่างถูกต้องผ่านandroid.os.Build.CPU_ABI API ABI ต้องเป็นรายการใดรายการหนึ่งที่มีการบันทึกไว้ใน Android NDK เวอร์ชันล่าสุดในไฟล์ docs/CPU-ARCH-ABIS.txt โปรดทราบว่ารุ่นอื่นๆ ของ Android NDK อาจรองรับ ABI เพิ่มเติม

ความเข้ากันได้ของโค้ดที่มาพร้อมเครื่องเป็นเรื่องยาก ด้วยเหตุนี้ เราจึงขอย้ำอีกครั้งว่าผู้ติดตั้งใช้งานอุปกรณ์ควรใช้การติดตั้งใช้งานจากต้นทางของไลบรารีที่ระบุไว้ข้างต้นเพื่อช่วยให้มั่นใจว่าอุปกรณ์จะใช้งานร่วมกันได้

3.4. ความเข้ากันได้ของเว็บ

นักพัฒนาแอปพลิเคชันและแอปพลิเคชันจำนวนมากอาศัยลักษณะการทํางานของคลาส android.webkit.WebView [Resources, 8] สำหรับอินเทอร์เฟซผู้ใช้ ดังนั้นการติดตั้งใช้งาน WebView จึงต้องเข้ากันได้กับการติดตั้งใช้งาน Android ในทํานองเดียวกัน ประสบการณ์การใช้งานเว็บอย่างเต็มรูปแบบก็เป็นส่วนสําคัญของประสบการณ์ของผู้ใช้ Android การติดตั้งใช้งานอุปกรณ์ต้องมีandroid.webkit.WebViewเวอร์ชันที่สอดคล้องกับซอฟต์แวร์ Android เวอร์ชันที่พัฒนาขึ้น และต้องมีเบราว์เซอร์ที่รองรับ HTML5 เวอร์ชันใหม่ตามที่อธิบายไว้ด้านล่าง

3.4.1. ความเข้ากันได้ของ WebView

การใช้งานโอเพนซอร์สของ Android ใช้เครื่องมือแสดงผล WebKit เพื่อติดตั้งใช้งาน android.webkit.WebView เนื่องจากการพัฒนาชุดทดสอบที่ครอบคลุมสำหรับระบบการแสดงผลเว็บนั้นไม่สามารถทำได้ ผู้ติดตั้งใช้งานอุปกรณ์จึงต้องใช้บิลด์ WebKit เวอร์ชันอัปสตรีมเฉพาะในการใช้งาน WebView ดังนี้

  • android.webkit.WebView การใช้งานของอุปกรณ์ต้องอิงตามบิลด์ WebKit 533.1 จากต้นทางของต้นไม้โอเพนซอร์ส Android สำหรับ Android 2.2 บิลด์นี้มีชุดการแก้ไขฟังก์ชันการทำงานและความปลอดภัยที่เฉพาะเจาะจงสำหรับ WebView ผู้ติดตั้งใช้งานอุปกรณ์อาจรวมการปรับแต่งในการใช้งาน WebKit ไว้ด้วย แต่การปรับแต่งดังกล่าวต้องไม่เปลี่ยนแปลงลักษณะการทํางานของ WebView ซึ่งรวมถึงลักษณะการแสดงผล
  • สตริง User Agent ที่ WebView รายงานต้องเป็นรูปแบบนี้
    Mozilla/5.0 (Linux; U; Android $(VERSION); $(LOCALE); $(MODEL) Build/$(BUILD)) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
    • ค่าของสตริง $(VERSION) ต้องเหมือนกับค่าของ android.os.Build.VERSION.RELEASE
    • ค่าของสตริง $(LOCALE) ควรเป็นไปตามแบบแผนของ ISO สำหรับรหัสประเทศและภาษา และควรอ้างอิงถึงภาษาที่กําหนดค่าไว้ในปัจจุบันของอุปกรณ์
    • ค่าของสตริง $(MODEL) ต้องเหมือนกับค่าของ android.os.Build.MODEL
    • ค่าของสตริง $(BUILD) ต้องเหมือนกับค่าของ android.os.Build.ID

การกําหนดค่า WebView ต้องมีการสนับสนุนฐานข้อมูล HTML5, แคชแอปพลิเคชัน และ API ตําแหน่งทางภูมิศาสตร์ [แหล่งข้อมูล, 9] WebView ต้องมีการรองรับแท็ก HTML5 <video> HTML5 API เช่นเดียวกับ JavaScript API ทั้งหมดต้องปิดใช้โดยค่าเริ่มต้นใน WebView เว้นแต่ว่านักพัฒนาแอปจะเปิดใช้อย่างชัดเจนผ่าน Android API ปกติ

3.4.2. ความเข้ากันได้กับเบราว์เซอร์

การติดตั้งใช้งานอุปกรณ์ต้องมีแอปพลิเคชันเบราว์เซอร์แบบสแตนด์อโลนสำหรับการท่องเว็บของผู้ใช้ทั่วไป เบราว์เซอร์แบบสแตนด์อโลนอาจใช้เทคโนโลยีเบราว์เซอร์อื่นที่ไม่ใช่ WebKit อย่างไรก็ตาม แม้ว่าจะมีการจัดส่งแอปพลิเคชันเบราว์เซอร์อื่น แต่คอมโพเนนต์ android.webkit.WebView ที่ให้กับแอปพลิเคชันของบุคคลที่สามต้องอิงตาม WebKit ตามที่อธิบายไว้ในส่วนที่ 3.4.1

การติดตั้งใช้งานอาจส่งสตริง User Agent ที่กําหนดเองในแอปพลิเคชันเบราว์เซอร์แบบสแตนด์อโลน

แอปพลิเคชันเบราว์เซอร์แบบสแตนด์อโลน (ไม่ว่าจะอิงตามแอปพลิเคชันเบราว์เซอร์ WebKit เวอร์ชันที่อัปเดตอยู่หรือแอปพลิเคชันทดแทนของบุคคลที่สาม) ควรรองรับ HTML5 [แหล่งข้อมูล 9] ให้ได้มากที่สุด การติดตั้งใช้งานอุปกรณ์ต้องรองรับตำแหน่งทางภูมิศาสตร์ HTML5, แคชแอปพลิเคชัน และ API ฐานข้อมูล รวมถึงแท็ก <video> ในแอปพลิเคชันเบราว์เซอร์แบบสแตนด์อโลนเป็นอย่างน้อย

3.5 ความเข้ากันได้ของลักษณะการทํางานของ API

ลักษณะการทํางานของ API แต่ละประเภท (ที่มีการจัดการ ซอฟต์ เนทีฟ และเว็บ) ต้องสอดคล้องกับการใช้งานที่ต้องการของโปรเจ็กต์โอเพนซอร์สต้นทางของ Android [แหล่งข้อมูล 3] ตัวอย่างด้านความเข้ากันได้ที่เฉพาะเจาะจง ได้แก่

  • อุปกรณ์ต้องไม่เปลี่ยนแปลงลักษณะการทํางานหรือความหมายของ Intent มาตรฐาน
  • อุปกรณ์ต้องไม่เปลี่ยนแปลงวงจรหรือความหมายของวงจรของคอมโพเนนต์ระบบบางประเภท (เช่น Service, Activity, ContentProvider ฯลฯ)
  • อุปกรณ์ต้องไม่เปลี่ยนความหมายของสิทธิ์หนึ่งๆ

รายการข้างต้นไม่ได้ครอบคลุมทั้งหมด และผู้ใช้อุปกรณ์มีหน้าที่รับผิดชอบในการตรวจสอบความเข้ากันได้ของลักษณะการทำงาน ด้วยเหตุนี้ ผู้ติดตั้งใช้งานอุปกรณ์จึงควรใช้ซอร์สโค้ดที่มีให้ผ่านโครงการโอเพนซอร์ส Android หากเป็นไปได้ แทนที่จะติดตั้งใช้งานส่วนสำคัญของระบบอีกครั้ง

ชุดเครื่องมือทดสอบความเข้ากันได้ (CTS) จะทดสอบแพลตฟอร์มส่วนใหญ่เพื่อหาความเข้ากันได้ของลักษณะการทำงาน แต่ไม่ได้ทดสอบทั้งหมด ผู้ติดตั้งใช้งานมีหน้าที่รับผิดชอบในการตรวจสอบความเข้ากันได้ของลักษณะการทำงานกับโปรเจ็กต์โอเพนซอร์ส Android

3.6 เนมสเปซของ API

Android เป็นไปตามรูปแบบเนมสเปซของแพ็กเกจและคลาสที่ภาษาโปรแกรม Java กำหนด ผู้ติดตั้งใช้งานอุปกรณ์ต้องไม่ทำการแก้ไขที่ไม่ได้รับอนุญาต (ดูด้านล่าง) กับเนมสเปซของแพ็กเกจต่อไปนี้เพื่อให้มั่นใจว่าแอปพลิเคชันของบุคคลที่สามจะใช้งานร่วมกันได้

  • java.*
  • javax.*
  • sun.*
  • android.*
  • com.android.*

การแก้ไขที่ไม่ได้รับอนุญาต ได้แก่

  • การติดตั้งใช้งานอุปกรณ์ต้องไม่แก้ไข API ที่เผยแพร่ต่อสาธารณะบนแพลตฟอร์ม Android โดยการเปลี่ยนลายเซ็นเมธอดหรือคลาส หรือนําคลาสหรือช่องคลาสออก
  • ผู้ติดตั้งใช้งานอุปกรณ์อาจแก้ไขการใช้งาน API พื้นฐานได้ แต่การแก้ไขดังกล่าวต้องไม่ส่งผลต่อลักษณะการทำงานที่ระบุและลายเซ็นภาษา Java ของ API ที่เปิดเผยต่อสาธารณะ
  • ผู้ติดตั้งใช้งานอุปกรณ์ต้องไม่เพิ่มองค์ประกอบที่เปิดเผยต่อสาธารณะ (เช่น คลาสหรืออินเทอร์เฟซ หรือฟิลด์หรือเมธอดในคลาสหรืออินเทอร์เฟซที่มีอยู่) ลงใน API ข้างต้น

"องค์ประกอบที่เปิดเผยต่อสาธารณะ" คือองค์ประกอบใดก็ตามที่ไม่ได้ตกแต่งด้วยเครื่องหมาย "@hide" ในซอร์สโค้ด Android ต้นทาง กล่าวคือ ผู้ติดตั้งใช้งานอุปกรณ์ต้องไม่แสดง API ใหม่หรือแก้ไข API ที่มีอยู่ในพื้นที่ชื่อที่ระบุไว้ข้างต้น ผู้ติดตั้งใช้งานอุปกรณ์อาจทำการแก้ไขภายในเท่านั้น แต่ต้องไม่โฆษณาหรือเปิดเผยการแก้ไขเหล่านั้นต่อนักพัฒนาแอป

ผู้ติดตั้งใช้งานอุปกรณ์อาจเพิ่ม API ที่กําหนดเองได้ แต่ API ดังกล่าวต้องไม่อยู่ในเนมสเปซที่เป็นของหรืออ้างอิงถึงองค์กรอื่น ตัวอย่างเช่น ผู้ติดตั้งใช้งานอุปกรณ์ต้องไม่เพิ่ม API ลงในเนมสเปซ com.google.* หรือเนมสเปซที่คล้ายกัน มีเพียง Google เท่านั้นที่เพิ่ม API ได้ ในทำนองเดียวกัน Google ต้องไม่เพิ่ม API ลงในเนมสเปซของบริษัทอื่นๆ

หากผู้ติดตั้งใช้งานอุปกรณ์เสนอที่จะปรับปรุงเนมสเปซแพ็กเกจอย่างใดอย่างหนึ่งข้างต้น (เช่น การเพิ่มฟังก์ชันการทำงานใหม่ที่มีประโยชน์ลงใน API ที่มีอยู่ หรือการเพิ่ม API ใหม่) ผู้ติดตั้งใช้งานควรไปที่ source.android.com และเริ่มกระบวนการมีส่วนร่วมในการเปลี่ยนแปลงและโค้ดตามข้อมูลในเว็บไซต์ดังกล่าว

โปรดทราบว่าข้อจำกัดข้างต้นสอดคล้องกับรูปแบบมาตรฐานในการตั้งชื่อ API ในภาษาโปรแกรม Java ส่วนนี้มีไว้เพื่อเสริมรูปแบบเหล่านั้นและทำให้รูปแบบเหล่านั้นมีผลบังคับใช้ผ่านการรวมไว้ในคำจำกัดความความเข้ากันได้นี้

3.7. ความเข้ากันได้ของเครื่องเสมือน

การติดตั้งใช้งานอุปกรณ์ต้องรองรับข้อกำหนดไบต์โค้ด Dalvik Executable (DEX) ทั้งหมดและความหมายของเครื่องเสมือน Dalvik [แหล่งข้อมูล, 10]

การติดตั้งใช้งานอุปกรณ์ที่มีหน้าจอจัดอยู่ในประเภทความหนาแน่นปานกลางหรือต่ำต้องกำหนดค่า Dalvik ให้จัดสรรหน่วยความจำอย่างน้อย 16 MB ให้กับแต่ละแอปพลิเคชัน การติดตั้งใช้งานอุปกรณ์ที่มีหน้าจอจัดอยู่ในประเภทความหนาแน่นสูงต้องกำหนดค่า Dalvik ให้จัดสรรหน่วยความจำอย่างน้อย 24 MB ให้กับแต่ละแอปพลิเคชัน โปรดทราบว่าการติดตั้งใช้งานอุปกรณ์อาจจัดสรรหน่วยความจํามากกว่าตัวเลขเหล่านี้

3.8. ความเข้ากันได้ของอินเทอร์เฟซผู้ใช้

แพลตฟอร์ม Android มี API สําหรับนักพัฒนาแอปบางรายการที่ช่วยให้นักพัฒนาแอปสามารถเชื่อมต่อกับอินเทอร์เฟซผู้ใช้ของระบบได้ การติดตั้งใช้งานอุปกรณ์ต้องรวม API มาตรฐานของ UI เหล่านี้ไว้ในอินเทอร์เฟซผู้ใช้ที่กําหนดเองที่พัฒนาขึ้น ตามที่อธิบายไว้ด้านล่าง

3.8.1. วิดเจ็ต

Android กําหนดประเภทคอมโพเนนต์และ API ที่เกี่ยวข้อง รวมถึงวงจรชีวิตของคอมโพเนนต์ที่อนุญาตให้แอปพลิเคชันแสดง "AppWidget" ต่อผู้ใช้ปลายทาง [แหล่งข้อมูล, 11] เวอร์ชันอ้างอิงแบบโอเพนซอร์สของ Android มีแอปพลิเคชัน Launcher ที่มีองค์ประกอบอินเทอร์เฟซผู้ใช้ซึ่งช่วยให้ผู้ใช้เพิ่ม ดู และนำวิดเจ็ตของแอปออกจากหน้าจอหลักได้

ผู้ติดตั้งใช้งานอุปกรณ์อาจใช้สิ่งอื่นแทน Launcher อ้างอิง (เช่น หน้าจอหลัก) เครื่องมือเปิดใช้ทางเลือกควรรองรับ App Widgets ในตัว และแสดงองค์ประกอบอินเทอร์เฟซผู้ใช้เพื่อเพิ่ม กำหนดค่า ดู และนำ App Widgets ออกภายในเครื่องมือเปิดใช้โดยตรง Launcher ทางเลือกอาจละเว้นองค์ประกอบอินเทอร์เฟซผู้ใช้เหล่านี้ได้ แต่หากละเว้น ผู้ติดตั้งใช้งานอุปกรณ์ต้องจัดหาแอปพลิเคชันแยกต่างหากที่เข้าถึงได้จาก Launcher ซึ่งอนุญาตให้ผู้ใช้เพิ่ม กำหนดค่า ดู และนำ App Widgets ออก

3.8.2. การแจ้งเตือน

Android มี API ที่ช่วยให้นักพัฒนาแอปแจ้งผู้ใช้เกี่ยวกับเหตุการณ์สำคัญได้ [แหล่งข้อมูล, 12] ผู้ติดตั้งใช้งานอุปกรณ์ต้องรองรับการแจ้งเตือนแต่ละประเภทที่ระบุไว้ โดยเฉพาะเสียง การสั่น ไฟ และแถบสถานะ

นอกจากนี้ การติดตั้งใช้งานต้องแสดงผลทรัพยากรทั้งหมด (ไอคอน ไฟล์เสียง ฯลฯ) ที่ระบุไว้ใน API [แหล่งข้อมูล 13] หรือในคู่มือสไตล์ไอคอนแถบสถานะ [แหล่งข้อมูล 14] อย่างถูกต้อง ผู้ติดตั้งใช้งานอุปกรณ์อาจมอบประสบการณ์การใช้งานการแจ้งเตือนทางเลือกแก่ผู้ใช้นอกเหนือจากที่ได้จากการใช้งาน Android Open Source อ้างอิง แต่ระบบการแจ้งเตือนทางเลือกดังกล่าวต้องรองรับแหล่งข้อมูลการแจ้งเตือนที่มีอยู่ตามที่ระบุไว้ข้างต้น

Android มี API [แหล่งข้อมูล, 15] ที่ช่วยนักพัฒนาแอปในการรวมการค้นหาไว้ในแอปพลิเคชัน และแสดงข้อมูลของแอปพลิเคชันในการค้นหาระบบทั่วโลก โดยทั่วไปแล้ว ฟังก์ชันการทำงานนี้ประกอบด้วยอินเทอร์เฟซผู้ใช้แบบรวมทั่วทั้งระบบที่ช่วยให้ผู้ใช้ป้อนข้อความค้นหา แสดงคำแนะนำขณะที่ผู้ใช้พิมพ์ และแสดงผลลัพธ์ Android API ช่วยให้นักพัฒนาแอปนําอินเทอร์เฟซนี้ไปใช้ซ้ำเพื่อให้บริการค้นหาภายในแอปของตนเองได้ และช่วยให้นักพัฒนาแอปแสดงผลการค้นหาในอินเทอร์เฟซการค้นหาทั่วโลกได้

การติดตั้งใช้งานอุปกรณ์ต้องมีอินเทอร์เฟซผู้ใช้การค้นหาที่แชร์ร่วมกันทั่วทั้งระบบแบบเดียวที่แสดงคำแนะนำแบบเรียลไทม์เพื่อตอบสนองต่ออินพุตของผู้ใช้ การติดตั้งใช้งานอุปกรณ์ต้องใช้ API ที่อนุญาตให้นักพัฒนาแอปนําอินเทอร์เฟซผู้ใช้นี้ไปใช้ซ้ำเพื่อให้บริการค้นหาภายในแอปพลิเคชันของตนเอง การติดตั้งใช้งานในอุปกรณ์ต้องใช้ API ที่อนุญาตให้แอปพลิเคชันของบุคคลที่สามเพิ่มคำแนะนำลงในช่องค้นหาเมื่อทำงานในโหมดการค้นหาทั่วโลก หากไม่ได้ติดตั้งแอปพลิเคชันของบุคคลที่สามที่ใช้ฟังก์ชันการทำงานนี้ ลักษณะการทำงานเริ่มต้นควรแสดงผลการค้นหาและคำแนะนำของเครื่องมือค้นหาบนเว็บ

การติดตั้งใช้งานอุปกรณ์อาจมาพร้อมกับอินเทอร์เฟซผู้ใช้การค้นหาอื่น แต่ควรมีปุ่มการค้นหาเฉพาะแบบฮาร์ดหรือซอฟต์ที่ใช้งานได้ทุกเมื่อภายในแอปใดก็ได้เพื่อเรียกใช้เฟรมเวิร์กการค้นหา โดยให้ระบุลักษณะการทำงานไว้ในเอกสารประกอบ API

3.8.4. ข้อความโทสต์

แอปพลิเคชันสามารถใช้ API "Toast" (ตามที่ระบุไว้ใน [แหล่งข้อมูล, 16]) เพื่อแสดงสตริงแบบไม่โมดัลสั้นๆ ต่อผู้ใช้ปลายทาง ซึ่งจะหายไปหลังจากผ่านไประยะเวลาสั้นๆ การติดตั้งใช้งานอุปกรณ์ต้องแสดงข้อความแจ้งเตือนจากแอปพลิเคชันต่อผู้ใช้ปลายทางในลักษณะที่มองเห็นได้ชัดเจน

3.8.5. วอลเปเปอร์เคลื่อนไหว

Android กําหนดประเภทคอมโพเนนต์และ API รวมถึงวงจรที่เกี่ยวข้องซึ่งอนุญาตให้แอปพลิเคชันแสดง "วอลเปเปอร์สด" อย่างน้อย 1 รายการต่อผู้ใช้ปลายทาง [แหล่งข้อมูล, 17] วอลเปเปอร์เคลื่อนไหวคือภาพเคลื่อนไหว รูปแบบ หรือรูปภาพที่คล้ายกันซึ่งมีการป้อนข้อมูลแบบจำกัดซึ่งแสดงเป็นวอลเปเปอร์อยู่หลังแอปพลิเคชันอื่นๆ

ระบบจะถือว่าฮาร์ดแวร์สามารถใช้งานวอลเปเปอร์แบบเคลื่อนไหวได้อย่างเสถียรหากสามารถใช้งานวอลเปเปอร์แบบเคลื่อนไหวทั้งหมดได้โดยไม่มีข้อจำกัดด้านฟังก์ชันการทำงาน โดยมีอัตราเฟรมที่เหมาะสมและไม่ส่งผลเสียต่อแอปพลิเคชันอื่นๆ หากข้อจำกัดของฮาร์ดแวร์ทําให้วอลเปเปอร์และ/หรือแอปพลิเคชันพัง ทำงานผิดปกติ ใช้พลังงาน CPU หรือแบตเตอรี่มากเกินไป หรือทํางานด้วยอัตราเฟรมที่ต่ำจนยอมรับไม่ได้ ระบบจะถือว่าฮาร์ดแวร์ไม่สามารถแสดงวอลเปเปอร์แบบสดได้ ตัวอย่างเช่น ภาพพื้นหลังแบบเคลื่อนไหวบางรายการอาจใช้บริบท Open GL 1.0 หรือ 2.0 เพื่อแสดงผลเนื้อหา ภาพพื้นหลังแบบเคลื่อนไหวจะไม่ทำงานอย่างเสถียรในฮาร์ดแวร์ที่ไม่รองรับบริบท OpenGL หลายรายการ เนื่องจากการใช้บริบท OpenGL ของภาพพื้นหลังแบบเคลื่อนไหวอาจขัดแย้งกับแอปพลิเคชันอื่นๆ ที่ใช้บริบท OpenGL ด้วย

การติดตั้งใช้งานอุปกรณ์ที่เรียกใช้วอลเปเปอร์ภาพเคลื่อนไหวได้อย่างเสถียรตามที่อธิบายไว้ข้างต้นควรใช้วอลเปเปอร์ภาพเคลื่อนไหว การติดตั้งใช้งานอุปกรณ์ที่พิจารณาแล้วว่าไม่สามารถใช้งานวอลเปเปอร์เคลื่อนไหวได้อย่างเสถียรตามที่อธิบายไว้ข้างต้นต้องไม่ใช้งานวอลเปเปอร์เคลื่อนไหว

4. ความเข้ากันได้ของซอฟต์แวร์อ้างอิง

ผู้ติดตั้งใช้งานอุปกรณ์ต้องทดสอบความเข้ากันได้ของการติดตั้งใช้งานโดยใช้แอปพลิเคชันโอเพนซอร์สต่อไปนี้

  • เครื่องคิดเลข (รวมอยู่ใน SDK)
  • ยานลงจอดบนดวงจันทร์ (รวมอยู่ใน SDK)
  • แอปพลิเคชัน "แอปสําหรับ Android" [แหล่งข้อมูล, 18]
  • Replica Island (มีให้บริการใน Android Market จำเป็นสำหรับการติดตั้งใช้งานอุปกรณ์ที่รองรับ OpenGL ES 2.0 เท่านั้น)

แอปแต่ละรายการข้างต้นต้องเปิดใช้งานและทํางานอย่างถูกต้องในการใช้งาน เพื่อให้การติดตั้งใช้งานถือว่าเข้ากันได้

นอกจากนี้ การติดตั้งใช้งานอุปกรณ์ต้องทดสอบรายการเมนูแต่ละรายการ (รวมถึงเมนูย่อยทั้งหมด) ของแอปพลิเคชันทดสอบการทำงานเบื้องต้นแต่ละรายการต่อไปนี้

  • ApiDemos (รวมอยู่ใน SDK)
  • ManualSmokeTests (รวมอยู่ใน CTS)

เฟรมเวิร์กทดสอบแต่ละรายการในแอปพลิเคชันข้างต้นต้องทํางานอย่างถูกต้องในการใช้งานบนอุปกรณ์

5. ความเข้ากันได้ของแพ็กเกจแอปพลิเคชัน

การติดตั้งใช้งานอุปกรณ์ต้องติดตั้งและเรียกใช้ไฟล์ ".apk" ของ Android ตามที่เครื่องมือ "aapt" สร้างขึ้น ซึ่งรวมอยู่ใน Android SDK อย่างเป็นทางการ [แหล่งข้อมูล, 19]

การติดตั้งใช้งานอุปกรณ์ต้องไม่ขยายรูปแบบ .apk [ทรัพยากร, 20], Android Manifest [ทรัพยากร, 21] หรือ Dalvik Bytecode [ทรัพยากร, 10] ในลักษณะที่ทําให้ไฟล์เหล่านั้นติดตั้งและทํางานอย่างถูกต้องในอุปกรณ์อื่นๆ ที่เข้ากันได้ ผู้ติดตั้งใช้งานอุปกรณ์ควรใช้การติดตั้งใช้งาน Dalvik บนระบบนิเวศอ้างอิง และระบบจัดการแพ็กเกจของการติดตั้งใช้งานอ้างอิง

6. ความเข้ากันได้ของมัลติมีเดีย

การติดตั้งใช้งานอุปกรณ์ต้องใช้ Multimedia API ทั้งหมดอย่างเต็มรูปแบบ การติดตั้งใช้งานอุปกรณ์ต้องรองรับตัวแปลงรหัสมัลติมีเดียทั้งหมดที่อธิบายไว้ด้านล่าง และควรเป็นไปตามหลักเกณฑ์การประมวลผลเสียงที่อธิบายไว้ด้านล่าง

6.1 ตัวแปลงรหัสสื่อ

การติดตั้งใช้งานอุปกรณ์ต้องรองรับตัวแปลงรหัสมัลติมีเดียต่อไปนี้ โปรแกรมเปลี่ยนรหัสทั้งหมดเหล่านี้มีให้ใช้งานเป็นการใช้งานซอฟต์แวร์ในการใช้งาน Android ที่ต้องการจากโครงการโอเพนซอร์ส Android

โปรดทราบว่าทั้ง Google และ Open Handset Alliance ไม่ได้รับรองว่าตัวแปลงรหัสเหล่านี้ไม่อยู่ภายใต้สิทธิบัตรของบุคคลที่สาม ผู้ที่ตั้งใจจะใช้ซอร์สโค้ดนี้ในผลิตภัณฑ์ฮาร์ดแวร์หรือซอฟต์แวร์ควรทราบว่าการใช้งานโค้ดนี้ ซึ่งรวมถึงในซอฟต์แวร์โอเพนซอร์สหรือแชร์แวร์ อาจต้องใช้ใบอนุญาตสิทธิบัตรจากผู้ถือสิทธิบัตรที่เกี่ยวข้อง

เสียง
ชื่อ โปรแกรมเปลี่ยนไฟล์ โปรแกรมถอดรหัส รายละเอียด รูปแบบไฟล์/คอนเทนเนอร์
AAC LC/LTP   X เนื้อหาโมโน/สเตอริโอในอัตราบิตมาตรฐานสูงสุด 160 Kbps และอัตราการสุ่มตัวอย่างระหว่าง 8 ถึง 48 kHz 3GPP (.3gp) และ MPEG-4 (.mp4, .m4a) ไม่รองรับ AAC ไฟล์ดิบ (.aac)
HE-AACv1 (AAC+)   X
HE-AACv2 (AAC+ ที่ปรับปรุงแล้ว)   X
AMR-NB X X 4.75 ถึง 12.2 kbps ที่อัตราตัวอย่าง 8kHz 3GPP (.3gp)
AMR-WB   X 9 อัตราตั้งแต่ 6.60 Kbps ถึง 23.85 Kbps ที่อัตราตัวอย่าง 16kHz 3GPP (.3gp)
MP3   X โมโน/สเตอริโอ 8-320 Kbps แบบคงที่ (CBR) หรืออัตราบิตแบบผันแปร (VBR) MP3 (.mp3)
MIDI   X MIDI ประเภท 0 และ 1 DLS เวอร์ชัน 1 และ 2 XMF และ Mobile XMF รองรับรูปแบบริงโทน RTTTL/RTX, OTA และ iMelody ประเภท 0 และ 1 (.mid, .xmf, .mxmf) รวมถึง RTTTL/RTX (.rtttl, .rtx), OTA (.ota) และ iMelody (.imy)
Ogg Vorbis   X   Ogg (.ogg)
PCM   X PCM แบบเชิงเส้น 8 และ 16 บิต (อัตราสูงสุดตามขีดจำกัดของฮาร์ดแวร์) WAVE (.wav)
รูปภาพ
JPEG X X base+progressive  
GIF   X    
PNG X X    
BMP   X    
วิดีโอ
H.263 X X   ไฟล์ 3GPP (.3gp)
H.264   X   ไฟล์ 3GPP (.3gp) และ MPEG-4 (.mp4)
โปรไฟล์ MPEG4 แบบง่าย   X   ไฟล์ 3GPP (.3gp)

โปรดทราบว่าตารางด้านบนไม่ได้แสดงข้อกำหนดอัตราบิตที่เฉพาะเจาะจงสำหรับตัวแปลงรหัสวิดีโอส่วนใหญ่ เหตุผลคือในทางปฏิบัติ ฮาร์ดแวร์ของอุปกรณ์ในปัจจุบันอาจไม่รองรับอัตราบิตที่ตรงกับอัตราบิตที่กำหนดโดยมาตรฐานที่เกี่ยวข้อง แต่การใช้งานอุปกรณ์ควรรองรับอัตราบิตสูงสุดที่ใช้งานได้จริงบนฮาร์ดแวร์นั้นๆ สูงสุดตามขีดจำกัดที่ข้อกำหนดระบุไว้

6.2 การบันทึกเสียง

เมื่อแอปพลิเคชันใช้ android.media.AudioRecord API เพื่อเริ่มบันทึกสตรีมเสียง การติดตั้งใช้งานอุปกรณ์ควรสุ่มตัวอย่างและบันทึกเสียงด้วยลักษณะการทำงานแต่ละอย่างต่อไปนี้

  • ควรปิดใช้การประมวลผลการลดเสียงรบกวน (หากมี)
  • ควรปิดใช้การควบคุมระดับสัญญาณอัตโนมัติ (หากมี)
  • อุปกรณ์ควรแสดงลักษณะความกว้างของคลื่นเทียบกับความถี่ที่ราบเรียบโดยประมาณ กล่าวคือ ±3 dB จาก 100 Hz ถึง 4000 Hz
  • ควรตั้งค่าความไวอินพุตเสียงเพื่อให้แหล่งที่มาของระดับกำลังเสียง (SPL) 90 dB ที่ 1000 Hz ให้ค่า RMS 5000 สำหรับตัวอย่าง 16 บิต
  • ระดับแอมพลิจูด PCM ควรติดตามการเปลี่ยนแปลง SPL ของอินพุตแบบเชิงเส้นในช่วงอย่างน้อย 30 dB จาก -18 dB ถึง +12 dB เทียบกับ SPL 90 dB ที่ไมโครโฟน
  • ความเพี้ยนตามฮาร์โมนิกทั้งหมดควรน้อยกว่า 1% จาก 100 Hz ถึง 4000 Hz ที่ระดับอินพุต 90 dB SPL

หมายเหตุ: แม้ว่าข้อกำหนดที่ระบุไว้ข้างต้นจะระบุว่า "ควร" สำหรับ Android 2.2 แต่เราวางแผนที่จะเปลี่ยนคำจำกัดความความเข้ากันได้สำหรับเวอร์ชันในอนาคตเป็น "ต้อง" กล่าวคือ ข้อกำหนดเหล่านี้เป็นข้อกำหนดที่ไม่บังคับใน Android 2.2 แต่จะเป็นข้อกำหนดที่จำเป็นในเวอร์ชันในอนาคต เราขอแนะนำให้อุปกรณ์ที่มีอยู่และอุปกรณ์ใหม่ที่ใช้ Android 2.2 ปฏิบัติตามข้อกำหนดเหล่านี้ใน Android 2.2 ไม่เช่นนั้นอุปกรณ์จะใช้งานร่วมกับ Android ไม่ได้เมื่ออัปเกรดเป็นเวอร์ชันในอนาคต

6.3 เวลาในการตอบสนองของเสียง

โดยสรุปแล้ว เวลาในการตอบสนองของเสียงหมายถึงช่วงเวลาระหว่างที่แอปพลิเคชันขอการดำเนินการเล่นหรือบันทึกเสียง และเวลาที่การติดตั้งใช้งานอุปกรณ์เริ่มดำเนินการจริง แอปพลิเคชันหลายประเภทอาศัยเวลาในการตอบสนองที่ต่ำเพื่อให้ได้เอฟเฟกต์แบบเรียลไทม์ เช่น เอฟเฟกต์เสียงหรือการสื่อสารผ่าน VOIP การติดตั้งใช้งานอุปกรณ์ควรเป็นไปตามข้อกำหนดด้านเวลาในการตอบสนองของเสียงทั้งหมดที่ระบุไว้ในส่วนนี้

ความหมายของคำต่างๆ ในส่วนนี้

  • "เวลาในการตอบสนองของเอาต์พุตแบบเย็น" หมายถึงช่วงเวลาระหว่างที่แอปพลิเคชันขอเล่นเสียงกับเวลาที่เสียงเริ่มเล่น เมื่อระบบเสียงไม่ได้ใช้งานและปิดอยู่ก่อนคำขอ
  • "เวลาในการตอบสนองของเอาต์พุตที่อุ่น" หมายถึงช่วงเวลาระหว่างที่แอปพลิเคชันขอเล่นเสียงกับเวลาที่เสียงเริ่มเล่น เมื่อระบบเสียงเพิ่งมีการใช้งานไปเมื่อเร็วๆ นี้แต่ไม่ได้ใช้งานอยู่ในขณะนี้ (นั่นคือไม่มีเสียง)
  • "เวลาในการตอบสนองของเอาต์พุตแบบต่อเนื่อง" หมายถึงช่วงเวลาระหว่างที่แอปพลิเคชันส่งคำสั่งให้เล่นตัวอย่างเพลงกับเวลาที่ลำโพงเล่นเสียงที่เกี่ยวข้อง ขณะที่อุปกรณ์กำลังเล่นเสียงอยู่
  • "เวลาในการตอบสนองของอินพุตแบบไม่อุ่นเครื่อง" หมายถึงช่วงเวลาระหว่างที่แอปพลิเคชันขอบันทึกเสียงกับเวลาที่ส่งตัวอย่างแรกไปยังแอปพลิเคชันผ่านคอลแบ็ก เมื่อระบบเสียงและไมโครโฟนไม่ได้ใช้งานและปิดอยู่ก่อนการขอ
  • "เวลาในการตอบสนองของอินพุตแบบต่อเนื่อง" หมายถึงเวลาที่เสียงรอบข้างเกิดขึ้นและเมื่อมีการส่งตัวอย่างที่สอดคล้องกับเสียงนั้นไปยังแอปพลิเคชันการบันทึกผ่านคอลแบ็กขณะที่อุปกรณ์อยู่ในโหมดบันทึก

เมื่อใช้คําจํากัดความข้างต้น การติดตั้งใช้งานอุปกรณ์ควรแสดงพร็อพเพอร์ตี้ต่อไปนี้

  • เวลาในการตอบสนองของเอาต์พุตแบบ Cold ไม่เกิน 100 มิลลิวินาที
  • เวลาในการตอบสนองของเอาต์พุตที่อุ่นเครื่องแล้วไม่เกิน 10 มิลลิวินาที
  • เวลาในการตอบสนองของเอาต์พุตแบบต่อเนื่องไม่เกิน 45 มิลลิวินาที
  • เวลาในการตอบสนองของอินพุตแบบ Cold Start ไม่เกิน 100 มิลลิวินาที
  • เวลาในการตอบสนองของอินพุตต่อเนื่องไม่เกิน 50 มิลลิวินาที

หมายเหตุ: แม้ว่าข้อกำหนดที่ระบุไว้ข้างต้นจะระบุว่า "ควร" สำหรับ Android 2.2 แต่เราวางแผนที่จะเปลี่ยนคำจำกัดความความเข้ากันได้สำหรับเวอร์ชันในอนาคตเป็น "ต้อง" กล่าวคือ ข้อกำหนดเหล่านี้เป็นข้อกำหนดที่ไม่บังคับใน Android 2.2 แต่จะเป็นข้อกำหนดที่จำเป็นในเวอร์ชันในอนาคต เราขอแนะนำให้อุปกรณ์ที่มีอยู่และอุปกรณ์ใหม่ที่ใช้ Android 2.2 ปฏิบัติตามข้อกำหนดเหล่านี้ใน Android 2.2 ไม่เช่นนั้นอุปกรณ์จะใช้งานร่วมกับ Android ไม่ได้เมื่ออัปเกรดเป็นเวอร์ชันในอนาคต

7. ความเข้ากันได้ของเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์

การติดตั้งใช้งานอุปกรณ์ต้องรองรับเครื่องมือสําหรับนักพัฒนาแอป Android ที่มีให้ใน Android SDK กล่าวโดยละเอียดคือ อุปกรณ์ที่ใช้ร่วมกับ Android ได้ต้องเข้ากันได้กับสิ่งต่อไปนี้

  • Android Debug Bridge (หรือที่เรียกว่า adb) [แหล่งข้อมูล, 19]
    การติดตั้งใช้งานอุปกรณ์ต้องรองรับฟังก์ชัน adb ทั้งหมดตามที่ระบุไว้ใน Android SDK ไดแอม่อน adb ฝั่งอุปกรณ์ควรไม่มีการใช้งานโดยค่าเริ่มต้น แต่ต้องมีกลไกที่ผู้ใช้เข้าถึงได้เพื่อเปิด Android Debug Bridge
  • Dalvik Debug Monitor Service (หรือที่เรียกว่า ddms) [แหล่งข้อมูล, 19]
    การติดตั้งใช้งานอุปกรณ์ต้องรองรับฟีเจอร์ ddms ทั้งหมดตามที่ระบุไว้ในเอกสารประกอบของ Android SDK เนื่องจาก ddms ใช้ adb การรองรับ ddms ควรปิดอยู่โดยค่าเริ่มต้น แต่ต้องรองรับเมื่อใดก็ตามที่ผู้ใช้เปิดใช้งาน Android Debug Bridge ดังที่อธิบายไว้ข้างต้น
  • Monkey [แหล่งข้อมูล, 22]
    การติดตั้งใช้งานอุปกรณ์ต้องมีเฟรมเวิร์ก Monkey และทำให้แอปพลิเคชันใช้งานเฟรมเวิร์กนั้นได้

8. ความเข้ากันได้ของฮาร์ดแวร์

Android มีไว้เพื่อสนับสนุนผู้ติดตั้งใช้งานอุปกรณ์ในการสร้างรูปแบบและการกำหนดค่าที่ล้ำสมัย ในขณะเดียวกัน นักพัฒนาแอป Android ก็คาดหวังฮาร์ดแวร์ เซ็นเซอร์ และ API บางรายการในอุปกรณ์ Android ทุกเครื่อง ส่วนนี้จะแสดงรายการฟีเจอร์ฮาร์ดแวร์ที่อุปกรณ์ Android 2.2 ที่เข้ากันได้ทั้งหมดต้องรองรับ

หากอุปกรณ์มีส่วนประกอบฮาร์ดแวร์บางอย่างที่มี API ที่เกี่ยวข้องสำหรับนักพัฒนาแอปบุคคลที่สาม การใช้งานอุปกรณ์จะต้องใช้ API ดังกล่าวตามที่ระบุไว้ในเอกสารประกอบ Android SDK หาก API ใน SDK โต้ตอบกับคอมโพเนนต์ฮาร์ดแวร์ที่ระบุว่าไม่บังคับ และการใช้งานอุปกรณ์ไม่มีคอมโพเนนต์นั้น ให้ทำดังนี้

  • ต้องมีคำจำกัดความของคลาสสำหรับ API ของคอมโพเนนต์
  • ลักษณะการทํางานของ API ต้องติดตั้งใช้งานแบบ No-Ops ในลักษณะที่เหมาะสม
  • เมธอด API ต้องแสดงผลค่า Null ตามที่เอกสารประกอบของ SDK อนุญาต
  • เมธอด API ต้องแสดงผลการใช้งานคลาสแบบไม่ดำเนินการในกรณีที่เอกสารประกอบของ SDK ไม่อนุญาตให้ใช้ค่า Null

ตัวอย่างทั่วไปของสถานการณ์ที่มีการใช้ข้อกำหนดเหล่านี้คือ API โทรศัพท์: แม้แต่ในอุปกรณ์ที่ไม่ใช่โทรศัพท์ ก็ต้องติดตั้งใช้งาน API เหล่านี้แบบไม่ดำเนินการใดๆ

การติดตั้งใช้งานอุปกรณ์ต้องรายงานข้อมูลการกำหนดค่าฮาร์ดแวร์ที่ถูกต้องผ่านเมธอด getSystemAvailableFeatures() และ hasSystemFeature(String) ในคลาส android.content.pm.PackageManager [แหล่งข้อมูล, 23]

8.1. จอแสดงผล

Android 2.2 มีเครื่องมือที่ดำเนินการปรับขนาดและการเปลี่ยนรูปแบบอัตโนมัติในบางกรณี เพื่อให้แอปพลิเคชันของบุคคลที่สามทำงานได้ดีพอสมควรในการกำหนดค่าฮาร์ดแวร์ต่างๆ [แหล่งข้อมูล, 24] อุปกรณ์ต้องใช้ลักษณะการทำงานเหล่านี้อย่างถูกต้องตามที่อธิบายไว้ในส่วนนี้

สําหรับ Android 2.2 การกําหนดค่าการแสดงผลที่พบบ่อยที่สุดมีดังนี้

ประเภทหน้าจอ ความกว้าง (พิกเซล) ความสูง (พิกเซล) ช่วงความยาวทแยงมุม (นิ้ว) กลุ่มขนาดหน้าจอ กลุ่มความหนาแน่นของหน้าจอ
QVGA 240 320 2.6 - 3.0 เล็ก ต่ำ
WQVGA 240 400 3.2 - 3.5 ปกติ ต่ำ
FWQVGA 240 432 3.5 - 3.8 ปกติ ต่ำ
HVGA 320 480 3.0 - 3.5 ปกติ กลาง
WVGA 480 800 3.3 - 4.0 ปกติ สูง
FWVGA 480 854 3.5 - 4.0 ปกติ สูง
WVGA 480 800 4.8 - 5.5 ใหญ่ กลาง
FWVGA 480 854 5.0 - 5.8 ใหญ่ กลาง

การติดตั้งใช้งานอุปกรณ์ที่สอดคล้องกับการกำหนดค่ามาตรฐานข้อใดข้อหนึ่งข้างต้นต้องได้รับการกำหนดค่าให้รายงานขนาดหน้าจอที่ระบุไปยังแอปพลิเคชันผ่านคลาส android.content.res.Configuration [Resources, 24]

แพ็กเกจ .apk บางรายการมีไฟล์ Manifest ที่ไม่ได้ระบุว่ารองรับช่วงความหนาแน่นที่เฉพาะเจาะจง เมื่อเรียกใช้แอปพลิเคชันดังกล่าว ข้อจำกัดต่อไปนี้จะมีผล

  • การติดตั้งใช้งานอุปกรณ์ต้องตีความทรัพยากรใน .apk ที่ไม่มีตัวระบุความหนาแน่นเป็นค่าเริ่มต้นเป็น "medium" (เรียกว่า "mdpi" ในเอกสารประกอบ SDK)
  • เมื่อใช้งานบนหน้าจอที่มีความหนาแน่น "ต่ำ" การติดตั้งใช้งานอุปกรณ์ต้องปรับขนาดชิ้นงานขนาดกลาง/mdpi ลง 0.75 เท่า
  • เมื่อใช้งานบนหน้าจอที่มีความหนาแน่น "สูง" การติดตั้งใช้งานอุปกรณ์ต้องปรับขนาดชิ้นงานขนาดกลาง/mdpi ขึ้น 1.5 เท่า
  • การติดตั้งใช้งานอุปกรณ์ต้องไม่ปรับขนาดชิ้นงานภายในช่วงความหนาแน่น และจะต้องปรับขนาดชิ้นงานตามปัจจัยเหล่านี้ระหว่างช่วงความหนาแน่น

8.1.2. การกําหนดค่าจอแสดงผลที่ไม่ใช่มาตรฐาน

การกําหนดค่าการแสดงผลที่ไม่ตรงกับการกําหนดค่ามาตรฐานรายการใดรายการหนึ่งซึ่งระบุไว้ในส่วนที่ 8.1.1 จะต้องได้รับการพิจารณาและดำเนินการเพิ่มเติมเพื่อให้เข้ากันได้ ผู้ติดตั้งใช้งานอุปกรณ์ต้องติดต่อทีมความเข้ากันได้ของ Android ตามที่อธิบายไว้ในส่วนที่ 13 เพื่อขอรับการจัดประเภทสำหรับกลุ่มขนาดหน้าจอ ความหนาแน่น และปัจจัยที่มีผลต่อขนาดการแสดงผล เมื่อระบุข้อมูลนี้ การติดตั้งใช้งานอุปกรณ์จะต้องใช้ข้อมูลดังกล่าวตามที่ระบุ

โปรดทราบว่าการกำหนดค่าการแสดงผลบางอย่าง (เช่น หน้าจอขนาดใหญ่มากหรือเล็กมาก และอัตราส่วนภาพบางอัตราส่วน) เข้ากันไม่ได้กับ Android 2.2 โดยพื้นฐาน ดังนั้นเราขอแนะนำให้ผู้ติดตั้งใช้งานอุปกรณ์ติดต่อทีมความเข้ากันได้ของ Android ในช่วงต้นของกระบวนการพัฒนา

8.1.3. เมตริก Display

การติดตั้งใช้งานอุปกรณ์ต้องรายงานค่าที่ถูกต้องสำหรับเมตริกการแสดงผลทั้งหมดที่ระบุไว้ใน android.util.DisplayMetrics [แหล่งข้อมูล, 26]

8.1.4. การรองรับหน้าจอที่ประกาศ

แอปพลิเคชันอาจระบุขนาดหน้าจอที่รองรับผ่านแอตทริบิวต์ <supports-screens> ในไฟล์ AndroidManifest.xml การติดตั้งใช้งานอุปกรณ์ต้องเป็นไปตามการรองรับที่ระบุไว้ของแอปพลิเคชันสำหรับหน้าจอขนาดเล็ก กลาง และใหญ่อย่างถูกต้อง ตามที่อธิบายไว้ในเอกสารประกอบ Android SDK

8.2. แป้นพิมพ์

การติดตั้งใช้งานอุปกรณ์

  • ต้องรองรับเฟรมเวิร์กการจัดการอินพุต (ซึ่งช่วยให้นักพัฒนาแอปบุคคลที่สามสร้างเครื่องมือการจัดการอินพุตได้ เช่น แป้นพิมพ์บนหน้าจอ) ตามที่ระบุไว้ที่ developer.android.com
  • ต้องระบุการใช้งานแป้นพิมพ์เสมือนอย่างน้อย 1 รายการ (ไม่ว่าจะมีแป้นพิมพ์จริงหรือไม่ก็ตาม)
  • อาจรวมถึงการติดตั้งใช้งานแป้นพิมพ์เสมือนเพิ่มเติม
  • มีแป้นพิมพ์ฮาร์ดแวร์
  • ต้องไม่มีแป้นพิมพ์ฮาร์ดแวร์ที่ไม่ตรงกับรูปแบบใดรูปแบบหนึ่งซึ่งระบุไว้ใน android.content.res.Configuration.keyboard [แหล่งข้อมูล, 25] (นั่นคือ QWERTY หรือ 12 ปุ่ม)

8.3 การนำทางแบบไม่สัมผัส

การติดตั้งใช้งานอุปกรณ์

  • อาจละเว้นตัวเลือกการไปยังส่วนต่างๆ ที่ไม่ใช้การสัมผัส (กล่าวคือ อาจละเว้นแทร็กบอล แผ่นบังคับทิศทาง หรือล้อ)
  • ต้องรายงานค่าที่ถูกต้องสำหรับ android.content.res.Configuration.navigation [Resources, 25]

8.4 การวางแนวหน้าจอ

อุปกรณ์ที่เข้ากันได้ต้องรองรับการวางแนวแบบไดนามิกตามแอปพลิเคชันเพื่อการวางแนวหน้าจอในแนวตั้งหรือแนวนอน กล่าวคือ อุปกรณ์ต้องคำนึงถึงคำขอการวางแนวหน้าจอที่เฉพาะเจาะจงของแอปพลิเคชัน การติดตั้งใช้งานอุปกรณ์อาจเลือกการวางแนวเป็นแนวตั้งหรือแนวนอนโดยค่าเริ่มต้น

อุปกรณ์ต้องรายงานค่าที่ถูกต้องสำหรับการวางแนวปัจจุบันของอุปกรณ์ทุกครั้งที่มีการค้นหาผ่าน android.content.res.Configuration.orientation, android.view.Display.getOrientation() หรือ API อื่นๆ

8.5 การป้อนข้อมูลด้วยหน้าจอสัมผัส

การติดตั้งใช้งานอุปกรณ์

  • ต้องมีหน้าจอสัมผัส
  • อาจมีหน้าจอสัมผัสแบบ Capacitive หรือ Resistive
  • ต้องรายงานค่าของ android.content.res.Configuration [Resources, 25] ซึ่งสอดคล้องกับประเภทของหน้าจอสัมผัสที่เฉพาะเจาะจงในอุปกรณ์
  • ควรรองรับเคอร์เซอร์ที่ติดตามได้อย่างอิสระทั้งหมด หากหน้าจอสัมผัสรองรับเคอร์เซอร์หลายตัว

8.6. USB

การติดตั้งใช้งานอุปกรณ์

  • ต้องใช้ไคลเอ็นต์ USB ที่เชื่อมต่อกับโฮสต์ USB ด้วยพอร์ต USB-A มาตรฐาน
  • ต้องติดตั้งใช้งาน Android Debug Bridge ผ่าน USB (ตามที่อธิบายไว้ในส่วน 7)
  • ต้องปฏิบัติตามข้อกำหนดเฉพาะของอุปกรณ์เก็บข้อมูลขนาดใหญ่แบบ USB เพื่ออนุญาตให้โฮสต์ที่เชื่อมต่อกับอุปกรณ์เข้าถึงเนื้อหาของวอลุ่ม /sdcard
  • ควรใช้รูปแบบของอุปกรณ์เป็น micro USB
  • อาจมีพอร์ตที่ไม่เป็นมาตรฐานที่ด้านอุปกรณ์ แต่หากเป็นเช่นนั้น อุปกรณ์ต้องมาพร้อมกับสายที่เชื่อมต่อพินที่กำหนดเองกับพอร์ต USB-A มาตรฐานได้
  • ควรรองรับข้อกำหนดของอุปกรณ์เก็บข้อมูลขนาดใหญ่ USB (เพื่อให้สามารถเข้าถึงพื้นที่เก็บข้อมูลแบบถอดได้หรือแบบติดตั้งถาวรในอุปกรณ์จากโฮสต์ PC ได้)

8.7 ปุ่มนำทาง

ฟังก์ชันหน้าแรก เมนู และย้อนกลับเป็นฟังก์ชันที่จำเป็นต่อรูปแบบการนำทางของ Android การติดตั้งใช้งานอุปกรณ์ต้องทำให้ฟังก์ชันเหล่านี้พร้อมใช้งานสำหรับผู้ใช้ตลอดเวลา ไม่ว่าสถานะแอปพลิเคชันจะเป็นอย่างไรก็ตาม ฟังก์ชันเหล่านี้ควรติดตั้งใช้งานผ่านปุ่มเฉพาะ อาจมีการใช้ด้วยซอฟต์แวร์ ท่าทางสัมผัส แผงสัมผัส ฯลฯ แต่หากเป็นเช่นนั้น ผู้ใช้ต้องเข้าถึงได้เสมอและไม่ควรบดบังหรือรบกวนพื้นที่แสดงผลของแอปพลิเคชัน

ผู้ติดตั้งใช้งานอุปกรณ์ควรระบุคำค้นหาเฉพาะด้วย ผู้ติดตั้งใช้งานอุปกรณ์อาจระบุปุ่มส่งและปุ่มสิ้นสุดสำหรับการโทรด้วย

8.8 เครือข่ายไร้สาย

การติดตั้งใช้งานอุปกรณ์ต้องรองรับเครือข่ายไร้สายความเร็วสูง กล่าวโดยละเอียดคือ การติดตั้งใช้งานอุปกรณ์ต้องรองรับมาตรฐานการรับส่งข้อมูลแบบไร้สายอย่างน้อย 1 รายการที่รับส่งข้อมูลได้ 200 Kbit/วินาทีขึ้นไป ตัวอย่างเทคโนโลยีที่เป็นไปตามข้อกำหนดนี้ ได้แก่ EDGE, HSPA, EV-DO, 802.11g ฯลฯ

หากการติดตั้งใช้งานอุปกรณ์มีรูปแบบหนึ่งๆ ที่ Android SDK มี API (เช่น Wi-Fi, GSM หรือ CDMA) การติดตั้งใช้งานนั้นต้องรองรับ API

อุปกรณ์อาจใช้การเชื่อมต่อข้อมูลแบบไร้สายมากกว่า 1 รูปแบบ อุปกรณ์อาจใช้การเชื่อมต่อข้อมูลแบบใช้สาย (เช่น อีเทอร์เน็ต) แต่ต้องรวมการเชื่อมต่อแบบไร้สายอย่างน้อย 1 รูปแบบตามที่ระบุไว้ข้างต้น

8.9 กล้อง

การติดตั้งใช้งานอุปกรณ์ต้องมีกล้องหลัง กล้องหลังที่ให้มา

  • ต้องมีความละเอียดอย่างน้อย 2 ล้านพิกเซล
  • ควรมีการใช้โฟกัสอัตโนมัติของฮาร์ดแวร์หรือซอฟต์แวร์ในไดรเวอร์กล้อง (ทำงานร่วมกับซอฟต์แวร์แอปพลิเคชันได้อย่างราบรื่น)
  • อาจใช้ฮาร์ดแวร์แบบโฟกัสคงที่หรือ EDOF (ระยะชัดลึกแบบขยาย)
  • อาจใช้แฟลช หากกล้องมีแฟลช หลอดไฟแฟลชต้องไม่สว่างขึ้นขณะที่ลงทะเบียนอินสแตนซ์ android.hardware.Camera.PreviewCallback บนพื้นผิวแสดงตัวอย่างของกล้อง เว้นแต่แอปพลิเคชันจะเปิดใช้แฟลชอย่างชัดเจนโดยเปิดใช้แอตทริบิวต์ FLASH_MODE_AUTO หรือ FLASH_MODE_ON ของออบเจ็กต์ Camera.Parameters โปรดทราบว่าข้อจำกัดนี้ไม่มีผลกับแอปพลิเคชันกล้องของระบบในตัวของอุปกรณ์ แต่จะมีผลกับแอปพลิเคชันของบุคคลที่สามที่ใช้ Camera.PreviewCallback เท่านั้น

การติดตั้งใช้งานอุปกรณ์ต้องใช้ลักษณะการทำงานต่อไปนี้สําหรับ API ที่เกี่ยวข้องกับกล้อง

  1. หากแอปพลิเคชันไม่เคยเรียกใช้ android.hardware.Camera.Parameters.setPreviewFormat(int) อุปกรณ์ต้องใช้ android.hardware.PixelFormat.YCbCr_420_SP สำหรับข้อมูลพรีวิวที่ส่งไปยังการเรียกกลับของแอปพลิเคชัน
  2. หากแอปพลิเคชันลงทะเบียนอินสแตนซ์ android.hardware.Camera.PreviewCallback และระบบเรียกใช้เมธอด onPreviewFrame() เมื่อรูปแบบการแสดงตัวอย่างเป็น YCbCr_420_SP ข้อมูลใน byte[] ที่ส่งไปยัง onPreviewFrame() จะต้องอยู่ในรูปแบบการเข้ารหัส NV21 (นี่คือรูปแบบที่ตระกูลฮาร์ดแวร์ 7k ใช้โดยค่าเริ่มต้น) กล่าวคือ NV21 ต้องเป็นค่าเริ่มต้น

การติดตั้งใช้งานอุปกรณ์ต้องใช้ Camera API แบบเต็มซึ่งรวมอยู่ในเอกสารประกอบ SDK ของ Android 2.2 [ทรัพยากร, 27] ไม่ว่าอุปกรณ์จะมีระบบโฟกัสอัตโนมัติแบบฮาร์ดแวร์หรือความสามารถอื่นๆ หรือไม่ก็ตาม ตัวอย่างเช่น กล้องที่ไม่มีโฟกัสอัตโนมัติจะต้องยังคงเรียกใช้อินสแตนซ์ android.hardware.Camera.AutoFocusCallback ที่ลงทะเบียนไว้ (แม้ว่าการดำเนินการนี้จะไม่เกี่ยวข้องกับกล้องที่ไม่มีโฟกัสอัตโนมัติก็ตาม)

การติดตั้งใช้งานอุปกรณ์ต้องรู้จักและปฏิบัติตามชื่อพารามิเตอร์แต่ละรายการที่กําหนดเป็นค่าคงที่ในคลาส android.hardware.Camera.Parameters หากฮาร์ดแวร์พื้นฐานรองรับฟีเจอร์ดังกล่าว หากฮาร์ดแวร์ของอุปกรณ์ไม่รองรับฟีเจอร์หนึ่งๆ API จะต้องทํางานตามที่ระบุไว้ในเอกสาร ในทางกลับกัน การใช้งานอุปกรณ์ต้องไม่ยอมรับหรือรู้จักค่าคงที่สตริงที่ส่งไปยังเมธอด android.hardware.Camera.setParameters() นอกเหนือจากค่าคงที่ที่ระบุไว้ในandroid.hardware.Camera.Parameters กล่าวคือ การติดตั้งใช้งานอุปกรณ์ต้องรองรับพารามิเตอร์กล้องมาตรฐานทั้งหมดหากฮาร์ดแวร์อนุญาต และจะต้องไม่รองรับประเภทพารามิเตอร์กล้องที่กำหนดเอง

การติดตั้งใช้งานอุปกรณ์อาจรวมถึงกล้องหน้า อย่างไรก็ตาม หากการติดตั้งใช้งานอุปกรณ์มีกล้องหน้าอยู่ด้วย API ของกล้องที่ติดตั้งใช้งานในอุปกรณ์ต้องไม่ใช้กล้องหน้าโดยค่าเริ่มต้น กล่าวคือ API ของกล้องใน Android 2.2 มีไว้สำหรับกล้องหลังเท่านั้น และการติดตั้งใช้งานอุปกรณ์ต้องไม่นำ API มาใช้ซ้ำหรือใช้งานเกินขีดจำกัดเพื่อดำเนินการกับกล้องหน้า (หากมี) โปรดทราบว่า API ที่กําหนดเองซึ่งผู้ติดตั้งใช้งานอุปกรณ์เพิ่มเพื่อรองรับกล้องหน้าต้องเป็นไปตามส่วนที่ 3.5 และ 3.6 เช่น หากมีคลาสย่อย android.hardware.Camera หรือ Camera.Parameters ที่กําหนดเองเพื่อรองรับกล้องหน้า คลาสย่อยดังกล่าวต้องไม่อยู่ในเนมสเปซที่มีอยู่ตามที่อธิบายไว้ในส่วนที่ 3.5 และ 3.6 โปรดทราบว่าการมีกล้องหน้าไม่เป็นไปตามข้อกำหนดที่อุปกรณ์ต้องมีกล้องหลัง

8.10. ตัวตรวจวัดความเร่ง

การติดตั้งใช้งานอุปกรณ์ต้องมีเครื่องวัดความเร่ง 3 แกนและสามารถส่งเหตุการณ์ที่ 50 Hz ขึ้นไป ระบบพิกัดที่ใช้โดยเครื่องวัดความเร่งต้องเป็นไปตามระบบพิกัดเซ็นเซอร์ Android ตามที่ระบุไว้ใน Android API (ดู [แหล่งข้อมูล, 28])

8.11. เข็มทิศ

การติดตั้งใช้งานอุปกรณ์ต้องมีเข็มทิศ 3 แกนและสามารถส่งเหตุการณ์ได้ 10 Hz ขึ้นไป ระบบพิกัดที่ใช้โดยเข็มทิศต้องเป็นไปตามระบบพิกัดเซ็นเซอร์ Android ตามที่ระบุไว้ใน Android API (ดู [แหล่งข้อมูล, 28])

8.12. GPS

การติดตั้งใช้งานอุปกรณ์ต้องมีเครื่องรับสัญญาณ GPS และต้องรวมเทคนิค "Assisted GPS" บางรูปแบบเพื่อลดเวลาในการล็อก GPS

8.13 โทรศัพท์

Android 2.2 อาจใช้ในอุปกรณ์ที่ไม่มีฮาร์ดแวร์โทรศัพท์ กล่าวคือ Android 2.2 ใช้ได้กับอุปกรณ์ที่ไม่ใช่โทรศัพท์ อย่างไรก็ตาม หากการติดตั้งใช้งานอุปกรณ์มีโทรศัพท์ GSM หรือ CDMA อุปกรณ์นั้นจะต้องรองรับ API ของเทคโนโลยีนั้นอย่างเต็มรูปแบบ การติดตั้งใช้งานอุปกรณ์ที่ไม่มีฮาร์ดแวร์โทรศัพท์ต้องติดตั้งใช้งาน API แบบเต็มแบบ No-Ops

โปรดดูส่วน 8.8 เครือข่ายไร้สาย

8.14. หน่วยความจำและพื้นที่เก็บข้อมูล

การติดตั้งใช้งานอุปกรณ์ต้องมีหน่วยความจำอย่างน้อย 92 MB สำหรับเคอร์เนลและพื้นที่ผู้ใช้ 92 MB นี้ต้องเพิ่มขึ้นจากหน่วยความจำที่ใช้สำหรับคอมโพเนนต์ฮาร์ดแวร์ เช่น วิทยุ หน่วยความจำ และอื่นๆ ที่ไม่ได้อยู่ภายใต้การควบคุมของเคิร์กเนล

การติดตั้งใช้งานอุปกรณ์ต้องมีพื้นที่เก็บข้อมูลแบบถาวรอย่างน้อย 150 MB สำหรับข้อมูลผู้ใช้ กล่าวคือ พาร์ติชัน /data ต้องมีขนาดใหญ่อย่างน้อย 150 MB

นอกเหนือจากข้อกำหนดข้างต้น การติดตั้งใช้งานอุปกรณ์ควรมีหน่วยความจำอย่างน้อย 128 MB สำหรับเคอร์เนลและพื้นที่ผู้ใช้ นอกเหนือจากหน่วยความจำสำหรับคอมโพเนนต์ฮาร์ดแวร์ที่ไม่ได้อยู่ภายใต้การควบคุมของเคิร์นัล การติดตั้งใช้งานอุปกรณ์ควรมีพื้นที่เก็บข้อมูลแบบคงที่อย่างน้อย 1 GB สำหรับข้อมูลผู้ใช้ โปรดทราบว่าเราวางแผนที่จะกำหนดข้อกำหนดที่สูงขึ้นเหล่านี้เป็นข้อกำหนดขั้นต่ำที่บังคับใช้ใน Android เวอร์ชันในอนาคต เราขอแนะนำให้ติดตั้งใช้งานอุปกรณ์ให้เป็นไปตามข้อกำหนดเหล่านี้ตั้งแต่ตอนนี้ ไม่เช่นนั้นอุปกรณ์อาจไม่มีสิทธิ์ใช้งานร่วมกับ Android เวอร์ชันในอนาคต

8.15 พื้นที่เก็บข้อมูลที่ใช้ร่วมกันของแอปพลิเคชัน

การติดตั้งใช้งานอุปกรณ์ต้องมีพื้นที่เก็บข้อมูลที่ใช้ร่วมกันสำหรับแอปพลิเคชัน พื้นที่เก็บข้อมูลที่ใช้ร่วมกันที่ระบุต้องมีขนาดอย่างน้อย 2 GB

การติดตั้งใช้งานอุปกรณ์ต้องได้รับการกำหนดค่าด้วยพื้นที่เก็บข้อมูลที่แชร์ซึ่งติดตั้งโดยค่าเริ่มต้น "พร้อมใช้งานทันที" หากไม่ได้ต่อเชื่อมพื้นที่เก็บข้อมูลที่ใช้ร่วมกันในเส้นทาง /sdcard ของ Linux อุปกรณ์ต้องมีลิงก์สัญลักษณ์ Linux จาก /sdcard ไปยังจุดต่อเชื่อมจริง

การติดตั้งใช้งานอุปกรณ์ต้องบังคับใช้สิทธิ์ android.permission.WRITE_EXTERNAL_STORAGE ในที่จัดเก็บข้อมูลที่ใช้ร่วมกันนี้ตามที่ระบุไว้ มิเช่นนั้น แอปพลิเคชันใดก็ตามที่ได้รับสิทธิ์ดังกล่าวจะต้องเขียนลงในพื้นที่เก็บข้อมูลที่ใช้ร่วมกันได้

การติดตั้งใช้งานอุปกรณ์อาจมีฮาร์ดแวร์สำหรับพื้นที่เก็บข้อมูลแบบถอดออกได้ซึ่งผู้ใช้เข้าถึงได้ เช่น การ์ด Secure Digital หรือการติดตั้งใช้งานอุปกรณ์อาจจัดสรรพื้นที่เก็บข้อมูลภายใน (แบบถอดไม่ได้) เป็นพื้นที่เก็บข้อมูลที่ใช้ร่วมกันสำหรับแอป

ไม่ว่าพื้นที่เก็บข้อมูลที่ใช้ร่วมกันจะเป็นรูปแบบใด พื้นที่เก็บข้อมูลที่ใช้ร่วมกันนั้นต้องใช้อุปกรณ์เก็บข้อมูลขนาดใหญ่แบบ USB ตามที่อธิบายไว้ในส่วนที่ 8.6 เมื่อนำออกจากกล่อง พื้นที่เก็บข้อมูลที่แชร์ต้องได้รับการต่อเชื่อมด้วยระบบไฟล์ FAT

ต่อไปนี้เป็นตัวอย่างที่พบบ่อย 2 ตัวอย่าง หากการติดตั้งใช้งานอุปกรณ์มีช่องการ์ด SD เพื่อตอบสนองข้อกำหนดของพื้นที่เก็บข้อมูลที่ใช้ร่วมกัน การ์ด SD ฟอร์แมต FAT ขนาด 2 GB ขึ้นไปต้องมาพร้อมกับอุปกรณ์ที่ขายให้แก่ผู้ใช้ และจะต้องต่อเชื่อมโดยค่าเริ่มต้น หรือหากการติดตั้งใช้งานอุปกรณ์ใช้พื้นที่เก็บข้อมูลแบบคงที่ภายในเพื่อปฏิบัติตามข้อกำหนดนี้ พื้นที่เก็บข้อมูลดังกล่าวต้องมีขนาดตั้งแต่ 2 GB ขึ้นไป ฟอร์แมตเป็น FAT และติดตั้งใน /sdcard (หรือ /sdcard ต้องลิงก์สัญลักษณ์ไปยังตำแหน่งจริงหากติดตั้งไว้ที่อื่น)

การติดตั้งใช้งานอุปกรณ์ที่มีเส้นทางพื้นที่เก็บข้อมูลที่ใช้ร่วมกันหลายเส้นทาง (เช่น ทั้งช่องการ์ด SD และพื้นที่เก็บข้อมูลภายในที่ใช้ร่วมกัน) ควรแก้ไขแอปพลิเคชันหลัก เช่น เครื่องมือสแกนสื่อและ ContentProvider เพื่อรองรับไฟล์ที่วางไว้ในทั้ง 2 ตำแหน่งอย่างโปร่งใส

8.16. บลูทูธ

การติดตั้งใช้งานอุปกรณ์ต้องมีตัวรับส่งสัญญาณบลูทูธ การติดตั้งใช้งานอุปกรณ์ต้องเปิดใช้ Bluetooth API ที่ใช้ RFCOMM ตามที่อธิบายไว้ในเอกสารประกอบ SDK [แหล่งข้อมูล, 30] การใช้งานอุปกรณ์ควรใช้โปรไฟล์บลูทูธที่เกี่ยวข้อง เช่น A2DP, AVRCP, OBEX ฯลฯ ตามเหมาะสมกับอุปกรณ์

ชุดทดสอบความเข้ากันได้มีกรณีต่างๆ ที่ครอบคลุมการดำเนินการพื้นฐานของ Android RFCOMM Bluetooth API อย่างไรก็ตาม เนื่องจากบลูทูธเป็นโปรโตคอลการสื่อสารระหว่างอุปกรณ์ จึงทดสอบได้ไม่สมบูรณ์ด้วยยูนิตเทสต์ที่ทำงานในอุปกรณ์เครื่องเดียว ดังนั้น การติดตั้งใช้งานอุปกรณ์ต้องผ่านขั้นตอนทดสอบบลูทูธที่ดำเนินการโดยบุคคลตามที่อธิบายไว้ในภาคผนวก ก ด้วย

9. ความเข้ากันได้ด้านประสิทธิภาพ

เป้าหมายอย่างหนึ่งของโปรแกรมความเข้ากันได้ของ Android คือช่วยให้ผู้บริโภคได้รับประสบการณ์การใช้งานแอปพลิเคชันที่สอดคล้องกัน การติดตั้งใช้งานที่เข้ากันได้ต้องไม่เพียงแต่ทำให้แอปพลิเคชันทำงานได้อย่างถูกต้องในอุปกรณ์เท่านั้น แต่ยังต้องทำงานได้อย่างมีประสิทธิภาพและมอบประสบการณ์การใช้งานที่ดีโดยรวม การติดตั้งใช้งานอุปกรณ์ต้องเป็นไปตามเมตริกประสิทธิภาพหลักของอุปกรณ์ที่เข้ากันได้กับ Android 2.2 ที่ระบุไว้ในตารางด้านล่าง

เมตริก เกณฑ์ประสิทธิภาพ ความคิดเห็น
เวลาเปิดแอปพลิเคชัน แอปพลิเคชันต่อไปนี้ควรเปิดตัวภายในเวลาที่ระบุ
  • เบราว์เซอร์: น้อยกว่า 1300 มิลลิวินาที
  • MMS/SMS: น้อยกว่า 700 มิลลิวินาที
  • AlarmClock: น้อยกว่า 650 มิลลิวินาที
ระบบจะวัดเวลาเปิดเป็นเวลาทั้งหมดที่ใช้ในการโหลดกิจกรรมเริ่มต้นสําหรับแอปพลิเคชันให้เสร็จสมบูรณ์ ซึ่งรวมถึงเวลาที่ใช้ในการเริ่มกระบวนการ Linux, โหลดแพ็กเกจ Android ลงใน Dalvik VM และเรียกใช้ onCreate
การสมัครพร้อมกัน เมื่อเปิดแอปพลิเคชันหลายรายการแล้ว การเปิดตัวแอปพลิเคชันที่ทำงานอยู่แล้วอีกครั้งหลังจากเปิดตัวต้องใช้เวลาน้อยกว่าเวลาเปิดตัวครั้งแรก  

10. ความเข้ากันได้ของรูปแบบการรักษาความปลอดภัย

การติดตั้งใช้งานอุปกรณ์ต้องใช้รูปแบบการรักษาความปลอดภัยที่สอดคล้องกับรูปแบบการรักษาความปลอดภัยของแพลตฟอร์ม Android ตามที่ระบุไว้ในเอกสารอ้างอิงเกี่ยวกับความปลอดภัยและสิทธิ์ใน API [แหล่งข้อมูล, 29] ในเอกสารประกอบสำหรับนักพัฒนาแอป Android การติดตั้งใช้งานอุปกรณ์ต้องรองรับการติดตั้งแอปพลิเคชันที่ลงนามด้วยตนเองโดยไม่ต้องขอสิทธิ์/ใบรับรองเพิ่มเติมจากบุคคลที่สาม/หน่วยงาน กล่าวโดยละเอียดคือ อุปกรณ์ที่เข้ากันได้ต้องรองรับกลไกการรักษาความปลอดภัยที่อธิบายไว้ในส่วนย่อยต่อไปนี้

10.1. สิทธิ์

การติดตั้งใช้งานอุปกรณ์ต้องรองรับรูปแบบสิทธิ์ของ Android ตามที่ระบุไว้ในเอกสารประกอบสำหรับนักพัฒนาแอป Android [แหล่งข้อมูล, 29] กล่าวโดยละเอียดคือ การติดตั้งใช้งานต้องบังคับใช้สิทธิ์แต่ละรายการตามที่อธิบายไว้ในเอกสารประกอบ SDK โดยต้องไม่ละเว้น เปลี่ยนแปลง หรือละเว้นสิทธิ์ใดๆ การใช้งานอาจเพิ่มสิทธิ์เพิ่มเติมได้ ตราบใดที่สตริงรหัสสิทธิ์ใหม่ไม่ได้อยู่ในเนมสเปซ android.*

10.2. UID และการแยกกระบวนการ

การติดตั้งใช้งานอุปกรณ์ต้องรองรับรูปแบบแซนด์บ็อกซ์แอปพลิเคชันของ Android ซึ่งแอปพลิเคชันแต่ละรายการจะทำงานเป็น UID สไตล์ Unix ที่ไม่ซ้ำกันและในกระบวนการแยกต่างหาก การติดตั้งใช้งานอุปกรณ์ต้องรองรับการเรียกใช้แอปพลิเคชันหลายรายการเป็นรหัสผู้ใช้ Linux เดียวกัน โดยมีเงื่อนไขว่าแอปพลิเคชันได้รับการลงนามและสร้างอย่างถูกต้องตามที่ระบุไว้ในข้อมูลอ้างอิงด้านความปลอดภัยและสิทธิ์ [แหล่งข้อมูล 29]

10.3. สิทธิ์ในระบบไฟล์

การติดตั้งใช้งานอุปกรณ์ต้องรองรับรูปแบบสิทธิ์การเข้าถึงไฟล์ Android ตามที่ระบุไว้ในข้อมูลอ้างอิงด้านความปลอดภัยและสิทธิ์ [ทรัพยากร, 29]

10.4. สภาพแวดล้อมการดําเนินการอื่น

การติดตั้งใช้งานอุปกรณ์อาจรวมถึงสภาพแวดล้อมรันไทม์ที่เรียกใช้แอปพลิเคชันโดยใช้ซอฟต์แวร์หรือเทคโนโลยีอื่นที่ไม่ใช่เครื่องเสมือน Dalvik หรือโค้ดแบบเนทีฟ อย่างไรก็ตาม สภาพแวดล้อมการเรียกใช้ระบบอื่นดังกล่าวต้องไม่ทำให้รูปแบบการรักษาความปลอดภัยของ Android หรือความปลอดภัยของแอปพลิเคชัน Android ที่ติดตั้งไว้ลดลงตามที่อธิบายไว้ในส่วนนี้

รันไทม์อื่นต้องเป็นแอปพลิเคชัน Android และเป็นไปตามรูปแบบความปลอดภัยมาตรฐานของ Android ตามที่อธิบายไว้ในส่วนอื่นๆ ของส่วนที่ 10

รันไทม์อื่นต้องไม่ได้รับสิทธิ์เข้าถึงทรัพยากรที่ได้รับการปกป้องโดยสิทธิ์ที่ไม่ได้ขอในไฟล์ AndroidManifest.xml ของรันไทม์ผ่านกลไก <uses-permission>

รันไทม์อื่นต้องไม่อนุญาตให้แอปพลิเคชันใช้ประโยชน์จากฟีเจอร์ที่ได้รับการปกป้องโดยสิทธิ์ Android ที่จำกัดไว้สำหรับแอปพลิเคชันระบบเท่านั้น

รันไทม์ทางเลือกต้องเป็นไปตามรูปแบบแซนด์บ็อกซ์ของ Android ดังนี้

  • รันไทม์อื่นควรติดตั้งแอปผ่าน PackageManager ลงในแซนด์บ็อกซ์ Android แยกต่างหาก (เช่น รหัสผู้ใช้ Linux ฯลฯ)
  • รันไทม์อื่นอาจมีแซนด์บ็อกซ์ Android เดียวที่แอปพลิเคชันทั้งหมดที่ใช้รันไทม์อื่นใช้ร่วมกัน
  • รันไทม์อื่นและแอปพลิเคชันที่ติดตั้งโดยใช้รันไทม์อื่นต้องไม่นำแซนด์บ็อกซ์ของแอปอื่นๆ ที่ติดตั้งในอุปกรณ์มาใช้ซ้ำ ยกเว้นผ่านกลไกมาตรฐานของ Android สำหรับรหัสผู้ใช้ที่แชร์และใบรับรองการรับรอง
  • รันไทม์อื่นต้องไม่เปิดขึ้นด้วย มอบสิทธิ์ หรือได้รับสิทธิ์เข้าถึงแซนด์บ็อกซ์ที่เกี่ยวข้องกับแอปพลิเคชัน Android อื่นๆ

รันไทม์อื่นต้องไม่เปิดใช้งานด้วย ไม่ได้รับ หรือให้สิทธิ์แก่แอปพลิเคชันอื่นๆ เกี่ยวกับสิทธิ์ของผู้ดูแลระบบ (root) หรือรหัสผู้ใช้อื่นๆ

ไฟล์ .apk ของรันไทม์อื่นอาจรวมอยู่ในอิมเมจระบบของการติดตั้งใช้งานอุปกรณ์ แต่ต้องลงนามด้วยคีย์ที่แตกต่างจากคีย์ที่ใช้ลงนามแอปพลิเคชันอื่นๆ ที่รวมอยู่ในการติดตั้งใช้งานอุปกรณ์

เมื่อติดตั้งแอปพลิเคชัน รันไทม์อื่นต้องได้รับความยินยอมจากผู้ใช้สำหรับสิทธิ์ Android ที่แอปพลิเคชันใช้ กล่าวคือ หากแอปพลิเคชันต้องใช้ทรัพยากรของอุปกรณ์ซึ่งมีสิทธิ์ Android ที่เกี่ยวข้อง (เช่น กล้อง, GPS ฯลฯ) รันไทม์อื่นต้องแจ้งให้ผู้ใช้ทราบว่าแอปพลิเคชันจะเข้าถึงทรัพยากรนั้นได้ หากสภาพแวดล้อมรันไทม์ไม่ได้บันทึกความสามารถของแอปพลิเคชันด้วยวิธีนี้ สภาพแวดล้อมรันไทม์ต้องแสดงสิทธิ์ทั้งหมดที่รันไทม์มีเมื่อติดตั้งแอปพลิเคชันที่ใช้รันไทม์นั้น

11. ชุดเครื่องมือทดสอบความเข้ากันได้

การติดตั้งใช้งานอุปกรณ์ต้องผ่านชุดเครื่องมือทดสอบความเข้ากันได้กับอุปกรณ์ Android (CTS) [แหล่งข้อมูล 2] ซึ่งมีอยู่ในโปรเจ็กต์โอเพนซอร์ส Android โดยใช้ซอฟต์แวร์เวอร์ชันสุดท้ายที่พร้อมจำหน่ายในอุปกรณ์ นอกจากนี้ ผู้ติดตั้งใช้งานอุปกรณ์ควรใช้การติดตั้งใช้งานอ้างอิงในซอร์สโค้ดแบบเปิดของ Android มากที่สุดเท่าที่จะเป็นไปได้ และต้องตรวจสอบความเข้ากันได้ในกรณีที่ CTS มีความคลุมเครือ และในกรณีที่มีการติดตั้งใช้งานบางส่วนของซอร์สโค้ดอ้างอิงอีกครั้ง

CTS ออกแบบมาเพื่อใช้งานบนอุปกรณ์จริง เช่นเดียวกับซอฟต์แวร์อื่นๆ DTC อาจมีข้อบกพร่อง CTS จะมีเวอร์ชันแยกต่างหากจากคำจำกัดความความเข้ากันได้นี้ และอาจมีการเผยแพร่ CTS เวอร์ชันแก้ไขหลายเวอร์ชันสำหรับ Android 2.2 การติดตั้งใช้งานอุปกรณ์ต้องผ่าน CTS เวอร์ชันล่าสุดที่มีให้บริการ ณ เวลาที่มีการสร้างซอฟต์แวร์ของอุปกรณ์เสร็จสมบูรณ์

12. ซอฟต์แวร์ที่อัปเดตได้

การติดตั้งใช้งานอุปกรณ์ต้องมีกลไกในการแทนที่ซอฟต์แวร์ระบบทั้งหมด กลไกนี้ไม่จำเป็นต้องทำการอัปเกรด "แบบเรียลไทม์" กล่าวคือ คุณอาจต้องรีสตาร์ทอุปกรณ์

คุณใช้วิธีการใดก็ได้ ตราบใดที่วิธีการดังกล่าวสามารถแทนที่ซอฟต์แวร์ทั้งหมดที่ติดตั้งไว้ล่วงหน้าในอุปกรณ์ ตัวอย่างเช่น แนวทางต่อไปนี้จะเป็นไปตามข้อกำหนดนี้

  • การดาวน์โหลดผ่านอากาศ (OTA) ที่มีการอัปเดตแบบออฟไลน์ผ่านการรีบูต
  • อัปเดตแบบ "ใช้การต่อฮอตสปอตจากมือถือ" ผ่าน USB จาก PC โฮสต์
  • การอัปเดต "ออฟไลน์" ผ่านการรีบูตและการอัปเดตจากไฟล์ในอุปกรณ์เก็บข้อมูลแบบถอดได้

กลไกการอัปเดตที่ใช้ต้องรองรับการอัปเดตโดยไม่ล้างข้อมูลผู้ใช้ โปรดทราบว่าซอฟต์แวร์ Android เวอร์ชันอัปสตรีมมีกลไกการอัปเดตที่เป็นไปตามข้อกำหนดนี้

หากพบข้อผิดพลาดในการใช้งานอุปกรณ์หลังจากเปิดตัวแล้ว แต่ภายในอายุการใช้งานผลิตภัณฑ์ที่เหมาะสมซึ่งพิจารณาจากการปรึกษากับทีมความเข้ากันได้ของ Android เพื่อดูว่าส่งผลต่อความเข้ากันได้ของแอปพลิเคชันของบุคคลที่สามหรือไม่ ผู้ติดตั้งใช้งานอุปกรณ์ต้องแก้ไขข้อผิดพลาดผ่านการอัปเดตซอฟต์แวร์ที่ใช้ได้ซึ่งเป็นไปตามกลไกที่อธิบายไป

13. ติดต่อเรา

คุณสามารถติดต่อผู้เขียนเอกสารที่ [email protected] เพื่อขอคำชี้แจงหรือแจ้งปัญหาที่คุณคิดว่าเอกสารไม่ได้กล่าวถึง

ภาคผนวก ก. - ขั้นตอนการทดสอบบลูทูธ

ชุดทดสอบความเข้ากันได้มีกรณีต่างๆ ที่ครอบคลุมการดำเนินการพื้นฐานของ Android RFCOMM Bluetooth API อย่างไรก็ตาม เนื่องจากบลูทูธเป็นโปรโตคอลการสื่อสารระหว่างอุปกรณ์ จึงทดสอบได้ไม่สมบูรณ์ด้วยยูนิตเทสต์ที่ทำงานในอุปกรณ์เครื่องเดียว ดังนั้น การติดตั้งใช้งานอุปกรณ์ต้องผ่านขั้นตอนทดสอบบลูทูธที่ดำเนินการโดยเจ้าหน้าที่ตามที่อธิบายไว้ด้านล่างด้วย

ขั้นตอนการทดสอบจะอิงตามแอปตัวอย่าง BluetoothChat ที่รวมอยู่ในต้นไม้โปรเจ็กต์โอเพนซอร์สของ Android ขั้นตอนนี้ต้องใช้อุปกรณ์ 2 เครื่อง ดังนี้

  • การติดตั้งใช้งานอุปกรณ์ที่คาดหวังซึ่งใช้บิลด์ซอฟต์แวร์ที่จะทดสอบ
  • การติดตั้งใช้งานอุปกรณ์แยกต่างหากที่ทราบว่าเข้ากันได้และมาจากรุ่นของการติดตั้งใช้งานอุปกรณ์ที่ทดสอบ นั่นคือการติดตั้งใช้งานอุปกรณ์ที่ "ทราบดีว่าใช้ได้"

ขั้นตอนการทดสอบด้านล่างจะเรียกอุปกรณ์เหล่านี้ว่าอุปกรณ์ "ที่อาจมีปัญหา" และ "ที่ทราบแล้วว่าใช้งานได้" ตามลำดับ

การตั้งค่าและการติดตั้ง

  1. สร้าง BluetoothChat.apk ผ่าน "make samples" จากโครงสร้างซอร์สโค้ด Android
  2. ติดตั้ง BluetoothChat.apk ในอุปกรณ์ที่ใช้งานได้
  3. ติดตั้ง BluetoothChat.apk ในอุปกรณ์ที่จะใช้

ทดสอบการควบคุมบลูทูธด้วยแอป

  1. เปิด BluetoothChat ในอุปกรณ์ที่เลือกขณะที่บลูทูธปิดอยู่
  2. ยืนยันว่าอุปกรณ์ที่เลือกเปิดบลูทูธหรือแจ้งให้ผู้ใช้เปิดบลูทูธด้วยกล่องโต้ตอบ

ทดสอบการจับคู่และการสื่อสาร

  1. เปิดแอป Bluetooth Chat ในอุปกรณ์ทั้ง 2 เครื่อง
  2. ทำให้อุปกรณ์ที่ทราบว่าใช้งานได้ค้นพบได้จากภายใน BluetoothChat (โดยใช้เมนู)
  3. ในอุปกรณ์ที่เป็นไปได้ ให้สแกนหาอุปกรณ์บลูทูธจากภายใน BluetoothChat (โดยใช้เมนู) และจับคู่กับอุปกรณ์ที่ทราบว่าใช้งานได้
  4. ส่งข้อความอย่างน้อย 10 ข้อความจากอุปกรณ์แต่ละเครื่อง และตรวจสอบว่าอุปกรณ์อีกเครื่องได้รับข้อความอย่างถูกต้อง
  5. ปิดแอป BluetoothChat ในอุปกรณ์ทั้ง 2 เครื่องโดยกดHome
  6. ยกเลิกการจับคู่อุปกรณ์แต่ละเครื่องโดยใช้แอปการตั้งค่าของอุปกรณ์

ทดสอบการจับคู่และการสื่อสารในทิศทางย้อนกลับ

  1. เปิดแอป Bluetooth Chat ในอุปกรณ์ทั้ง 2 เครื่อง
  2. ทำให้อุปกรณ์ที่เลือกค้นพบได้จากภายใน BluetoothChat (โดยใช้เมนู)
  3. ในอุปกรณ์ที่ใช้งานได้ ให้สแกนหาอุปกรณ์บลูทูธจากภายใน BluetoothChat (โดยใช้เมนู) และจับคู่กับอุปกรณ์ที่เป็นไปได้
  4. ส่งข้อความอย่างน้อย 10 ข้อความจากแต่ละอุปกรณ์ และตรวจสอบว่าอุปกรณ์อีกเครื่องได้รับข้อความอย่างถูกต้อง
  5. ปิดแอปแชทบลูทูธในอุปกรณ์ทั้ง 2 เครื่องโดยกด "ย้อนกลับ" ซ้ำๆ เพื่อไปที่ตัวเปิดแอป

ทดสอบการเปิดตัวอีกครั้ง

  1. เปิดแอป Bluetooth Chat อีกครั้งในอุปกรณ์ทั้ง 2 เครื่อง
  2. ส่งข้อความอย่างน้อย 10 ข้อความจากแต่ละอุปกรณ์ และตรวจสอบว่าอุปกรณ์อีกเครื่องได้รับข้อความอย่างถูกต้อง

หมายเหตุ: การทดสอบข้างต้นมีบางกรณีที่จบส่วนการทดสอบโดยใช้แป้น Home และบางกรณีที่ใช้แป้น Back การทดสอบเหล่านี้ไม่ซ้ำซ้อนและไม่ใช่ตัวเลือก วัตถุประสงค์คือเพื่อยืนยันว่า Bluetooth API และกองทำงานได้อย่างถูกต้อง ทั้งเมื่อกิจกรรมสิ้นสุดลงอย่างชัดเจน (เมื่อผู้ใช้กด "ย้อนกลับ" ซึ่งจะเรียกใช้ finish()) และส่งไปยังเบื้องหลังโดยนัย (เมื่อผู้ใช้กด "หน้าแรก") แต่ละชุดการทดสอบต้องทําตามที่อธิบายไว้