ড্যাশক্যাম ইন্টিগ্রেট করুন

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

পূর্বশর্ত

আপনি চালিয়ে যাওয়ার আগে, এই পূর্বশর্তগুলি পূরণ হয়েছে তা নিশ্চিত করুন:

SDK:

  • SDK 31 বা উচ্চতর প্রয়োজন৷

হার্ডওয়্যার:

  • EVS বা Camera2 ক্যামেরা AAOS-এর জন্য উপলব্ধ।
  • পর্যাপ্ত অভ্যন্তরীণ স্টোরেজ স্পেস বা অপসারণযোগ্য বাহ্যিক স্টোরেজের জন্য সমর্থন
    ভিডিও রেকর্ডিংয়ের জন্য উপলব্ধ হতে হবে।

সফ্টওয়্যার প্রয়োজনীয়তা:

  • Unbundled সমর্থন. আরও জানতে, Unbundled Apps দেখুন।
  • অনুমতি. ড্যাশক্যামের সিস্টেমের অনুমতি প্রয়োজন।

সোর্স কোড পান

এন্ড্রয়েড কোড অনুসন্ধানে সোর্স কোড খুঁজুন:

https://cs.android.com/android/platform/superproject/+/ub-automotive-master-20250219:packages/apps/Car/Dashcam/

উত্স কোড এই তিনটি মডিউল প্রদান করা হয়:

  • ড্যাশক্যাম সার্ভিস। স্ট্রিমিং, রেকর্ডিং এবং ট্রিগারিং লজিক।
  • ড্যাশক্যাম ম্যানেজার। Dashcam পরিষেবার সাথে সংযোগ করে এবং ক্লায়েন্টদের কাছে একটি স্থিতিশীল API প্রকাশ করে
  • ড্যাশক্যাম অ্যাপ। ড্যাশক্যাম ম্যানেজার API ব্যবহার করে ড্যাশক্যাম অ্যাপ্লিকেশনটি উল্লেখ করুন

স্থাপত্য চিত্র

ড্যাশক্যাম তৈরি করুন

Dashcam তৈরি করতে Soong বা Gradle ব্যবহার করুন।

সুং

Soong থেকে তৈরি করার আগে, .cxx ডিরেক্টরি পরিষ্কার করতে ভুলবেন না।

সুং-এ:

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"],
}

মেক ইন:

dashcam.mk
PRODUCT_PACKAGES += \
    DashcamApp
PRODUCT_COPY_FILES :=\
vendor/[path-to-vendor-prebuilts]/apps/CarCatApp/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>

ম্যানিফেস্ট থেকে অনুমতি ফাইলে অনুমতি যোগ করুন।

আরও জানতে, প্রিবিল্ট ইন একটি সিস্টেম ইমেজ দেখুন।

সাইডলোড

অনুমতি ফাইল সাইডলোড করা যেতে পারে. প্রি-বিল্ট ড্যাশক্যাম কনফিগার করা না থাকলে এই পদ্ধতিটি ব্যবহার করুন।

পূর্বনির্মাণ বিভাগে তৈরি অনুমতি ফাইল ব্যবহার করে, চালান:

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

ওভারলে কনফিগার করুন

ড্যাশক্যাম পরিষেবার ওভারলেয়েবল কনফিগারেশন রয়েছে।

পরিষেবা কনফিগারেশন

dashcam-service/res/values/config.xml

এই ফাইলটিতে পরিষেবার জন্য কনফিগারেশন রয়েছে:

  • allow_internal_storage অভ্যন্তরীণ সঞ্চয়স্থানে রেকর্ডিংয়ের অনুমতি দিন
  • save_location রেকর্ডিং সংরক্ষণ করার জন্য ডিরেক্টরির নাম। ড্যাশক্যামে ডিফল্ট
  • max_storage_mb কত স্টোরেজ ড্যাশক্যাম ব্যবহার করার অনুমতি দিতে হবে
  • max_age_days ছাঁটাই করার আগে ফাইলটি কতক্ষণ ধরে রাখতে হবে
  • boot_startup_enabled ড্যাশক্যাম পরিষেবা ডিভাইস বুট আপ শুরু হয়
  • notifications_on রেকর্ডিং শুরু হলে বিজ্ঞপ্তি দেখান
  • native_recorder NDK API ব্যবহার করুন, ডিফল্ট Java API-তে
  • native_renderer NDK API ব্যবহার করুন, ডিফল্ট Java API-তে
  • default_app_component ডিফল্ট ড্যাশক্যাম অ্যাপ্লিকেশন, এই অ্যাপ্লিকেশনটিতে বিশ্বব্যাপী রেকর্ডিং অ্যাক্সেস এবং গ্লোবাল ট্রিগার অ্যাক্সেস রয়েছে
  • IRECORdingModule বাস্তবায়নের recording_module ComponentName
  • IRecordingModule বাস্তবায়নের streaming_module ComponentName
  • IRRecordingModule বাস্তবায়নের trigger_module ComponentName

