Dashcam অ্যাপটি AAOS-এর সাথে একীভূত করার জন্য ডিজাইন করা হয়েছে, উন্নত নিরাপত্তা এবং নিরাপত্তার জন্য ড্রাইভারদের ভিডিও রেকর্ডিং ক্ষমতা প্রদান করে। এই নির্দেশিকাটি একটি সফল বাস্তবায়ন নিশ্চিত করার জন্য প্রযুক্তিগত প্রয়োজনীয়তা, একীকরণের পদক্ষেপ এবং সর্বোত্তম অনুশীলনের রূপরেখা দেয়।
পূর্বশর্ত
আপনি চালিয়ে যাওয়ার আগে, এই পূর্বশর্তগুলি পূরণ হয়েছে তা নিশ্চিত করুন:
SDK:
- SDK 31 বা উচ্চতর প্রয়োজন৷
হার্ডওয়্যার:
- EVS বা Camera2 ক্যামেরা AAOS-এর জন্য উপলব্ধ।
- পর্যাপ্ত অভ্যন্তরীণ স্টোরেজ স্পেস বা অপসারণযোগ্য বাহ্যিক স্টোরেজের জন্য সমর্থন
ভিডিও রেকর্ডিংয়ের জন্য উপলব্ধ হতে হবে।
সফ্টওয়্যার প্রয়োজনীয়তা:
- unbundled সমর্থন. আরও জানতে, Unbundled Apps দেখুন।
- অনুমতি. ড্যাশক্যামের সিস্টেমের অনুমতি প্রয়োজন।
সোর্স কোড পান
Dashcam হল AAOS আনবান্ডেড অ্যাপের অংশ। আনবান্ডেড কোড চেক আউট করতে, দেখুন কোড দেখুন .
অ্যান্ড্রয়েড কোড সার্চ দিয়ে সোর্স কোড ব্রাউজ করুন।
উত্স কোড এই তিনটি মডিউল প্রদান করা হয়:
- ড্যাশক্যাম সার্ভিস। স্ট্রিমিং, রেকর্ডিং এবং ট্রিগারিং লজিক।
- ড্যাশক্যাম ম্যানেজার। Dashcam পরিষেবার সাথে সংযোগ করে এবং ক্লায়েন্টদের কাছে একটি স্থিতিশীল API প্রকাশ করে
- ড্যাশক্যাম অ্যাপ। ড্যাশক্যাম ম্যানেজার API ব্যবহার করে ড্যাশক্যাম অ্যাপ্লিকেশনটি উল্লেখ করুন

