Entegrasyon akışları

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

Ayarlar ekranındaki varsayılan uygulamalar

Şekil 1. Ayarlar ekranındaki varsayılan uygulamalar

Seçilen VIA, sisteme iki şekilde gösterilir:

  1. RolesManager sistem hizmetinin bir parçası olarak
  2. VoiceInteractionManagerService tarafından AssistUtils dahili API üzerinden.

android.app.role.ASSISTANT rol adıyla RolesManager kullanılarak olası VIA'ların listesi elde edilebilir.

Özel kelime tetikleme

Android, donanım DSP'sinin üzerinde bir soyutlama olarak AlwaysOnHotwordDetector sağlar. Bu, düşük enerjili, her zaman açık konuşma tanıma için bir VoiceInteractionService'ü ses modeliyle ilişkilendirmenin uygun bir yolunu sağlar. Bu, kullanıcının yeni bir görüşme başlatmak için sesli uygulamayla (VA) etkileşim kurmayı istediği en yaygın ve bilinen etkileşim akışıdır. Bu şekilde başlatılan ses oturumları SHOW_SOURCE_ASSIST_GESTURE flag ile tanımlanır.

Özel kelime tetikleme

Şekil 2. Özel kelime tetikleme

Efsane. Sistem hizmetleri açık mavi, VIA bileşenleri yeşil renkte gösterilir.

PTT tetikleme

Bu, donanım düğmesine uzun veya kısa basmak için geçerlidir. AAOS'te PTT, CarInputService tarafından yönetilir. Varsayılan bir uygulamada bu hizmet, araç HAL'i 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çin VoiceInteractionManagerService'e yönlendirilir.
  • Uzun PTT etkinlikleri önce projeksiyon alıcılarına (ör. Android Auto veya CarPlay), ardından Bluetooth'a 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.

PTT tetikleme

Şekil 3. PTT tetikleme

Donanım sesli kontrol düğmesini AAOS'a entegre etmek için Automotive Key Input entegrasyonuna bakın.

Dokun ve Konuş tetikleyicisi (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 sistem kullanıcı arayüzü gibi paketlenmiş sistem uygulamaları tarafından kullanılabilen ve aşağıdakileri sağlayan gizli bir sistem API'sidir:

  • Sesli kontrol oturumlarını başlatmak için VoiceInteractionManagerService ile etkileşim kurma
  • Şu anda seçili olan VIA'yı belirleyin.

Sistem kullanıcı arayüzü, seçili VIA uygulamasını dinamik olarak sunmak için RoleManager'ü kullanabilir ve ROLE_ASSISTANT rolü sahibindeki değişiklikleri takip edebilir. TTT tetiklemenin nasıl uygulanacağına dair bir örneği CarSystemUI'de (AssistantButton) bulabilirsiniz.

Konuşmaya başlamak için dokunma tetikleyicisi

Şekil 4. Konuşmaya başlamak için dokunma tetikleyicisi

Sesli asistan dokunarak okuma (TTR)

Automotive'te, Bildirim Merkezi'ne gönderilen ve INBOX veya INBOX_IN_GROUP bildirimleri olarak tanımlanan bildirimler (ör. SMS mesajları), kullanıcının bildirimleri seçili VIA tarafından sesli olarak okumasına ve isteğe bağlı olarak sesli olarak yanıtlamasına olanak tanıyan bir Oynat işlem düğmesi içerir.

Bildirimler

Şekil 5. Bildirimler

Bu akışı nasıl uygulayacağınız hakkında daha fazla bilgi için Mesajlaşma komutlarını ele alma başlıklı makaleyi inceleyin.

VIA'yı Car Launcher'dan başlatma

Diğer uygulamalar gibi, VIA'lar da manifest dosyalarında bir veya daha fazla başlatıcı etkinliği içerebilir. Bu etkinliklerin ne işe yarayacağına karar vermek uygulama geliştiricinin ve bu uygulamayı önceden yüklemeyi kabul eden OEM'nin sorumluluğundadır.

Önemli. Automotive'ta sistem etkinlikleri dahil tüm etkinlikler, sürüş sırasında kullanıcı deneyimi kısıtlamalarına tabidir. Bir başlatıcı simgesinden etkinleştirmek istediğiniz deneyimin sürüş sırasında kullanılabilmesi gerekiyorsa deneyimi izin verilenler listesine ekleyin (OEM iseniz) veya etkinliği distractionOptimized meta verileriyle annotate edin. Daha fazla bilgi için Sürücünün dikkatini dağıtan uygulamalarla ilgili yönergeler başlıklı makaleyi inceleyin.

DSP ve ses HAL

Eşzamanlı yakalama bölümünde, her zaman açık eşzamanlı ses kaydı ve ses HAL'i ile ilgili güncellenmiş kuralları inceleyin. Bu API'lere erişim, Önemli kelimelere yanıt verme bölümünde açıklandığı gibi önemli kelime algılama performansını önemli ölçüde etkileyebilir.

İzinler

Sistem ayrıcalıklı izinleri verme

Ayrıcalıklı izinlerin kullanıcı tarafından verilememesi nedeniyle, bir VIA'nın bunlardan herhangi birine ihtiyacı varsa OEM'lerin APK'larını sistem resimlerine önceden yüklemeleri ve bu izinleri derlemelerinde açıkça vermeleri gerekir. İzin isteğinde bulunma başlıklı makaleyi inceleyin.

Bunu yapmak için projenize ayrıcalık izin verilenler listesi bağımlılığı ekleyin:

Android.bp

android_app {
     ...
     required: ["privapp_allowlist_com.example.myvoicecontrol"],
     ...
}

Sistem ayrıcalığı izin verilenler listesi izin 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

İzin iste bölümünde belirtildiği gibi, VIA belirli işlevlere erişmek için kullanıcı izni gerektirir. Bu izinlerden bazıları varsayılan VoiceInteractionService için önceden verilir (DefaultPermissionGrantPolicy.java 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. default-permissions.xml yapılandırma dosyasını kullanarak izinleri önceden vermek de mümkündür. İzinlerin önceden verilmesiyle ilgili kısıtlamalar hakkında ayrıntılı bilgi için Android Uyumluluk Tanımlama Belgesi'ndeki 9. Bölümü inceleyin.

Ö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 (güncellemeleri önceden yükleme ve dağıtma)

Önceden yüklenmiş VIA'lar /product/priv-apps veya /vendor/priv-apps bölüm ve klasörlerinde 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, tedarikçi firma bölümünün sistemden ayrı olarak güncellenebildiği göz önüne alındığında, burada barındırılan uygulamalar @hide sistem API'lerine erişemez. Önceden yüklenmiş uygulamaların konumuna bağlı olarak güncellemeler OTA olarak (OTA güncellemeleri bölümüne bakın) veya bir uygulama mağazasındaki uygulama güncellemeleri aracılığıyla yapılabilir.

Özelleştirme

Otomotive özgü kavramlar bölümünde belirtildiği gibi, kullanıcı arayüzü/kullanıcı deneyimi tutarlılığı ve özelleştirme, otomotiv sektöründe diğer form faktörlerinden daha önemlidir. Maksimum birlikte çalışabilirlik için AAOS araç kullanıcı arayüzü 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şenleri ve kaynakları içerir. Bu sayede, tek bir APK'nın kullanıcı arayüzü her otomobil modelinin tasarımına göre özelleştirilebilir.