कैमरा एचएएल की जांच करें

इस पेज पर, Android कैमरा हार्डवेयर ऐब्स्ट्रैक्शन लेयर (एचएएल) का आकलन करने के लिए उपलब्ध सभी टेस्ट की सूची दी गई है. यह ओरिजनल इक्विपमेंट मैन्युफ़ैक्चरर (ओईएम) और ऐप्लिकेशन प्रोसेसर (एपी) वेंडर के लिए है, ताकि वे कम से कम गड़बड़ियों के साथ कैमरा एचएएल को सही तरीके से लागू कर सकें. हालांकि, Android Compatibility Test Suite (CTS) में इसे जोड़ना ज़रूरी नहीं है, लेकिन इससे कैमरे की जांच का दायरा बहुत बढ़ जाता है. साथ ही, इससे संभावित गड़बड़ियों का पता भी चल जाता है.

इन टेस्ट को पास करके, ओईएम यह पुष्टि करते हैं कि उन्होंने Android कैमरा हार्डवेयर ऐब्स्ट्रैक्शन लेयर (एचएएल) 3 इंटरफ़ेस को सही तरीके से इंटिग्रेट किया है या नहीं. चेकलिस्ट में दिए गए सभी आइटम के मुताबिक काम करने वाले डिवाइस को, Android Camera HAL इंटरफ़ेस के हिसाब से पूरी तरह से लागू किया गया माना जा सकता है. इससे डिवाइस पर android.hardware.camera2 पैकेज ठीक से काम करेगा. इसी पैकेज का इस्तेमाल करके कैमरा ऐप्लिकेशन बनाए जाते हैं.

Camera HAL3 की खास बातें

Android Camera HAL3 स्पेसिफ़िकेशन, इस बारे में आधिकारिक जानकारी देने वाला सोर्स है कि किन डिवाइसों को ज़रूरी शर्तें पूरी करनी होंगी. इस पेज पर, उन सभी टेस्ट की खास जानकारी दी गई है जिनका इस्तेमाल चेकलिस्ट के तौर पर किया जा सकता है. कैमरा एचएएल लागू करने वालों (जैसे कि एपी वेंडर) को कैमरा एचएएल3 की खास बातों को लाइन-बाय-लाइन पढ़ना चाहिए. साथ ही, यह पक्का करना चाहिए कि उनके डिवाइस इन खास बातों के मुताबिक हों.

एचएएल की मौजूदा खास जानकारी, Android 5.0 और इसके बाद के वर्शन के लिए, Android प्लैटफ़ॉर्म डेवलपमेंट किट (पीडीके) में मौजूद इन फ़ाइलों में दी गई है:

कैमरे के टेस्ट टाइप

Android के नए वर्शन वाले कैमरे के लिए, यहां मुख्य तौर पर उपलब्ध टेस्ट के बारे में बताया गया है. साथ ही, इनसे जुड़े निर्देशों के लिंक भी दिए गए हैं:

इन सभी तरह के टेस्ट के बारे में यहां ज़्यादा जानकारी दी गई है. इन टेस्ट को उसी क्रम में दिखाया जाता है जिस क्रम में ओईएम को इन्हें पूरा करना होता है.

उदाहरण के लिए, अगर कोई डिवाइस नेटिव टेस्ट पास नहीं करता है, तो वह आने वाले समय में Compatibility Test Suite (CTS) के टेस्ट भी पास नहीं कर पाएगा. अगर कोई डिवाइस CTS पास नहीं करता है, तो Image Test Suite (ITS) का इस्तेमाल करने का कोई फ़ायदा नहीं है. हमारा सुझाव है कि आप अगले सेट के टेस्ट पर जाने से पहले, हर तरह के टेस्ट में हुई गड़बड़ियों को ठीक करें.

Vendor Test Suite (VTS) टेस्ट

