หน้านี้แสดงรายการการทดสอบทั้งหมดสำหรับการประเมินฮาร์ดแวร์นามธรรมของกล้อง Android (HAL) มีไว้สำหรับผู้ผลิตอุปกรณ์ดั้งเดิม (OEM) และผู้จำหน่ายโปรเซสเซอร์แอพพลิเคชั่น (AP) ดังนั้นจึงอาจรับประกันการใช้งานกล้อง HAL อย่างเหมาะสมโดยมีข้อบกพร่องขั้นต่ำ แม้ว่านี่จะเป็นการเพิ่มโดยสมัครใจของชุดทดสอบความเข้ากันได้ของ Android (CTS) แต่ก็เพิ่มความครอบคลุมในการทดสอบกล้องได้อย่างมาก และจะระบุจุดบกพร่องที่อาจเกิดขึ้นได้อย่างแน่นอน
ด้วยการผ่านการทดสอบเหล่านี้ OEM จะตรวจสอบว่าได้รวมอินเทอร์เฟซ 3 ของฮาร์ดแวร์กล้อง Android อย่างถูกต้องหรือไม่ เมื่อปฏิบัติตามรายการทั้งหมดในรายการตรวจสอบ การใช้งานอุปกรณ์อาจถือว่า สมบูรณ์ ตามอินเทอร์เฟซ Android Camera HAL ซึ่งจะทำให้อุปกรณ์สามารถรองรับแพ็คเกจ android.hardware.camera2
ที่แอปกล้องสร้างขึ้นได้อย่างเหมาะสม
ข้อมูลจำเพาะของกล้อง HAL3
ข้อกำหนด HAL3 ของกล้อง Android เป็นแหล่งข้อมูลที่เชื่อถือได้ว่าอุปกรณ์ใดต้องเป็นไปตามข้อกำหนด หน้านี้ให้ข้อมูลสรุปของการทดสอบทั้งหมดที่สามารถใช้เป็นรายการตรวจสอบได้ ผู้ใช้งานกล้อง HAL (เช่น ผู้จำหน่าย AP) ควรปฏิบัติตามข้อกำหนดของกล้อง HAL3 ทีละบรรทัด และตรวจสอบให้แน่ใจว่าอุปกรณ์ของตนเป็นไปตามข้อกำหนดดังกล่าว
ข้อกำหนด HAL ปัจจุบันถูกกำหนดไว้ในไฟล์เหล่านี้ภายใน Android 5.0 และชุดพัฒนาแพลตฟอร์ม Android ทั่วไป (PDK) ทั่วไปที่ใหม่กว่า:
- อินเทอร์เฟซและข้อมูลจำเพาะของกล้อง 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 รุ่นล่าสุด พร้อมด้วยการอ้างอิงถึงคำแนะนำที่เกี่ยวข้องด้านล่าง:
- Vendor Test Suite (VTS) : การทดสอบที่ทดสอบอินเทอร์เฟซ HAL ของกล้องโดยตรง
- ชุดทดสอบความเข้ากันได้ (CTS) : การทดสอบ Android มาตรฐานแบบอัตโนมัติเพื่อให้แน่ใจว่าอุปกรณ์เข้ากันได้ สำหรับรายละเอียดเพิ่มเติม โปรดดู ที่ชุดทดสอบความเข้ากันได้ และ ภาพรวมของสหพันธ์การค้า
- Image Test Suite (ITS) : ดำเนินการทดสอบด้วยตนเองเพื่อให้แน่ใจว่าภาพถูกต้อง สำหรับรายละเอียดเพิ่มเติม โปรดดูที่ Camera ITS
- การทดสอบด้วยตนเองการทดสอบ Cam : เรียกใช้จากแหล่งที่มาใน
pdk/apps/TestingCamera/
- การทดสอบ Manual TestingCam2.1 : เรียกใช้จากแหล่งที่มาใน
pdk/apps/TestingCamera2/
ประเภทการทดสอบทั้งหมดเหล่านี้มีรายละเอียดอธิบายไว้ด้านล่าง การทดสอบเหล่านี้นำเสนอตามลำดับเวลาซึ่ง OEM คาดว่าจะดำเนินการ
ตัวอย่างเช่น หากอุปกรณ์ไม่ผ่านการทดสอบดั้งเดิม อุปกรณ์นั้นจะล้มเหลวในการทดสอบชุดทดสอบความเข้ากันได้ (CTS) ครั้งต่อไปอย่างแน่นอน และหากอุปกรณ์ล้มเหลว CTS จะมีประโยชน์เพียงเล็กน้อยในการดำเนินการต่อไปยัง Image Test Suite (ITS) เราขอแนะนำให้จัดการกับความล้มเหลวในการทดสอบแต่ละประเภทก่อนที่จะดำเนินการทดสอบชุดถัดไป
การทดสอบชุดทดสอบผู้ขาย (VTS)
ชุดทดสอบผู้จำหน่าย Android (VTS) เป็นชุดทดสอบที่ทำงานในระดับอินเทอร์เฟซ HIDL สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการใช้ VTS โปรดดูที่ Vendor Test Suite
การทดสอบชุดทดสอบความเข้ากันได้ (CTS)
การทดสอบชุดทดสอบความเข้ากันได้ของกล้อง Android (CTS) มุ่งเน้นไปที่ความเข้ากันได้ของอุปกรณ์ สำหรับข้อมูลเกี่ยวกับการตั้งค่าสภาพแวดล้อมการทดสอบ โปรดดูที่ การตั้งค่า CTS
เส้นทางเริ่มต้นสำหรับการทดสอบ CTS ของกล้องคือ: platform/cts
เมื่อใช้งานกล้อง CTS สำหรับอุปกรณ์ที่รองรับกล้องภายนอก (เช่น เว็บแคม USB) คุณต้องเสียบอุปกรณ์ไว้เมื่อใช้งาน CTS ไม่เช่นนั้นการทดสอบจะล้มเหลวโดยอัตโนมัติ ตัวอย่างของกล้องภายนอก ได้แก่: Logitech HD Pro Webcam C920 และ Microsoft LifeCam HD-3000
ดู บทนำ 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
โครงสร้างพื้นฐานและการทดสอบของ Camera ITS อยู่ในไดเร็กทอรี cts/apps/CameraITS
การทดสอบแต่ละครั้งจะอยู่ในไดเรกทอรีย่อย tests/scene #
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการตั้งค่าและรันการทดสอบ โปรดดูที่ Camera 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/
เรียกใช้การทดสอบ Media Framework
หากต้องการดูการทดสอบทั้งหมดที่มีอยู่::
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 TestRunner
MediaFramework TestRunner
)
ตัวอย่างเช่น:
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
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 ฉาก ขนาดภาพ และ 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 ครั้งแต่ละครั้ง สแน็ปช็อตของ ps mediaserver จะถูกบันทึก และจะเปรียบเทียบการใช้งานหน่วยความจำที่แตกต่างกันหลังจากการวนซ้ำ 200 ครั้ง การทดสอบจะล้มเหลวหากความแตกต่างมากกว่า 150kM
รันคำสั่งทดสอบ:
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
การทดสอบทั้งหมดควรผ่าน
การทดสอบด้วยตนเองการทดสอบ Cam
ควรรันแอป TestingCam ด้วยตนเอง โดยมีการตรวจสอบดังต่อไปนี้ แหล่งที่มาของ TestingCam อยู่ที่นี่: pdk/apps/TestingCamera/
โฟกัสแบบอินฟินิตี้ด้วยการเอียงกล้อง
เริ่ม TestingCam เปิดการแสดงตัวอย่าง และตรวจสอบให้แน่ใจว่าโหมดโฟกัสอัตโนมัติถูกตั้งค่าไว้ที่ระยะอนันต์ ใช้ปุ่ม ถ่ายภาพ เพื่อ ถ่ายภาพวัตถุระยะไกล (ห่างออกไปอย่างน้อย 10 เมตร) โดยให้กล้องหันในแนวนอน ขึ้น (ใกล้กับแนวตั้ง) และลง (ใกล้แนวตั้ง) ตัวอย่างการยิงขึ้นอาจเป็นใบไม้/กิ่งก้านสูงของต้นไม้จากด้านล่าง และตัวอย่างการยิงลงอาจเป็นถนนที่มองจากหลังคาอาคาร ในทุกกรณี ตัวแบบที่อยู่ห่างไกลควรมีความคมชัดและอยู่ในโฟกัส บันทึกและดูภาพในมุมมองแกลเลอรี่เพื่อให้คุณสามารถซูมเข้าและตรวจสอบความคมชัดได้ง่ายขึ้น
โปรดทราบว่ากล้องที่มีตัวกระตุ้น VCM จะผ่านการทดสอบนี้ จะต้องมีระบบควบคุม AF แบบวงรอบปิด หรือจะต้องมีการแก้ไข SW บางประเภทตามการใช้ข้อมูลมาตรความเร่งเพื่อกำหนดทิศทางของกล้อง นอกจากนี้ จำเป็นต้องมีการสอบเทียบตำแหน่งอนันต์ของเลนส์ที่เชื่อถือได้จากโรงงานด้วย
การทดสอบด้วยตนเองการทดสอบ Cam2
ควรรันแอป TestingCam2 ด้วยตนเอง โดยดำเนินการตรวจสอบต่อไปนี้ แหล่งที่มาของ TestingCam2 อยู่ที่นี่: pdk/apps/TestingCamera2/
การจับภาพ JPEG
เริ่มการทดสอบCam2 และกดปุ่ม JPEG รูปภาพที่ปรากฏทางด้านขวาของรูปภาพในช่องมองภาพควรปรากฏเหมือนกับช่องมองภาพ รวมถึงมีการวางแนวที่เหมือนกัน