Danh sách kiểm tra kiểm tra HAL của máy ảnh

Trang 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 HAL máy ảnh đúng cách với các lỗi tối thiểu. Mặc dù đây là phần bổ sung tự nguyện cho Bộ kiểm tra tương thích Android (CTS), nhưng nó làm tăng đáng kể phạm vi kiểm tra máy ảnh 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 thử nghiệm này, OEM sẽ xác thực xem họ đã tích hợp đúng cách giao diện lớp trừu tượng phần cứng máy ảnh Android (HAL) 3 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à hoàn chỉnh đối với giao diện HAL của Máy ảnh Android. Điều này sẽ cho phép 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 dựa trên đó.

Thông số kỹ thuật của máy ảnh HAL3

Thông số kỹ thuật HAL3 của Máy ảnh Android là nguồn thông tin chính thống 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) phải xem xét 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ủ thông số đó.

Thông số kỹ thuật HAL hiện tại được xác định trong các tệp này trong Bộ công cụ phát triển nền tảng Android (PDK) chung dành cho Android 5.0 trở lên:

Các loại thử nghiệm máy ảnh

Dưới đây là các loại thử nghiệm chính dành cho máy ảnh Android mới nhất cùng với các tài liệu tham khảo về hướng dẫn liên quan bên dưới:

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 thứ tự thời gian mà các OEM dự kiến ​​sẽ thực hiện chúng.

Ví dụ: nếu một thiết bị không đạt các bài kiểm tra gốc thì 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ị bị lỗi CTS thì việc tiếp tục sử dụng Bộ kiểm tra hình ảnh (ITS) sẽ ít có 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 loạt thử nghiệm tiếp theo.

Các bài kiểm tra của Bộ kiểm tra nhà cung cấp (VTS)

Bộ kiểm tra nhà cung cấp Android (VTS) là bộ kiểm tra 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ộ thử nghiệm nhà cung cấp .

Kiểm tra Bộ kiểm tra khả năng tương thích (CTS)

Các bài kiểm tra Bộ kiểm tra khả năng tương thích Android của máy ảnh (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 ngoài (chẳng hạn như webcam USB), bạn phải cắm thiết bị khi chạy CTS nếu không các thử nghiệm sẽ tự động thất bại. Ví dụ về camera bên ngoài bao gồm: Logitech HD Pro Webcam C920Microsoft 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 camera của 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 của Bộ kiểm tra hình ảnh máy ảnh (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 và các bài kiểm tra ITS của Camera nằm 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 mô tả cảnh và thử nghiệm, hãy xem Kiểm tra ITS của Camera .

Các bài kiểm tra ITS đạ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 đều phải vượt qua. Các thử nghiệm không bắt buộc có thể thất bại nhưng vẫn được tính là đạt trong CtsVerifier .

ITS kiểm tra các kịch bản kiểm tra chưa đượ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 truyền thông

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 ý, những 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 thu được. Các lệnh ví dụ được bao gồm dưới đây.

Đườ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 cá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 thử nghiệm 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ả tương tự 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:(target=com.android.mediaframeworktest) từ mỗi dòng thử nghiệm. Thành phần này bao gồm tên gói mục tiêu ( com.android.mediaframeworktest ) và tên người 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 tới adb shell am instrument như sau:

adb shell am instrument -w component.name

Trong đó component.name bằng giá trị được trích xuất ở trên. Ví dụ:

adb shell am instrument -w com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner

Xin lưu ý, mặc dù đường dẫn lớp là gói Java + tên lớp, nhưng gói công cụ này 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 thử nghiệm.

Để chạy một lớp kiểm tra duy nhất, hãy vượt qua lớp -e lập luận, như thế này:

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 một 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ụ về 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. (tức là Flash, độ phơi sáng, WB, cảnh, kích thước hình ảnh và GeoTag)

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

Kiểm tra tích hợp phương tiện

Dưới đây là 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 kết quả đầ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 phương tiện truyền thông

Bài kiểm tra bộ nhớ xem trước này sẽ mở và phát hành bản xem trước của 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. Kiểm tra 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ị truyền thông

Các lệnh để chạy unit test đề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

Bài kiểm tra này nhằm mục đích 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 cam

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

Lấy nét vô cực với độ nghiêng của máy ảnh

Bắt đầu Kiểm traCam, bật xem trước và đảm bảo rằng chế độ lấy nét tự động được đặt thành vô cùng. Sử dụng nút Chụp ảnh , chụp ảnh các chủ thể ở xa (cách ít nhất 10m) với camera hướng ngang, hướng lên trên (gần dọc) và hướng xuống dưới (gần dọc); một ví dụ về ảnh chụp hướng lên trên có thể là những chiếc lá/nhánh cây cao từ bên dưới và một ví dụ về ảnh chụp hướng xuống có thể là con phố nhìn từ mái của một tòa nhà. Trong mọi trường hợp, chủ thể ở xa phải sắc nét và đúng 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, nó sẽ yêu cầu hệ thống điều khiển AF vòng kín hoặc 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 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 tra thủ côngKiểm tra Cam2

Ứng dụng testingCam2 phải được chạy thủ công và thực hiện các bước kiểm tra sau. Nguồn của testingCam2 có tại đây: pdk/apps/TestingCamera2/

chụp ảnh JPEG

Bắt đầu testingCam2 và nhấn nút JPEG . Hình ảnh xuất hiện ở bên phải hình ảnh trong kính ngắm sẽ trông giống như hình ảnh trong kính ngắm, kể cả có cùng hướng.