Etkin VIA'nın seçimi, CarSettings'te
ManageAssistActivity
tarafından yapılır. Bu akış, Ayarlar ekranının Varsayılan uygulamalar bölümünde PackageInstaller uygulaması tarafından tetiklenir.

Şekil 1. Ayarlar ekranındaki varsayılan uygulamalar
Seçilen VIA, sisteme iki şekilde sunulur:
RolesManagerSistem hizmetinin bir parçası olarakVoiceInteractionManagerService,AssistUtilsdahili API'si aracılığıyla.
RolesManager
ile android.app.role.ASSISTANT rol adını kullanarak olası VIA'ların listesini alabilirsiniz.
Özel kelime tetikleme
Android, donanım DSP'sinin üzerinde bir soyutlama olarak AlwaysOnHotwordDetector'ı sağlar. Bu, düşük enerjiyle çalışan her zaman açık ses tanıma için VoiceInteractionService'yı ses modeliyle ilişkilendirmenin kolay bir yolunu sunar. Bu, kullanıcının yeni bir görüşme başlatmak için Sesli Uygulama (VA) ile etkileşim kurmayı istediği en yaygın ve bilinen etkileşim akışıdır. Bu şekilde başlatılan sesli oturumlar SHOW_SOURCE_ASSIST_GESTURE flag ile tanımlanır.

Şekil 2. Özel kelime tetikleme
Lejant. Sistem hizmetleri açık mavi, VIA bileşenleri ise yeşil renkte gösterilir.
PTT tetikleme
Bu, donanım düğmesine uzun veya kısa basma için geçerlidir. AAOS'te PTT, CarInputService tarafından işlenir. Varsayılan bir uygulamada bu hizmet, Araç HAL'si aracılığıyla alınan giriş etkinliklerini işler ve özellikle sesli etkileşim söz konusu olduğunda önemli etkinliklere aşağıdaki mantığı uygular:
- Kısa PTT etkinlikleri (
KeyEvent.KEYCODE_VOICE_ASSIST), yeni bir ses oturumu başlatmak içinVoiceInteractionManagerService'ye yönlendirilir. - Uzun PTT etkinlikleri önce projeksiyon alıcılarına (ör. Android Auto veya CarPlay), ardından Bluetooth ile bağlı cihazlara ve son olarak yerel VIA uygulamasına iletilir.
Bu akış kullanılarak başlatılan oturumlar SHOW_SOURCE_PUSH_TO_TALK ile tanımlanır.

Şekil 3. PTT tetikleme
Donanım sesli kontrol düğmesini AAOS'ye entegre etmek için Automotive Key Input entegrasyonuna bakın.
Konuşmak için dokunma tetikleme (veya yazılım düğmesi)
Sistem kullanıcı arayüzünden sesli etkileşimi tetiklemek için AssistUtil kullanılır. Bu, yalnızca aşağıdakileri sağlayan sistem kullanıcı arayüzü gibi paketlenmiş sistem uygulamaları tarafından kullanılabilen gizli bir sistem API'sidir:
- Sesli kontrol oturumlarını başlatmak için
VoiceInteractionManagerServiceile etkileşimde bulunma - Şu anda seçili olan VIA'yı belirleyin.
Seçilen VIA uygulamasını dinamik olarak sunmak için sistem kullanıcı arayüzü, RoleManager kullanabilir ve ROLE_ASSISTANT için rol sahibindeki değişiklikleri takip edebilir.
TTT tetiklemeyi uygulama örneğini CarSystemUI'de AssistantButton bulabilirsiniz.

Şekil 4. Konuşmak için dokunma özelliğini tetikleme
Sesli asistanın Tap-to-Read (TTR) özelliği
Otomotiv'de, bildirim merkezine gönderilen veINBOX veya INBOX_IN_GROUP bildirimleri (ör. SMS mesajları) olarak tanımlanan bildirimlerde, kullanıcının bildirimleri seçilen VIA tarafından sesli okutmasına ve isteğe bağlı olarak sesle yanıtlamasına olanak tanıyan bir Play işlemi düğmesi bulunur.

