Bu sayfada, ses çerçevesinin ve ses HAL'sinin (AHAL) nasıl etkinleştirileceği açıklanmaktadır. Bu etkinleştirme, Audio Managed SCO (AMSCO) olarak tanımlanan bir süreç olan senkron bağlantı odaklı (SCO) bağlantıların yönetilmesi için gereklidir.
Android 17 ve sonraki sürümlerde Android ses çerçevesi, SCO yönlendirmesini yönetmek için SCO yönetim özelliğini kullanır. Bu özellik, başlangıçta Bluetooth (BT) çerçevesi tarafından işleniyordu. Bu taşıma işlemi, SCO bağlantı durumunu BT çerçevesine ait bir durumdan ses akışı etkinliğinin aşağı akış sonucuna taşır.
Bu özellik, ses yönlendirme sahipliğini ses çerçevesi içinde merkezileştirerek SCO için ses donanımı soyutlama katmanı (HAL) uygulamasını Gelişmiş Ses Dağıtım Profili (A2DP) ve LE Audio gibi diğer BT profilleriyle uyumlu hale getirir. Bu yeniden düzenleme, telekom ve BT yığınları arasındaki etkileşimi basitleştirerek daha sağlam ve merkezi bir ses yönlendirme mimarisi sağlar.
Mimariye genel bakış
AMSCO mimarisi, SCO bağlantı yönetimini Android ses çerçevesinde merkezileştirir. Bu çerçeve, yönlendirme kararlarını ses akışı etkinliğine göre verir. Bu mimari, BT yığınının bağlantıları yönettiği önceki modelle çelişir. Bu mimarideki her bileşenin rolleri aşağıdaki gibidir:
AHAL, SCO oturumunu yalnızca aşağıdaki koşullar karşılandığında başlatır ve askıya alır:
- Etkin bir akış, SCO cihazına yönlendirilir.
- Ses modu ayarlanmış ve SCO cihazı için yama mevcut.
Ses çerçevesi, belirli ölçütler karşılandığında A2DP cihazının eşzamanlı yama almasını engeller. Ses çerçevesi artık AHAL'ye SCO durum değişiklikleri veya A2DP askıya alma işlemleri göndermiyor.
Ses çerçevesi SCO yönetimini ele aldığından BT yığını artık ses bağlantısı kurma veya bağlantısını kesme işlemlerini çağırmıyor. Önleyici SCO bağlantısı kesilmesi veya hata durumlarında BT yığını, ses çerçevesini AudioManager#onHfpAudioDisconnected ile bilgilendirir.
Planlama
SCO yönetimini yeniden düzenleme işlemini uygulamadan önce aşağıdaki uyumluluk ve mimari koşulları değerlendirmek için bu bölümdeki bilgileri kullanın.
Geriye dönük uyumluluk
Çerçevenin, OGSS'lerini veya BT OGSS'lerini güncellemeden işletim sistemi güncellemeleri alabilecek cihazları desteklemeye devam etmesini sağlamak için yeni SCO yönetiminin etkinleştirilmesi gerektiğini belirten bir sistem özelliği kullanın. Sistem özelliği devre dışı bırakıldığında veya HAL sürümü güncel olmadığında eski yol altı yıla kadar korunur.
HFP oturumunu ayarlama
AHAL, diğer BT oturum türlerine benzer şekilde, oynatmayı başlatmak veya duraklatmak için yeni eller serbest profili (HFP) oturum türünü kullanmalıdır. Yayın durumu, sonuç olarak farklı IBluetoothAudioProviders kullanılarak yönetilir. Bu IBluetoothAudioProviders, mevcut yollara bağlı olarak bir Factory sınıfı tarafından numaralandırılır ve oluşturulur.
BT yığını, mümkün olduğunda her zaman donanım boşaltma yolunu kullanır. Görüşme sırasında codec'ler için tercih sırası şu şekildedir: LC3 yazılıma kıyasla LC3 donanımı, ardından mSBC yazılımına kıyasla mSBC donanımı ve son olarak CVSD yazılıma kıyasla CVSD donanımı tercih edilir.
Aşağıdaki sıra diyagramlarında, akış durumunu oluşturmak için AHAL ile BT yığını arasındaki etkileşimler ayrıntılı olarak açıklanmaktadır.
Donanım boşaltma prosedürü
Şekil 1'de, AHAL ve BT yığınının SCO ses için doğrudan donanım veri yolu oluşturmak üzere nasıl koordineli çalıştığı gösterilmektedir:
Şekil 1. Donanım boşaltma prosedürü.
Yazılım veri yolu prosedürü
Şekil 2'de, sistem yazılımı işleme gerektiren ses verilerinin işlenme süreci gösterilmektedir:
Şekil 2. Yazılım veri yolu prosedürü.
Codec yeniden pazarlık prosedürü
Ses ağ geçidi (AG), yeni bir BT kullanılabilir codec (AT+BAC) komutu aldığında AG, codec anlaşması prosedürünü yeniden başlatır. Şekil 3'te codec yeniden anlaşma prosedürü gösterilmektedir:
Şekil 3. Codec yeniden pazarlık prosedürü.
HeadsetStateMachine üzerindeki etkisi
Java katmanı kulaklık durum makinesi (HeadsetStateMachine sınıfıyla gösterilir), yerel yığın etkinlikleriyle yönlendirilen AUDIO_CONNECTED durumu dışında büyük ölçüde değişmeden kalır.
Sistem, Java katmanında artık connectAudioNative veya disconnectAudioNative başlatmıyor. Bunun yerine sistem, yerel yığındaki ses bağlantısı durumu değişikliklerine yanıt verir. Bu değişiklikler, IBluetoothAudioProvider veya IBluetoothAudioPort üzerindeki AHAL komutlarıyla tetiklenir.
Uygulama
SCO yönetimi yeniden düzenlemesini entegre etmek için BT yığını ile ses çerçevesi arasındaki iletişimi güncelleyin.
Özelliği uygulamak için aşağıdaki adımları uygulayın:
HFP cihaz bağlantıları sırasında SCO başlatma ve kapatma işlemlerinin düzgün şekilde yönetilmesine yardımcı olmak ve etkin cihaz değişikliklerini işlemek için etkin BT'deki değişiklikler hakkında ses çerçevesini bilgilendirin. Bu bilgileri ses çerçevesine sağlamak için
AudioManager.handleBluetoothActiveDeviceChanged(HfpInfo)kullanın.
Şekil 4. HFP cihazını bağlayın.
Ses çerçevesi, ses cihazı durumunu belirtmek için eski yayınlar yerine
AudioManagerAudioDeviceCallback#onAudioDevicesAddedgeri çağırmasını kullanır.SCO bağlantısını başlatmak için birincil kontrol noktası olarak
setCommunicationDevice(AudioDeviceInfodevice)kullanarak AHAL akış kontrolünü uygulayın.HfpTransport::StartRequest,BluetoothAudioCtrlAck::PENDINGdeğerini döndürürse HFP durum makinesi oluşturulmadığı için AHAL isteği tekrar denemelidir.
Kullanım alanları
Aşağıdaki bölümlerde, tipik kritik kullanıcı yolculukları (CUJ'ler) özetlenmiştir.
Telekom görüşmesi akışı
SCO yönetimi yeniden düzenleme değişiklikleri phoneStateChanged işlevini engelleyici bir işlev haline getirir. Bu değişiklik, SCO oluşturma işlemini başlatmak için ses çerçevesi API'sini çağırmadan önce telekomünikasyonun BluetoothInCallService.onCallAdded() yönteminde phoneStateChanged yürütülmesinin tamamlanmasını beklemesine neden olur.

Şekil 5. Telekom aracılığıyla aramaları yanıtlama veya başlatma
VOIP görüşmesi akışı
Ses çerçevesi, BluetoothHeadset.startScoUsingVirtualVoiceCall yöntemini çağırarak süreci başlatır. BT yığını, ses çerçevesine bir sonuç sağladıktan sonra çerçeve, AHAL'yi startStream yürütmeye yönlendirir. Aşağıdaki şekilde bu akış gösterilmektedir:

Şekil 6. VOIP üzerinden aramaları yanıtlama veya başlatma
Ses tanıma
Hem eller serbest (HF) hem de AG tarafından başlatılan ses tanıma için BT yığını, AudioManager.setCommunicationDevice() kullanarak ses çerçevesinden SCO açmasını istemelidir. Bu durum aşağıdaki şekilde gösterilmektedir:

Şekil 7. Ses tanıma SCO başlatma.
Ses bağlantısı
BT yığını, ses tanıma sırasında AudioManager.setCommunicationDevice(AudioDeviceInfo) ile ses çerçevesini isteyerek bir SCO bağlantısı başlatır. Etkin bir görüşme varsa BT yığını, telekom yığınından BluetoothInCallService#requestBluetoothAudio isteğinde bulunur.
Bu işlem aşağıdaki şekilde gösterilmektedir:

Şekil 8. Ses bağlantısı.
Doğrulama ve test
Özelliğin doğru şekilde entegre edildiğini ve kalite standartlarını karşıladığını doğrulamak için cihaz üreticilerinin aşağıdaki testleri yapması gerekir:
- CTS Verifier: CTS Verifier'ı, aramalar sırasında ses yönlendirmesinin etkileşimli testi için kullanın.
- Vendor Test Suite (VTS): VTS'yi kullanarak AHAL ve BT AHAL etkileşimlerini doğrulayın.
Şartlar
Bu özellik aşağıdaki koşullara tabidir:
- AHAL: Uygulama için yeniden düzenlenmiş SCO yönetim yolunu destekleyen uyumlu bir AHAL gerekir.