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