Kiểm thử HAL camera

Trang này liệt kê tất cả các kiểm thử có sẵn để đánh giá lớp trừu tượng phần cứng (HAL) của camera Android. Đây là tài liệu 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 việc triển khai HAL camera đúng cách với số lượng lỗi tối thiểu. Mặc dù đây là một bổ sung không bắt buộc cho Bộ kiểm tra tính tương thích (CTS) với Android, nhưng nó 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 tra này, OEM xác thực xem họ đã tích hợp đúng 3 giao diện 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, một hoạt động triển khai thiết bị có thể được coi là đầy đủ đối với các giao diện Android Camera HAL. Nhờ đó, thiết bị có thể hỗ trợ đúng gói android.hardware.camera2 mà các ứng dụng camera dựa vào.

Quy cách HAL3 của camera

Quy cách Android Camera HAL3 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 thông tin tóm tắt về tất cả các bài kiểm thử có thể dùng làm danh sách kiểm tra. Các đơn vị triển khai HAL camera (ví dụ: nhà cung cấp AP) nên xem xét kỹ từng dòng trong quy cách HAL3 camera và đảm bảo thiết bị của họ tuân thủ quy cách này.

Quy cách HAL hiện tại được xác định trong các tệp này trong Android 5.0 trở lên và Android Platform Development Kit (PDK) chung:

Các loại kiểm thử camera

Sau đây là các loại kiểm thử chính có sẵn cho camera Android mới nhất, cùng với thông tin tham khảo về các hướng dẫn liên quan bên dưới:

Tất cả các loạ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à các OEM dự kiến sẽ thực hiện.

Ví dụ: nếu không vượt qua được các kiểm thử gốc, thì chắc chắn thiết bị sẽ không vượt qua được các kiểm thử Bộ kiểm thử tính tương thích (CTS) tiếp theo. 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) sẽ 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 kiểm thử trước khi chuyển sang bộ kiểm thử tiếp theo.

Các kiểm thử trong Bộ kiểm thử của nhà cung cấp (VTS)

Bộ kiểm thử của nhà cung cấp Android (VTS) 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 phần Bộ kiểm thử của nhà cung cấp.

Các bài kiểm thử của Bộ kiểm tra tính tương thích (CTS)

Bộ kiểm tra tính tương thích (CTS) của camera trên 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 kiểm thử, hãy xem phần Thiết lập CTS.

Đường dẫn bắt đầu cho các kiểm thử CTS của camera là: platform/cts.

Khi chạy CTS 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 kiểm thử sẽ tự động thất bại. Ví dụ về camera bên ngoài: Logitech HD Pro Webcam C920Microsoft LifeCam HD-3000.

Hãy xem giới thiệu về CTS và các trang con của CTS để biết hướng dẫn chung về cách chạy CTS.

Các kiểm thử CTS cho API android.hardware.Camera

Bạn có thể tìm thấy các bài kiểm thử camera 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

Các kiểm thử CTS cho API android.hardware.camera2

Bạn có thể tìm thấy 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

Bạn có thể tìm thấy các bài kiểm thử camera này trong phần: cts/apps/CtsVerifier/src/com/android/cts/verifier/camera/*

Các kiểm thử trong Bộ kiểm thử hình ảnh (ITS)

Bộ kiểm thử hình ảnh của camera (ITS) tập trung vào độ chính xác của hình ảnh. Để thực hiện các 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 kiểm thử nằm trong một thư mục con tests/scene#.

Để biết thêm thông tin về cách thiết lập và chạy các kiểm thử, hãy xem phần Camera ITS.

Để biết nội dung mô tả về cảnh và quy trình kiểm thử, hãy xem bài viết Các quy trình kiểm thử ITS của camera.

Các bài kiểm thử ITS đều đạt hoặc không đạt. Tất cả các bài kiểm thử bắt buộc trong mỗi thư mục cảnh đều phải vượt qua. Những kiểm thử không bắt buộc có thể không thành công nhưng vẫn được tính là đã vượt qua trong CtsVerifier.

Các bài kiểm thử ITS kiểm thử những 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.

Kiểm thử Khung đa phương tiệ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 kiểm thử này yêu cầu bạn 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 tệp .apk thu được. Các lệnh mẫu được trình bày bên dưới.

Đường dẫn bắt đầu cho các kiểm thử khung đa phương tiện liên quan đến Camera là: platform/frameworks/base

Tìm mã nguồn cho các kiểm thử tại đây: frameworks/base/media/tests/MediaFrameworkTest

Cách thiết lập các kiểm thử này:

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

Trong đó, biến name biểu thị thư mục chứa sản phẩm của nhà cung cấp.

Tìm tất cả các 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 kiểm thử:

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

Chạy kiểm thử Khung đa phương tiện

Cách xem tất cả các thử nghiệm có sẵn::

adb shell pm list instrumentation

Điều này sẽ mang lại kết quả tương tự 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 (giữa instrumentation:(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ử (MediaFrameworkTestRunner).

Ví dụ:

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

Sau đó, bạn có thể truyề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à gói Java + tên lớp, nhưng gói đo lường không nhất thiết phải giống với gói Java. Đảm bảo bạn 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 chạy kiểm thử.

Để chạy một lớp kiểm thử duy nhất, hãy truyền đối số -e class , như sau:

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

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 kiểm thử chức năng. Thử nghiệm này xác minh chức năng cơ bản của nhiều 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à 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

Kiểm thử tích hợp nội dung nghe nhìn

Sau đây là ví dụ về một lần chạy 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ẽ tương tự như sau:

-----

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

OK (11 tests)

-----

Kiểm thử hiệu suất nội dung nghe nhìn

Thử nghiệm bộ nhớ xem trước này sẽ mở và phát hà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 mediaserver ps 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. Thử nghiệm sẽ thất bại nếu khoảng cách lớn hơn 150 km.

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 thêm thông tin chi tiết trong: /sdcard/mediaMemOutput.txt

Kiểm thử đơn vị nội dung nghe nhìn

Các lệnh chạy 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'

Kiểm thử hiệu suất nội dung nghe nhìn

Bài kiểm thử này nhằm kiểm tra khả năng chụp ảnh và quay video của 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 kiểm thử đều phải vượt qua.

Kiểm thử thủ công Kiểm thử TestingCam

Bạn phải chạy ứng dụng TestingCam theo cách thủ công và thực hiện các bước kiểm tra sau. Nguồn cho TestingCam có tại đây: pdk/apps/TestingCamera/

Lấy nét vô cực khi nghiêng camera

Khởi động TestingCam, bật chế độ xem trước và đảm bảo chế độ lấy nét tự động được đặt thành vô cực. Dùng nút Chụp ảnh để chụp ảnh các đối tượng ở xa (tối thiểu 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 cây ở trên cao 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à. Trong mọi trường hợp, đối tượng ở xa phải sắc nét và rõ nét. Lưu và xem các bức ảnh ở 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 để vượt qua bài kiểm tra này, camera có bộ truyền động VCM sẽ cần hệ thống điều khiển AF vòng kín hoặc cần một số loại hiệu chỉnh phần mềm 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 phải hiệu chỉnh vị trí vô cực của ống kính một cách đáng tin cậy tại nhà máy.

Kiểm thử thủ công các bài kiểm thử TestingCam2

Bạn phải chạy ứng dụng TestingCam2 theo cách thủ công và thực hiện các bước 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 trong kính ngắm phải giống với kính ngắm, kể cả hướng.