หน้านี้จะแสดงการทดสอบทั้งหมดที่ใช้ประเมินเลเยอร์การแยกแยะฮาร์ดแวร์ (HAL) ของกล้อง Android เหมาะสำหรับผู้ผลิตอุปกรณ์ดั้งเดิม (OEM) และผู้ให้บริการ เครื่องมือประมวลผลแอปพลิเคชัน (AP) ดังนั้นจึงต้องตรวจสอบว่าได้ติดตั้งใช้งาน HAL ของกล้องอย่างถูกต้องและมีข้อผิดพลาดขั้นต่ำ แม้ว่าการทดสอบนี้จะเพิ่มเข้ามาในชุดเครื่องมือทดสอบความเข้ากันได้ (CTS) ของ Android โดยสมัครใจ แต่การทดสอบนี้จะช่วยเพิ่มการครอบคลุมการทดสอบกล้องได้อย่างมากและจะระบุข้อบกพร่องที่อาจเกิดขึ้นได้อย่างแน่นอน
การผ่านการทดสอบเหล่านี้เป็นการยืนยันว่า OEM ได้ผสานรวมอินเทอร์เฟซเลเยอร์การแยกแยะ (HAL) 3 ของฮาร์ดแวร์กล้อง Android อย่างถูกต้อง เมื่อเป็นไปตามรายการทั้งหมดในเช็กลิสต์ ระบบอาจถือว่าการติดตั้งใช้งานอุปกรณ์สมบูรณ์สำหรับอินเทอร์เฟซ HAL ของกล้อง Android ซึ่งจะช่วยให้อุปกรณ์รองรับแพ็กเกจ
android.hardware.camera2
ที่แอปกล้องสร้างขึ้นได้อย่างถูกต้อง
ข้อกําหนดของ HAL3 ของกล้อง
ข้อมูลจำเพาะของกล้อง Android HAL3 เป็นแหล่งข้อมูลที่เชื่อถือได้ว่าอุปกรณ์ใดต้องเป็นไปตามข้อกำหนด หน้านี้มีสรุปการทดสอบทั้งหมดที่สามารถใช้เป็นรายการตรวจสอบได้ ผู้ใช้งาน Camera HAL (เช่น ผู้ให้บริการ AP) ควรอ่านข้อกำหนดของ Camera HAL3 ทีละบรรทัด และตรวจสอบว่าอุปกรณ์ของตนเป็นไปตามข้อกำหนดดังกล่าว
ข้อกำหนด HAL ปัจจุบันจะระบุไว้ในไฟล์เหล่านี้ภายใน Android Platform Development Kit (PDK) ทั่วไปของ Android 5.0 ขึ้นไป
- อินเทอร์เฟซและข้อมูลจำเพาะของ Camera HAL 3.x:
hardware/libhardware/include/hardware/camera3.h
,hardware/libhardware/include/hardware/camera_common.h
- ข้อกำหนดข้อมูลเมตา HAL 3.x ของกล้อง:
system/media/camera/docs/docs.html
- อินเทอร์เฟซและข้อกำหนดรูปแบบพิกเซล HAL:
system/core/libsystem/include/system/graphics.h
ประเภทการทดสอบกล้อง
การทดสอบประเภทหลักๆ ที่มีให้สำหรับกล้อง Android เวอร์ชันล่าสุดมีดังนี้ พร้อมทั้งลิงก์ไปยังวิธีการที่เกี่ยวข้องด้านล่าง
- ชุดทดสอบของผู้ให้บริการ (VTS): การทดสอบที่ทดสอบอินเทอร์เฟซ HAL ของกล้องโดยตรง
- ชุดเครื่องมือทดสอบความเข้ากันได้ (CTS): การทดสอบ Android อัตโนมัติแบบมาตรฐานเพื่อให้มั่นใจว่าอุปกรณ์ใช้งานร่วมกันได้ โปรดดูรายละเอียดเพิ่มเติมที่หัวข้อชุดเครื่องมือทดสอบความเข้ากันได้และภาพรวมของฟีเจอร์การรวมข้อมูลการซื้อขาย
- ชุดทดสอบรูปภาพ (ITS): เรียกใช้การทดสอบด้วยตนเองเพื่อให้แน่ใจว่ารูปภาพถูกต้อง โปรดดูรายละเอียดเพิ่มเติมที่หัวข้อ ITS ของกล้อง
- การทดสอบ TestingCam ด้วยตนเอง:
เรียกใช้จากแหล่งที่มาใน
pdk/apps/TestingCamera/
- การทดสอบด้วยตนเอง TestingCam2.1
การทดสอบ: เรียกใช้จากแหล่งที่มาใน
pdk/apps/TestingCamera2/
รายละเอียดการทดสอบทุกประเภทด้านล่างนี้ การทดสอบเหล่านี้จะแสดงตามลำดับเวลาที่ 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
การทดสอบ CTS สำหรับ android.hardware.Camera
API
ดูการทดสอบกล้องเหล่านี้ได้ในส่วน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 สำหรับ android.hardware.camera2
API
ค้นหาการทดสอบกล้องเหล่านี้ในส่วน 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 ของกล้อง
ดูคำอธิบายฉากและทดสอบได้ที่การทดสอบ ITS ของกล้อง
การทดสอบ 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
) และชื่อตัวดำเนินการทดสอบ (MediaFramework
)
เช่น
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 ที่คลาสตัวดำเนินการทดสอบอยู่
หากต้องการเรียกใช้การทดสอบชั้นเรียนเดียว ให้ส่ง
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
การทดสอบฟังก์ชันการตั้งค่าสื่อ
ต่อไปนี้คือตัวอย่างการเรียกใช้การทดสอบฟังก์ชันการทำงาน การทดสอบนี้ตรวจสอบฟังก์ชันพื้นฐานของการตั้งค่ากล้องแบบต่างๆ (เช่น แฟลช การรับแสง WB ฉาก ขนาดรูปภาพ และแท็กภูมิศาสตร์)
เรียกใช้คําสั่งทดสอบ
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 ครั้ง ระบบจะบันทึกภาพรวมของ ps mediaserver และเปรียบเทียบการใช้หน่วยความจำที่แตกต่างกันหลังจากการวนซ้ำ 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 ด้วยตนเอง โดยทำการตรวจสอบต่อไปนี้ แหล่งที่มาของ TestingCam2 อยู่ที่นี่ pdk/apps/TestingCamera2/
จับภาพ JPEG
เริ่ม TestingCam2 แล้วกดปุ่ม JPEG ภาพที่ปรากฏทางด้านขวาของภาพในช่องมองภาพควรปรากฏเหมือนกับช่องมองภาพ รวมทั้งมีการวางแนวเดียวกัน