Entegrasyon akışları

Aktif VIA'nın seçimi CarSettings'teki ManageAssistActivity tarafından yapılır. Bu akış, Ayarlar ekranının Varsayılan uygulamalar bölümünün bir parçası olarak 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 sunulur:

  1. RolesManager sistem hizmetinin bir parçası olarak
  2. AssistUtils dahili API'si aracılığıyla VoiceInteractionManagerService tarafından.

Aday VIA'ların bir listesi, android.app.role.ASSISTANT rol adıyla RolesManager kullanılarak 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 ses tanıma için bir VoiceInteractionService bir ses modeliyle ilişkilendirmenin uygun bir yolunu sağlar. Bu, kullanıcının yeni bir konuşma başlatmak için bir Ses Uygulaması (VA) ile etkileşime girmeyi talep ettiği en yaygın ve iyi bilinen etkileşim akışıdır. Bu şekilde başlatılan sesli oturumlar SHOW_SOURCE_ASSIST_GESTURE flag tanımlanır.

Özel kelime tetikleme

Şekil 2. Özel kelime tetikleme

Efsane. Sistem hizmetleri açık mavi renkte, VIA bileşenleri ise yeşil renkte görünür.

PTT tetikleme

Bu, donanım düğmesine uzun veya kısa basıldığında geçerlidir. AAOS'ta PTT, CarInputService tarafından yönetilir. Varsayılan uygulamada bu hizmet, Araç HAL'i aracılığıyla alınan giriş olaylarını yönetir ve belirli bir ses etkileşimi durumunda, anahtar olaylara aşağıdaki mantığı uygular:

  • Kısa PTT olayları ( KeyEvent.KEYCODE_VOICE_ASSIST ), yeni bir sesli oturum başlatmak için VoiceInteractionManagerService yönlendirilir.
  • Uzun PTT etkinlikleri önce projeksiyon alıcılarına (örneğin, Android Auto veya CarPlay), ardından Bluetooth bağlantılı cihazlara ve son olarak da yerel VIA uygulamasına aktarılır.

Bu akışı kullanarak başlatılan oturumlar SHOW_SOURCE_PUSH_TO_TALK ile tanımlanır.

PTT tetikleme

Şekil 3. PTT tetiklemesi

Bir donanım sesli kontrol düğmesini AAOS'a entegre etmek için bkz. Otomotiv Anahtar Girişi entegrasyonu.

Dokun-Konuş tetiklemesi (veya yazılım düğmesi)

Sistem kullanıcı arayüzünden sesli etkileşimin tetiklenmesi AssistUtil kullanılarak yapılır. Bu, yalnızca sistem kullanıcı arayüzü gibi paket 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şime geçiliyor.
  • Şu anda seçili olan VIA'nın hangisi olduğunu 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 tetiklemenin nasıl uygulanacağına ilişkin bir örnek CarSystemUI, AssistantButton bulunabilir.

Dokun-Konuş tetikleme

Şekil 4. Dokun-Konuş tetiklemesi

Sesli asistan Dokunarak Oku (TTR)

Otomotiv'de, INBOX veya INBOX_IN_GROUP bildirimleri olarak tanımlanan Bildirim Merkezi'ne gönderilen bildirimler (örneğin, SMS mesajları), kullanıcının bildirimlerin seçilen VIA tarafından yüksek sesle okunmasını ve isteğe bağlı olarak sesle yanıtlanmasını sağlayan bir Oynat eylem düğmesi içerir.

Bildirimler

Şekil 5. Bildirimler

Bu akışın nasıl uygulanacağı hakkında daha fazla bilgi için bkz. Mesajlaşma komutlarını işleme .

Araç başlatıcısından VIA'yı başlatın

Diğer uygulamalar gibi VIA'lar da bildirimlerine bir veya daha fazla başlatıcı etkinliği ekleyebilir. Bu etkinliklerin ne yapacağına karar vermek, uygulama geliştiricisine ve OEM'in bu uygulamayı önceden yüklemeyi kabul etmesine bağlıdır.

