कैमरा एचएएल की टेस्टिंग की चेकलिस्ट

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

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

कैमरे HAL3 की खास बातें

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

Android के अंदर इन फ़ाइलों में मौजूदा HAL स्पेसिफ़िकेशन के बारे में बताया गया है 5.0 और इसके बाद के वर्शन की सामान्य Android प्लैटफ़ॉर्म डेवलपमेंट किट (PDK):

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

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

इन सभी टेस्ट टाइप के बारे में नीचे विस्तार से बताया गया है. ये टेस्ट उसे उस क्रम में दिखाया जाता है जिसमें OEM से उम्मीद की जाती है उन्हें.

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

वेंडर टेस्ट सुइट (वीटीएस) की जांच

Android विक्रेता टेस्ट सुइट (वीटीएस) एक ऐसा टेस्टिंग सुइट है जो HIDL इंटरफ़ेस लेवल. VTS का इस्तेमाल करने के बारे में ज़्यादा जानकारी के लिए देखें वेंडर टेस्ट सुइट.

कंपैटबिलिटी टेस्ट सुइट (सीटीएस) के टेस्ट

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

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

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

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

सीटीएस टेस्ट के लिए 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/* अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है

इमेज टेस्ट सुइट (आईटीएस) टेस्ट

कैमरा इमेज टेस्ट सुइट (आईटीएस) की मदद से, इमेज के सटीक होने पर फ़ोकस किया जाता है. टेस्ट करने के लिए, Python स्क्रिप्ट को वर्कस्टेशन पर चलाएं Android डिवाइस को यूएसबी से कनेक्ट किया गया.

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

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

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

इसकी परीक्षा पास या फ़ेल होती है. हर सीन फ़ोल्डर में मौजूद सभी मैंडेट की जांच में पास होना ज़रूरी है. जिन टेस्ट के लिए रजिस्ट्रेशन करना ज़रूरी नहीं है वे फ़ेल हो सकते हैं और तब भी उन्हें पास के तौर पर गिना जाएगा CtsVerifier.

ITS, टेस्ट से जुड़ी अलग-अलग स्थितियों की जांच करता है. इन्हें सीटीएस में टेस्ट नहीं किया जाता और एचएएल 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 क्लास आर्ग्युमेंट को पास करें, जैसे इसलिए:

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

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

यहां फ़ंक्शनल टेस्ट चलाने का उदाहरण दिया गया है. यह टेस्ट बुनियादी के साथ अलग-अलग तरह के कैमरे की सेटिंग इस्तेमाल कर सकते हैं. (जैसे, फ़्लैश, एक्सपोज़र, WB, सीन, पिक्चर साइज़, और जियोटैग)

जांच करने के लिए निर्देश चलाएं:

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

जांच करने के लिए निर्देश चलाएं:

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

सभी जांचों को पास होना चाहिए.

मैन्युअल तरीके से जांच करने के टूल की जांच

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

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

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

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

मैन्युअल TestingCam2 के टेस्ट

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

JPEG कैप्चर

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