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

ড্যাশক্যাম তৈরি করুন
ড্যাশক্যাম তৈরি করতে সুং বা গ্রেডল ব্যবহার করুন।
সুং
সুং-এ:
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/ এ অবস্থিত।
Gradle দিয়ে Dashcam তৈরির বিস্তারিত নির্দেশাবলী README ফাইলে দেওয়া আছে।
অনুমতিসমূহ
ড্যাশক্যাম পরিষেবা এবং ড্যাশক্যাম অ্যাপের জন্য বেশ কয়েকটি সিস্টেম অনুমতি প্রয়োজন।
এই অনুমতিগুলি দেওয়ার সবচেয়ে সহজ উপায় হল ব্লুপ্রিন্ট অথবা মেক ব্যবহার করে একটি পূর্বনির্মিত সেটআপে এগুলি অন্তর্ভুক্ত করা।
নীলনকশায়:
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 ক্যামেরায় দেখানো Dashcam পরিষেবাতে Camera2 অনুমতিগুলি প্রি-গ্র্যান করুন।
অনুমতি ফাইলের মতোই পূর্ব-অনুমোদিত অনুমতি ফাইলটি ব্লুপ্রিন্ট বা মেক ফাইলে যুক্ত করুন।
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/ এর মতো একইভাবে pregrant permissions ফাইলটি যোগ করুন।
ওভারলে কনফিগার করুন
ড্যাশক্যাম পরিষেবাটিতে ওভারলেযোগ্য কনফিগারেশন রয়েছে।
পরিষেবা কনফিগারেশন
dashcam-service/res/values/config.xml
এই ফাইলটিতে পরিষেবাটির জন্য কনফিগারেশন রয়েছে:
-
config_file/assetsএ ট্রিগার কনফিগারেশন ফাইলের নাম -
allow_internal_storageরেকর্ডিংগুলিকে অভ্যন্তরীণ সঞ্চয়স্থানে সংরক্ষণ করার অনুমতি দিন -
boot_startup_enabledডিভাইসে ড্যাশক্যাম পরিষেবা শুরু হচ্ছে বুট আপ -
notifications_onরেকর্ডিং শুরু হলে বিজ্ঞপ্তি দেখান -
default_app_componentডিফল্ট ড্যাশক্যাম অ্যাপ, যার গ্লোবাল রেকর্ডিং অ্যাক্সেস এবং গ্লোবাল ট্রিগার অ্যাক্সেস রয়েছে। -
recording_moduleIRecordingModuleবাস্তবায়নের ComponentName -
streaming_moduleIStreamingModuleবাস্তবায়নের কম্পোনেন্টের নাম -
trigger_moduleকম্পোনেন্টITriggerModuleবাস্তবায়নের নাম
ট্রিগার কনফিগারেশন
রেকর্ডিং ট্রিগার কনফিগার করতে, এর একটি কপি তৈরি করুন:
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>
এই উদাহরণে ক্যামেরা আইডি EVS:1 দেখানো হয়েছে যার ১০৮০p রেজোলিউশনে ১০ সেকেন্ডের প্রিরোল এবং ক্যামেরা আইডি Camera2:1 এর ১০ সেকেন্ডের প্রিরোল এবং ডিফল্ট প্রস্থ এবং উচ্চতা দেখানো হয়েছে।
ট্রিগার
ট্রিগার কনফিগারেশনে নিম্নলিখিত দ্বারা সংজ্ঞায়িত ট্রিগারগুলির একটি তালিকা থাকে:
nameঅনন্য ট্রিগার নাম।camerasআইডি।সেন্সর গ্রুপের সাথে প্রিফিক্স লাগানো সেন্সরের
sensorPropertyIDID। প্রিফিক্স বিকল্পগুলি হলVHALঅথবাSENSOR_MANAGER।descriptionUI-তে প্রদর্শিত ট্রিগারের বর্ণনা।recordingLengthMsদৈর্ঘ্যMs ইভেন্টের পরে মিলিসেকেন্ডে রেকর্ড করার সময়কাল।sensorValueTypeসেন্সর দ্বারা উৎপাদিত ডেটার ধরণ। বিকল্পগুলি হলINT,INT_ARRAY,FLOAT,FLOAT_ARRAY, এবংBOOLEAN, STRING।thresholdTypethresholdValueএর বিপরীতে সেন্সরের মান কীভাবে মূল্যায়ন করবেন। বিকল্পগুলি হলAVERAGE,BOOLEAN,EQUALS,LEAP,LEAP_AVERAGE,LEAP_OVER,PEAK, এবংPEAK_HOLD।thresholdValueসেন্সর মানের সাথে তুলনা করা মান।thresholdExtraকিছু থ্রেশহোল্ড ধরণের জন্য অতিরিক্ত মান প্রয়োজন, যেমনAVERAGEএর জন্য range।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 তে সেট করা আছে। triggerCooldown তে সেট করা অনুসারে প্রতি 2000 মিলিসেকেন্ডে একটি নতুন ইভেন্ট ট্রিগার করা যেতে পারে।
মডিউল
ড্যাশক্যাম পরিষেবাটিতে তিনটি মডিউল রয়েছে:
ক্যামেরা থেকে স্ট্রিম পরিচালনা করার যুক্তি স্ট্রিম- এ রয়েছে।
রেকর্ডিংয়ের মধ্যে রেকর্ডিং পরিচালনার যুক্তি থাকে।
ট্রিগারে সেন্সর ডেটা থেকে রেকর্ডিং ট্রিগার করার লজিক থাকে। মডিউল API গুলি তাদের সংশ্লিষ্ট ইন্টারফেস,
IStreamModule,IRecorderModule, এবংITriggerModuleএ সংজ্ঞায়িত করা হয় এবংDashcamServiceAPIমাধ্যমেDashcamManagerকাছে উন্মুক্ত করা হয়।
ওভারলে মডিউল
ড্যাশক্যাম সার্ভিস মডিউল বাস্তবায়ন কোথায় পাওয়া যাবে তা নির্ধারণ করতে dashcam-service/res/values/config.xml ব্যবহার করে। প্রতিটি মডিউলের জন্য ডিফল্ট বাস্তবায়ন প্রদান করা হয়। তবে, প্রতিটি মডিউলকে সংশ্লিষ্ট কনফিগারেশন মানের মধ্যে তার উপাদান সেট করে ওভারলে করা যেতে পারে।
OEM বাস্তবায়ন উপাদানের নাম সেট করুন:
-
IRecorderModuleথেকেrecording_module -
IStreamModuleথেকেstreaming_module -
ITriggerModuleথেকেtrigger_module
রানটাইমের সময়, ড্যাশক্যাম পরিষেবা প্রতিটি মডিউলের জন্য config.xml এ সেট করা কম্পোনেন্টের নামটি ইনস্ট্যান্টিয়েট করে।
অ্যাপ ডেভেলপারের নির্দেশিকা
ড্যাশক্যাম একটি প্রোডাকশন রেডি এবং কাস্টমাইজেবল ড্যাশক্যাম সলিউশন। ড্যাশক্যাম Dashcam service সাথে যোগাযোগের জন্য ড্যাশক্যাম ম্যানেজার API ব্যবহার করে। ড্যাশক্যাম ম্যানেজার API IDashcamManager এ পাওয়া যাবে। প্রয়োজনীয় অনুমতি সহ যেকোনো অ্যাপ ড্যাশক্যাম ম্যানেজার ব্যবহার করতে পারে।
ওভারলেইউআই
অ্যাপটি রানটাইম রিসোর্স ওভারলে ব্যবহার করে কাস্টমাইজ করা যেতে পারে। আরও জানতে, রানটাইম রিসোর্স ওভারলে দেখুন। ওভারলেযোগ্য উপাদানগুলির তালিকা দেখতে, overlayable.xml দেখুন।
ট্রিগার প্রসারিত করুন
DashcamManager#addTrigger() এ কল করে বর্তমান সেশনের জন্য ট্রিগারগুলি বাড়ানো যেতে পারে। যোগ করা ট্রিগারগুলি কেবল বর্তমান সেশনের জন্যই টিকে থাকে।
অটোস্টার্ট
অটোস্টার্ট রেকর্ডিং সমর্থিত নয়। তবে, DashcamManager.startRecording() এ কল করে onBoot ম্যানুয়াল ট্রিগার শুরু করা যেতে পারে।
সেরা অনুশীলন
স্টোরেজ। বহিরাগত অপসারণযোগ্য স্টোরেজ অত্যন্ত সুপারিশ করা হয়।
ব্যবহারকারীর অভিজ্ঞতা। ড্যাশক্যাম অ্যাপের UI ডিজাইন করুন যাতে এটি স্বজ্ঞাত এবং ব্যবহারকারী-বান্ধব হয়, AAOS ডিজাইন নির্দেশিকা মেনে।
কর্মক্ষমতা অপ্টিমাইজেশন। AAOS-এ রিসোর্সের ব্যবহার কমাতে এবং মসৃণ অপারেশন নিশ্চিত করতে অ্যাপের কর্মক্ষমতা অপ্টিমাইজ করুন।
সমস্যা সমাধান
ক্যামেরা সংযোগ সমস্যা। EVS অথবা Camera2 অবশ্যই সমর্থিত এবং AAOS IVI তে উপলব্ধ থাকতে হবে।
স্টোরেজ ত্রুটি। উপলব্ধ স্টোরেজ স্পেস যাচাই করুন এবং রেকর্ডিং পরিচালনা করুন। অভ্যন্তরীণ স্টোরেজ ব্যবহার করলে স্টোরেজ অকালে শেষ হয়ে যেতে পারে, তাই বাহ্যিক স্টোরেজ অত্যন্ত বাঞ্ছনীয়।