Input kustom OEM

Gunakan input kustom OEM untuk menambahkan peristiwa input Mobil baru untuk mobil baru dan non-standar Android. Peristiwa input non-standar tidak dipetakan oleh peristiwa input yang ada KeyEvent Android, yang dirancang agar bersifat umum dan berfungsi di platform Android apa pun tetapi tidak diperluas untuk menerapkan fitur khusus OEM. Misalnya, sebuah tombol yang terletak di kontrol roda kemudi yang, saat ditekan, membuka aplikasi peta (melalui intent) dengan lokasi mobil saat ini. Fitur ini memungkinkan pengemudi untuk memvisualisasikan lokasi mereka saat ini tanpa menjadi terganggu saat mengemudi.

Artikel ini menjelaskan cara menggunakan kembali KeyEvent Android yang ada untuk membuat CustomInputEvent untuk hanya digunakan saat tidak ada KeyEvent Android yang dapat digunakan untuk mewakili fitur.

HW_CUSTOM_INPUT

Input kustom OEM direpresentasikan oleh HW_CUSTOM_INPUT dan CustomInputEvent.java. HW_CUSTOM_INPUT adalah peristiwa native yang dibuat instance-nya oleh hardware mobil (Kendaraan HAL). OEM menentukan cara membuat instance peristiwa ini. Akses ke HW_CUSTOM_INPUT adalah ditetapkan sebagai [hanya baca]{:.external}, dengan VehiclePropertyAccess:READ.

Untuk memastikan Vehicle HAL selalu bisa menyiarkan nilai terbaru yang tersedia, Notifikasi HW_CUSTOM_INPUT disetel sebagai ON_CHANGE, dengan VehiclePropertyChangeMode:ON_CHANGE.

Nilai HW_CUSTOM_INPUT terdiri dari array generik int32, ditetapkan sebagai [global]{:.external} (dengan VehicleArea:GLOBAL) Ketiga bilangan bulat generik adalah:

  1. Elemen pertama mewakili kode input yang akan ditentukan oleh OEM. Anda dapat mengaitkan semantik apa pun ke kode input.

  2. Elemen kedua menyimpan tampilan target, seperti layar utama atau cluster.

  3. Elemen ketiga berisi frekuensi kejadian berulang. Misalnya, untuk menunjukkan berapa kali tombol ditekan.

CustomInputEvent dan Car Input API

InputHalService adalah layanan Car yang menerima HW_CUSTOM_INPUT dari HAL Kendaraan.

InputHalService mengonversi HW_CUSTOM_INPUT yang masuk menjadi CustomInputEvent, class parcelable Java yang terletak di car-lib/src/android/car/input, beserta kode terkait antarmuka bantuan.

CarInputService, layanan Input Mobil inti, menerima data masuk CustomInputEvents kemudian mengirimkannya ke layanan sistem Android apa pun yang terdaftar.

Untuk mendaftarkan dan menerima CustomInputEvents yang masuk, layanan sistem harus:

Diagram berikut mengilustrasikan alur kerja peristiwa Input Kustom OEM.

Alur kerja input kustom OEM

Layanan sistem Android OEM

OEM menyediakan layanan sistem Android untuk menangani masuknya CustomInputEvents dari CarInputService.

Hanya layanan yang ditandai dengan Izin hak istimewa android.permission.INJECT_EVENTS dapat mendaftar dan menerima CustomInputEvents dari Car Input API (CarInputManager). Tidak ada layanan atau aplikasi pihak ketiga yang dapat ditandatangani dengan izin sistem Android ini (khusus layanan OEM). Oleh karena itu, tidak ada layanan atau aplikasi pihak ketiga yang dapat mendaftar terhadap Car Input API.

Layanan sistem Android OEM dapat mengakses SystemApi dan metode publik.

Penerapan referensi

Lihat penerapan referensi di packages/services/Car/tests/SampleCustomInputService, yang akan diberikan sebagai contoh dan pedoman. Misalnya, untuk menambahkan tombol baru dalam kontrol setir. Saat ditekan, tombol baru ini memulai Maps dengan lokasi mobil saat ini.

Dalam contoh ini, OEM memilih INPUT_CODE_F1 (CustomInputEvent pertama fungsi praktis) untuk merepresentasikan fitur baru ini (membuka aplikasi peta dengan lokasi mobil saat ini).

Selama startup, layanan ini terdaftar secara otomatis pada CarInputManager sampai requestInputEventCapture (lihat kode pendaftaran implementasi referensi.

Saat menerima CustomInputEvents yang masuk, layanan ini akan mengirimkan intent untuk memulai aplikasi peta. Untuk mempelajari bagaimana hal ini dicapai, lihat CustomInputEventListener.java.