Aplikasi Dashcam dirancang untuk berintegrasi dengan AAOS, yang memberi pengemudi kemampuan perekaman video untuk meningkatkan keselamatan dan keamanan. Panduan ini menguraikan persyaratan teknis, langkah-langkah integrasi, dan praktik terbaik untuk memastikan keberhasilan penerapan.
Prasyarat
Sebelum melanjutkan, pastikan prasyarat berikut terpenuhi:
SDK:
- SDK 31 atau yang lebih tinggi diperlukan.
Hardware:
- Kamera EVS atau Camera2 tersedia untuk AAOS.
- Ruang penyimpanan internal yang memadai atau dukungan untuk penyimpanan eksternal yang dapat dilepas
harus tersedia untuk perekaman video.
Persyaratan software:
- Dukungan yang tidak dipaketkan. Untuk mempelajari lebih lanjut, lihat Aplikasi yang Tidak Dipaketkan.
- Izin. Dashcam memerlukan izin sistem.
Mendapatkan kode sumber
Temukan kode sumber di Penelusuran Kode Android di:
Kode sumber disediakan dalam tiga modul ini:
- Layanan Dashcam. Logika streaming, perekaman, dan pemicu.
- Dashcam Manager. Menghubungkan ke Layanan Dashcam dan mengekspos API yang stabil ke klien
- Aplikasi Dashcam. Referensi aplikasi Dashcam menggunakan Dashcam Manager API
Mem-build Dashcam
Gunakan Soong atau Gradle untuk mem-build Dashcam.
Soong
Sebelum mem-build dari Soong, pastikan untuk membersihkan direktori .cxx
.
Di Soong:
mma DashcamService DashcamManager-lib DashcamApp
APK terletak di out/target/product/[lunch-target]/system/priv-app/
Gradle
Di Gradle:
./gradlew :dashcam-app:assemble
./gradlew :dashcam-manager:assemble
./gradlew :dashcam-service:assemble
APK terletak di out/aaos-apps-gradle-build/
Petunjuk mendetail untuk mem-build Dashcam dengan Gradle disediakan dalam
file README
.
Izin
Beberapa izin sistem diperlukan untuk Layanan Dashcam dan Aplikasi Dashcam.
Cara paling mudah untuk memberikan izin ini adalah dengan menyertakannya dalam penyiapan bawaan menggunakan Blueprint atau Make.
Di Blueprint:
Android.bp
android_app_import {
name: "DashcamApp-prebuilt",
apk: "DashcamApp.apk",
privileged: true,
certificate: "platform",
required: ["allowed_privapp_com.android.car.dashcam"],
}
Di Make:
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 \
Buat file izin bernama allowed_privapp_com.android.car.dashcam.xml
:
<permissions>
<privapp-permissions package="com.android.car.dashcam">
<permission name="" />
</privapp-permissions>
<privapp-permissions package="com.android.car.dashcam.app">
<permission name="" />
</privapp-permissions>
</permissions>
Tambahkan izin dari Manifes ke file izin.
Untuk mempelajari lebih lanjut, lihat Di-build sebelumnya ke dalam image sistem.
Sideload
File izin juga dapat di-sideload. Gunakan metode ini jika Dashcam bawaan tidak dikonfigurasi.
Dengan menggunakan file izin yang dibuat di bagian bawaan sebelumnya, jalankan:
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
Mengonfigurasi overlay
Layanan dashcam memiliki konfigurasi yang dapat ditempatkan.
Konfigurasi layanan
dashcam-service/res/values/config.xml
File ini berisi konfigurasi untuk layanan:
allow_internal_storage
Mengizinkan rekaman ke penyimpanan internalsave_location
Nama direktori untuk menyimpan rekaman. Default-nya adalah dashcammax_storage_mb
Jumlah penyimpanan yang diizinkan untuk digunakan dashcammax_age_days
Durasi penyimpanan file sebelum pemangkasanboot_startup_enabled
Layanan dashcam dimulai saat perangkat melakukan bootingnotifications_on
Menampilkan notifikasi saat perekaman dimulainative_recorder
Menggunakan NDK API, defaultnya adalah Java APInative_renderer
Menggunakan NDK API, defaultnya adalah Java APIdefault_app_component
Aplikasi dashcam default, aplikasi ini memiliki akses rekaman global dan akses pemicu globalrecording_module
ComponentName dari penerapan IRecordingModulestreaming_module
ComponentName dari penerapan IRecordingModuletrigger_module
ComponentName dari penerapan IRecordingModule
Mengonfigurasi pemicu
Untuk memicu konfigurasi, jalankan:
dashcam-service/src/assets/config.xml
File ini berisi konfigurasi untuk merekam pemicu. Konfigurasi pemicu terdiri dari dua bagian:
ID pre-roll. ID kamera, baik EVS maupun Camera2, bergantung pada hal yang didukung.
prerollLengthMs
Durasi pra-rol yang akan disimpan dengan setiap peristiwa.
<Preroll>
<Camera
ID="0"
prerollLengthMs="10000" />
</Preroll>
Contoh ini menampilkan ID kamera 0 dengan pre-roll 10 detik.
name
Nama pemicu yang unikcamera
ID kamera, baik EVS maupun Camera2, bergantung pada yang didukungsensorPropertyID
ID sensordescription
Deskripsi pemicu yang ditampilkan di UIrecordingLengthMs
Durasi setelah peristiwa yang akan direkam dalam milidetik.sensorType
Jenis sensor. Opsi yang tersedia adalahVHAL
atauSENSOR_MANAGER
sensorValueType
Jenis data yang dihasilkan oleh sensor. Opsi adalahINT
,INT_ARRAY
,FLOAT
,FLOAT_ARRAY
, danBOOLEAN, STRING
thresholdType
Cara mengevaluasi nilai sensor. Opsi adalahAVERAGE
,BOOLEAN
,EQUALS
,LEAP
,LEAP_AVERAGE
,LEAP_OVER
,PEAK
, danPEAK_HOLD
thresholdValue
Nilai yang akan dibandingkan dengan nilai sensor dengan jenis nilai minimumthresholdExtra
Nilai tambahan yang diperlukan untuk beberapa jenis nilai minimum seperti rentang untukAVERAGE
triggerCooldown
Pendinginan sebelum memicu peristiwa lain dari jenis ini dalam milidetik.
<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>
Contoh ini menunjukkan sensor VHAL yang menghasilkan nilai bilangan bulat tempat kita membandingkan kesetaraan dengan nilai nilai minimum. Saat kondisi kesamaan terpenuhi, pemicu akan merekam di kamera 1 dan 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"/>
Contoh ini menunjukkan sensor VHAL yang menghasilkan nilai float tempat kita mengevaluasi
rata-rata dari berbagai sampel terhadap nilai nilai minimum. Rentang
contoh ditetapkan di thresholdExtra
Modul
Layanan Dashcam terdiri dari tiga modul:
Stream berisi logika untuk menangani streaming dari kamera.
Recording berisi logika untuk menangani rekaman.
Pemicu berisi logika untuk memicu perekaman dari data sensor. API modul ditentukan dalam antarmuka yang sesuai,
IStreamModule
,IRecorderModule
, danITriggerModule
, serta diekspos ke DashcamManager melaluiDashcamServiceAPI
Modul overlay
Layanan Dashcam menggunakan dashcam-service/res/values/config.xml
untuk menentukan tempat
menemukan implementasi modul. Kami menyediakan implementasi default untuk setiap
modul. Namun, setiap modul dapat ditempatkan dengan menetapkan komponennya dalam
nilai konfigurasi yang sesuai.
Tetapkan nama komponen penerapan OEM
IRecorderModule
kerecording_module
Tetapkan nama komponen penerapan OEM
IStreamModule
ke modul streaming.Tetapkan nama komponen penerapan OEM
ITriggerModule
ketrigger_module
Saat runtime, layanan Dashcam membuat instance nama komponen yang ditetapkan di
config.xml
untuk setiap modul.
Panduan developer aplikasi
Dashcam adalah solusi dashcam yang dan siap produksi serta dapat disesuaikan. Dashcam
menggunakan Dashcam Manager API untuk berkomunikasi dengan Dashcam service
. Dashcam
Manager API dapat ditemukan di IDashcamManager
. Aplikasi apa pun dengan izin
yang diperlukan dapat menggunakan Pengelola Dashcam.
Izin
Camera2 dan EVS didukung.
Bawaan
Cara termudah untuk memberikan izin ini adalah dengan menyertakannya dalam penyiapan bawaan menggunakan Blueprint atau Make.
OverlayUI
Aplikasi dapat disesuaikan dengan Overlay Resource Runtime. Untuk mempelajari lebih lanjut, lihat Overlay Resource Runtime. Untuk melihat daftar elemen yang dapat ditempatkan, lihat overlayable.xml.
Memperluas pemicu
Pemicu dapat diperluas untuk sesi saat ini dengan panggilan
ke DashcamManager.addTrigger()
. Pemicu yang ditambahkan hanya bertahan untuk sesi saat ini.
Mulai otomatis
Perekaman otomatis tidak didukung. Namun, pemicu manual dapat
dimulai onBoot
dengan panggilan ke DashcamManager.startRecording()
Praktik terbaik
Penyimpanan. Penyimpanan eksternal yang dapat dilepas sangat direkomendasikan.
Pengalaman pengguna. Desain UI aplikasi Dashcam agar intuitif dan mudah digunakan, dengan mematuhi panduan desain AAOS.
Pengoptimalan performa. Optimalkan performa aplikasi untuk meminimalkan penggunaan resource dan memastikan pengoperasian yang lancar di AAOS.
Pemecahan masalah
Masalah Konektivitas Kamera. EVS atau Camera2 harus didukung dan tersedia di AAOS IVI.
Error penyimpanan. Memverifikasi ruang penyimpanan yang tersedia dan mengelola rekaman. Penyimpanan eksternal sangat direkomendasikan karena penggunaan penyimpanan internal dapat menyebabkan penyimpanan cepat rusak.