Eş zamanlı yakalama

Android 10, aynı anda birden fazla etkin ses yakalama işleminin yapılmasını gerektiren kullanıcı deneyimini iyileştirir. Örneğin, kullanıcı bir VoIP görüşmesini veya video kaydediciyi bir erişilebilirlik hizmeti tarafından sağlanan sesli komutlarla kontrol etmek istiyorsa bu özellikten yararlanabilir.

Ses çerçevesi, yalnızca belirli ayrıcalıklı uygulamaların normal uygulamalarla eşzamanlı olarak yakalamasına izin veren politikayı uygular.

Eşzamanlılık politikası, bir uygulamanın kaydı başlatmasını engellemek yerine, yakalanan sesin kapatılmasıyla uygulanır. Bu sayede çerçeve, etkin yakalama kullanım alanlarının sayısı ve türlerindeki değişiklikleri dinamik olarak ele alabilir. Başka bir uygulamanın görüntü yakalamayı bitirmesinden sonra, uygulamanın görüntü yakalamaya başlamasını engellemez.

Ses HAL'i ve ses alt sisteminin bu durumda yapması gereken, bazı durumlarda etkin bir istemciye sessiz olmayan ses sağlayan tek bir akış olsa bile aynı anda birden fazla etkin giriş akışını desteklemektir.

CDD şartları

Eşzamanlı yakalama desteğiyle ilgili gereksinimler için CDD'ye bakın.

Ses HAL'sindeki durumları yakalayın

Eş zamanlı yakalama senaryosu; etkin giriş akışlarının sayısı, giriş cihazı seçimi veya ön işleme yapılandırması açısından farklı durumlara neden olabilir.

Aşağıdakiler arasında eşzamanlılık olabilir:

  • Uygulama işlemciden (AP) gelen çeşitli giriş akışları
  • Giriş akışları ve sesli arama
  • Giriş akışları ve düşük güçte özel kelime algılama uygulayan bir ses DSP'si

AP giriş akışlarının eşzamanlı etkinliği

Ses politikası yapılandırma dosyası (audio_policy_configuration.xml), ses çerçevesi tarafından aynı anda kaç giriş akışının açılıp etkin olabileceğini belirlemek için kullanılır.

Ses HAL'si en azından, açık ve etkin yapılandırma dosyasında listelenen her giriş profilinin en az bir örneğini (sink rolüne sahip mixPort) desteklemelidir.

Cihaz Seçimi

Aynı HAL giriş akışına birkaç etkin istemci eklendiğinde çerçeve, kullanım alanı önceliğine göre bu giriş akışı için uygun cihazı seçer.

Birden fazla giriş akışı etkin olduğunda her akış farklı bir cihaz seçimine sahip olabilir.

Teknoloji uyumluysa ses HAL'nin ve alt sistemin, Bluetooth mikrofonlu kulaklık ve yerleşik mikrofon gibi farklı cihazlardan farklı yayınlar yapmasına izin vermesi önerilir.

Uyumsuzluk varsa (ör. iki cihaz aynı dijital ses arayüzünü veya arka ucu paylaşıyorsa) ses HAL'i, cihaz seçimini hangi yayının kontrol edeceğini seçmelidir.

Bu durumda:

  • Sonuçta ortaya çıkan durum tutarlı olmalı ve aynı senaryo tekrarlandığında aynı cihaz seçimini sunmalıdır.
  • Eşzamanlılık durumu sona erdiğinde, kalan etkin akış bu akışta başlangıçta istenen cihaza yönlendirilmelidir.

Etkin kullanım alanları arasında ses HAL'i tarafından bir öncelik sırası tanımlanmışsa frameworks/av/services/audiopolicy/common/include/policy.h'teki source_priority() bölümündeki sırayı uygulayın.

Ön işleme seçimi

Ses çerçevesi, addEffect() veya removeEffect() HAL yöntemlerini kullanarak bir giriş akışında ön işleme isteyebilir.

Ses çerçevesi, belirli bir giriş akışındaki ön işleme için yalnızca giriş akışındaki en yüksek öncelikli etkin kullanım alanına karşılık gelen yapılandırmayı etkinleştirir. Bununla birlikte, kullanım alanının etkinleştirilmesi ve devre dışı bırakılması sırasında bir miktar örtüşme olabilir. Bu durum, eş zamanlı iki etkin işlemin (örneğin, iki yankı iptal edici örneği) aynı giriş akışında çalışmasına neden olur. Bu durumda HAL uygulaması, hangi isteğin kabul edileceğini seçer; etkin istekleri izler ve herhangi bir işlem devre dışı bırakıldığında doğru durumu geri yükler.

Aynı anda birden fazla yakalama akışı etkin olduğunda farklı ön işleme istekleri farklı akışlarda çalıştırılabilir.

HAL ve ses alt sistem uygulamaları, aynı giriş cihazını paylaşıyor olsalar bile farklı akışlara farklı ön işlemelerin uygulanmasına izin vermelidir. Yani ön işleme, birincil yakalama kaynağından gelen akışların ardışık düzeni kaldırıldıktan sonra uygulanmalıdır.

Belirli bir ses alt sisteminde teknik nedenlerle bu mümkün değilse ses HAL'i, Cihaz seçimi bölümünde listelenenlere benzer öncelik kuralları uygulamalıdır.

