รายการตรวจสอบการทดสอบ HAL ของกล้อง

หน้านี้จะแสดงการทดสอบทั้งหมดที่มีสำหรับการประเมินกล้อง Android ชั้นแอบสแตรกชันของฮาร์ดแวร์ (HAL) มีไว้สำหรับอุปกรณ์ดั้งเดิม ผู้ผลิต (OEM) และการใช้งาน ผู้ให้บริการประมวลผล (AP) เพื่อให้สามารถตรวจสอบว่าได้ใช้งานกล้องอย่างถูกต้อง HAL ที่มีข้อบกพร่องขั้นต่ำ แม้ว่านี่จะเป็นการเพิ่ม ผลิตภัณฑ์ Android นี้โดยสมัครใจ ความเข้ากันได้ Test Suite (CTS) ช่วยเพิ่มความครอบคลุมของการทดสอบกล้องได้อย่างมากและ ก็จะสามารถระบุข้อบกพร่องได้อย่างแน่นอน

การผ่านการทดสอบเหล่านี้จะช่วยให้ OEM ตรวจสอบ ไม่ว่าพวกเขาจะผสานรวม Android ฮาร์ดแวร์กล้อง อินเทอร์เฟซ Abstractionion Layer (HAL) 3 เมื่อปฏิบัติตามรายการทั้งหมดใน การตรวจสอบการติดตั้งใช้งานอุปกรณ์ อาจถือว่าสมบูรณ์ในแง่ของ ไปยังอินเทอร์เฟซ HAL ของกล้อง Android ซึ่งจะทำให้อุปกรณ์ สนับสนุน android.hardware.camera2 แพ็กเกจที่ แอปกล้องที่สร้างขึ้นมา

ข้อมูลจำเพาะ HAL3 ของกล้อง

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

ข้อกำหนด HAL ปัจจุบันกำหนดไว้ในไฟล์เหล่านี้ภายใน Android ชุดเครื่องมือการพัฒนาแพลตฟอร์ม Android (PDK) ทั่วไป 5.0 ขึ้นไป):

ประเภทการทดสอบกล้อง

การทดสอบประเภทหลักๆ ที่พร้อมใช้งานสำหรับกล้อง Android รุ่นล่าสุดมีดังนี้ พร้อมทั้งการอ้างอิงถึงวิธีการที่เกี่ยวข้องด้านล่าง

รายละเอียดการทดสอบประเภทต่างๆ เหล่านี้มีดังต่อไปนี้ การทดสอบเหล่านี้ แสดงตามลำดับเวลาที่คาดว่าจะดำเนินการ OEM ได้ ให้พวกเขา

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

การทดสอบ Vendor Test Suite (VTS)

Android Vendor Test Suite (VTS) คือชุดทดสอบที่ทำงานบน ระดับอินเทอร์เฟซ HIDL ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้ VTS ได้ที่ ชุดทดสอบของผู้ให้บริการ

การทดสอบชุดทดสอบความเข้ากันได้ (CTS)

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

เส้นทางเริ่มต้นสำหรับการทดสอบ CTS ของกล้องคือ platform/cts

เมื่อใช้ CTS ของกล้องสำหรับอุปกรณ์ที่รองรับกล้องภายนอก (เช่น เว็บแคม USB) คุณจะต้องเสียบอุปกรณ์เมื่อเรียกใช้ CTS หรือการทดสอบ จะล้มเหลวโดยอัตโนมัติ ตัวอย่างกล้องภายนอก ได้แก่ Logitech HD Pro Webcam C920 และ Microsoft LifeCam HD-3000

โปรดดู CTS ข้อมูลเบื้องต้น และหน้าย่อยสำหรับวิธีการทั่วไปเกี่ยวกับการเรียกใช้ CTS

การทดสอบ CTS สำหรับ API ของ android.hardware.Camera

ดูการทดสอบกล้องเหล่านี้ได้ในส่วนcts/tests/tests/

  • hardware/src/android/hardware/cts/CameraTest.java
  • hardware/src/android/hardware/cts/CameraGLTest.java
  • hardware/src/android/hardware/cts/Camera_SizeTest.java
  • permission/src/android/permission/cts/CameraPermissionTest.java

การทดสอบ CTS สำหรับ API ของ android.hardware.camera2