একটি ট্রিগার কনফিগার করুন

কনফিগারেশন ট্রিগার করতে, চালান:

dashcam-service/src/assets/config.xml

এই ফাইলটিতে ট্রিগার রেকর্ড করার জন্য কনফিগারেশন রয়েছে। ট্রিগার কনফিগারেশন দুটি অংশ নিয়ে গঠিত:

  • প্রি রোল আইডি। ক্যামেরার ID হয় EVS বা Camera2 যা সমর্থিত তার উপর নির্ভর করে।

  • prerollLengthMs প্রতিটি ইভেন্টের সাথে সংরক্ষিত প্রি রোলের দৈর্ঘ্য।

<Preroll>
  <Camera
      ID="0"
      prerollLengthMs="10000" />
</Preroll>

এই উদাহরণটি 10 ​​সেকেন্ডের প্রি রোল সহ ক্যামেরা আইডি 0 দেখায়।

  • name অনন্য ট্রিগার নাম

  • সমর্থিত কিসের উপর নির্ভর করে ক্যামেরার camera আইডি হয় EVS বা Camera2

  • সেন্সর sensorPropertyID আইডি সেন্সর

  • UI-তে প্রদর্শিত ট্রিগারের description

  • recordingLengthMs দৈর্ঘ্য মিলিসেকেন্ডে রেকর্ড করার জন্য ইভেন্টের পরে সময়কাল।

  • sensorType কোন ধরনের সেন্সর। বিকল্পগুলি হল VHAL বা SENSOR_MANAGER

  • sensorValueType সেন্সর দ্বারা উত্পাদিত ডেটার প্রকার। বিকল্পগুলি হল INT , INT_ARRAY , FLOAT , FLOAT_ARRAY , এবং BOOLEAN, STRING

  • thresholdType কিভাবে সেন্সর মান মূল্যায়ন. বিকল্পগুলি হল AVERAGE , BOOLEAN , EQUALS , LEAP , LEAP_AVERAGE , LEAP_OVER , PEAK , এবং PEAK_HOLD

  • thresholdValue থ্রেশহোল্ড টাইপের সাথে সেন্সরের মান তুলনা করার জন্য মান

  • thresholdExtra কিছু থ্রেশহোল্ড প্রকারের জন্য প্রয়োজন অতিরিক্ত মান যেমন AVERAGE জন্য পরিসীমা

  • triggerCooldown মিলসেকেন্ডে এই ধরনের আরেকটি ইভেন্ট ফায়ার করার আগে কুল-ডাউন করুন।

<EventTriggers>
  <EventTrigger
      name="AEB"
      camera="1 2"
      sensorPropertyID="289411073"
      description="Automatic Emergency Braking"
      recordingLengthMs="20000"
      sensorType="VHAL"
      sensorValueType="INT"
      thresholdType="EQUALS"
      thresholdValue="2"
      triggerCooldown="5000"/>
</EventTriggers>

এই উদাহরণটি একটি VHAL সেন্সর দেখায় যা পূর্ণসংখ্যার মান তৈরি করে যেখানে আমরা থ্রেশহোল্ড মানের সাথে একটি সমতা তুলনা করি। সমতা শর্ত পূরণ হলে, ক্যামেরা 1 এবং 2 এ একটি ট্রিগার রেকর্ড করে।

<EventTrigger
            name="SPEED"
            camera="1 2 3 4"
            sensorPropertyID="291504648"
            description="Over speed"
            recordingLengthMs="10000"
            sensorType="VHAL"
            sensorValueType="FLOAT"
            thresholdType="AVERAGE"
            thresholdValue="20.0"
            thresholdExtra="1000"
            triggerCooldown="2000"/>

এই উদাহরণটি একটি VHAL সেন্সর দেখায় যা ফ্লোট মান তৈরি করে যেখানে আমরা থ্রেশহোল্ড মানের বিপরীতে নমুনার একটি পরিসরের উপর গড় মূল্যায়ন করি। নমুনা পরিসীমা thresholdExtra সেট করা হয়েছে

মডিউল

Dashcam পরিষেবা তিনটি মডিউল নিয়ে গঠিত:

  • স্ট্রিমে ক্যামেরা থেকে স্ট্রীম পরিচালনা করার যুক্তি রয়েছে।

  • রেকর্ডিং রেকর্ডিং পরিচালনার জন্য যুক্তি ধারণ করে.

  • ট্রিগারে সেন্সর ডেটা থেকে রেকর্ডিং ট্রিগার করার যুক্তি রয়েছে। মডিউল APIগুলি তাদের সংশ্লিষ্ট ইন্টারফেসে সংজ্ঞায়িত করা হয়েছে, IStreamModule , IRecorderModule , এবং ITriggerModule এবং DashcamServiceAPI মাধ্যমে DashcamManager-এর কাছে প্রকাশ করা হয়েছে