Şekil 5. Bildirimler
Bu akışın nasıl uygulanacağı hakkında daha fazla bilgi için Mesajlaşma komutlarını işleme başlıklı makaleyi inceleyin.
VIA'yı araba başlatıcıdan başlatma
Diğer uygulamalar gibi, VIA'lar da manifestlerinde bir veya daha fazla başlatıcı etkinliği içerebilir. Bu faaliyetlerin ne yapacağına uygulama geliştirici ve bu uygulamayı önceden yüklemeyi kabul eden OEM karar verir.
Önemli. Otomotiv'de, sistem etkinlikleri de dahil olmak üzere tüm etkinlikler sürüş sırasında kullanıcı deneyimi kısıtlamalarına tabidir. Başlatıcı simgesinden etkinleştirmek istediğiniz deneyimin sürüş sırasında kullanılabilmesi için deneyimi izin verilenler listesine ekleyin (OEM iseniz) veya etkinliği distractionOptimized meta verileriyle açıklama olarak ekleyin. Daha fazla bilgi için Sürücü dikkatini dağıtma yönergeleri'ne bakın.
DSP ve ses HAL'si
Eşzamanlı yakalama bölümünde, eşzamanlı olarak her zaman açık ses kaydı ve ses HAL ile ilgili güncellenen kuralları inceleyin. Bu API'lere erişim, Etkin kelimelere yanıt verme bölümünde açıklandığı gibi etkin kelime algılama performansını önemli ölçüde etkileyebilir.
İzinler
Sistemin ayrıcalıklı izinlerini verme
Ayrıcalıklı izin kullanıcı tarafından verilemediğinden bir VIA'nın bunlardan herhangi birine ihtiyacı varsa OEM'ler APK'larını sistem görüntülerine önceden yüklemeli ve bu izinleri derlemelerinde açıkça vermelidir. İzin isteme başlıklı makaleyi inceleyin.
Bunu yapmak için projenize bir ayrıcalık izin verilenler listesi bağımlılığı ekleyin:
Android.bp
android_app {
...
required: ["privapp_allowlist_com.example.myvoicecontrol"],
...
}Sisteme ayrıcalık tanıma izin verilenler listesi dosyasını yourdata/etc/car
klasörüne ekleyin:
vendor/…/data/etc/car/Android.bp
prebuilt_etc { name:privapp_allowlist_com.example.myvoicecontrol", sub_dir: "permissions", src: "com.example.myvoicecontrol.xml", filename_from_src: true, }
vendor/…/data/etc/car/com.example.myvoicecontrol.xml
<?xml version="1.0" encoding="utf-8"?> <permissions> <privapp-permissions package="com.android.car.voicecontrol"> <permission name="android.permission.MEDIA_CONTENT_CONTROL"/> </privapp-permissions> </permissions>
Tehlikeli izinlerin önceden verilmesi
VIA, İzin
isteme başlıklı makalede belirtildiği gibi belirli işlevlere erişmek için kullanıcı izni gerektirir. Bu izinlerden bazıları varsayılan VoiceInteractionService için önceden verilmiştir (VoiceInteractionService bölümüne bakın).
Varsayılan işleyicilerin izinleri hakkında daha fazla bilgi için Yalnızca varsayılan işleyicilerde kullanılan izinler başlıklı makaleyi inceleyin.DefaultPermissionGrantPolicy.java default-permissions.xml yapılandırma dosyasını kullanarak izinleri önceden de verebilirsiniz. İzinlerin önceden verilmesiyle ilgili kısıtlamalar hakkında ayrıntılı bilgi için Android
Uyumluluk Tanımı Belgesi'nin (CDD) 9. bölümüne bakın.
Önemli. Her durumda, bu izinler yalnızca varsayılan VIA'ya önceden verilir. Sistemde önceden yüklenmiş birden fazla VIA varsa varsayılan olmayan VIA, kurulumunun bir parçası olarak veya ilk kullanım sırasında kullanıcıdan açıkça izin istemelidir.
Dağıtım (önceden yükleme ve güncellemeleri dağıtma)
Önceden yüklenmiş VIA'lar /product/priv-apps veya /vendor/priv-apps bölümleri ve klasörleri altında bulunmalıdır (Bölümler hakkında daha fazla bilgiyi Bölümlere genel bakış ve Ürün bölümleri oluşturma başlıklı makalelerde bulabilirsiniz).
İkinci durumda, satıcı bölümü sistemden ayrı olarak güncellenebildiğinden burada barındırılan uygulamalar @hide sistem API'lerine erişemez. Önceden yüklenmiş uygulamaların konumuna bağlı olarak güncellemeler OTA (OTA güncellemeleri bölümüne bakın) olarak veya uygulama mağazasından uygulama güncellemeleri aracılığıyla yapılabilir.
Özelleştirme
Otomotive özel kavramlar bölümünde belirtildiği gibi, otomotivde kullanıcı arayüzü/kullanıcı deneyimi tutarlılığı ve özelleştirme, diğer tüm form faktörlerinden daha önemlidir. Maksimum birlikte çalışabilirlik için AAOS Car UI kitaplığının kullanılması önemle tavsiye edilir. Bu kitaplık, OEM'ler tarafından özelleştirilmek üzere tasarlanmış otomotiv uygulamalarına entegre edilebilecek bileşenler ve kaynaklar içerir. Bu sayede, tek bir APK, kullanıcı arayüzünün her araba modelinin tasarımına göre özelleştirilebileceği şekilde oluşturulabilir.