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:
İlk öğe, OEM tarafından tanımlanacak giriş kodunu temsil eder. Herhangi bir anlamı giriş koduyla ilişkilendirebilirsiniz.
İkinci öğe, hedef ekranı (ör. ana ekran) depolar veya kümeyi temsil eder.
Üçü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:
CarInputManager.CarInputCaptureCallback#onKeyEvents uygulamasını uygulayın.
CarInputManager#requestInputEventCapture aracılığıyla kaydolun. giriş olarak
CarInputManager.INPUT_TYPE_CUSTOM_INPUT_EVENT
geçiriliyor type parametresine benzer.Kaydı iptal etmek için hizmetlerin çağırarak CarInputManager#releaseInputEventCapture.
Aşağıdaki şemada, bir OEM özel giriş etkinliğinin iş akışı gösterilmektedir.
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.