Önemli. Otomotiv'de sistem faaliyetleri de dahil olmak üzere tüm faaliyetler sürüş sırasında UX kısıtlamalarına tabidir. Başlatıcı simgesinden etkinleştirmek istediğiniz deneyimin araç kullanırken de mevcut olması gerekiyorsa, bunu ya izin verilenler listesine ekleyin (OEM iseniz) ya da etkinliğe distractionOptimized meta verilerle açıklama ekleyin. Daha fazla bilgi için bkz. Sürücünün dikkatini dağıtma kuralları .

DSP ve ses HAL

Eşzamanlı her zaman açık ses kaydı ve Eşzamanlı yakalamada ses HAL'si ile ilgili güncellenmiş yönergeleri incelediğinizden emin olun. Bu API'lere erişimin , Özel kelimelere yanıt verme bölümünde açıklandığı gibi, özel kelime algılama performansı üzerinde önemli bir etkisi olabilir.

İzinler

Sistem ayrıcalıklı izinler verin

Kullanıcı tarafından ayrıcalıklı izin verilemeyeceği göz önüne alındığında, VIA'nın bunlardan herhangi birine ihtiyacı varsa OEM'lerin APK'larını sistem görüntülerine önceden yüklemeleri ve bu izinleri yapılarında açıkça vermeleri gerekir. İzin isteme konusuna bakın.

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"],
     ...
}

Sistem ayrıcalıklı 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 ön izinleri

İzin isteme bölümünde belirtildiği gibi VIA, belirli işlevlere erişim için kullanıcının iznini gerektirir. Bu izinlerden bazıları varsayılan VoiceInteractionService önceden verilmiştir (bkz. DefaultPermissionGrantPolicy.java ). Varsayılan işleyicilere ilişkin izinler hakkında daha fazla bilgi için bkz. Yalnızca varsayılan işleyicilerde kullanılan izinler . default-permissions.xml yapılandırma dosyasını kullanarak izinleri önceden vermek de mümkündür. İzinlerin önceden verilmesiyle ilgili kısıtlamalara ilişkin ayrıntılar için Android Uyumluluk Tanımı Belgesi'ndeki (CDD) Bölüm 9'a bakın.

Önemli. Her durumda, bu izinler yalnızca varsayılan VIA'ya önceden verilmiştir. Sistemde önceden yüklenmiş birden fazla VIA varsa, varsayılan olmayan VIA'nın, kurulumun bir parçası olarak veya ilk kullanım sırasında kullanıcıdan açıkça izin istemesi gerekir.

Dağıtım (güncellemelerin ön yüklemesi ve dağıtımı)

Ö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ümlere genel bakış ve Ürün bölümleri oluşturma bölümünde bölümler hakkında daha fazla bilgi edinin).

İkinci durumda, satıcı bölümünün sistemden ayrı olarak güncellenebileceği göz önüne alındığında, burada barındırılan uygulamalar @hide sistem API'lerine erişemeyecektir. Önceden yüklenmiş uygulamaların konumuna bağlı olarak güncellemeler OTA (bkz. OTA güncellemeleri ) olarak veya bir uygulama mağazasından uygulama güncellemeleri aracılığıyla gerçekleştirilebilir.

Özelleştirme

Otomotive özgü kavramlarda belirtildiği gibi, UI/UX tutarlılığı ve kişiselleştirme otomotivde diğer form faktörlerinden daha önemlidir. Maksimum birlikte çalışabilirlik için AAOS Araç Kullanıcı Arayüzü kitaplığının kullanılması şiddetle tavsiye edilir. Bu kitaplık, OEM'ler tarafından özelleştirilmek üzere tasarlanan otomotiv uygulamalarına entegre edilebilecek bileşenleri ve kaynakları içerir. Bu şekilde tek bir APK, kullanıcı arayüzünün her araba modelinin tasarımına göre özelleştirilebileceği şekilde oluşturulabilir.