Android Vendor Test Suite (VTS) एक टेस्टिंग सुइट है. यह HIDL इंटरफ़ेस लेवल पर काम करता है. VTS का इस्तेमाल करने के बारे में ज़्यादा जानकारी के लिए, Vendor Test Suite पर जाएं.

Compatibility Test Suite (CTS) टेस्ट

Camera Android Compatibility Test Suite (CTS) टेस्ट, डिवाइस के साथ काम करने की सुविधा पर फ़ोकस करते हैं. टेस्ट एनवायरमेंट सेट अप करने के बारे में जानकारी के लिए, सीटीएस सेट अप करना लेख पढ़ें.

कैमरे के सीटीएस टेस्ट के लिए शुरुआती पाथ यह है: platform/cts.

बाहरी कैमरे (जैसे, यूएसबी वेबकैम) के साथ काम करने वाले डिवाइसों के लिए, कैमरा सीटीएस चलाते समय, आपको एक डिवाइस प्लग इन करना होगा. ऐसा न करने पर, सीटीएस या टेस्ट अपने-आप फ़ेल हो जाएंगे. बाहरी कैमरों के उदाहरणों में ये शामिल हैं: Logitech HD Pro Webcam C920 और Microsoft LifeCam HD-3000.

सीटीएस चलाने के बारे में सामान्य निर्देश पाने के लिए, सीटीएस के बारे में जानकारी और इसके सबपेज देखें.

android.hardware.Camera एपीआई के लिए सीटीएस टेस्ट

आपको 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

android.hardware.camera2 एपीआई के लिए सीटीएस टेस्ट