ড্যাশক্যাম তৈরি করুন
Dashcam তৈরি করতে Soong বা Gradle ব্যবহার করুন।
সুং
সুং-এ:
mma DashcamService DashcamManager-lib DashcamApp
APKগুলি out/target/product/[lunch-target]/system/priv-app/ অবস্থিত
গ্রেডল
গ্রেডলে:
./gradlew :dashcam-app:assemble
./gradlew :dashcam-manager:assemble
./gradlew :dashcam-service:assemble
APKগুলি out/aaos-apps-gradle-build/ এ অবস্থিত
গ্রেডলের সাথে ড্যাশক্যাম তৈরির জন্য বিস্তারিত নির্দেশাবলী README ফাইলে দেওয়া আছে।
অনুমতি
Dashcam পরিষেবা এবং Dashcam অ্যাপের জন্য বেশ কিছু সিস্টেম অনুমতি প্রয়োজন৷
এই অনুমতিগুলি মঞ্জুর করার সবচেয়ে সোজা উপায় হল ব্লুপ্রিন্ট বা মেক ব্যবহার করে একটি পূর্বনির্মাণ সেটআপে অন্তর্ভুক্ত করা।
ব্লুপ্রিন্টে:
Android.bp
android_app_import {
name: "DashcamApp-prebuilt",
apk: "DashcamApp.apk",
privileged: true,
certificate: "platform",
required: ["allowed_privapp_com.android.car.dashcam"],
}
prebuilt_etc {
name: "allowed_privapp_com.android.car.dashcam",
sub_dir: "default-permissions",
src: "allowed_privapp_com.android.car.dashcam.xml",
filename_from_src: true,
}
মেক ইন:
dashcam.mk
PRODUCT_PACKAGES += \
DashcamApp
PRODUCT_COPY_FILES :=\
vendor/[path-to-vendor-prebuilts]/apps/Dashcam/allowed_privapp_com.android.car.dashcam:$(TARGET_COPY_OUT_PRODUCT)/etc/permissions/com.android.car.dashcam.xml \
allowed_privapp_com.android.car.dashcam.xml নামে একটি অনুমতি ফাইল তৈরি করুন:
<permissions>
<privapp-permissions package="com.android.car.dashcam.service">
<permission name="" />
</privapp-permissions>
<privapp-permissions package="com.android.car.dashcam.app">
<permission name="" />
</privapp-permissions>
</permissions>
ম্যানিফেস্ট থেকে অনুমতি ফাইলে অনুমতি যোগ করুন।
ড্যাশক্যাম ব্যবহার করার আগে, AAOS ক্যামেরায় দেখানো ড্যাশক্যাম পরিষেবাতে ক্যামেরা2 অনুমতি দিন।
ব্লুপ্রিন্টে প্রি-অনুমোদিত অনুমতি ফাইল যোগ করুন বা অনুমতি ফাইলের মতো একই পদ্ধতিতে ফাইল তৈরি করুন।
pre-grant-permissions-com.android.car.dashcam.xml এ:
<exceptions>
<exception package="com.android.car.dashcam.service">
<permission name="android.permission.CAMERA" fixed="false" />
<permission name="android.permission.SYSTEM_CAMERA" fixed="false" />
<permission name="android.permission.CAMERA_HEADLESS_SYSTEM_USER" fixed="false" />
</exception>
</exceptions>
Android.bp এ:
...
required["pre-grant-permissions-com.android.car.dashcaml"]
...
prebuilt_etc {
name: "pre-grant-permissions-com.android.car.dashcaml",
sub_dir: "default-permissions",
src: "pre-grant-permissions-com.android.car.dashcam.xml",
filename_from_src: true,
}
আরও জানতে, একটি সিস্টেম ইমেজে একটি প্রিবিল্ড ইন্টিগ্রেট করুন এবং একটি অনুমোদিত তালিকা যোগ করুন দেখুন।
সাইডলোড
অনুমতি ফাইল সাইডলোড করা যেতে পারে. প্রি-বিল্ট ড্যাশক্যাম কনফিগার করা না থাকলে এই পদ্ধতিটি ব্যবহার করুন।
পূর্বনির্মাণ বিভাগে তৈরি অনুমতি ফাইল ব্যবহার করে, চালান:
adb root
adb remount
adb push allowed_privapp_com.android.car.dashcam.xml /etc/permissions/allowed_privapp_com.android.car.dashcam.xml
adb shell chmod 644 /etc/permissions/allowed_privapp_com.android.car.dashcam.xml
প্রিগ্রান্ট পারমিশন ফাইলটি একইভাবে etc/default-permissions/ এর সাথে যোগ করুন।
ওভারলে কনফিগার করুন
ড্যাশক্যাম পরিষেবার ওভারলেয়েবল কনফিগারেশন রয়েছে।
পরিষেবা কনফিগারেশন
dashcam-service/res/values/config.xml
এই ফাইলটিতে পরিষেবার জন্য কনফিগারেশন রয়েছে:
-
config_file/assetsএ ট্রিগার কনফিগারেশন ফাইলের নাম -
allow_internal_storageরেকর্ডিং অভ্যন্তরীণ সঞ্চয়স্থানে সংরক্ষণ করার অনুমতি দিন -
boot_startup_enabledড্যাশক্যাম পরিষেবা ডিভাইস বুট আপ শুরু হয় -
notifications_onরেকর্ডিং শুরু হলে বিজ্ঞপ্তি দেখান -
default_app_componentডিফল্ট ড্যাশক্যাম অ্যাপ, যার গ্লোবাল রেকর্ডিং অ্যাক্সেস এবং গ্লোবাল ট্রিগার অ্যাক্সেস রয়েছে -
IRecordingModuleবাস্তবায়নেরrecording_moduleComponentName -
IStreamingModuleবাস্তবায়নেরstreaming_moduleউপাদানের নাম -
ITriggerModuleবাস্তবায়নেরtrigger_moduleComponentName
ট্রিগার কনফিগারেশন
রেকর্ডিং ট্রিগার কনফিগার করতে, এর একটি অনুলিপি তৈরি করুন:
dashcam-service/src/assets/config.xml
এবং সম্পদ ডিরেক্টরিতে এটি যোগ করুন। পরিষেবা কনফিগারেশন ফাইলের config_file উপাদানটিতে এই ফাইলটিকে নির্দেশ করুন।
ট্রিগার কনফিগারেশন স্টোরেজ, ক্যামেরা এবং ট্রিগার অংশ নিয়ে গঠিত:
স্টোরেজ
স্টোরেজ কনফিগারেশনে নিম্নলিখিত উপাদান রয়েছে:
maxStorageUsagePercentউপলব্ধ স্টোরেজ ড্যাশক্যামের সর্বোচ্চ শতাংশ রেকর্ডিং ছাঁটাই করার আগে ব্যবহার করে।maxStorageUsageMegabytesরেকর্ডিং ছাঁটাই করার আগে মেগাবাইট ড্যাশক্যামে সর্বাধিক পরিমাণ স্টোরেজ ব্যবহার করে।maxAgeHoursBeforePruneএকটি রেকর্ডিং ছাঁটাই করার আগে সর্বাধিক ঘন্টা। স্টোরেজ সীমা পূরণ হলে একটি রেকর্ডিং আগে ছাঁটাই করা যেতে পারে।
ক্যামেরা
ক্যামেরা কনফিগারেশনে নিম্নলিখিত উপাদান রয়েছে:
ক্যামেরা আইডি। ক্যামেরা উপসর্গ সহ ক্যামেরার আইডি।
prerollLengthMsপ্রতিটি ইভেন্টের সাথে সংরক্ষণ করার জন্য প্রিরোলের দৈর্ঘ্য।widthক্যামেরা দ্বারা ফেরত বাফারের ঐচ্ছিক প্রস্থ।heightক্যামেরা দ্বারা ফেরত বাফারের ঐচ্ছিক উচ্চতা।
<CameraConfig>
<Camera
ID="EVS:1"
prerollLengthMs="10000"
width="1920"
height="1080" />
<Camera
ID="Camera2:1"
prerollLengthMs="10000" />
</CameraConfig>
এই উদাহরণটি 1080p এ 10 সেকেন্ডের প্রিরোলের সাথে ক্যামেরা ID EVS:1 এবং 10 সেকেন্ডের প্রিরোলের সাথে ক্যামেরা ID Camera2:1 এবং ডিফল্ট প্রস্থ এবং উচ্চতা দেখায়।
ট্রিগার
ট্রিগার কনফিগারেশন নিম্নলিখিত দ্বারা সংজ্ঞায়িত ট্রিগারগুলির একটি তালিকা নিয়ে গঠিত:
nameঅনন্য ট্রিগার নাম।ক্যামেরার
camerasআইডি।sensorPropertyIDসেন্সর গ্রুপের সাথে প্রিফিক্স করা সেন্সর। উপসর্গ বিকল্পগুলি হলVHALবাSENSOR_MANAGER।UI-তে প্রদর্শিত ট্রিগারের
description।recordingLengthMsদৈর্ঘ্য মিলিসেকেন্ডে রেকর্ড করার জন্য ইভেন্টের পরে সময়কাল।sensorValueTypeসেন্সর দ্বারা উত্পাদিত ডেটার প্রকার। বিকল্পগুলি হলINT,INT_ARRAY,FLOAT,FLOAT_ARRAY, এবংBOOLEAN, STRING৷thresholdTypeকিভাবেthresholdValueবিপরীতে সেন্সর মান মূল্যায়ন করা যায়। বিকল্পগুলি হলAVERAGE,BOOLEAN,EQUALS,LEAP,LEAP_AVERAGE,LEAP_OVER,PEAK, এবংPEAK_HOLD৷thresholdValueসেন্সর মানের সাথে তুলনা করা মান।thresholdExtraকিছু থ্রেশহোল্ড প্রকারের জন্য প্রয়োজন অতিরিক্ত মান যেমনAVERAGEজন্য পরিসীমা।triggerCooldownএই ধরনের আরেকটি ইভেন্ট ফায়ার করার আগে মিলিসেকেন্ডে কুল-ডাউন করুন।
<EventTriggers>
<EventTrigger
name="AEB"
cameras="EVS:1, EVS:2"
sensorPropertyID="VHAL:289411073"
description="Automatic Emergency Braking"
recordingLengthMs="20000"
sensorValueType="INT"
thresholdType="EQUALS"
thresholdValue="2"
triggerCooldown="5000"/>
</EventTriggers>
এই উদাহরণটি একটি ট্রিগার দেখায় যেখানে TriggerModule একটি VHAL সেন্সর নিরীক্ষণ করে যা পূর্ণসংখ্যার মান তৈরি করে। TriggerModule থ্রেশহোল্ড মানের সাথে সমতা তুলনা করে। সমতা শর্ত পূরণ হলে, EVS ক্যামেরা 1 এবং 2-এ একটি ট্রিগার রেকর্ড করে।
<EventTrigger
name="SPEED"
cameras="Camera2:0, Camera2:1, Camera2:2, Camera2:3"
sensorPropertyID="VHAL:291504648"
description="Over speed"
recordingLengthMs="10000"
sensorValueType="FLOAT"
thresholdType="AVERAGE"
thresholdValue="20.0"
thresholdExtra="10"
triggerCooldown="2000"/>
এই উদাহরণটি একটি ট্রিগার দেখায় যেখানে TriggerModule একটি VHAL সেন্সর নিরীক্ষণ করে যা ফ্লোট মান তৈরি করে। TriggerModule 10 নমুনার পরিসরের সেন্সর গড়কে 20.0 এর থ্রেশহোল্ড মানের সাথে তুলনা করে। নমুনা পরিসীমা thresholdExtra এ সেট করা হয়েছে। একটি নতুন ইভেন্ট শুধুমাত্র প্রতি 2000 মিলিসেকেন্ডে ট্রিগার করা যেতে পারে যেমন triggerCooldown সেট করা হয়েছে।
মডিউল
Dashcam পরিষেবা তিনটি মডিউল নিয়ে গঠিত:
স্ট্রিমে ক্যামেরা থেকে স্ট্রীম পরিচালনা করার যুক্তি রয়েছে।
রেকর্ডিং রেকর্ডিং পরিচালনার জন্য যুক্তি ধারণ করে.
ট্রিগারে সেন্সর ডেটা থেকে রেকর্ডিং ট্রিগার করার যুক্তি রয়েছে। মডিউল APIগুলি তাদের সংশ্লিষ্ট ইন্টারফেসে সংজ্ঞায়িত করা হয়,
IStreamModule,IRecorderModule, এবংITriggerModuleএবংDashcamServiceAPIমাধ্যমেDashcamManagerকাছে প্রকাশ করা হয়।
ওভারলে মডিউল
মডিউল বাস্তবায়ন কোথায় পাওয়া যাবে তা নির্ধারণ করতে Dashcam পরিষেবা dashcam-service/res/values/config.xml ব্যবহার করে। প্রতিটি মডিউলের জন্য ডিফল্ট বাস্তবায়ন প্রদান করা হয়। যাইহোক, প্রতিটি মডিউল সংশ্লিষ্ট কনফিগার মানতে তার উপাদান সেট করে ওভারলেড করা যেতে পারে।
এর OEM বাস্তবায়ন উপাদানের নাম সেট করুন:
-
IRecorderModuleথেকেrecording_module -
IStreamModuleথেকেstreaming_module -
ITriggerModuleথেকেtrigger_module
রানটাইমে, ড্যাশক্যাম পরিষেবা প্রতিটি মডিউলের জন্য config.xml এ সেট করা কম্পোনেন্টের নামটি তাৎক্ষণিক করে।
অ্যাপ বিকাশকারীর গাইড
Dashcam একটি উত্পাদন প্রস্তুত এবং কাস্টমাইজযোগ্য ড্যাশক্যাম সমাধান। Dashcam Dashcam service সাথে যোগাযোগ করতে Dashcam Manager APIs ব্যবহার করে। Dashcam Manager API IDashcamManager এ পাওয়া যাবে। প্রয়োজনীয় অনুমতি সহ যেকোন অ্যাপ ড্যাশক্যাম ম্যানেজার ব্যবহার করতে পারে।
ওভারলেইউআই
অ্যাপটি রানটাইম রিসোর্স ওভারলে দিয়ে কাস্টমাইজ করা যেতে পারে। আরও জানতে, রানটাইম রিসোর্স ওভারলে দেখুন। overlayable উপাদানের তালিকা দেখতে, overlayable.xml দেখুন।
ট্রিগার প্রসারিত করুন
DashcamManager#addTrigger() এ কল দিয়ে বর্তমান সেশনের জন্য ট্রিগার বাড়ানো যেতে পারে। যোগ করা ট্রিগার শুধুমাত্র বর্তমান সেশনের জন্য টিকে থাকে।
অটোস্টার্ট
অটোস্টার্ট রেকর্ডিং সমর্থিত নয়। যাইহোক, DashcamManager.startRecording() এ কল দিয়ে একটি ম্যানুয়াল ট্রিগার onBoot চালু করা যেতে পারে
সর্বোত্তম অনুশীলন
স্টোরেজ। বহিরাগত অপসারণযোগ্য স্টোরেজ অত্যন্ত সুপারিশ করা হয়.
ব্যবহারকারীর অভিজ্ঞতা। AAOS ডিজাইন নির্দেশিকা মেনে, স্বজ্ঞাত এবং ব্যবহারকারী-বান্ধব হতে Dashcam অ্যাপের UI ডিজাইন করুন।
কর্মক্ষমতা অপ্টিমাইজেশান. রিসোর্স ব্যবহার কমাতে এবং AAOS-এ মসৃণ অপারেশন নিশ্চিত করতে অ্যাপের কর্মক্ষমতা অপ্টিমাইজ করুন।
সমস্যা সমাধান
ক্যামেরা সংযোগ সংক্রান্ত সমস্যা। EVS বা Camera2 অবশ্যই সমর্থিত এবং AAOS IVI-এ উপলব্ধ।
স্টোরেজ ত্রুটি। উপলব্ধ স্টোরেজ স্থান যাচাই করুন এবং রেকর্ডিং পরিচালনা করুন। বাহ্যিক সঞ্চয়স্থান অত্যন্ত বাঞ্ছনীয় কারণ অভ্যন্তরীণ সঞ্চয়স্থান ব্যবহার করে অকালে স্টোরেজ ফুরিয়ে যেতে পারে।