ওভারলে মডিউল

মডিউল বাস্তবায়ন কোথায় পাওয়া যাবে তা নির্ধারণ করতে Dashcam পরিষেবা dashcam-service/res/values/config.xml ব্যবহার করে। আমরা প্রতিটি মডিউলের জন্য ডিফল্ট বাস্তবায়ন প্রদান করি। যাইহোক, প্রতিটি মডিউল সংশ্লিষ্ট কনফিগার মানতে তার উপাদান সেট করে ওভারলেড করা যেতে পারে।

  • IRecorderModule এর OEM বাস্তবায়ন উপাদানের নাম recording_module সেট করুন

  • স্ট্রিমিং মডিউলে IStreamModule এর OEM বাস্তবায়ন উপাদানের নাম সেট করুন।

  • ITriggerModule এর OEM বাস্তবায়ন উপাদানের নাম trigger_module এ সেট করুন

    রানটাইমে, ড্যাশক্যাম পরিষেবা প্রতিটি মডিউলের জন্য config.xml এ সেট করা কম্পোনেন্টের নামটি তাৎক্ষণিক করে।

অ্যাপ বিকাশকারীর গাইড

Dashcam একটি উত্পাদন প্রস্তুত এবং কাস্টমাইজযোগ্য ড্যাশক্যাম সমাধান। Dashcam Dashcam service সাথে যোগাযোগ করতে Dashcam Manager APIs ব্যবহার করে। Dashcam Manager API IDashcamManager এ পাওয়া যাবে। প্রয়োজনীয় অনুমতি সহ যেকোন অ্যাপ ড্যাশক্যাম ম্যানেজার ব্যবহার করতে পারে।

অনুমতি

Camera2 এবং EVS সমর্থিত।

পূর্বনির্মাণ

এই অনুমতিগুলি দেওয়ার সবচেয়ে সহজ উপায় হল ব্লুপ্রিন্ট বা মেক ব্যবহার করে পূর্বনির্মাণ সেটআপে তাদের অন্তর্ভুক্ত করা।

ওভারলেইউআই

অ্যাপটি রানটাইম রিসোর্স ওভারলে দিয়ে কাস্টমাইজ করা যেতে পারে। আরও জানতে, রানটাইম রিসোর্স ওভারলে দেখুন। overlayable উপাদানের তালিকা দেখতে, overlayable.xml দেখুন।

ট্রিগার প্রসারিত করুন

DashcamManager.addTrigger() এ কল দিয়ে বর্তমান সেশনের জন্য ট্রিগার বাড়ানো যেতে পারে। যোগ করা ট্রিগার শুধুমাত্র বর্তমান সেশনের জন্য টিকে থাকে।

অটোস্টার্ট

অটোস্টার্ট রেকর্ডিং সমর্থিত নয়। যাইহোক, DashcamManager.startRecording() এ কল দিয়ে একটি ম্যানুয়াল ট্রিগার onBoot চালু করা যেতে পারে

সর্বোত্তম অনুশীলন

  • স্টোরেজ। বহিরাগত অপসারণযোগ্য স্টোরেজ অত্যন্ত সুপারিশ করা হয়.

  • ব্যবহারকারীর অভিজ্ঞতা। AAOS ডিজাইন নির্দেশিকা মেনে, স্বজ্ঞাত এবং ব্যবহারকারী-বান্ধব হতে Dashcam অ্যাপের UI ডিজাইন করুন।

  • কর্মক্ষমতা অপ্টিমাইজেশান. রিসোর্স ব্যবহার কমাতে এবং AAOS-এ মসৃণ অপারেশন নিশ্চিত করতে অ্যাপের কর্মক্ষমতা অপ্টিমাইজ করুন।

সমস্যা সমাধান

  • ক্যামেরা সংযোগ সংক্রান্ত সমস্যা। EVS বা Camera2 অবশ্যই সমর্থিত এবং AAOS IVI-এ উপলব্ধ।

  • স্টোরেজ ত্রুটি। উপলব্ধ স্টোরেজ স্থান যাচাই করুন এবং রেকর্ডিং পরিচালনা করুন। বাহ্যিক সঞ্চয়স্থান অত্যন্ত বাঞ্ছনীয় কারণ অভ্যন্তরীণ সঞ্চয়স্থান ব্যবহার করে অকালে স্টোরেজ ফুরিয়ে যেতে পারে।