आपको cts/tests/tests/ में, कैमरे की जांच करने के ये विकल्प मिलेंगे:

  • hardware/src/android/hardware/camera2/cts/*
  • permission/src/android/permission/cts/Camera2PermissionTest.java

सीटीएस की पुष्टि करने वाले टूल के कैमरा टेस्ट

कैमरे की जांच से जुड़े ये टेस्ट यहां देखें: cts/apps/CtsVerifier/src/com/android/cts/verifier/camera/*

Image Test Suite (ITS) के टेस्ट

Camera Image Test Suite (ITS), इमेज की क्वालिटी की जांच करता है. टेस्ट करने के लिए, यूएसबी से कनेक्ट किए गए Android डिवाइस के साथ वर्कस्टेशन पर Python स्क्रिप्ट चलाएं.

Camera ITS का इंफ़्रास्ट्रक्चर और टेस्ट, cts/apps/CameraITS डायरेक्ट्री में मौजूद हैं. हर टेस्ट, tests/scene# सबडायरेक्ट्री में मौजूद होता है.

टेस्ट सेट अप करने और उन्हें चलाने के तरीके के बारे में ज़्यादा जानने के लिए, Camera ITS देखें.

सीन और टेस्ट के ब्यौरे के लिए, कैमरा आईटीएस टेस्ट देखें.

आईटीएस टेस्ट पास या फ़ेल हो सकते हैं. हर सीन फ़ोल्डर में ज़रूरी सभी टेस्ट पास होने चाहिए. जिन टेस्ट को पास करना ज़रूरी नहीं है वे फ़ेल हो सकते हैं. हालांकि, उन्हें CtsVerifier में पास माना जाएगा.

आईटीएस टेस्ट, ऐसे टेस्ट सिनेारियो की जांच करते हैं जिनकी जांच सीटीएस में नहीं की जाती है. साथ ही, ये एचएएल 3.2 के टेस्ट प्लान का एक अहम हिस्सा हैं.

मीडिया फ़्रेमवर्क के टेस्ट

MediaFrameworkTest में, कैमरे से जुड़े सभी मीडिया टेस्ट पास करें. कृपया ध्यान दें कि इन टेस्ट के लिए, Android डिवाइस पर mediaframeworktest.apk इंस्टॉल होना ज़रूरी है. आपको 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/

मीडिया फ़्रेमवर्क के टेस्ट चलाना

सभी उपलब्ध टेस्ट देखने के लिए::

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) और टेस्ट रनर का नाम (MediaFrameworkTestRunner) शामिल होता है.

उदाहरण के लिए:

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 class आर्ग्युमेंट पास करें. जैसे,

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

मीडिया सेटिंग के फ़ंक्शन की जांच करने वाले टेस्ट

यहां फ़ंक्शनल टेस्ट का एक उदाहरण दिया गया है. इस टेस्ट से, कैमरे की सेटिंग के अलग-अलग कॉम्बिनेशन की बुनियादी सुविधाओं की पुष्टि की जाती है. (जैसे, फ़्लैश, एक्सपोज़र, डब्ल्यूबी, सीन, फ़ोटो का साइज़, और जियोटैग)

टेस्ट कमांड चलाएं:

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 बार के बाद मेमोरी के इस्तेमाल की तुलना की जाएगी. अगर अंतर 150 किलोमीटर से ज़्यादा है, तो टेस्ट पूरा नहीं होगा.

टेस्ट कमांड चलाएं:

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

सभी टेस्ट पास होने चाहिए.

मैन्युअल टेस्टिंगकैमरे की टेस्टिंग

TestingCam ऐप्लिकेशन को मैन्युअल तरीके से चलाना चाहिए. साथ ही, इन बातों की जांच करनी चाहिए. TestingCam का सोर्स यहां दिया गया है: pdk/apps/TestingCamera/

कैमरे को झुकाकर इनफ़िनिटी फ़ोकस करना

TestingCam शुरू करें, झलक मोड चालू करें, और पक्का करें कि ऑटोफ़ोकस मोड को इनफ़िनिटी पर सेट किया गया हो. फ़ोटो लें बटन का इस्तेमाल करके, दूर मौजूद ऑब्जेक्ट (कम से कम 10 मीटर दूर) की फ़ोटो लें. इसके लिए, कैमरे को हॉरिज़ॉन्टल, ऊपर की ओर (वर्टिकल के करीब), और नीचे की ओर (वर्टिकल के करीब) करके फ़ोटो लें. ऊपर की ओर करके ली गई फ़ोटो का उदाहरण, पेड़ की ऊंची पत्तियां/शाखाएं हो सकती हैं. वहीं, नीचे की ओर करके ली गई फ़ोटो का उदाहरण, किसी इमारत की छत से दिखने वाली सड़क हो सकती है. सभी मामलों में, दूर की चीज़ें साफ़ दिखनी चाहिए और फ़ोकस में होनी चाहिए. शॉट को सेव करें और गैलरी व्यू में देखें, ताकि ज़ूम इन करके फ़ोकस को आसानी से देखा जा सके.

ध्यान दें कि वीसीएम ऐक्चुएटर वाले कैमरे को यह टेस्ट पास करने के लिए, क्लोज़्ड-लूप एएफ़ कंट्रोल सिस्टम की ज़रूरत होगी. इसके अलावा, कैमरा ओरिएंटेशन का पता लगाने के लिए ऐक्सिलरोमीटर के डेटा का इस्तेमाल करके, एसडब्ल्यू में कुछ सुधार करने की ज़रूरत होगी. इसके लिए, लेंस की इन्फ़िनिटी पोज़िशन का फ़ैक्ट्री कैलिब्रेशन भी ज़रूरी होगा.

Manual TestingCam2 tests

TestingCam2 ऐप्लिकेशन को मैन्युअल तरीके से चलाना चाहिए. साथ ही, ये जांचें करनी चाहिए. TestingCam2 का सोर्स यहां दिया गया है: pdk/apps/TestingCamera2/

JPEG कैप्चर

TestingCam2 शुरू करें और JPEG बटन दबाएं. व्यूफ़ाइंडर इमेज के दाईं ओर दिखने वाली इमेज, व्यूफ़ाइंडर में दिखने वाली इमेज जैसी ही होनी चाहिए. साथ ही, उसका ओरिएंटेशन भी व्यूफ़ाइंडर इमेज जैसा ही होना चाहिए.