এই পৃষ্ঠায় অ্যান্ড্রয়েড ক্যামেরা হার্ডওয়্যার অ্যাবস্ট্রাকশন লেয়ার (HAL) মূল্যায়নের জন্য উপলব্ধ সমস্ত পরীক্ষার তালিকা রয়েছে। এটি মূল সরঞ্জাম নির্মাতারা (OEM) এবং অ্যাপ্লিকেশন প্রসেসর (AP) বিক্রেতাদের জন্য তৈরি করা হয়েছে যাতে তারা ন্যূনতম ত্রুটি সহ ক্যামেরা HAL এর যথাযথ বাস্তবায়ন নিশ্চিত করতে পারে। যদিও এটি অ্যান্ড্রয়েড কম্প্যাটিবিলিটি টেস্ট স্যুট (CTS) এর একটি স্বেচ্ছাসেবী সংযোজন, এটি ক্যামেরা পরীক্ষার কভারেজকে ব্যাপকভাবে বৃদ্ধি করে এবং অবশ্যই সম্ভাব্য বাগগুলি সনাক্ত করবে।
এই পরীক্ষাগুলি পাস করার মাধ্যমে, OEMগুলি যাচাই করে যে তারা অ্যান্ড্রয়েড ক্যামেরা হার্ডওয়্যার অ্যাবস্ট্রাকশন লেয়ার (HAL) 3 ইন্টারফেসগুলি সঠিকভাবে সংহত করেছে কিনা। চেকলিস্টের সমস্ত আইটেমের সাথে সঙ্গতিপূর্ণ হলে, অ্যান্ড্রয়েড ক্যামেরা HAL ইন্টারফেসের ক্ষেত্রে একটি ডিভাইস বাস্তবায়নকে পূর্ণ হিসাবে বিবেচনা করা যেতে পারে। এর ফলে একটি ডিভাইস ক্যামেরা অ্যাপগুলি যে android.hardware.camera2 প্যাকেজটি তৈরি করে তা সঠিকভাবে সমর্থন করতে সক্ষম হবে।
ক্যামেরা HAL3 স্পেসিফিকেশন
অ্যান্ড্রয়েড ক্যামেরা HAL3 স্পেসিফিকেশন হল কোন ডিভাইসগুলি পূরণ করতে হবে সে সম্পর্কে তথ্যের একটি নির্ভরযোগ্য উৎস; এই পৃষ্ঠাটি সমস্ত পরীক্ষার সারসংক্ষেপ প্রদান করে যা একটি চেকলিস্ট হিসাবে ব্যবহার করা যেতে পারে। ক্যামেরা HAL বাস্তবায়নকারীদের (যেমন AP বিক্রেতাদের) লাইন-বাই-লাইন ক্যামেরা HAL3 স্পেসিফিকেশন পরীক্ষা করা উচিত এবং নিশ্চিত করা উচিত যে তাদের ডিভাইসগুলি এটি মেনে চলছে।
বর্তমান HAL স্পেসিফিকেশনটি অ্যান্ড্রয়েড 5.0 এবং পরবর্তী জেনেরিক অ্যান্ড্রয়েড প্ল্যাটফর্ম ডেভেলপমেন্ট কিট (PDK) এর মধ্যে এই ফাইলগুলিতে সংজ্ঞায়িত করা হয়েছে:
- ক্যামেরা 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 - HAL পিক্সেল ফর্ম্যাট ইন্টারফেস এবং স্পেক :
system/core/libsystem/include/system/graphics.h
ক্যামেরা পরীক্ষার ধরণ
নীচের নির্দেশাবলীর সাথে সাথে সর্বশেষ অ্যান্ড্রয়েড ক্যামেরার জন্য উপলব্ধ প্রাথমিক ধরণের পরীক্ষাগুলি এখানে দেওয়া হল:
- ভেন্ডর টেস্ট স্যুট (VTS) : এমন পরীক্ষা যা সরাসরি ক্যামেরা HAL ইন্টারফেস পরীক্ষা করে
- সামঞ্জস্যতা পরীক্ষা স্যুট (CTS) : ডিভাইসের সামঞ্জস্যতা নিশ্চিত করার জন্য স্ট্যান্ডার্ড, স্বয়ংক্রিয় অ্যান্ড্রয়েড পরীক্ষা। আরও বিস্তারিত জানার জন্য, সামঞ্জস্যতা পরীক্ষা স্যুট এবং ট্রেড ফেডারেশন ওভারভিউ দেখুন।
- ইমেজ টেস্ট স্যুট (ITS) : ছবির সঠিকতা নিশ্চিত করতে ম্যানুয়ালি পরীক্ষা চালান। আরও বিস্তারিত জানার জন্য, ক্যামেরা ITS দেখুন।
- ম্যানুয়াল টেস্টিংক্যাম পরীক্ষা :
pdk/apps/TestingCamera/এর উৎস থেকে চালান। - ম্যানুয়াল টেস্টিংক্যাম২.১ পরীক্ষা :
pdk/apps/TestingCamera2/এর উৎস থেকে চালান
এই সকল পরীক্ষার ধরণ নিচে বিস্তারিতভাবে বর্ণনা করা হল। এই পরীক্ষাগুলি কালানুক্রমিক ক্রমে উপস্থাপন করা হয়েছে যেভাবে OEM-দের দ্বারা এগুলি কার্যকর করা হবে বলে আশা করা হচ্ছে।
উদাহরণস্বরূপ, যদি কোনও ডিভাইস নেটিভ পরীক্ষায় ব্যর্থ হয়, তবে এটি নিশ্চিতভাবে পরবর্তী সামঞ্জস্যতা পরীক্ষা স্যুট (CTS) পরীক্ষায় ব্যর্থ হবে। এবং যদি কোনও ডিভাইস CTS ব্যর্থ হয়, তাহলে ইমেজ টেস্ট স্যুট (ITS) এ এগিয়ে যাওয়ার কোনও লাভ নেই। আমরা পরবর্তী পরীক্ষার সেটে যাওয়ার আগে প্রতিটি ধরণের পরীক্ষার ব্যর্থতাগুলি সমাধান করার পরামর্শ দিচ্ছি।
ভেন্ডর টেস্ট স্যুট (VTS) পরীক্ষা
অ্যান্ড্রয়েড ভেন্ডর টেস্ট স্যুট (VTS) হল একটি টেস্টিং স্যুট যা HIDL ইন্টারফেস স্তরে কাজ করে। VTS ব্যবহার সম্পর্কে আরও তথ্যের জন্য, ভেন্ডর টেস্ট স্যুট দেখুন।
সামঞ্জস্যতা পরীক্ষা স্যুট (CTS) পরীক্ষা
ক্যামেরা অ্যান্ড্রয়েড কম্প্যাটিবিলিটি টেস্ট স্যুট (CTS) পরীক্ষাগুলি ডিভাইসের কম্প্যাটিবিলিটির উপর ফোকাস করে। একটি টেস্ট এনভায়রনমেন্ট সেট আপ করার বিষয়ে তথ্যের জন্য, CTS সেট আপ করা দেখুন।
ক্যামেরা CTS পরীক্ষার জন্য শুরুর পথ হল: platform/cts ।
বাহ্যিক ক্যামেরা (যেমন USB ওয়েবক্যাম) সমর্থন করে এমন ডিভাইসগুলিতে ক্যামেরা CTS চালানোর সময়, CTS চালানোর সময় আপনার অবশ্যই একটি ডিভাইস প্লাগ ইন থাকতে হবে, অন্যথায় পরীক্ষাগুলি স্বয়ংক্রিয়ভাবে ব্যর্থ হবে। বাহ্যিক ক্যামেরার উদাহরণগুলির মধ্যে রয়েছে: Logitech HD Pro Webcam C920 এবং Microsoft LifeCam HD-3000 ।
CTS চালানোর সাধারণ নির্দেশাবলীর জন্য CTS ভূমিকা এবং এর উপপৃষ্ঠাগুলি দেখুন।
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) পরীক্ষা
ক্যামেরা ইমেজ টেস্ট স্যুট (ITS) পরীক্ষাগুলি ছবির সঠিকতার উপর ফোকাস করে। পরীক্ষাগুলি সম্পাদন করার জন্য, USB এর মাধ্যমে সংযুক্ত অ্যান্ড্রয়েড ডিভাইস সহ একটি ওয়ার্কস্টেশনে পাইথন স্ক্রিপ্টগুলি চালান।
ক্যামেরা ITS পরিকাঠামো এবং পরীক্ষাগুলি cts/apps/CameraITS ডিরেক্টরিতে অবস্থিত। প্রতিটি পরীক্ষা একটি tests/scene # সাবডিরেক্টরিতে থাকে।
পরীক্ষাগুলি কীভাবে সেট আপ এবং চালানো যায় সে সম্পর্কে আরও তথ্যের জন্য, ক্যামেরা ITS দেখুন।
দৃশ্য এবং পরীক্ষার বর্ণনার জন্য, ক্যামেরা আইটিএস টেস্ট দেখুন।
এর পরীক্ষাগুলি হয় পাস করে, নয়তো ফেল করে। প্রতিটি দৃশ্য ফোল্ডারের সমস্ত বাধ্যতামূলক পরীক্ষা অবশ্যই পাস করতে হবে। বাধ্যতামূলক নয় এমন পরীক্ষাগুলি ব্যর্থ হতে পারে এবং CtsVerifier এ পাস হিসাবে গণনা করা হয়।
ITS এমন পরীক্ষার পরিস্থিতি পরীক্ষা করে যা CTS-এ পরীক্ষিত হয় না এবং HAL 3.2 পরীক্ষা পরিকল্পনার একটি গুরুত্বপূর্ণ উপাদান।
মিডিয়া ফ্রেমওয়ার্ক পরীক্ষা
MediaFrameworkTest-এ ক্যামেরা-সম্পর্কিত সকল মিডিয়া পরীক্ষায় উত্তীর্ণ হোন। অনুগ্রহ করে মনে রাখবেন, এই পরীক্ষাগুলির জন্য Android ডিভাইসে mediaframeworktest.apk ইনস্টল করা প্রয়োজন। আপনাকে make mediaframeworktest করতে হবে এবং তারপর .apk ইনস্টল করতে adb ব্যবহার করতে হবে। উদাহরণ কমান্ডগুলি নীচে অন্তর্ভুক্ত করা হয়েছে।
ক্যামেরা-সম্পর্কিত মিডিয়া ফ্রেমওয়ার্ক পরীক্ষার জন্য শুরুর পথ হল: platform/frameworks/base
পরীক্ষাগুলির জন্য সোর্স কোডটি এখানে খুঁজুন: frameworks/base/media/tests/MediaFrameworkTest
এই পরীক্ষাগুলি সেট আপ করতে:
make mediaframeworktestadb 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 দিয়ে গঠিত। MediaFramework )।
উদাহরণস্বরূপ:
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 প্যাকেজ ব্যবহার করছেন, টেস্ট রানার ক্লাসটি যে জাভা প্যাকেজে থাকে তা নয়।
একটি একক ক্লাস পরীক্ষা চালানোর জন্য, -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/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) -----
মিডিয়া পারফরম্যান্স পরীক্ষা
এই প্রিভিউ মেমোরি টেস্টটি ২০০ বার ক্যামেরা প্রিভিউ খুলবে এবং রিলিজ করবে। প্রতি ২০টি পুনরাবৃত্তিতে, ps মিডিয়া সার্ভারের স্ন্যাপশট রেকর্ড করা হবে এবং এটি ২০০টি পুনরাবৃত্তির পরে বিভিন্ন মেমোরি ব্যবহারের তুলনা করবে। যদি পার্থক্য ১৫০ কিলোমিটারের বেশি হয় তবে পরীক্ষাটি ব্যর্থ হবে।
পরীক্ষা কমান্ডটি চালান:
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 শুরু করুন, প্রিভিউ চালু করুন এবং নিশ্চিত করুন যে অটোফোকাস মোডটি অসীম অবস্থায় সেট করা আছে। ছবি তোলার বোতামটি ব্যবহার করে, ক্যামেরাটি অনুভূমিকভাবে, উপরের দিকে (উল্লম্বের কাছাকাছি) এবং নীচের দিকে (উল্লম্বের কাছাকাছি) নির্দেশ করে দূরবর্তী বস্তুর (কমপক্ষে ১০ মিটার দূরে) ছবি তুলুন; উপরের দিকে তোলার একটি উদাহরণ হতে পারে নীচে থেকে গাছের উঁচু পাতা/শাখা এবং নীচের দিকে তোলার একটি উদাহরণ হতে পারে একটি ভবনের ছাদ থেকে দেখা রাস্তা। সব ক্ষেত্রেই, দূরবর্তী বস্তুটি তীক্ষ্ণ এবং ফোকাসে থাকা উচিত। গ্যালারি ভিউতে ছবিগুলি সংরক্ষণ করুন এবং দেখুন যাতে আপনি জুম ইন করতে পারেন এবং তীক্ষ্ণতা আরও সহজে পরীক্ষা করতে পারেন।
মনে রাখবেন যে VCM অ্যাকচুয়েটরযুক্ত ক্যামেরার এই পরীক্ষায় উত্তীর্ণ হওয়ার জন্য, হয় একটি ক্লোজড-লুপ AF কন্ট্রোল সিস্টেমের প্রয়োজন হবে, অথবা ক্যামেরার ওরিয়েন্টেশন নির্ধারণের জন্য অ্যাক্সিলোমিটার ডেটা ব্যবহারের উপর ভিত্তি করে কিছু ধরণের SW সংশোধনের প্রয়োজন হবে। লেন্সের ইনফিনিটি পজিশনের নির্ভরযোগ্য ফ্যাক্টরি ক্যালিব্রেশনও প্রয়োজন হবে।
ম্যানুয়াল টেস্টিংক্যাম২ পরীক্ষা
TestingCam2 অ্যাপটি ম্যানুয়ালি চালানো উচিত, নিম্নলিখিত পরীক্ষাগুলি সম্পাদন করে। TestingCam2 এর উৎস এখানে: pdk/apps/TestingCamera2/
JPEG ক্যাপচার
TestingCam2 শুরু করুন এবং JPEG বোতাম টিপুন। ভিউফাইন্ডার ছবির ডানদিকে প্রদর্শিত ছবিটি ভিউফাইন্ডারের মতোই প্রদর্শিত হওয়া উচিত, যার মধ্যে একই ওরিয়েন্টেশন থাকা উচিত।