Tài liệu này liệt kê tất cả các thử nghiệm có sẵn để đánh giá lớp trừu tượng phần cứng máy ảnh Android (HAL). Nó dành cho các nhà sản xuất thiết bị gốc (OEM) và nhà cung cấp bộ xử lý ứng dụng (AP) để họ có thể đảm bảo triển khai đúng HAL của máy ảnh với ít lỗi nhất. Mặc dù đây là phần bổ sung tự nguyện cho Bộ kiểm tra khả năng tương thích Android (CTS), nhưng nó giúp tăng đáng kể phạm vi kiểm tra máy ảnh và chắc chắn sẽ xác định các lỗi tiềm ẩn.
Bằng cách vượt qua các bài kiểm tra này, OEM xác thực xem họ đã tích hợp đúng giao diện lớp trừu tượng phần cứng máy ảnh (HAL) 3 của Android hay chưa. Khi tuân thủ tất cả các mục trong danh sách kiểm tra, việc triển khai thiết bị có thể được coi là đầy đủ đối với giao diện Android Camera HAL. Điều này sẽ cho phép một thiết bị hỗ trợ đúng cách gói android.hardware.camera2
mà các ứng dụng máy ảnh xây dựng trên đó.
Đặc điểm kỹ thuật máy ảnh HAL3
Thông số kỹ thuật HAL3 của Máy ảnh Android là nguồn thông tin có thẩm quyền về những gì thiết bị phải đáp ứng; trang này cung cấp bản tóm tắt tất cả các bài kiểm tra có thể được sử dụng làm danh sách kiểm tra. Những người triển khai Camera HAL (ví dụ: nhà cung cấp AP) nên xem qua từng dòng thông số kỹ thuật của Camera HAL3 và đảm bảo thiết bị của họ tuân thủ nó.
Thông số kỹ thuật HAL hiện tại được xác định trong các tệp này trong Android 5.0 trở lên Bộ công cụ phát triển nền tảng Android chung (PDK):
- Giao diện và thông số kỹ thuật của Camera HAL 3.x :
hardware/libhardware/include/hardware/camera3.h
,hardware/libhardware/include/hardware/camera_common.h
- Thông số siêu dữ liệu máy ảnh HAL 3.x :
system/media/camera/docs/docs.html
- Giao diện và thông số định dạng pixel HAL :
system/core/libsystem/include/system/graphics.h
Các loại kiểm tra máy ảnh
Dưới đây là các loại thử nghiệm chính có sẵn cho máy ảnh Android mới nhất cùng với tham chiếu đến các hướng dẫn liên quan bên dưới:
- Vendor Test Suite (VTS) : Các thử nghiệm kiểm tra trực tiếp giao diện HAL của camera
- Bộ kiểm tra khả năng tương thích (CTS) : Kiểm tra Android tiêu chuẩn, tự động để đảm bảo khả năng tương thích của thiết bị. Để biết thêm chi tiết, hãy xem Tổng quan về Bộ kiểm tra khả năng tương thích và Liên đoàn thương mại .
- Bộ kiểm tra hình ảnh (ITS) : Chạy thử nghiệm theo cách thủ công để đảm bảo tính chính xác của hình ảnh. Để biết thêm chi tiết, xem Camera ITS .
- Manual TestingCam tests : Chạy từ nguồn trong
pdk/apps/TestingCamera/
- Kiểm tra Manual TestingCam2.1 : Chạy từ nguồn trong
pdk/apps/TestingCamera2/
Tất cả các loại thử nghiệm này được mô tả chi tiết dưới đây. Các thử nghiệm này được trình bày theo trình tự thời gian mà các OEM dự kiến sẽ thực hiện chúng.
Chẳng hạn, nếu một thiết bị không đạt các bài kiểm tra gốc, chắc chắn thiết bị đó sẽ không đạt các bài kiểm tra Bộ kiểm tra khả năng tương thích (CTS) tiếp theo. Và nếu một thiết bị không thành công với CTS, thì việc tiếp tục sử dụng Bộ kiểm tra hình ảnh (ITS) sẽ có rất ít tác dụng. Chúng tôi khuyên bạn nên giải quyết các lỗi trong từng loại thử nghiệm trước khi tiến hành nhóm thử nghiệm tiếp theo.
Kiểm tra bộ kiểm tra nhà cung cấp (VTS)
Android Vendor Test Suite (VTS) là bộ thử nghiệm hoạt động ở cấp độ giao diện HIDL. Để biết thêm thông tin về cách sử dụng VTS, hãy xem Vendor Test Suite .
Kiểm tra bộ kiểm tra khả năng tương thích (CTS)
Các bài kiểm tra của Camera Android Compatibility Test Suite (CTS) tập trung vào khả năng tương thích của thiết bị. Để biết thông tin về cách thiết lập môi trường thử nghiệm, hãy xem Thiết lập CTS .
Đường dẫn bắt đầu cho các bài kiểm tra CTS của máy ảnh là: platform/cts
.
Khi chạy camera CTS cho các thiết bị hỗ trợ camera bên ngoài (chẳng hạn như webcam USB), bạn phải cắm thiết bị vào khi chạy CTS nếu không các bài kiểm tra sẽ tự động thất bại. Ví dụ về camera bên ngoài bao gồm: Logitech HD Pro Webcam C920 và Microsoft LifeCam HD-3000 .
Xem phần giới thiệu CTS và các trang con của nó để biết hướng dẫn chung về cách chạy CTS.
Kiểm tra CTS cho API android.hardware.Camera
Tìm các bài kiểm tra máy ảnh này trong 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
Kiểm tra CTS cho API android.hardware.camera2
Tìm các bài kiểm tra máy ảnh này trong cts/tests/tests/
:
-
hardware/src/android/hardware/camera2/cts/*
-
permission/src/android/permission/cts/Camera2PermissionTest.java
Kiểm tra máy ảnh CTS Verifier
Tìm các bài kiểm tra máy ảnh này trong: cts/apps/CtsVerifier/src/com/android/cts/verifier/camera/*
Kiểm tra bộ kiểm tra hình ảnh (ITS)
Các bài kiểm tra Camera Image Test Suite (ITS) tập trung vào độ chính xác của hình ảnh. Để thực hiện kiểm tra, hãy chạy tập lệnh Python trên máy trạm có thiết bị Android được kết nối qua USB.
Cơ sở hạ tầng Camera ITS và các thử nghiệm được đặt trong thư mục cts/apps/CameraITS
. Mỗi bài kiểm tra nằm trong thư mục con tests/scene #
.
Để biết thêm thông tin về cách thiết lập và chạy thử nghiệm, hãy xem Camera ITS .
Để biết các mô tả về cảnh và thử nghiệm, hãy xem Thử nghiệm ITS của Máy ảnh .
Các bài kiểm tra ITS có đạt hoặc không đạt. Tất cả các bài kiểm tra bắt buộc trong mỗi thư mục cảnh phải vượt qua. Các bài kiểm tra không bắt buộc có thể không đạt và vẫn được tính là đạt trong CtsVerifier
.
ITS kiểm tra các kịch bản kiểm tra không được kiểm tra trong CTS và là một thành phần quan trọng của kế hoạch kiểm tra HAL 3.2.
Kiểm tra khung phương tiện
Vượt qua tất cả các bài kiểm tra phương tiện liên quan đến máy ảnh trong MediaFrameworkTest. Xin lưu ý, các thử nghiệm này yêu cầu cài đặt mediaframeworktest.apk trên thiết bị Android. Bạn sẽ cần make mediaframeworktest
rồi sử dụng adb để cài đặt .apk kết quả. Các lệnh ví dụ được bao gồm bên dưới.
Đường dẫn bắt đầu cho các thử nghiệm khung phương tiện liên quan đến Máy ảnh là: platform/frameworks/base
Tìm mã nguồn cho các bài kiểm tra tại đây: frameworks/base/media/tests/MediaFrameworkTest
Để thiết lập các thử nghiệm này:
make mediaframeworktest
adb install out/target/product/name/data/app/mediaframeworktest.apk
Trong đó biến name đại diện cho thư mục chứa sản phẩm của nhà cung cấp.
Tìm tất cả các bài kiểm tra trong thư mục sau hoặc thư mục con của nó:
frameworks/base/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest
Mỗi thư mục con đại diện cho một lớp kiểm tra:
-
functional/
-
integration/
-
performance/
-
power/
-
stress/
-
unit/
Chạy kiểm tra Media Framework
Để xem tất cả các bài kiểm tra có sẵn ::
adb shell pm list instrumentation
Điều này sẽ mang lại kết quả giống như:
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)
Xác định và trích xuất thành phần (giữa instrumentation:
và (target=com.android.mediaframeworktest)
từ mỗi dòng thử nghiệm. Thành phần bao gồm tên gói đích ( com.android.mediaframeworktest
) và tên trình chạy thử nghiệm ( MediaFramework TestRunner
MediaFramework TestRunner
).
Ví dụ:
com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner com.android.mediaframeworktest/.MediaRecorderStressTestRunner com.android.mediaframeworktest/.MediaFrameworkPerfTestRunner com.android.mediaframeworktest/.MediaFrameworkPowerTestRunner
Sau đó, bạn có thể chuyển từng thành phần sang adb shell am instrument
như sau:
adb shell am instrument -w component.name
Trong đó component.name
bằng với giá trị được trích xuất ở trên. Ví dụ:
adb shell am instrument -w com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner
Xin lưu ý, trong khi đường dẫn lớp là gói Java + tên lớp, thì gói thiết bị không nhất thiết phải giống với gói Java. Đảm bảo rằng bạn sử dụng gói AndroidManifest.xml khi nối tên thành phần, không phải gói Java chứa lớp trình chạy thử nghiệm.
Để chạy một lớp kiểm tra, hãy vượt qua lớp -e
adb shell am instrument -e class com.android.mediaframeworktest.integration.CameraBinderTest -w com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner
Để chỉ chạy một phương thức duy nhất trong lớp thử nghiệm, hãy thêm dấu thăng (#) và tên phương thức (trong trường hợp này là testConnectPro
) vào tên lớp, như sau:
adb shell am instrument -e class 'com.android.mediaframeworktest.integration.CameraBinderTest#testConnectPro' -w com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner
Kiểm tra chức năng cài đặt phương tiện
Đây là một ví dụ chạy thử nghiệm chức năng. Thử nghiệm này xác minh chức năng cơ bản của các kết hợp cài đặt máy ảnh khác nhau. (ví dụ: Flash, độ phơi sáng, WB, cảnh, kích thước hình ảnh và Thẻ địa lý)
Chạy lệnh kiểm tra:
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
Thử nghiệm tích hợp phương tiện
Đây là một ví dụ chạy thử nghiệm tích hợp, trong trường hợp này là mediaframeworktest/integration/CameraBinderTest.java và mediaframeworktest/CameraStressTestRunner.java:
adb shell am instrument -e class \ 'com.android.mediaframeworktest.integration.CameraBinderTest' -w \ 'com.android.mediaframeworktest/.CameraStressTestRunner'
Nếu thành công, điều này dẫn đến đầu ra giống như:
----- com.android.mediaframeworktest.integration.CameraBinderTest:........... Test results for CameraStressTestRunner=........... Time: 3.328 OK (11 tests) -----
Kiểm tra hiệu suất truyền thông
Kiểm tra bộ nhớ xem trước này sẽ mở và giải phóng bản xem trước máy ảnh trong 200 lần. Trong mỗi 20 lần lặp, ảnh chụp nhanh của ps mediaserver sẽ được ghi lại và nó sẽ so sánh mức sử dụng bộ nhớ khác nhau sau 200 lần lặp. Thử nghiệm sẽ thất bại Nếu chênh lệch lớn hơn 150kM.
Chạy lệnh kiểm tra:
adb shell am instrument -w -r -e class com.android.mediaframeworktest.performance.MediaPlayerPerformance#testCameraPreviewMemoryUsage com.android.mediaframeworktest/.MediaFrameworkPerfTestRunner
Đầu ra chi tiết hơn có thể được tìm thấy trong: /sdcard/mediaMemOutput.txt
Kiểm tra đơn vị phương tiện
Các lệnh để chạy thử nghiệm đơn vị đều giống nhau. Ví dụ: đối với CameraMetadataTest.java, lệnh sẽ là:
adb shell am instrument -e class 'com.android.mediaframeworktest.unit.CameraMetadataTest' -w 'com.android.mediaframeworktest/.CameraStressTestRunner'
Kiểm tra căng thẳng truyền thông
Thử nghiệm này nhằm nhấn mạnh khả năng chụp ảnh và quay video của camera.
Chạy lệnh kiểm tra:
adb shell am instrument -w com.google.android.camera.tests/com.android.camera.stress.CameraStressTestRunner
Tất cả các bài kiểm tra nên vượt qua.
Kiểm tra thủ côngKiểm tra camera
Ứng dụng TestingCam phải được chạy thủ công với các bước kiểm tra sau được thực hiện. Nguồn cho TestingCam ở đây: pdk/apps/TestingCamera/
Lấy nét vô cực với độ nghiêng của máy ảnh
Bắt đầu TestCam, bật chế độ xem trước và đảm bảo rằng chế độ lấy nét tự động được đặt thành vô cực. Sử dụng nút Chụp ảnh , chụp ảnh các đối tượng ở xa (cách ít nhất 10m) với máy ảnh hướng theo chiều ngang, hướng lên trên (gần với chiều dọc) và hướng xuống dưới (gần với chiều dọc); một ví dụ về cảnh quay hướng lên có thể là những chiếc lá/cành cây cao từ bên dưới và một ví dụ về cảnh quay hướng xuống có thể là đường phố khi nhìn từ mái của một tòa nhà. Trong mọi trường hợp, đối tượng ở xa phải sắc nét và được lấy nét. Lưu và xem ảnh trong chế độ xem thư viện để bạn có thể phóng to và kiểm tra độ sắc nét dễ dàng hơn.
Lưu ý rằng để máy ảnh có bộ truyền động VCM vượt qua bài kiểm tra này, máy ảnh sẽ yêu cầu hệ thống điều khiển AF vòng kín hoặc máy ảnh sẽ cần một số loại hiệu chỉnh SW dựa trên việc sử dụng dữ liệu gia tốc kế để xác định hướng máy ảnh. Cũng cần phải hiệu chuẩn nhà máy đáng tin cậy về vị trí vô cực của ống kính.
Kiểm tra thủ công Kiểm tra Cam2
Ứng dụng TestingCam2 phải được chạy thủ công, với các bước kiểm tra sau được thực hiện. Nguồn cho TestingCam2 ở đây: pdk/apps/TestingCamera2/
chụp ảnh JPEG
Bắt đầu Kiểm traCam2 và nhấn nút JPEG . Hình ảnh xuất hiện ở bên phải của hình ảnh kính ngắm sẽ xuất hiện giống như kính ngắm, bao gồm cả việc có cùng hướng.