OEM özel girişleri

Yeni ve standart dışı Android özelliklerine yönelik yeni Araç giriş etkinlikleri eklemek için OEM özel girişlerini kullanın. Standart olmayan giriş olayları, genel olacak ve herhangi bir Android yüzeyinde çalışacak şekilde tasarlanmış, ancak OEM'e özgü özellikleri uygulamak üzere genişletilmemiş olan mevcut Android KeyEvent tarafından eşlenmez. Örneğin, direksiyon simidi kumandasında bulunan ve basıldığında aracın mevcut konumunu içeren bir harita uygulamasını (bir amaç 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ştirmelerine olanak tanıyor.

Bu makalede, yalnızca özelliği temsil etmek için hiçbir Android KeyEvent kullanılamadığında kullanılmak üzere bir CustomInputEvent oluşturmak için mevcut bir Android KeyEvent 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) tarafından başlatılan yerel olaydır. OEM'ler bu olayın nasıl başlatılacağını belirler. HW_CUSTOM_INPUT erişimi, VehiclePropertyAccess:READ ile [salt okunur]{:.external} olarak ayarlanmıştır.

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

HW_CUSTOM_INPUT değerleri, [global]{:.external} ( VehicleArea:GLOBAL ile) olarak ayarlanmış bir genel int32 dizisinden oluşur. Üç genel tamsayı şunlardır:

  1. İlk öğe, OEM tarafından tanımlanacak giriş kodunu temsil eder. Herhangi bir semantiği giriş koduyla ilişkilendirebilirsiniz.

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

  3. Üçüncü öğe, olayın kaç kez tekrarlandığını içerir. Örneğin bir tuşa kaç kez basıldığını belirtmek için.

CustomInputEvent ve Araç Giriş API'si

GirişHalService , Araç HAL'sinden gelen bir HW_CUSTOM_INPUT alan Araç hizmetidir.

GirişHalService, gelen HW_CUSTOM_INPUT , ilgili yardım arayüzüyle birlikte car-lib/src/android/car/input konumunda bulunan bir Java parçalanabilir sınıfı olan CustomInputEvent dönüştürür.

Temel bir Araç Giriş hizmeti olan CarInputService , gelen CustomInputEvent'leri alır ve ardından bunları herhangi bir kayıtlı Android sistem hizmetine gönderir.

Gelen CustomInputEvent'leri kaydetmek ve almak için sistem hizmetlerinin şunları yapması gerekir:

Aşağıdaki şemada bir OEM Özel Giriş olayının iş akışı gösterilmektedir.

OEM özel giriş iş akışı

OEM Android sistem hizmetleri

OEM'ler, CarInputService gelen CustomInputEvent'leri yönetmek için Android sistem hizmetlerini sağlar.

Yalnızca android.permission.INJECT_EVENTS ayrıcalık izniyle işaretlenen hizmetler, Araç Giriş API'sinden ( CarInputManager ) CustomInputEvents'i kaydedebilir ve alabilir. Bu Android sistemi izniyle hiçbir üçüncü taraf hizmeti veya uygulaması imzalanamaz (yalnızca OEM hizmetleri). Bu nedenle hiçbir üçüncü taraf hizmeti veya uygulaması Car Giriş API'sine kaydolamaz.

OEM Android sistem hizmetleri SystemApi ve genel yöntemlere erişebilir.

Referans uygulaması

Örnek ve kılavuz olarak sağlanan package/services/Car/tests/SampleCustomInputService içindeki referans uygulamaya bakın. Örneğin direksiyon kontrolüne yeni bir düğme eklemek için. Bu yeni düğmeye basıldığında, mevcut araç konumuyla haritalar uygulaması başlatılıyor.

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

Başlatma sırasında bu hizmet, requestInputEventCapture aracılığıyla kendisini CarInputManager kaydeder ( referans uygulama kayıt koduna bakın).

Gelen CustomInputEvent'leri alırken bu hizmet, haritalar uygulamasını başlatma niyetini gönderir. Bunun nasıl başarıldığını öğrenmek için bkz. CustomInputEventListener.java .