คำจำกัดความความเข้ากันได้ของ Android 2.1

ลิขสิทธิ์ © 2010, Google Inc. สงวนลิขสิทธิ์
ความเข้ากันได้@android.com

1. บทนำ

เอกสารนี้ระบุข้อกำหนดที่ต้องปฏิบัติตามเพื่อให้โทรศัพท์มือถือเข้ากันได้กับ Android 2.1

การใช้คำว่า "must", "must not", "required", "shall", "shall not", "should", "should not", "recommended", "may" และ "Optional" เป็นไปตามมาตรฐาน IETF กำหนดไว้ใน RFC2119 [ ทรัพยากร, 1 ]

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

หากต้องการพิจารณาว่าเข้ากันได้กับ Android 2.1 การใช้งานอุปกรณ์:

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

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

2. ทรัพยากร

  • ระดับความต้องการ IETF RFC2119: http://www.ietf.org/rfc/rfc2119.txt
  • ภาพรวมโปรแกรมความเข้ากันได้ของ Android: http://source.android.com/compatibility/index.html
  • โครงการ Android Open Source: http: //source.android.com/
  • คำจำกัดความและเอกสารประกอบ API: http://developer.android.com/reference/packages.html
  • การอ้างอิงสิทธิ์ของ Android: http://developer.android.com/reference/android/Manifest.permission
  • การอ้างอิง
  • html
  • android.os.Build: http://developer.android.com/reference/android/os/Build.html
  • สตริงเวอร์ชันที่อนุญาตของ Android 2.1: http://source.android.com/docs/compatibility/2.1/versions .html
  • คลาส android.webkit.WebView: http://developer.android.com/reference/android/webkit/WebView.html
  • HTML5: http://www.whatwg.org/specs/web-apps/current-work/
  • ข้อมูลจำเพาะ
  • multipage/
  • Dalvik Virtual Machine: มีอยู่ในซอร์สโค้ด Android ที่ dalvik/docs
  • AppWidgets: http://developer.android.com/guide/practices/ui_guidelines/widget_design.html
  • การแจ้งเตือน: http://developer.android.com /guide/topics/ui/notifiers/notifications.html
  • ทรัพยากรแอปพลิเคชัน: http://code.google.com/android/reference/available-resources.html
  • คำแนะนำสไตล์ไอคอนแถบสถานะ: http://developer.android.com/ guide/practices/ui_guideline /icon_design.html#statusbarstructure
  • ตัวจัดการการค้นหา: http://developer.android.com/reference/android/app/SearchManager.html
  • ขนมปังปิ้ง: http://developer.android.com/reference/android/widget /Toast.html
  • วอลเปเปอร์สด: https://android-developers.googleblog.com/2010/02/live-wallpapers.html
  • แอปสำหรับ Android: http://code.google.com/p/apps-for-android
  • ข้อมูลอ้างอิง เอกสารประกอบเครื่องมือ (สำหรับ adb, aapt, ddms): http://developer.android.com/guide/developing/tools/index.html
  • คำอธิบายไฟล์ APK ของ Android: http://developer.android.com/guide/topics/fundamentals .html
  • ไฟล์ Manifest: http://developer.android.com/guide/topics/manifest/manifest-intro.html
  • เครื่องมือทดสอบลิง: https://developer.android.com/studio/test/other-testing-tools/ ลิง
  • รองรับหลายหน้าจอ: http://developer.android.com/guide/practices/screens_support.html
  • android.content.res.Configuration: http://developer.android.com/reference/android/content/res/Configuration html
  • android.util.DisplayMetrics: http://developer.android.com/reference/android/util/DisplayMetrics.html
  • android.hardware.Camera: http://developer.android.com/reference/android/hardware/Camera html
  • พื้นที่พิกัดเซ็นเซอร์: http://developer.android.com/reference/android/hardware/SensorEvent.html
  • การอ้างอิงความปลอดภัยและการอนุญาตของ Android: http://developer.android.com/guide/topics/security/security.html
  • บลูทูธ API: http://developer.android.com/reference/android/bluetooth/package-summary.html
  • ทรัพยากรเหล่านี้จำนวนมากได้มาจาก Android 2.1 SDK โดยตรงหรือโดยอ้อม และจะมีฟังก์ชันการทำงานเหมือนกับข้อมูลในเอกสารประกอบของ SDK นั้น . ในกรณีใดๆ ที่ข้อกำหนดความเข้ากันได้นี้หรือชุดทดสอบความเข้ากันได้ไม่เห็นด้วยกับเอกสารประกอบ SDK เอกสารประกอบ SDK จะถือว่าเชื่อถือได้ รายละเอียดทางเทคนิคใดๆ ที่ให้ไว้ในข้อมูลอ้างอิงที่รวมอยู่ข้างต้นจะถือว่ารวมเป็นส่วนหนึ่งของคำจำกัดความความเข้ากันได้นี้

    3. ซอฟต์แวร์

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

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

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

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

    3.2. ความเข้ากันได้ของ Soft API

    นอกเหนือจาก API ที่ได้รับการจัดการจากส่วนที่ 3.1 แล้ว Android ยังมี API "soft" แบบรันไทม์เท่านั้นที่สำคัญ ในรูปแบบของสิ่งต่าง ๆ เช่น Intents การอนุญาต และลักษณะที่คล้ายกันของแอปพลิเคชัน Android ที่ไม่สามารถบังคับใช้ได้ที่แอปพลิเคชัน รวบรวมเวลา ส่วนนี้ให้รายละเอียดเกี่ยวกับ API แบบ "soft" และพฤติกรรมของระบบที่จำเป็นสำหรับความเข้ากันได้กับ Android 2.1 การใช้งานอุปกรณ์ต้องเป็นไปตามข้อกำหนดทั้งหมดที่นำเสนอในส่วนนี้

    3.2.1.

    สิทธิ์ ผู้ดำเนิน

    การ

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

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

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

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

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

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

    3.2.3.1. จุดประสงค์ของแอปพลิเคชันหลัก

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

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

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

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

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

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

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

    3.2.3.2. การแทนที่เจตนา

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

    หมายเหตุ: ส่วนนี้ได้รับการแก้ไขโดย Erratum EX6580

    3.2.3.3.

    ผู้ใช้อุปกรณ์

    Intent Namespaces

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

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

    3.2.3.4. Broadcast Intents

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

    3.3.

    โค้ดที่มีการจัดการ

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

    ที่ทำงานใน Dalvik สามารถเรียกใช้โค้ดเนทีฟที่ให้ไว้ในไฟล์ .apk ของแอปพลิเคชัน โดยเป็นไฟล์ ELF .so ที่คอมไพล์สำหรับสถาปัตยกรรมฮาร์ดแวร์อุปกรณ์ที่เหมาะสม การใช้งานอุปกรณ์ต้องมีการรองรับโค้ดที่ทำงานในสภาพแวดล้อมที่ได้รับการจัดการเพื่อเรียกใช้โค้ดเนทีฟ โดยใช้ซีแมนทิกส์ 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 เหล่านั้น

    ไลบรารีเหล่านี้ต้องเข้ากันได้กับแหล่งที่มา (เช่น เข้ากันได้กับส่วนหัว) และเข้ากันได้กับไบนารี (สำหรับสถาปัตยกรรมโปรเซสเซอร์ที่กำหนด) ด้วยเวอร์ชันที่จัดทำใน Bionic โดยโครงการ Android Open Source เนื่องจากการใช้งาน 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. ความเข้ากันได้ของ Web API

    นักพัฒนาและแอปพลิเคชันจำนวนมากอาศัยพฤติกรรมของคลาส android.webkit.WebView [ Resources, 8 ] สำหรับอินเทอร์เฟซผู้ใช้ ดังนั้นการใช้งาน WebView จะต้องเข้ากันได้ทั่วทั้งการใช้งาน Android การใช้งาน Android Open Source ใช้เครื่องมือการเรนเดอร์ WebKit เพื่อใช้งาน WebView

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

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

    อาจจัดส่งสตริงตัวแทนผู้ใช้ที่กำหนดเองในแอปพลิเคชันเบราว์เซอร์แบบสแตนด์อโลน ยิ่งไปกว่านั้น เบราว์เซอร์แบบสแตนด์อโลนอาจใช้เทคโนโลยีเบราว์เซอร์สำรอง (เช่น Firefox, Opera เป็นต้น) อย่างไรก็ตาม แม้ว่าจะมีการจัดส่งแอปพลิเคชันเบราว์เซอร์สำรอง ส่วนประกอบ WebView ที่มอบให้กับแอปพลิเคชันบุคคลที่สามจะต้องใช้ WebKit ตามที่กล่าวไว้ข้างต้น

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

    3.5. ความเข้ากันได้ของพฤติกรรม API

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

    • อุปกรณ์ต้องไม่เปลี่ยนพฤติกรรมหรือความหมายของ Intent มาตรฐาน
    • อุปกรณ์ต้องไม่เปลี่ยนวงจรชีวิตหรือความหมายวงจรชีวิตของส่วนประกอบระบบบางประเภท (เช่น บริการ กิจกรรม ContentProvider ฯลฯ)
    • อุปกรณ์ต้องไม่ เปลี่ยนความหมายของการอนุญาตเฉพาะ

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

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

    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 เท่านั้นที่สามารถทำได้ ในทำนองเดียวกัน Google ต้องไม่เพิ่ม API ไปยังเนมสเปซของบริษัทอื่น

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

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

    3.7.

    การใช้งานอุปกรณ์

    ที่เข้ากันได้กับเครื่องเสมือน

    ต้องรองรับข้อกำหนดไบต์โค้ด Dalvik Executable (DEX) แบบเต็มและซีแมนทิกส์ Dalvik Virtual Machine [ แหล่งข้อมูล, 10 ]

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

    3.8. ความเข้ากันได้ของส่วนต่อประสานผู้ใช้

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

    3.8.1. วิดเจ็ต

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

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

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

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

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

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

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

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

    3.8.4.

    แอปพลิเค

    ชัน Toasts

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

    3.8.5. วอลเปเปอร์สด

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

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

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

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

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

    • เครื่องคิดเลข (รวมอยู่ใน SDK)
    • Lunar Lander (รวมอยู่ใน SDK)
    • แอปพลิเคชัน "แอปสำหรับ Android" [ แหล่งข้อมูล, 18 ]

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

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

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

    แต่ละกรณีทดสอบในแอปพลิเคชันด้านบนจะต้องทำงานอย่างถูกต้องบนอุปกรณ์ การดำเนินการ

    5.

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

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

    6.

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

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

    อัตรา
    ชื่อเสียง
    ตัว เข้ารหัส รายละเอียด ตัวถอดรหัส ไฟล์/รูปแบบคอนเทนเนอร์
    AAC LC/LTP   X เนื้อหาโมโน/สเตอริโอโดยใช้อัตราบิตมาตรฐานรวมกันสูงสุด 160 kbps และอัตราการสุ่มตัวอย่างระหว่าง 8 ถึง 48kHz 3GPP (.3gp) และ MPEG-4 (.mp4, .m4a) ไม่รองรับ Raw 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 kbit/s ถึง 23.85 kbit/s สุ่มตัวอย่าง @ 16kHz 3GPP (.3gp)
    MP3   X โมโน/สเตอริโอ 8-320Kbps คงที่ (CBR) หรืออัตราบิตแปรผัน (VBR) MP3 (.mp3)
    MIDI   X MIDI ประเภท 0 และ 1 DLS เวอร์ชัน 1 และ 2 XMF และ Mobile XMF รองรับรูปแบบเสียงเรียกเข้า RTTTL/RTX, OTA และ iMelody Type 0 และ 1 (.mid, .xmf, .mxmf) รวมถึง RTTTL/RTX (.rtttl, .rtx), OTA (.ota) และ iMelody (.imy)
    Ogg Vorbis   เอ็กซ์   Ogg (.ogg)
    PCM   X 8- และ 16-bit linear PCM (อัตราสูงสุดถึงขีดจำกัดของฮาร์ดแวร์) WAVE (.wav)
    รูปภาพ
    JPEG X X base+progressive  
    กิฟ   เอ็กซ์   
    PNG X X   
    บีเอ็มพี   เอ็กซ์   
    วิดีโอ
    H.263 X X   ไฟล์ 3GPP (.3gp)
    H.264   เอ็กซ์   ไฟล์ 3GPP (.3gp) และ MPEG-4 (.mp4)
    MPEG4 Simple Profile   เอ็กซ์   ไฟล์ 3GPP (.3gp)

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

    7.

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

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

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

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

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

    • คำจำกัดความคลาสสำหรับ API ของส่วนประกอบจะต้องแสดง
    • พฤติกรรมของ API จะต้องถูกนำมาใช้เป็นแบบไม่มีการดำเนินการในรูปแบบที่สมเหตุสมผลบางประการ
    • วิธี API ต้องส่งคืนค่า null โดยที่ได้รับอนุญาตจากเอกสาร SDK
    • วิธี API ต้องส่งคืนการใช้งานแบบ no-op ของคลาสโดยที่เอกสาร SDK ไม่อนุญาตให้มีค่า null
    • ตัวอย่าง

    ทั่วไปของสถานการณ์ที่ข้อกำหนดเหล่านี้นำไปใช้คือ telephony API: แม้ใน non-op - อุปกรณ์โทรศัพท์ API เหล่านี้จะต้องถูกนำมาใช้โดยไม่มีการดำเนินการที่สมเหตุสมผล

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

    8.1. Display

    Android 2.1 มีสิ่งอำนวยความสะดวกที่ดำเนินการปรับขนาดและการเปลี่ยนแปลงอัตโนมัติบางอย่างภายใต้สถานการณ์บางอย่าง เพื่อให้แน่ใจว่าแอปพลิเคชันบุคคลที่สามจะทำงานได้ดีพอสมควรบนการกำหนดค่าฮาร์ดแวร์ที่หลากหลาย [ แหล่งข้อมูล 23 ] อุปกรณ์ต้องใช้พฤติกรรมเหล่านี้อย่างถูกต้อง ดังรายละเอียดในส่วนนี้

    สำหรับ Android 2.1 นี่คือการกำหนดค่าการแสดงผลที่พบบ่อยที่สุด:

    หน้าจอ ใหญ่ การใช้งานอุปกรณ์
    ประเภทหน้าจอ ความกว้าง (พิกเซล) ความสูง (พิกเซล) ช่วงความยาวแนวทแยง (นิ้ว) กลุ่มขนาดหน้าจอ กลุ่ม ความหนาแน่นของ
    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 ที่ไม่มีตัวระบุความหนาแน่นโดยค่าเริ่มต้นเป็น "ปานกลาง" (เรียกว่า "mdpi" ในเอกสารประกอบ SDK) เมื่อใช้งานด้วยความหนาแน่น "ต่ำ
    • " หน้าจอ การใช้งานอุปกรณ์ต้องลดขนาดสินทรัพย์สื่อ/mdpi ลง 0.75 เท่า
    • เมื่อทำงานบนหน้าจอที่มีความหนาแน่น "สูง" การใช้งานอุปกรณ์จะต้องขยายขนาดสินทรัพย์สื่อ/mdpi เป็น 1.5 เท่า
    • การใช้งานอุปกรณ์ต้องไม่ปรับขนาดสินทรัพย์ภายในช่วงความหนาแน่น และต้องปรับขนาดสินทรัพย์ตามปัจจัยเหล่านี้ระหว่างช่วงความหนาแน่น

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

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

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

    8.1.3.

    การใช้งานอุปกรณ์

    เมตริกการแสดงผล

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

    8.2.

    การใช้งานอุปกรณ์

    คีย์บอร์ด

    :

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

    8.3.

    การใช้งานอุปกรณ์

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

    :

    • อาจละเว้นตัวเลือกการนำทางแบบไม่สัมผัส (นั่นคือ อาจละเว้นแทร็กบอล ดีแพด หรือวงล้อ)
    • ต้องรายงานค่าที่ถูกต้องสำหรับ android.content.res.Configuration.navigation [ แหล่งข้อมูล 24 ]

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

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

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

    8.5.

    การใช้งานอุปกรณ์

    อินพุตหน้าจอสัมผัส

    :

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

    8.6

    การใช้งานอุปกรณ์

    USB

    :

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

    8.7 ปุ่มนำทาง ฟังก์ชั่น

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

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

    8.8.

    การใช้งานอุปกรณ์

    เครือข่ายข้อมูลไร้สาย

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

    หากการใช้งานอุปกรณ์รวมถึงรูปแบบเฉพาะที่ Android SDK มี API (นั่นคือ WiFi, GSM หรือ CDMA) การใช้งานจะต้องสนับสนุน API

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

    8.9.

    การใช้งานอุปกรณ์

    กล้อง

    ต้องมีกล้อง กล้องที่รวมอยู่:

    • ต้องมีความละเอียดอย่างน้อย 2 ล้านพิกเซล
    • ควรมีฮาร์ดแวร์อัตโนมัติโฟกัสหรือซอฟต์แวร์โฟกัสอัตโนมัติที่ใช้ในไดรเวอร์
    • กล้อง ฮาร์ดแวร์
    • อาจรวมแฟลช หากกล้องมีแฟลชไฟแฟลชจะต้องไม่ติดสว่างในขณะที่ Android.hardware.camera.previewCallback อินสแตนซ์ได้ลงทะเบียนบนพื้นผิวตัวอย่างกล้องเว้นแต่แอ FLASH_MODE_AUTO ชันจะเปิดใช้งาน FLASH_MODE_ON อย่างชัดเจน Camera.Parameters Object โปรดทราบว่าข้อ จำกัด นี้ไม่ได้ใช้กับแอปพลิเคชันกล้องระบบในตัวของอุปกรณ์ แต่เฉพาะกับแอพพลิเคชั่นของบุคคลที่สามโดยใช้ 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 ข้อมูลในไบต์ [] ที่ส่งผ่านไปยัง OnPreviewFrame () จะต้องอยู่ในรูปแบบการเข้ารหัส NV21 (นี่คือรูปแบบที่ใช้โดยตระกูลฮาร์ดแวร์ 7K) นั่นคือ NV21 จะต้องเป็นค่าเริ่มต้น

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

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

    8.10.

    การใช้งานอุปกรณ์

    accelerometer

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

    8.11.

    การใช้งานอุปกรณ์

    เข็มทิศ

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

    8.12.

    การใช้งานอุปกรณ์

    GPS

    จะต้องมี GPS และควรรวมเทคนิค "ช่วย GPS" บางรูปแบบเพื่อลดเวลาการล็อค GPS

    8.13. โทรศัพท์

    Android 2.1 อาจใช้กับอุปกรณ์ที่ไม่รวมฮาร์ดแวร์โทรศัพท์ นั่นคือ Android 2.1 เข้ากันได้กับอุปกรณ์ที่ไม่ใช่โทรศัพท์ อย่างไรก็ตามหากการใช้งานอุปกรณ์รวมถึง GSM หรือ CDMA Telephony จะต้องใช้การสนับสนุนอย่างเต็มที่สำหรับ API สำหรับเทคโนโลยีนั้น การใช้งานอุปกรณ์ที่ไม่รวมฮาร์ดแวร์โทรศัพท์จะต้องใช้ API แบบเต็มเป็นแบบไม่มี

    ดูส่วนที่ 8.8 เครือข่ายข้อมูลไร้สาย

    8.14.

    การใช้งาน

    หน่วยความจำและ

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

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

    หมายเหตุ: ส่วนนี้ได้รับการแก้ไขโดย Erratum EX6580

    8.15. การใช้งานอุปกรณ์จัดเก็บข้อมูลที่ใช้ร่วมกันของแอปพลิเค

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

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

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

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

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

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

    หมายเหตุ : ส่วนนี้ถูกเพิ่มโดย Erratum EX6580

    8.16.

    การใช้งานอุปกรณ์

    บลูทู ธ

    จะต้องมีตัวรับส่งสัญญาณบลูทู ธ

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

    หมายเหตุ: ส่วนนี้ถูกเพิ่มโดย Erratum EX6580

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

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

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

    10.

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

    10.1.

    การใช้งานอุปกรณ์

    การอนุญาต

    จะต้องสนับสนุนโมเดลการอนุญาต Android ตามที่กำหนดไว้ในเอกสารเกี่ยวกับ Android Developer [ Resources, 28 ] โดยเฉพาะการใช้งานจะต้องบังคับใช้แต่ละการอนุญาตที่กำหนดตามที่อธิบายไว้ในเอกสาร SDK; ไม่อนุญาตให้ใช้สิทธิ์เปลี่ยนแปลงหรือเพิกเฉย การใช้งานอาจเพิ่มสิทธิ์เพิ่มเติมหากสตริง ID สิทธิ์ใหม่ไม่ได้อยู่ใน Android* เนมสเปซ

    10.2.

    การใช้งานอุปกรณ์

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

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

    10.3.

    การใช้งานอุปกรณ์

    การอนุญาตของระบบไฟล์

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

    11.

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

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

    12. การใช้งานอุปกรณ์ซอฟต์แวร์ที่อัปเดตได้

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

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

    • การดาวน์โหลด Over-the-Air (OTA) ด้วยการอัปเดต
    • ออฟไลน์
    • ผ่านการอัปเดตการปรับปรุงใหม่ ที่เก็บข้อมูลที่ถอดออกได้

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

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

    13. ติดต่อเรา

    คุณสามารถติดต่อผู้เขียนเอกสารได้ที่ compatibility@android.com เพื่อขอคำชี้แจงและเพื่อนำเสนอปัญหาใด ๆ ที่คุณคิดว่าเอกสารไม่ครอบคลุม