OEM özel girişleri

Yeni ve standart olmayan Android özellikleri için yeni Araba giriş etkinlikleri eklemek üzere OEM özel girişlerini kullanın. Standart olmayan giriş etkinlikleri, genel olmak ve tüm Android yüzeylerinde çalışmak üzere tasarlanmış ancak OEM'ye özgü özellikleri uygulamak için genişletilmemiş mevcut Android KeyEvent tarafından eşlenmez. Örneğin, direksiyon kontrolünde bulunan ve basıldığında aracın mevcut konumunu gösteren bir haritalar uygulaması (intent aracılığıyla) açan bir düğme. Bu özellik, sürücülerin sürüş sırasında dikkatleri dağılmadan mevcut konumlarını görselleştirmelerini sağlar.

Bu makalede, özelliği temsil etmek için Android KeyEvent kullanılamadığında yalnızca kullanılacak bir CustomInputEvent oluşturmak üzere mevcut bir Android KeyEvent'ün nasıl yeniden kullanılacağı açıklanmaktadır.

HW_CUSTOM_INPUT

Bir OEM özel girişi, HW_CUSTOM_INPUT ve CustomInputEvent.java ile temsil edilir. HW_CUSTOM_INPUT, araç donanımı (araç HAL'si) tarafından oluşturulan yerel etkinliktir. Bu etkinliğin nasıl somutlaştırılacağını OEM'ler belirler. HW_CUSTOM_INPUT'a erişim, VehiclePropertyAccess:READ ile [salt okunur] olarak ayarlanır.

Araç HAL'inin her zaman mevcut en son değeri yayınlayabilmesi için HW_CUSTOM_INPUT bildirimi, VehiclePropertyChangeMode:ON_CHANGE ile ON_CHANGE olarak ayarlanır.

HW_CUSTOM_INPUT değerleri, global olarak ayarlanmış genel bir int32 dizisinden oluşur. Üç genel tam sayı şunlardır:

  1. İlk öğe, OEM tarafından tanımlanacak giriş kodunu gösterir. Herhangi bir semantik öğeyi giriş koduyla ilişkilendirebilirsiniz.

  2. İkinci öğe, ana ekran veya küme gibi hedef ekranı depolar.

  3. Üçüncü öğe, etkinliğin kaç kez tekrarlandığını içerir. Örneğin, bir düğmeye kaç kez basıldığını göstermek için.

CustomInputEvent ve Car Input API

InputHalService, Araç HAL'inden gelen HW_CUSTOM_INPUT mesajını alan Araç hizmetidir.

InputHalService, gelen HW_CUSTOM_INPUT öğesini car-lib/src/android/car/input adresinde bulunan CustomInputEvent adlı Java paketlenebilir sınıfına ve ilgili aidl arayüzüne dönüştürür.

Temel bir araç girişi hizmeti olan CarInputService, gelen CustomInputEvents'i alır ve ardından kayıtlı herhangi bir Android sistem hizmetine gönderir.

Gelen CustomInputEvents'i kaydedip almak için sistem hizmetlerinin yapması gerekenler:

Aşağıdaki şemada, OEM özel giriş etkinliğinin iş akışı gösterilmektedir.

OEM özel giriş iş akışı

OEM Android sistem hizmetleri

OEM'ler, CarInputService'den gelen CustomInputEvents'i işlemek için Android sistem hizmetlerini sağlar.

Yalnızca android.permission.INJECT_EVENTS ayrıcalık izniyle işaretlenmiş hizmetler, Car Input API'den (CarInputManager) CustomInputEvents kaydedebilir ve bunları alabilir. Hiçbir üçüncü taraf hizmeti veya uygulaması bu Android sistem izniyle imzalanamaz (yalnızca OEM hizmetleri). Bu nedenle, hiçbir üçüncü taraf hizmeti veya uygulaması Car Input API'ye kaydolamaz.

OEM Android sistem hizmetleri, SystemApi ve herkese açık yöntemlere erişebilir.

Referans uygulaması

Örnek ve kılavuz olarak sağlanan packages/services/Car/tests/SampleCustomInputService adresindeki referans uygulamaya bakın. Örneğin, direksiyon kumandası için yeni bir düğme eklemek isteyebilirsiniz. Bu yeni düğmeye basıldığında Haritalar uygulaması, mevcut araç konumuyla başlatılır.

Bu örnekte OEM, bu yeni özelliği (mevcut araç konumuyla Haritalar uygulamasını açma) temsil etmek için INPUT_CODE_F1 (ilk CustomInputEvent kolaylık işlevi) seçmiştir.

Bu hizmet, başlangıç sırasında requestInputEventCapture üzerinden CarInputManager'e kaydedilir (Referans uygulama kaydı koduna bakın).

Bu hizmet, gelen CustomInputEvents'i aldığında Haritalar uygulamasını başlatma intent'ini gönderir. Bunun nasıl yapıldığını öğrenmek için CustomInputEventListener.java dosyasını inceleyin.