यह पृष्ठ एंड्रॉइड कैमरा हार्डवेयर एब्स्ट्रैक्शन लेयर (एचएएल) के मूल्यांकन के लिए उपलब्ध सभी परीक्षणों को सूचीबद्ध करता है। यह मूल उपकरण निर्माताओं (ओईएम) और एप्लिकेशन प्रोसेसर (एपी) विक्रेताओं के लिए है ताकि वे न्यूनतम दोषों के साथ कैमरा एचएएल का उचित कार्यान्वयन सुनिश्चित कर सकें। यद्यपि यह एंड्रॉइड संगतता परीक्षण सूट (सीटीएस) के लिए एक स्वैच्छिक अतिरिक्त है, यह कैमरा परीक्षण कवरेज को काफी बढ़ाता है और निश्चित रूप से संभावित बग की पहचान करेगा।
इन परीक्षणों को पास करके, ओईएम सत्यापित करते हैं कि क्या उन्होंने एंड्रॉइड कैमरा हार्डवेयर एब्स्ट्रैक्शन लेयर (एचएएल) 3 इंटरफेस को ठीक से एकीकृत किया है। चेकलिस्ट में सभी आइटमों के अनुरूप होने पर, डिवाइस कार्यान्वयन को एंड्रॉइड कैमरा एचएएल इंटरफेस के संबंध में पूर्ण माना जा सकता है। यह बदले में एक डिवाइस को android.hardware.camera2
पैकेज का ठीक से समर्थन करने में सक्षम करेगा जिस पर कैमरा ऐप्स निर्मित होते हैं।
कैमरा HAL3 विशिष्टता
एंड्रॉइड कैमरा HAL3 विनिर्देश इस जानकारी का आधिकारिक स्रोत है कि डिवाइस को किन चीज़ों को पूरा करना चाहिए; यह पृष्ठ उन सभी परीक्षणों का सारांश प्रदान करता है जिनका उपयोग चेकलिस्ट के रूप में किया जा सकता है। कैमरा एचएएल कार्यान्वयनकर्ताओं (जैसे एपी विक्रेताओं) को कैमरा एचएएल3 विनिर्देश को लाइन-दर-लाइन जांचना चाहिए और सुनिश्चित करना चाहिए कि उनके उपकरण इसके अनुरूप हों।
वर्तमान एचएएल विनिर्देश एंड्रॉइड 5.0 और बाद में जेनेरिक एंड्रॉइड प्लेटफ़ॉर्म डेवलपमेंट किट (पीडीके) के भीतर इन फ़ाइलों में परिभाषित किया गया है:
- कैमरा HAL 3.x इंटरफ़ेस और विशिष्टता :
hardware/libhardware/include/hardware/camera3.h
,hardware/libhardware/include/hardware/camera_common.h
- कैमरा HAL 3.x मेटाडेटा विशिष्टता :
system/media/camera/docs/docs.html
- एचएएल पिक्सेल प्रारूप इंटरफ़ेस और विशिष्टता :
system/core/libsystem/include/system/graphics.h
कैमरा परीक्षण प्रकार
नीचे दिए गए संबंधित निर्देशों के संदर्भ के साथ नवीनतम एंड्रॉइड कैमरे के लिए प्राथमिक प्रकार के परीक्षण उपलब्ध हैं:
- विक्रेता परीक्षण सूट (वीटीएस) : परीक्षण जो सीधे कैमरा एचएएल इंटरफ़ेस का परीक्षण करते हैं
- संगतता परीक्षण सूट (सीटीएस) : डिवाइस संगतता सुनिश्चित करने के लिए मानक, स्वचालित एंड्रॉइड परीक्षण। अधिक जानकारी के लिए, संगतता परीक्षण सूट और ट्रेड फेडरेशन अवलोकन देखें।
- छवि परीक्षण सूट (आईटीएस) : छवि शुद्धता सुनिश्चित करने के लिए मैन्युअल रूप से परीक्षण चलाएं। अधिक विवरण के लिए, कैमरा ITS देखें।
- मैन्युअल टेस्टिंगकैम परीक्षण :
pdk/apps/TestingCamera/
में स्रोत से चलाएँ - मैन्युअल TestingCam2.1 परीक्षण :
pdk/apps/TestingCamera2/
में स्रोत से चलाएँ
इन सभी परीक्षण प्रकारों का नीचे विस्तार से वर्णन किया गया है। ये परीक्षण कालानुक्रमिक क्रम में प्रस्तुत किए जाते हैं जिसमें ओईएम से इन्हें निष्पादित करने की अपेक्षा की जाती है।
उदाहरण के लिए, यदि कोई उपकरण मूल परीक्षणों में विफल रहता है, तो यह निश्चित रूप से बाद के संगतता परीक्षण सूट (सीटीएस) परीक्षणों में विफल हो जाएगा। और यदि कोई डिवाइस सीटीएस में विफल रहता है, तो इमेज टेस्ट सूट (आईटीएस) पर आगे बढ़ने का कोई फायदा नहीं है। हम परीक्षणों के अगले सेट पर आगे बढ़ने से पहले प्रत्येक परीक्षण प्रकार में विफलताओं को संबोधित करने की अनुशंसा करते हैं।
विक्रेता परीक्षण सूट (वीटीएस) परीक्षण
एंड्रॉइड वेंडर टेस्ट सूट (वीटीएस) एक परीक्षण सूट है जो एचआईडीएल इंटरफ़ेस स्तर पर काम करता है। वीटीएस का उपयोग करने के बारे में अधिक जानकारी के लिए, विक्रेता परीक्षण सूट देखें।
संगतता परीक्षण सूट (सीटीएस) परीक्षण
कैमरा एंड्रॉइड संगतता परीक्षण सूट (सीटीएस) परीक्षण डिवाइस संगतता पर ध्यान केंद्रित करते हैं। परीक्षण वातावरण स्थापित करने के बारे में जानकारी के लिए, सीटीएस स्थापित करना देखें।
कैमरा सीटीएस परीक्षणों के लिए प्रारंभिक पथ है: platform/cts
।
बाहरी कैमरों (जैसे यूएसबी वेबकैम) का समर्थन करने वाले उपकरणों के लिए कैमरा सीटीएस चलाते समय, सीटीएस चलाते समय आपके पास एक डिवाइस प्लग इन होना चाहिए या परीक्षण स्वचालित रूप से विफल हो जाएंगे। बाहरी कैमरों के उदाहरणों में शामिल हैं: लॉजिटेक एचडी प्रो वेबकैम सी920 और माइक्रोसॉफ्ट लाइफकैम एचडी-3000 ।
सीटीएस चलाने के सामान्य निर्देशों के लिए सीटीएस परिचय और उसके उपपृष्ठ देखें।
android.hardware.Camera
API के लिए CTS परीक्षण
इन कैमरा परीक्षणों को 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
API के लिए CTS परीक्षण
इन कैमरा परीक्षणों को 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/*
इमेज टेस्ट सूट (आईटीएस) परीक्षण
कैमरा इमेज टेस्ट सूट (आईटीएस) परीक्षण छवि की शुद्धता पर ध्यान केंद्रित करता है। परीक्षण करने के लिए, यूएसबी से जुड़े एंड्रॉइड डिवाइस के साथ वर्कस्टेशन पर पायथन स्क्रिप्ट चलाएं।
कैमरा ITS अवसंरचना और परीक्षण cts/apps/CameraITS
निर्देशिका में स्थित हैं। प्रत्येक परीक्षण एक tests/scene #
उपनिर्देशिका में रहता है।
परीक्षण कैसे सेट अप करें और चलाएं, इस बारे में अधिक जानकारी के लिए कैमरा आईटीएस देखें।
दृश्य और परीक्षण विवरण के लिए, कैमरा आईटीएस टेस्ट देखें।
इसके परीक्षण या तो उत्तीर्ण होते हैं या असफल। प्रत्येक दृश्य फ़ोल्डर में सभी अनिवार्य परीक्षण उत्तीर्ण होने चाहिए। जो परीक्षण अनिवार्य नहीं हैं वे विफल हो सकते हैं और फिर भी CtsVerifier
में पास के रूप में गिने जा सकते हैं।
ITS उन परीक्षण परिदृश्यों का परीक्षण करता है जिनका CTS में परीक्षण नहीं किया जाता है और ये HAL 3.2 परीक्षण योजना का एक महत्वपूर्ण घटक हैं।
मीडिया फ्रेमवर्क परीक्षण
MediaFrameworkTest में कैमरे से संबंधित सभी मीडिया परीक्षण पास करें। कृपया ध्यान दें, इन परीक्षणों के लिए एंड्रॉइड डिवाइस पर Mediaframeworktest.apk इंस्टॉल होना आवश्यक है। आपको make mediaframeworktest
की आवश्यकता होगी और फिर परिणामी .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
) और परीक्षण धावक नाम ( MediaFramework TestRunner
से बना हैMediaFramework TestRunner
)।
उदाहरण के लिए:
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
कृपया ध्यान दें, जबकि क्लास पथ जावा पैकेज + क्लास नाम है, इंस्ट्रुमेंटेशन पैकेज जरूरी नहीं कि जावा पैकेज के समान हो। सुनिश्चित करें कि आप घटक नाम को जोड़ते समय AndroidManifest.xml पैकेज का उपयोग करते हैं, न कि जावा पैकेज का जिसमें परीक्षण धावक वर्ग रहता है।
परीक्षणों की एक ही कक्षा चलाने के लिए, -ई कक्षा पास करें
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
मीडिया एकीकरण परीक्षण
यहां एकीकरण परीक्षण का एक उदाहरण दिया गया है, इस मामले में मीडियाफ्रेमवर्कटेस्ट/इंटीग्रेशन/कैमराबाइंडरटेस्ट.जावा और मीडियाफ्रेमवर्कटेस्ट/कैमरास्ट्रेसटेस्टरनर.जावा:
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 पुनरावृत्तियों में, पीएस मीडियासर्वर का स्नैपशॉट रिकॉर्ड किया जाएगा और यह 200 पुनरावृत्तियों के बाद अलग-अलग मेमोरी उपयोग की तुलना करेगा। यदि अंतर 150 किमी से अधिक है तो परीक्षण विफल हो जाएगा।
परीक्षण आदेश चलाएँ:
adb shell am instrument -w -r -e class com.android.mediaframeworktest.performance.MediaPlayerPerformance#testCameraPreviewMemoryUsage com.android.mediaframeworktest/.MediaFrameworkPerfTestRunner
अधिक विस्तृत आउटपुट यहां पाया जा सकता है: /sdcard/mediaMemOutput.txt
मीडिया इकाई परीक्षण
यूनिट परीक्षण चलाने के आदेश सभी समान हैं। उदाहरण के लिए, कैमरामेटाडेटाटेस्ट.जावा के लिए, कमांड होगी:
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 का स्रोत यहां है: pdk/apps/TestingCamera/
कैमरा झुकाव के साथ अनंत फोकस
TestingCam प्रारंभ करें, पूर्वावलोकन चालू करें, और सुनिश्चित करें कि ऑटोफोकस मोड अनंत पर सेट है। चित्र लें बटन का उपयोग करके, कैमरे को क्षैतिज, ऊपर की ओर (ऊर्ध्वाधर के करीब), और नीचे की ओर (ऊर्ध्वाधर के करीब) इंगित करके दूर के विषयों (कम से कम 10 मीटर दूर) के शॉट्स कैप्चर करें; ऊपर की ओर शॉट का एक उदाहरण नीचे से किसी पेड़ की ऊंची पत्तियां/शाखाएं हो सकती हैं और नीचे की ओर शॉट का एक उदाहरण किसी इमारत की छत से दिखाई देने वाली सड़क हो सकती है। सभी मामलों में, दूर का विषय तीव्र और फोकस में होना चाहिए। गैलरी दृश्य में शॉट्स को सहेजें और देखें ताकि आप ज़ूम इन कर सकें और तीक्ष्णता का अधिक आसानी से निरीक्षण कर सकें।
ध्यान दें कि इस परीक्षण को पास करने के लिए वीसीएम एक्चुएटर वाले कैमरे के लिए, या तो एक बंद-लूप एएफ नियंत्रण प्रणाली की आवश्यकता होगी, या कैमरे के अभिविन्यास को निर्धारित करने के लिए एक्सेलेरोमीटर डेटा का उपयोग करने के आधार पर किसी प्रकार के एसडब्ल्यू सुधार की आवश्यकता होगी। लेंस की अनंत स्थिति के विश्वसनीय फ़ैक्टरी अंशांकन की भी आवश्यकता होगी।
मैनुअल टेस्टिंगCam2 परीक्षण
TestingCam2 ऐप को निम्नलिखित जांचों के साथ मैन्युअल रूप से चलाया जाना चाहिए। TestingCam2 का स्रोत यहां है: pdk/apps/TestingCamera2/
जेपीईजी कैप्चर
TestingCam2 प्रारंभ करें, और JPEG बटन दबाएँ। दृश्यदर्शी छवि के दाईं ओर दिखाई देने वाली छवि दृश्यदर्शी के समान दिखाई देनी चाहिए, जिसमें समान अभिविन्यास भी शामिल है।