AP'den eşzamanlı sesli arama ve kayıt

AP'den yakalama işlemi, sesli görüşme etkinken gerçekleşebilir. Bu durum Android 10'da yeni değildir ve doğrudan eşzamanlı çekim özelliğiyle ilgili değildir ancak bu senaryoya ilişkin kurallardan bahsetmek faydalı olacaktır.

Bir arama sırasında AP'den iki farklı türde yakalama gerekir.

Arama RX ve TX'i yakalayın

RX ve TX aramasının yakalanması, AudioSource.VOICE_UPLINK veya AudioSource.VOICE_DOWNLINK ses kaynağı ve/veya AudioDevice.IN_TELEPHONY_RX cihazının kullanılmasıyla tetiklenir.

Ses HAL'leri, AudioDevice.IN_TELEPHONY_RX cihazından kullanılabilen bir rotayla giriş profilinde (sink rolünün mixPort) gösterilmelidir.

Bir arama bağlandığında (ses modu AudioMode.IN_CALL), AudioDevice.IN_TELEPHONY_RX cihazından en az bir etkin yakalama akışı olmalıdır.

Arama etkinken giriş cihazlarından veri yakalama

Bir arama etkinken (ses modu AudioMode.IN_CALL ise) AP giriş akışlarının eşzamanlı etkinliği bölümünde belirtildiği gibi AP'den giriş akışlarını açıp etkinleştirmek mümkün olmalıdır.

Ancak AP giriş akışlarından gelen isteklerle çakışma olması durumunda cihaz seçimi ve ön işleme önceliği her zaman sesli görüşmeye göre belirlenmelidir.

DSP ve AP'den eşzamanlı yakalama

Ses alt sistemi, düşük güç tüketimi gerektiren ses bağlamı veya özel kelime algılama işlevlerini destekleyen bir DSP içeriyorsa uygulama, AP'den ve ses DSP'sinden eşzamanlı olarak veri yakalamayı desteklemelidir. Buna hem ilk algılama aşamasında DSP tarafından yapılan yakalama hem de DSP tarafından algılama tetiklendikten sonra AP tarafından AudioSource.HOTWORD ile yapılan yakalama dahildir.

Bu durum, uygulama tanımlayıcısı aracılığıyla ses tetikleyici HAL tarafından bildirilen eşzamanlı yakalama işareti ile yansıtılmalıdır: ISoundTriggerHw.Properties.concurrentCapture = true.

Ses HAL'si, AudioInputFlag.HW_HOTWORD işaretiyle tanımlanan özel kelime yakalamaya özel profil profilini de göstermeli ve giriş yapmalıdır. Uygulama, bu profilde ses tetikleyici HAL tarafından eşzamanlı olarak yüklenebilecek ses modellerinin sayısına en az eşit sayıda akış açılmasını ve etkinleştirilmesini desteklemelidir.

Diğer giriş profilleri etkin durumdayken bu giriş profilinden yakalama yapılabilir.

Asistan uygulamalarında ne gibi değişiklikler olacak?

Veri kullanımı ve kullanıcı bildirimi ile ilgili şartlar

Kötüye kullanılması durumunda eşzamanlı mikrofon kullanımı kullanıcının özel verilerini sızdırabileceğinden, Asistan rolünü üstlenmek isteyen önceden yüklenmiş ayrıcalıklı uygulamalara aşağıdaki koşulların ve garantilerin uygulanması gerekir.

  • Kullanıcı Asistan ile etkileşimde bulunmadığı sürece mikrofon aracılığıyla toplanan veriler cihazdan dışarı çıkmamalıdır. Örneğin, özel kelime tetiklendikten sonra.
  • Eşzamanlı olarak dinleyen uygulamalar, özel kelime algılandıktan sonra kullanıcıya görsel ipuçları sağlamalıdır. Bu, kullanıcıların sonraki görüşmelerin Asistan gibi farklı bir uygulamadan geçeceğini anlamalarına yardımcı olur.
  • Kullanıcılar mikrofonu veya Asistan tetikleyicilerini kapatabilmelidir.
  • Ses kayıtları depolandığında kullanıcılar kayıtlara istedikleri zaman erişebilme, onları inceleyebilme ve silebilmelidir.

Android 10 için işlevsel iyileştirmeler

Asistanlar birbirini engellemez.

Android 9 veya önceki sürümlerde, cihazda iki tane her zaman açık Asistan varsa bunlardan yalnızca biri kendi özel kelimesini dinleyebilir. Bu nedenle, iki asistan arasında geçiş yapılması gerekiyordu. Android 10'da varsayılan Asistan, diğer Asistan ile eşzamanlı olarak dinleme yapabilir. Bu sayede her iki Asistan da kullanıcılara çok daha sorunsuz bir deneyim sunabilir.

Mikrofonu açık tutan uygulamalar

Shazam veya Waze gibi uygulamalar mikrofonu açık tuttuğunda varsayılan Asistan, özel kelimeyi dinlemeye devam edebilir.

Android 10'da, varsayılan olmayan Asistan uygulamalarının davranışında herhangi bir değişiklik yoktur.

Örnek ses HAL uygulaması

Bu dokümandaki yönergelere uygun bir ses HAL'i uygulaması örneğini AOSP'de bulabilirsiniz.