ดูการทดสอบกล้องเหล่านี้ได้ในส่วนcts/tests/tests/

  • hardware/src/android/hardware/camera2/cts/*
  • permission/src/android/permission/cts/Camera2PermissionTest.java

การทดสอบกล้องของ CTS Verifier

ค้นหาการทดสอบกล้องเหล่านี้ได้ในส่วนต่อไปนี้ cts/apps/CtsVerifier/src/com/android/cts/verifier/camera/*

การทดสอบชุดทดสอบรูปภาพ (ITS)

ชุดทดสอบรูปภาพจากกล้อง (ITS) จะทดสอบความถูกต้องของรูปภาพเป็นหลัก หากต้องการทำการทดสอบ ให้เรียกใช้สคริปต์ Python บนเวิร์กสเตชันที่มี อุปกรณ์ Android เชื่อมต่อผ่าน USB

โครงสร้างพื้นฐานและการทดสอบ ITS ของกล้องอยู่ใน ไดเรกทอรี cts/apps/CameraITS การทดสอบแต่ละรายการอยู่ในไดเรกทอรีย่อย tests/scene#

ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีตั้งค่าและเรียกใช้การทดสอบได้ที่ กล้องไอที

โปรดดูฉากและคำอธิบายการทดสอบที่หัวข้อการทดสอบ ITS ของกล้อง

ทางไอทีจะผ่านหรือไม่ผ่าน การทดสอบตามคำสั่งทั้งหมดในแต่ละโฟลเดอร์ฉากต้องผ่าน การทดสอบที่ไม่มีข้อบังคับอาจล้มเหลวและยังคงนับเป็น "ผ่าน" CtsVerifier

สถานการณ์การทดสอบการทดสอบของ ITS ที่ไม่มีการทดสอบใน CTS และเป็นสิ่งสำคัญ ของแผนการทดสอบ HAL 3.2

การทดสอบเฟรมเวิร์กสื่อ

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

เส้นทางเริ่มต้นของการทดสอบเฟรมเวิร์กสื่อที่เกี่ยวข้องกับกล้องคือ platform/frameworks/base

ค้นหาซอร์สโค้ดสำหรับการทดสอบได้ที่นี่: frameworks/base/media/tests/MediaFrameworkTest

วิธีตั้งค่าการทดสอบเหล่านี้

make mediaframeworktest
adb install out/target/product/name/data/app/mediaframeworktest.apk

โดยที่ตัวแปร name แสดงถึงแท็ก ที่มีผลิตภัณฑ์ของผู้ให้บริการ

ค้นหาการทดสอบทั้งหมดในไดเรกทอรีหรือไดเรกทอรีย่อยต่อไปนี้

frameworks/base/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest

ไดเรกทอรีย่อยแต่ละรายการแสดงถึงคลาสของการทดสอบดังนี้

  • functional/
  • integration/
  • performance/
  • power/
  • stress/
  • unit/

เรียกใช้การทดสอบเฟรมเวิร์กสื่อ

วิธีดูการทดสอบที่มีทั้งหมดมีดังนี้

adb shell pm list instrumentation

วิธีนี้จะได้ผลลัพธ์ที่มีลักษณะเช่นนี้

instrumentation:com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner
(target=com.android.mediaframeworktest)
instrumentation:com.android.mediaframeworktest/.MediaRecorderStressTestRunner
(target=com.android.mediaframeworktest)
instrumentation:com.android.mediaframeworktest/.MediaFrameworkPerfTestRunner
(target=com.android.mediaframeworktest)
instrumentation:com.android.mediaframeworktest/.MediaFrameworkPowerTestRunner
(target=com.android.mediaframeworktest)

ระบุและแยกคอมโพเนนต์ (ระหว่าง instrumentation: และ(target=com.android.mediaframeworktest) จากแต่ละบรรทัดทดสอบ คอมโพเนนต์ประกอบด้วยชื่อแพ็กเกจเป้าหมาย (com.android.mediaframeworktest) และชื่อผู้ดำเนินการทดสอบ (MediaFrameworkTestRunner)

ตัวอย่างเช่น

com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner
com.android.mediaframeworktest/.MediaRecorderStressTestRunner
com.android.mediaframeworktest/.MediaFrameworkPerfTestRunner
com.android.mediaframeworktest/.MediaFrameworkPowerTestRunner

จากนั้นคุณอาจส่งแต่ละคอมโพเนนต์ไปยัง adb shell am instrument เช่น ดังนั้น:

adb shell am instrument -w component.name

โดยที่ component.name เท่ากับค่าที่ดึงมา ที่ด้านบน สำหรับ ตัวอย่าง:

adb shell am instrument -w com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner

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

หากต้องการเรียกใช้การทดสอบคลาสเดียว ให้ส่งผ่านอาร์กิวเมนต์ -e class เช่น ดังนี้

adb shell am instrument -e class com.android.mediaframeworktest.integration.CameraBinderTest -w com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner

หากต้องการเรียกใช้เพียงเมธอดเดียวในคลาสทดสอบ ให้ใส่เครื่องหมายสี่เหลี่ยม (#) และพารามิเตอร์ ชื่อเมธอด (ในกรณีนี้คือ testConnectPro) เป็นชื่อคลาส ตัวอย่างเช่น

adb shell am instrument -e class 'com.android.mediaframeworktest.integration.CameraBinderTest#testConnectPro' -w com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner

การทดสอบการทำงานของการตั้งค่าสื่อ

ต่อไปนี้เป็นตัวอย่างการทดสอบการทำงาน การทดสอบนี้จะยืนยันพื้นฐานของ ฟังก์ชันการตั้งค่ากล้องแบบต่างๆ (เช่น Flash, การรับแสง, WB, ฉาก, ขนาดภาพ และ GeoTag)

เรียกใช้คำสั่งทดสอบ ดังนี้

adb shell am instrument -w -r  -e delay_msec 15 -e log true -e class com.android.mediaframeworktest.functional.camera.CameraPairwiseTest com.android.mediaframeworktest/com.android.mediaframeworktest.CameraStressTestRunner

การทดสอบการผสานรวมสื่อ

ด้านล่างคือตัวอย่างการทดสอบการผสานรวมในกรณีนี้ mediaframeworktest/integration/cameraBinderTest.java และ mediaframeworktest/cameraStressTestRunner.java

adb  shell am instrument -e class \ 'com.android.mediaframeworktest.integration.CameraBinderTest' -w \ 'com.android.mediaframeworktest/.CameraStressTestRunner'

หากทำสำเร็จ เอาต์พุตจะมีลักษณะดังนี้

-----

com.android.mediaframeworktest.integration.CameraBinderTest:...........
Test results for CameraStressTestRunner=...........
Time: 3.328

OK (11 tests)

-----

การทดสอบประสิทธิภาพของสื่อ

การทดสอบหน่วยความจำหน้าตัวอย่างนี้จะเปิดขึ้นและเผยแพร่ภาพตัวอย่างจากกล้องเป็นเวลา 200 ครั้ง ในการทำซ้ำทุกๆ 20 ครั้ง ระบบจะบันทึกสแนปชอตของ Mediaserver ของ ps และจะเปรียบเทียบการใช้งานหน่วยความจำที่แตกต่างกันหลังทำซ้ำ 200 ครั้ง การทดสอบจะ ไม่ผ่าน หากความต่างมากกว่า 150 กม.

เรียกใช้คำสั่งทดสอบ ดังนี้

adb shell am instrument -w -r  -e class com.android.mediaframeworktest.performance.MediaPlayerPerformance#testCameraPreviewMemoryUsage com.android.mediaframeworktest/.MediaFrameworkPerfTestRunner

ดูเอาต์พุตโดยละเอียดเพิ่มเติมได้ในลิงก์ต่อไปนี้ /sdcard/mediaMemOutput.txt

การทดสอบหน่วยสื่อ

คำสั่งสำหรับเรียกใช้การทดสอบหน่วยนั้นคล้ายกันทั้งหมด ตัวอย่างเช่น สำหรับ CameraMetadataTest.java คำสั่งจะเป็น

adb shell am instrument -e class 'com.android.mediaframeworktest.unit.CameraMetadataTest' -w 'com.android.mediaframeworktest/.CameraStressTestRunner'

การทดสอบความเครียดของสื่อ

การทดสอบนี้เป็นการเน้นการจับภาพและการบันทึกวิดีโอของกล้อง

เรียกใช้คำสั่งทดสอบ ดังนี้

adb shell am instrument -w com.google.android.camera.tests/com.android.camera.stress.CameraStressTestRunner

การทดสอบทั้งหมดควรผ่าน

การทดสอบ TestingCam ด้วยตนเอง

คุณควรเรียกใช้แอป TestingCam ด้วยตนเองโดยได้ดำเนินการตรวจสอบดังต่อไปนี้ แหล่งที่มาของ TestingCam อยู่ที่นี่ pdk/apps/TestingCamera/

โฟกัสไร้ที่สิ้นสุดด้วยการเอียงกล้อง

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

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

การทดสอบด้วยตนเอง

ควรเรียกใช้แอป TestingCam2 ด้วยตนเอง โดยจะต้องตรวจสอบดังนี้ ที่ได้รับ แหล่งที่มาของ TestingCam2 อยู่ที่นี่ pdk/apps/TestingCamera2/

จับภาพ JPEG

เริ่ม TestingCam2 แล้วกดปุ่ม JPEG รูปภาพ ที่ปรากฏทางด้านขวาของภาพในช่องมองภาพควรปรากฏเหมือนกับ ช่องมองภาพ รวมถึงการมีแนวการวางแบบเดียวกัน