OEM özel girişleri

Yeni ve standart olmayan öğeler için yeni Araba girişi etkinlikleri eklemek üzere OEM özel girişlerini kullanın Android özellikleri. Standart olmayan giriş etkinlikleri mevcut Android KeyEvent, genel olacak ve tüm Android yüzeylerinde çalışacak şekilde tasarlanmıştır. ancak OEM'ye özgü özellikleri uygulamak üzere genişletilmez. Örneğin, düğme direksiyon kontrolünde bulunan ve basıldığında bir harita uygulaması açan (bir amaç aracılığıyla) arabanın mevcut konumuyla karşılaştırabilirsiniz. Bu özellik, o sırada dikkatleri dağılmadan geçerli konumlarını görselleştirmek için araba kullanma hakkında da konuştuk.

Bu makalede, mevcut bir Android KeyEvent cihazının yalnızca Android KeyEvent tarafından şu durumlarda kullanılmak üzere CustomInputEvent oluştur: özelliği temsil etmesi için kullanılır.

HW_CUSTOM_INPUT

OEM özel girişi HW_CUSTOM_INPUT ve CustomInputEvent.java. HW_CUSTOM_INPUT araba donanımı (Araç HAL) tarafından örneklenen yerel etkinlik. OEM'ler belirler nasıl örneklendirileceğini anlatacağım. HW_CUSTOM_INPUT erişimi: VehiclePropertyAccess:READ ile [salt okunur]{:.external} olarak ayarlandı.

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

HW_CUSTOM_INPUT değerleri, genel bir diziden oluşur int32, [global]{:.external} (VehicleArea:GLOBAL ile) olarak ayarlandı. Üç genel tam sayılar şunlardır:

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

  2. İkinci öğe, hedef ekranı (ör. ana ekran) depolar veya kümeyi temsil eder.

  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 Araba Girişi API'si

InputHalService, gelen bir trafiği alan Araç HAL'sinden HW_CUSTOM_INPUT.

InputHalService, gelen HW_CUSTOM_INPUT öğesini şuna dönüştürür: CustomInputEvent bölgesinde bulunan bir Java parcelable sınıfıdır. car-lib/src/android/car/input ve ilgili aidl arayüzü.

Temel Araba Giriş hizmeti olan CarInputService, CustomInputEvents değerine ayarlanır ve ardından, bunları herhangi bir kayıtlı Android sistem hizmetine gönderir.

Gelen CustomInputEvents öğelerini kaydetmek ve almak için sistem hizmetleri:

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

OEM özel giriş iş akışı

OEM Android sistem hizmetleri

OEM'ler, gelen aramaları işlemek için Android sistem hizmetlerini sağlar CarInputService öğesinden CustomInputEvents.

Yalnızca android.permission.INJECT_EVENTS ayrıcalık izni Araba Girişi API'sinden CustomInputEvents kaydetme ve alma (CarInputManager). Hiçbir üçüncü taraf hizmeti veya uygulaması Bu Android sistem izniyle imzalanmalıdır (yalnızca OEM hizmetleri). Dolayısıyla, hiçbir üçüncü taraf hizmeti veya uygulaması karşılaştırabilirsiniz.

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

Referans uygulaması

Referans uygulamayı packages/services/Car/tests/SampleCustomInputService örnek ve yol gösterici olarak verilmiştir. Örneğin, yeni bir düğme eklemek için düğmesi de var. Bu yeni düğme, basıldığında mevcut araba konumunu içeren Google Haritalar uygulamasıyla.

Bu örnekte, OEM INPUT_CODE_F1 (ilk CustomInputEvent) kolaylık işlevi) bu yeni özelliği temsil eder (Haritalar uygulamasını arabanın geçerli konumuna bakın).

Başlatma sırasında bu hizmet kendini CarInputManager üzerinde kaydeder requestInputEventCapture aracılığıyla (bkz. referans uygulama kayıt kodu:

Bu hizmet, gelen CustomInputEvents alırken amacı gönderir Haritalar uygulamasını başlatın. Bunun nasıl yapıldığını öğrenmek için CustomInputEventListener.java.