Ses Geçişi

Kullanıcılar günlük görevlerini gerçekleştirmek için birden fazla ses kaynağı cihazı kullanmaya başladıkça, farklı cihazlarda mikrofonlu kulaklık kullanımını yönetmek için daha basit bir çözüme yönelik talep artıyor. Ses Geçişi, kullanıcı etkinliğine (ör. film başlatma) ve öncelikli etkinliklere (ör. gelen arama) göre cihazlar arasında mikrofonlu kulaklık bağlantılarını sorunsuz bir şekilde geçirir.

Kullanıcı Deneyimi İlkeleri

  1. Bağlantı geçişi hızlı ve kullanıcı eylemine dayalı olmalıdır.
  2. Bağlantı geçişi kullanıcılara şeffaf olmalı ve istenen geçiş yapılmasını istemedikleri durumlarda bunları kontrol etmelerine/geri almalarına izin vermelidir.
  3. Geçiş yaparken kullanıcı gizliliğine saygı gösterilmelidir.

Roller

Ses Geçişi Arayan: Arayan, uygun olduğunda bağlanmak için yakındaki bir mikrofonlu kulaklık arayan bir ses kaynağı cihazıdır (ör. telefon veya tablet).

Ses Geçişi Sağlayıcısı: Sağlayıcı, normalde bilgisi ve bağlantı durumunu arayanların geçiş kararları vermesine yardımcı olan bir mikrofonlu kulaklıktır.

Koşullara Genel Bakış

Akıllı geçiş özelliğini kullanmak için sağlayıcılar aşağıdaki şartlara uymalıdır:

Ad Açıklama Koşullar Zorunlu mu?
Sayfa Tarama Mevcut bir bağlantı olduğunda başka bir arayandan gelen yeni bir bağlantı isteğini kabul etmek için.
Tek noktalı Sağlayıcılar için:
  • Sağlayıcı bağlantısı kesildiğinde orijinal kaynak cihaz, ses çalma işlemini otomatik olarak duraklatır.
Çok noktalı hizmet sağlayıcılar için:
  • Hâlâ bağlantı varsa bağlantı isteğini kabul eder.
  • Bağlantı bant genişliği doluysa en az kullanılan bağlantının (ör. uzun süredir ses etkinliği olmaması) bağlantısını kesin ve yeni gelen isteği kabul edin.
Performansı iyileştirmek için düşük gecikmeli sayfa tarama modu (tarama aralığı 640 ms'den uzun olmamalıdır) gerekir.
Pil ömrü ile geçiş performansı arasında denge kurmak için Sağlayıcı, çoğu durumda varsayılan bir sayfa tarama moduna sahip olabilir (düşük güç modu, tarama aralığı 1.280 ms'den uzun olmamalıdır). Ancak düşük gecikme modu aşağıdaki durumlarda kullanılmalıdır:
  • Açılışın ilk 30 saniyesi
  • Bağlantı veya sayfa bölümü olmadığında ilk 30 saniye
  • Cihaz boşta kaldığında ilk 30 saniyesi
Zorunlu
Bağlantı geçmişi Önceki bağlantıya geri dönmek ve varsa oynatmaya devam etmek için.
Geri dönüş, Message Stream API'leri aracılığıyla yapılan iletişimler tarafından tetiklenir.
Mümkünse çalmaya devam etmek için ses duraklatma etkinliği kayda dahil edilmelidir.
Bağlantı geçmişini koruyun ve Message Stream API'lerini uygulayın. Zorunlu
Bağlantı durumu Arayanların bağlantı değiştirme kararını vermesi için.Bağlantı durumu şunları içerir:
  • Bağlantı durumu
  • Etkin bağlantının ses türü
  • Etkin bağlantının hesap bilgileri
  • Bağlı cihazlar
Bağlantı durumunu BDE Tanıtımına ve Mesaj Akışına dahil edin. Zorunlu
Çalışma zamanı özellikleri değişiyor Ses Geçişi, Sağlayıcıdaki donanım yazılımını yükseltilerek etkinleştirilebilir. Bu nedenle özelliklerin, çalışma zamanında Seeker ile Sağlayıcı arasında senkronize edilmesi gerekir. Çalışma zamanı özelliklerine erişmek için Message Stream API'lerini uygulayın. Zorunlu
Yapılandırılabilir geçiş kuralları Arayan'ın, kullanıcı tercihi ayarlarını kullanarak mevcut etkin ses akışı ve yeni ses akışı istekleri arasındaki önceliği yapılandırmasına izin verin.
Örneğin, Ses Geçişi Arayan, kullanıcıların medya akışı ve arama arasında otomatik geçişi etkinleştirmesine/devre dışı bırakmasına olanak tanıyan kullanıcı arayüzü ayarları sağlayabilir.
Ses Geçişi Arayan, geçiş kuralını Mesaj Akışı aracılığıyla ayarlar ve alır.
Yalnızca çok noktalı sağlayıcılar.
Bağlı cihazlar arasında geçiş kurallarını yapılandırılabilir hale getirmek için Message Stream API'lerini uygulayın.
İsteğe bağlı
Etkin cihaz geçişi Ses Geçişi Arayan'ın, bağlı cihazlar arasında Ses geçişini simüle etmesine izin verin.
Ses Geçişi Arayan tarafında, kullanıcıların bağlı cihazlar arasında kolayca geçiş yapmasını sağlayan bir kullanıcı arayüzü olabilir.
Yalnızca Çok Noktalı Sağlayıcılar.
Bağlı cihazlar arasındaki etkin ses kaynağını belirlemek amacıyla Ses Geçişi Arayan için Message Stream API'lerini uygulayın.
Zorunlu
Çok noktalı geçiş bildirimi Ses Geçişi Arayan'ın geçiş bildirimini göstermesine izin verin. Yalnızca Çok Noktalı Sağlayıcılar.
Çok noktalı geçiş gerçekleştiğinde bağlı Ses Geçişi Arayanlara bildirimde bulunmak için Message Stream API'lerini uygulayın.
Zorunlu

Reklam yükü

Sağlayıcı, Reklamcılık: Bulunabilir olmadığında bölümünde açıklanan Hızlı Eşleme Hesabı verilerinin üzerine inşa edilmiş geçerli bağlantı durumunu reklama belirtecektir.

Tablo 4.2 sürümünün 0x1 olduğunu unutmayın.

Bağlantı Durumu Alanı

Sekizli Veri türü Açıklama Değer Zorunlu mu?
0 uint8 Alan uzunluğu ve türü
0bLLLLTTTT
  • L = bağlantı durumunun bayt cinsinden uzunluğu
  • T = tür
0bLLLL0101
  • uzunluk: değişiklik gösterir
  • tür = 0b0101
Zorunlu
1 uint8 Bağlantı durumu
0bHAFRSSSS
  • H = kafa üzerinde algılama
  • C = bağlantının kullanılabilirliği
  • F = odak modu
  • R = otomatik olarak yeniden bağlandı
  • S = bağlantı durumu
0BHAFRSSS
Zorunlu
2 uint8 Özel veriler
Şu anda bu veriler yalnızca mevcut ses akışının kullanımını açıklamak için kullanılan içerik türünü içeriyor. Arayan, isteği Sağlayıcı'ya gönderir.
Değer, mevcut etkin akışın Arayanından Sağlayıcı'ya mesaj akışı aracılığıyla gönderilir. Geçerli etkin akış, Seeker'dan gelmiyorsa 0 değerini alır. Zorunlu
3 - var Bağlı cihazlar bit eşlemi
Şu anda Sağlayıcı'ya bağlı olan cihazları gösteren bir bit eşlem. Tüm bağlı cihazlar, bağlı tek bir cihaz için bir bit olacak şekilde sırayla düzenlenir. Süre, Sağlayıcı'nın bağlı cihazlarının sayısına göre belirlenir.
Cihaz şu anda Sağlayıcı'ya bağlıysa eşlenen bit 1, aksi takdirde 0 olarak ayarlanır.
Ayrıntılar için Bağlı Cihaz Bit Eşlemi bölümüne bakın.
İsteğe bağlı

Tablo 4.1: Bağlantı durumu alanının ham verileri

Bağlantı İşaretleri
  • 0bH = kafa üzerinde algılama

    • 1, şimdi başıda
    • 0 (aksi takdirde, kafada değil veya OHD sensörü yok)
  • 0bA = bağlantı kullanılabilirliği

    • 1, kullanılabilir bir bağlantı var
    • 0, aksi takdirde
  • 0bF = odak modu

    • 1. Odaklı modda, medya kullanımı için bağlantı değişikliğine izin verilmiyor. Yani A2DP'den A2DP'ye geçiş yapılamaz.
    • 0, aksi takdirde
  • 0 br = otomatik olarak yeniden bağlanıldı

    • 1. Mevcut bağlantı, Sağlayıcı tarafından otomatik olarak yeniden bağlandıysa, yani kullanıcılar tarafından bağlanmamışsa (çoklu bağlantı noktaları için, mevcut bağlantılardan biri otomatik olarak yeniden bağlandıysa 1 olarak ayarlanmalıdır)
    • 0, aksi takdirde
Bağlantı durumu
  • 0x0: bağlantı yok
  • 0x1: sayfalama
  • 0x2: bağlı ancak veri aktarımı yok
  • 0x3: Ses harici veri aktarımı (yalnızca değiştirilebilir, değilse 0xF kullanıldığında)
  • 0x4: A2DP akışı, AVRCP geçerli değil
  • 0x5: A2DP akışı ve AVRCP oynatma
  • 0x6: Bant içi ve bant dışı zil sesi dahil HFP (telefon/voip araması) akışı
  • 0x7: LE Audio - kontrolsüz medya akışı
  • 0x8: LE Audio - kontrollü medya akışı
  • 0x9: LE Audio - arama aktarma
  • 0xA: LE Audio - yayınlama
  • 0xF: Bağlantı anahtarını geçici olarak devre dışı bırak (ör. donanım yazılımı güncellemesi)
Bağlı Cihaz Bit Eşlemi

İstenmeyen bağlantı geçişlerini önlemek için Arayan'ın, mikrofonlu kulaklığın o anda hangi cihazlara bağlı olduğunu bilmesi gerekebilir. Örneğin, mikrofonlu kulaklık telefona bağlıyken, kullanıcı, aile üyelerinden biri tablette YouTube'u başlattığında bağlantı değişikliği nedeniyle kesintiye uğramak istemez.

Bu bit eşlemin anonim olduğunu, Arayan'ın diğer hangi cihazların Sağlayıcı'ya bağlı olduğunu bilemediğini unutmayın. Örneğin, 5 bağlı cihaz ele alalım:

  • 0: dizüstü bilgisayar (0bx0000000)
  • 1: telefonA (0b0x000000)
  • 2: telefonB (0b00x00000)
  • 3: tablet (0b000x0000)
  • 4: TV (0b0000x000)

Şu anda bağlı cihazlar bir dizüstü bilgisayar ve tabletse bit eşlemin değeri 0b10010000 olur. Kullanıcılar mikrofonlu kulaklığı fabrika ayarlarına sıfırladığında veya bağlı cihaz sayısı üst sınıra ulaştığında, sipariş değişikliği kaçınılmazsa kabul edilebilir.

Rastgele Çözümlenebilir Reklam

Sağlayıcı, kullanıcı gizliliğini takip etmekten ve bu gizliliği korumaktan kaçınmak için alanı AES-TO kullanarak hesap anahtarına göre döndürmeli ve şifrelemelidir:

 encrypted_connection_status_field = connection_status_raw_data ^ AES(Key, IV)

burada:

  1. Anahtar, sonraki bölümde tanımlanan kullanımdaki hesap anahtarından türetilir.

    • Anahtar, SHA-256 karma işlevi kullanılarak HKDF işlevi IETF RFC 5869 tarafından oluşturulur.

        Key = HKDF(account_key, NULL, UTF8("SASS-RRD-KEY"),16)
      
    • Sağlayıcı burada orijinal hesap anahtarını kullanmalıdır. Diğer bir deyişle, anahtarın ilk baytı 0x04'tür ve kullanım kalıbına dahil edilmemiştir.

  2. IV (ilk vektör), Hesap Anahtar Verileri'nin dolgusu sıfır olan 2 baytlık takviye değeridir. Yani IV, konat(tuz, 14 bayt sıfır) değerine sahiptir.

  3. Bağlantı durumu ham verileri tablo 4.1'de tanımlanmıştır. Bağlantı durumu değişirse takviye değer ve RPA aynı reklam zaman aralığında yeniden oluşturulmalıdır.

Bu, şifrelenmiş bağlantı durumu alanının, Hesap Anahtarı Verileri dönerken aynı anda dönmesini sağlar.

BDE reklamı aşağıdaki gibi yapılandırılır:

Sekizli Veri türü Açıklama Değer Zorunlu mu?
0 uint8 Sürüm ve işaretler 0x10 Zorunlu
1 - t Hesap Anahtar Verileri değişiklik gösterir Zorunlu
t+1 - s Pil Verileri değişiklik gösterir İsteğe bağlı
s+1 - var Rastgele Çözümlenebilir Veriler değişiklik gösterir Hesap Anahtarı Listesi boş değilse zorunlu,
aksi takdirde Hariç tutulur.

Tablo 4.2: Rastgele Çözümlenebilir Veriler içeren BDE reklamı

Rastgele Çözümlenebilir Veriler şunları içerir:

Sekizli Veri türü Açıklama Değer Zorunlu mu?
0 uint8 Alan uzunluğu ve türü
0bLLLLTTTT
  • L = şifrelenmiş verilerin uzunluğu
  • T = tür
0bLLLL0110
  • uzunluk: değişiklik gösterir
  • tür = 0b0110
Zorunlu
1 - var Şifrelenmiş veriler değişiklik gösterir Zorunlu

Tablo 4.2.1: Rastgele Çözülebilir Veriler

Örneğin, Rastgele Çözümlenebilir Veriler şifrelenmiş bir bağlantı durumu alanı içeriyorsa şifresi çözülmüş sonuç bağlantı durumu alanı olur.

Değişiklik yapılmasını önlemek için, Rastgele Çözülebilir Veriler reklama eklendiğinde yukarıdaki Hesap Anahtar Verileri üzerinde küçük değişiklikler yapılmalıdır. Normalde, hesap anahtarı filtresini oluştururken, hesap anahtarı filtresinin bir takviye değer ile birleştirilmesiyle bir V değeri üretilir. Bunun yerine, Rastgele Çözülebilir Verilerin de reklamı yapılıyorsa V değeri şu şekilde oluşturulmalıdır:

 V = concat(account_key, salt, random_resolvable_data)

Hem Pil Verileri hem de Rastgele Çözülebilir Veriler reklamı yapılıyorsa V şu şekilde oluşturulmalıdır:

 V = concat(account_key, salt, battery_data, random_resolvable_data)

Kullanılan Hesap Anahtarı

Bağlantı değiştirme hesap tabanlı olduğundan Sağlayıcı, mevcut bağlantının hesap bilgilerini BDE reklamına eklemelidir. Mevcut bağlı cihaz bir Ses Geçişi Arayan ise Sağlayıcı, bu Arayan ile ilişkilendirilen hesap anahtarını alabilir ve bağlantı durumu alanını şifrelemek için bu hesap anahtarını kullanabilir. Bağlı ses kaynağı "Ses Geçişi Arayan" değilse Sağlayıcı, en son kullanılan hesap anahtarını kullanmalıdır.

Sağlayıcı, hesap anahtarı filtresini hesaplamadan önce, hesap anahtarlarının ilk baytını, aşağıdaki kullanım kalıplarından birini içerecek şekilde değiştirmelidir:

  1. 0b00000100
    Bu hesap anahtarı kullanımda değil.
    Bu, varsayılan ayardır (Hesap anahtarı konusuna bakın).
  2. 0b00000101
    Bu hesap anahtarı, en son kullanılan hesap anahtarıdır.
    Bağlantı durumu alanı bu hesap anahtarı tarafından şifrelenir. Mevcut bağlantı durumuyla ilgili hesap anahtarı bilgisi yoktur. Bu, hiçbir cihazın bağlı olmadığı veya bağlı cihazın bir Ses Geçişi Arayan olmadığı anlamına gelebilir.
  3. 0b00000110
    Bu hesap anahtarı, kullanımda olan hesap anahtarıdır.
    Bağlantı durumu alanı bu hesap anahtarı tarafından şifrelenir ve bağlı mevcut cihaz bu hesap anahtarıyla ilişkilendirilir.

Ses geçişi yükü için şema

Aşağıdaki şekilde, Ses Geçişi yükü şeması gösterilmektedir.

Mesajlar

Bağlantı kurulduğunda Seeker ve Sağlayıcı, Ses Geçişi özelliğini senkronize etmek, bir bağlantı anahtarını tetiklemek, geçiş tercihini ayarlayıp almak, bağlantı durumunu bildirmek ve benzeri işlemler için Mesaj akışını kullanabilir. Aşağıdaki gibi, Ses Geçişi'ne özel bir mesaj grubu ve mesaj kodları oluştururuz.

Mesaj Grubu Adı Değer
Ses geçişi 0x07

Her bir mesaj koduyla ilgili ek ayrıntılar aşağıdaki bölümlerde açıklanmıştır.

Mesaj Kodu Adı Değer Yalnızca çok noktalı Gönderen Katılımcı Şifrele MAC EİK
Ses Geçişi özelliğini kullanın 0x10 N Her ikisi de Her ikisi de 0x11 koduyla N H N
Ses Geçişi özelliğini bildirme 0x11 N Her ikisi de Her ikisi de N E E
Çok noktalı durumu ayarlama 0x12 E Arayan Sağlayıcı N E E
Geçiş tercihini ayarlama 0x20 E Arayan Sağlayıcı N E E
Geçiş tercihi alma 0x21 E Arayan Sağlayıcı (0x22 koduyla) N H N
Bildirim değiştirme tercihi 0x22 E Sağlayıcı Arayan N H N
Etkin ses kaynağını değiştirme(bağlı cihaza) 0x30 E Arayan Sağlayıcı N E E
Geri dön (bağlantısı kesilen cihaza) 0x31 N Arayan Sağlayıcı N E E
Çok noktalı geçiş etkinliğini bildir 0x32 E Sağlayıcı Arayan N H N
Bağlantı durumunu alma 0x33 E Arayan Sağlayıcı (0x34 koduyla) N H N
Bağlantı durumunu bildir 0x34 E Sağlayıcı Arayan E H N
Ses geçişi başlatılan bağlantıyı bildir 0x40 N Arayan Sağlayıcı N E E
Hesap anahtarı kullanılırken bunu belirtin 0x41 N Arayan Sağlayıcı N E E
Özel verileri gönder 0x42 N Arayan Sağlayıcı N E E
Bağlantıyı kesme hedefini ayarlama 0x43 E Arayan Sağlayıcı N E E

Tablo 4.3: Ses değiştirme mesajları

Ses Geçişi Mesajlarının MAC Adresi

Mesaj kimlik doğrulaması sağlamak için Arayan'dan Sağlayıcıya gönderilen ek verilerle tüm Ses Geçişi mesajları için bir Mesaj Kimlik Doğrulama Kodu gerekir. MAC içeren bir mesaj alındığında, Arayan'ın, Sağlayıcının mesaja tepki verip vermediğini bilmesi için mesaj onaylanmalıdır.

Mesaj kimlik doğrulaması başarılı olursa Sağlayıcı, mesaj için ACK'yi gönderir:

Sekizli Veri Türü Açıklama Değer
0 Uint8 Onay 0xFF
1 Uint8 EİK 0x01
2 - 3 uint16 Ek veri uzunluğu değişiklik gösterir
4 Uint8 Ses geçişi 0x07
5 Uint8 Ses değiştirme mesaj kodu değişiklik gösterir
6 - sn Ek veriler değişiklik gösterir

Başarısız olursa Sağlayıcı mesaj için NAK'yi gönderecektir:

Sekizli Veri Türü Açıklama Değer
0 Uint8 Onay 0xFF
1 Uint8 YOK 0x02
2 - 3 uint16 Ek veri uzunluğu 0x0003
4 Uint8 Hata nedeni değişiklik gösterir
5 Uint8 Ses geçişi 0x07
6 Uint8 Ses değiştirme mesaj kodu değişiklik gösterir

Gönderenin sağlayıcı olması durumunda MAC'nin gerekli olmadığını unutmayın.

Ses Geçişi özelliğini kullanın

Ses Geçişi Sağlayıcı ve Arayan, bağlı Hızlı Eşleme Arayan/Sağlayıcı'nın, Ses Geçişi'ni destekleyip desteklemediğini aşağıdaki mesajı kullanarak kontrol edebilir:

Sekizli Veri Türü Açıklama Değer
0 Uint8 Ses geçişi 0x07
1 Uint8 Ses Geçişi özelliğini kullanın 0x10
2 - 3 uint16 Ek veri uzunluğu 0

Tablo 4.3.1.0: Ses Geçişi özelliğini alma

Ses Geçişi özelliğini bildirme

Ses Geçişi özelliğimesaj kodunu aldıktan sonra, Ses Geçişi Arayan/Sağlayıcı aşağıdaki işaretlerden biriyle yanıt verir:

Sekizli Veri Türü Açıklama Değer
0 Uint8 Ses geçişi 0x07
1 Uint8 Ses Geçişi özelliğini bildirme 0x11
2 - 3 uint16 Ek veri uzunluğu Bu, Sağlayıcı tarafından gönderildiyse
4 tarafından gönderildiyse 20
4 - 5 uint16 Ses geçişi sürüm kodu Sıfır olmayan bir değer, Ses Geçişi'ni desteklediği anlamına gelir. Mevcut sürüm kodu (güvenlik geliştirmesi içeren) 0x0102'dir.
0x0000 veya 1 saniyede yanıt verilmemesi, Ses Geçişi'nin bu cihazda desteklenmediği anlamına gelir
6 - 7 flags Sağlayıcının ses değiştirme özelliği işaretleri
Bu bilgi Seeker tarafından gönderilirse bu iki bayt yoksayılmalıdır.
değişiklik gösterir
Ses değiştirme işlevi işaretleri'ne bakın.
8 - 15 Mesaj tek seferlik rastgele
Yalnızca Arayan tarafından gönderildiğinde zorunludur
değişiklik gösterir
16 - 23 Mesaj kimlik doğrulama kodu
Yalnızca arayan tarafından gönderildiğinde zorunludur
değişiklik gösterir

Tablo 4.3.1.1: Ses Geçişi özelliğini bildirme

Ses değiştirme işlevi işaretleri
  1. Bit 0 (6 sekizli, MSB): Ses geçiş durumu

    • Ses geçiş durumu açıksa 1
    • 0, aksi takdirde
  2. Bit 1: Çok noktalı yapılandırılabilirlik

    • 1, cihaz birden fazla noktayı destekliyorsa ve açık ve kapalı duruma getirilebilirse
    • 0, aksi takdirde (çok noktalı desteklenmez veya çok nokta her zaman açıktır)
  3. Bit 2: Çok noktalı geçerli durum

    • Birden çok nokta açıksa 1
    • 0, aksi takdirde
  4. Bit 3: Kafada algılama

    • 1, bu cihaz kafa üzerinde algılamayı destekliyorsa (kafa üstü algılama şu anda kapatılmış olsa bile)
    • 0, aksi takdirde
  5. Bit 4: Kafa üzerinde algılama mevcut durumu

    • Kafa üzerinde algılama özelliği etkinse 1
    • 0, aksi takdirde (kafada algılamayı desteklemez veya kafa üzerinde algılama devre dışıdır)
  6. Diğer tüm bitler ayrılmıştır (varsayılan olarak 0).

Çok noktalı durum ayarla

Ses Geçişi Arayanlar'a, kullanıcılara çok noktalı işlevini açma/kapatma ayarı sunabiliriz. Arayan, aşağıdaki mesajı kullanarak çoklu nokta durumunu Sağlayıcı'ya ayarlar:

Sekizli Veri Türü Açıklama Değer
0 Uint8 Ses geçişi 0x07
1 Uint8 Çok noktalı durum ayarla 0x12
2 - 3 uint16 Ek veri uzunluğu 17
4 Uint8 Çok noktalı durum 0: çoklu noktayı kapat
1: çok noktalı anahtarı aç
5 - 12 İleti tek seferlik rastgele sayısı değişiklik gösterir
13 - 20 İleti kimlik doğrulama kodu değişiklik gösterir

Tablo 4.3.1.2: Çok nokta durumunu ayarlama

Geçiş tercihini ayarla

Ses Geçişi Arayanlar, çok noktanın geçiş tercihini değiştirebilir ve aşağıdaki mesajı kullanarak bunu Sağlayıcı olarak ayarlayabilir:

Sekizli Veri Türü Açıklama Değer
0 Uint8 Ses geçişi 0x07
1 Uint8 Geçiş tercihini ayarla 0x20
2 - 3 uint16 Ek veri uzunluğu 18
4 flags Geçiş tercihi değişiklik gösterir
Çok noktalı geçiş tercihi işaretini inceleyin
5 Gelişmiş geçiş ayarları
Bu bayt ayrılmış, varsayılan değer 0'dır
değişiklik gösterir
6 - 13 İleti tek seferlik rastgele sayısı değişiklik gösterir
14 - 21 İleti kimlik doğrulama kodu değişiklik gösterir

Tablo 4.3.2.0: Geçiş tercihini ayarlama

Çok nokta değiştirme tercihi işareti
  • Bit 0 (MSB): A2DP ve A2DP (varsayılan 0)
  • Bit 1: HFP ve HFP (varsayılan 0)
  • Bit 2: A2DP ve HFP (varsayılan 0)
  • Bit 3: HFP ve A2DP (varsayılan 1)
  • Bit 4 - 7: ayırtıldı
  • Yukarıdaki ifade "yeni profil isteği" ve "mevcut etkin profil" karşılaştırmasını gösterir.
    • Geçiş yapmamak için 0
    • Geçiş için 1

Geçiş tercihini alma

Ses Geçişi Arayanlar, aşağıdaki mesajı kullanarak birden çok noktanın geçiş tercihini Sağlayıcı'dan sorgulayabilir:

Sekizli Veri Türü Açıklama Değer
0 Uint8 Ses geçişi 0x07
1 Uint8 Geçiş yapılandırması alma 0x21
2 - 3 uint16 Ek veri uzunluğu 0

Tablo 4.3.2.1: Geçiş tercihini alma

Bildirim değiştirme tercihi

Sekizli Veri Türü Açıklama Değer
0 Uint8 Ses geçişi 0x07
1 Uint8 Bildirim değiştirme tercihi 0x22
2 - 3 uint16 Ek veri uzunluğu 2
4 flags Tercih işaretlerini değiştirme değişiklik gösterir
Çok noktalı geçiş tercihi işaretini inceleyin
5 Gelişmiş geçiş ayarları
Bu bayt ayrılmış, varsayılan değer 0 olmalıdır
değişiklik gösterir

Tablo 4.3.2.2: Geçiş tercihini bildirme

Etkin ses kaynağını değiştirir (bağlı cihaza)

Ses Geçişi Arayanlar, aşağıdaki mesajı kullanarak çok noktalı sağlayıcıdan bağlı cihazlar arasında etkin ses kaynağını değiştirmesini isteyebilir:

Sekizli Veri Türü Açıklama Değer
0 Uint8 Ses geçişi 0x07
1 Uint8 Etkin ses kaynağını değiştirir (bağlı cihaza) 0x30
2 - 3 uint16 Ek veri uzunluğu 17
4 flags Etkin ses kaynağı etkinlik bayraklarını değiştirme değişiklik gösterir
Etkin ses kaynağı etkinliğini değiştirme bölümüne bakın
5 - 12 İleti tek seferlik rastgele sayısı değişiklik gösterir
13 - 20 İleti kimlik doğrulama kodu değişiklik gösterir

Tablo 4.3.3.0: Etkin ses kaynağını (bağlı cihaza) değiştirin

Etkin ses kaynağı etkinliğini değiştirme
  • Bit 0 (MSB): Bu cihaz için 1 anahtar, ikinci bağlı cihaza 0 anahtar
  • Bit 1: 1, geçişten sonra cihaz geçişinde oynatmaya devam eder. Aksi takdirde 0. Oynamaya devam etmek, Sağlayıcının AVRCP profili üzerinden Arayan'a bir OYNATMA bildirimi göndermesi anlamına gelir. Önceki durum (taşınmadan önceki) PLAY değilse Sağlayıcı bu işareti yok saymalıdır.
  • Bit 2: Dışarıdaki cihazda 1 reddetme SCO'su, aksi takdirde 0
  • Bit 3: 1'i açma cihazında Bluetooth bağlantısını kesin, aksi takdirde 0'ı seçin.
  • Bit 4 - 7: ayrılmış.

Ses Geçişi Arayanlar, durum bilgilerini her zaman doğru şekilde bilemeyebilirler. Bu nedenle, Arayan kişi zaten etkin cihaz olduğunda Sağlayıcı'nın "bu cihaza geç" mesajı alması mümkündür. Bu durumda, Sağlayıcı, Seeker'da doğru kullanıcı arayüzünü göstermek için hata nedeni olan 0x4 - Yedek cihaz işlemi olan bir NAK gönderebilir.

Geri dön (bağlantısı kesilen cihaza)

Bağlantının değiştirilmesi istenmiyorsa kullanıcılar geçişi geri alabilir ve bazı durumlarda, kesintiyi en aza indirmek için ses bağlantısını geri yüklemek mantıklıdır. Arayan, tekrar geçiş yapmak için aşağıdaki mesajı kullanır:

Sekizli Veri Türü Açıklama Değer
0 Uint8 Ses geçişi 0x07
1 Uint8 Geri dön (bağlantısı kesilen cihaza) 0x31
2 - 3 uint16 Ek veri uzunluğu 17
4 Uint8 Geri dönme etkinliği değişken
0x01: eski haline dön
0x02: geri dön ve oynatmaya devam et
5 - 12 İleti tek seferlik rastgele sayısı değişiklik gösterir
13 - 20 İleti kimlik doğrulama kodu değişiklik gösterir

Tablo 4.3.3.1: Geri dönme (bağlantısı kesilen cihaza)

Çok noktalı Sağlayıcılar söz konusu olduğunda, Sağlayıcı, bağlantı değiştirme işlemi için bir ses kaynağı cihazıyla olan bağlantıyı kesip diğer ses kaynağındaki ses oturumunu duraklatabilir. Örneğin, çok noktalı mikrofonlu kulaklığın bir tablete ve desteklenen 3. bir Ses geçiş cihazına bağlı olduğunu varsayalım. Telefondan gelen bir arama olduğunda kullanıcı tablette video izliyor. Telefon, mikrofonlu kulaklıkta bir bağlantı anahtarını tetikler. Bu geçişin, telefona bağlanmak için 3. cihazın bağlantısını kesmesi gerekir. Aynı zamanda, zil sesini telefondan almak için tabletteki medya oturumunu duraklatmanız gerekir. Kullanıcı aramayı reddederse telefon, mikrofonlu kulaklıktan "geri dönüp çalmaya devam etmesini" isteyebilir. Bu istek alındıktan sonra mikrofonlu kulaklık 3. cihaza yeniden bağlanmalı ve duraklatılan videoyu tablette oynatmaya devam etmelidir.

Birden çok noktalı geçiş etkinliğini bildir

Ses Geçişi Arayan özelliği, kullanıcılara çok noktalı geçiş etkinliğinden haberdar olmalarını sağlamak için kullanıcılara bildirim gösterebilir. Sağlayıcı, bağlı Ses Geçişi Arayanlara geçiş etkinliği hakkında bilgi vermelidir.

Sekizli Veri Türü Açıklama Değer
0 Uint8 Ses geçişi 0x07
1 Uint8 Çok noktalı geçişi bildir
Sağlayıcı bunu her anahtarda göndermelidir: Ses Geçişi Arayan - Ses Olmayan Geçiş Arayan, Ses Olmayan Geçiş Arayan - Ses Geçişi Arayan ve Ses Geçişi Arayan - Ses Geçişi Arayan - Ses Geçişi Arayan
0x32
2 - 3 uint16 Ek veri uzunluğu değişiklik gösterir
4 Uint8 Geçiş nedeni değişiklik gösterir
0x00: Belirtilmemiş
0x01: A2DP akışı
0x02: HFP
5 Uint8 Hedef cihaz değişiklik gösterir
0x01: bu cihaz
0x02: başka bir bağlı cihaz
6 - n Uf8 Hedef cihaz adı
Hedef cihaz, Arayan'ın gönderdiği adı kullanan ve Ses Geçişi Arayan ise adresinin son 2 baytı (uygun değilse) kullanılarak
değişiklik gösterir

Tablo 4.3.3.2: Birden çok noktalı geçiş etkinliğini bildirme

Bağlantı durumunu alma

Arayan, geçerli bağlantı durumunu Sağlayıcıdan alabilir:

Sekizli Veri Türü Açıklama Değer
0 Uint8 Ses geçişi 0x07
1 Uint8 Bağlantı durumunu alma 0x33
2 - 3 uint16 Ek veri uzunluğu 0

Tablo 4.3.3.3: Bağlantı durumunu alma

Bu mesajı aldıktan sonra Sağlayıcı, 0x34 mesaj koduyla yanıt verecek ve bağlantı durumunu bildirecektir.

Bağlantı durumunu bildir

BDE reklam yükünde tanımlandığı gibi, çok noktalı Sağlayıcılar için bağlantı durumu değişirse (reklam paketinin değiştirilmesi hariç) Sağlayıcı, aynı hesap anahtarını kullanan Bağlı Arayanlara da değişiklik hakkında bilgi vermelidir. Sağlayıcı, bir Ses Geçişi Arayan ve Ses Geçişi Arayan'a bağlı değilse Ses Geçişi Arayan'a, Ses Geçişi Arayan'ın etkin olması halinde Sağlayıcı, bağlı Ses Geçişi Arayan'a da bağlantı durumu hakkında bilgi vermelidir (arayan'ın hesap anahtarını kullanarak).

Sekizli Veri Türü Açıklama Değer
0 Uint8 Ses geçişi 0x07
1 Uint8 Bağlantı durumunu bildir 0x34
2 - 3 uint16 Ek veri uzunluğu değişiklik gösterir
4 Uint8 Etkin cihaz işareti değişken
0x00: Bu Arayan pasiftir ve aktif cihaz aynı hesap anahtarını (
0x01) kullanmaktadır: Bu Arayan, etkin cihaz
0x02'dir: Bu Arayan pasif, etkin cihaz ise Ses Geçişi Arayan' değildir.
5 - n Şifrelenmiş bağlantı durumu değişiklik gösterir
n+1 - n+8 İleti tek seferlik rastgele sayısı değişiklik gösterir

Tablo 4.3.3.4: Bağlantı durumunu bildirme

Şifrelenmiş bağlantı durumu mesajı

 encrypted_connection_status = connection_status_raw_data ^ AES(Key, IV)

Bu örnekte:

Ses geçişi başlatılan bağlantıyı bildir

Ses Geçişi Sağlayıcıların, bağlantı geçişinin farklı tepkilerin verilmesi için Ses Geçişi tarafından tetiklenip tetiklenmediğini bilmesi gerekebilir (ör. Ses Geçişi etkinlikleri için ses sinyallerini devre dışı bırakma). Arayan, Sağlayıcı'ya bu bağlantının Ses Geçişi'nden başlatılan bir bağlantı olduğunu bildirmek için bir mesaj gönderir.

Sekizli Veri Türü Açıklama Değer
0 Uint8 Ses geçişi 0x07
1 Uint8 Ses geçişi başlatılan bağlantıyı bildir 0x40
2 - 3 uint16 Ek veri uzunluğu 17
4 Uint8 Ses geçişi başlatma bağlantı göstergesi değişiklik gösterir
0: Bu bağlantı,
1 Ses anahtarı tarafından tetiklenmedi: Bu, Ses geçişi tarafından başlatılan bir bağlantıydı
5 - 12 İleti tek seferlik rastgele sayısı değişiklik gösterir
13 - 20 İleti kimlik doğrulama kodu değişiklik gösterir

Tablo 4.3.4.0: Ses geçişi başlatılan bağlantıyı bildirme

Hesap anahtarı kullanılırken belirtin

Arayan'da birden fazla hesap anahtarı (ör. birden çok kullanıcı) Sağlayıcı ile ilişkilendirilmişse Arayan, hangi hesap anahtarının kullanılmakta olduğunu belirtmek için aşağıdaki mesajı kullanır.

Sekizli Veri Türü Açıklama Değer
0 Uint8 Ses geçişi 0x07
1 Uint8 Hesap anahtarı kullanılırken belirtin 0x41
2 - 3 uint16 Ek veri uzunluğu 22
4 - 9 Uf8 Kullanılan dize UTF8 ("kullanımda")
10 - 17 İleti tek seferlik rastgele sayısı değişiklik gösterir
18 - 25 İleti kimlik doğrulama kodu değişiklik gösterir

Tablo 4.3.4.1: Kullanımdaki hesap anahtarını belirtin

Sağlayıcı, bu mesajı aldıktan sonra mesaj kimlik doğrulama kodunu doğrulayarak hangi hesap anahtarının kullanılmakta olduğunu bilir.

Özel veri gönder

Etkin Ses Geçişi Arayan, ses akışıyla ilgili bilgileri (ör. ses kullanımı) özel veri baytı olarak kapsayabilir ve aşağıdaki mesajı kullanarak Sağlayıcı'ya gönderebilir:

Sekizli Veri Türü Açıklama Değer
0 Uint8 Ses geçişi 0x07
1 Uint8 Özel veri gönder 0x42
2 - 3 uint16 Ek veri uzunluğu 17
4 Uint8 Özel veriler değişiklik gösterir
5 - 12 İleti tek seferlik rastgele sayısı değişiklik gösterir
13 - 20 İleti kimlik doğrulama kodu değişiklik gösterir

Tablo 4.3.4.2: Özel verileri gönderme

Sağlayıcı, özel verileri aldıktan sonra reklam paketini özel verileri içerecek şekilde günceller. Çok noktalı Sağlayıcı için aynı hesap anahtarını kullanarak bağlantı durumu değişikliğinin başka bir Bağlı Arayana da bildirilmesi gerekir.

Bağlantıyı kesme hedefini ayarla

Çok noktalı mikrofonlu kulaklıklarda, kesilecek tercih edilen bağlantı en son kullanılan bağlantı değilse Ses Geçişi Arayanlar, aşağıdaki mesajı kullanarak Sağlayıcı'ya hangi cihazın kesileceğini söyleyebilir:

Sekizli Veri Türü Açıklama Değer
0 Uint8 Ses geçişi 0x07
1 Uint8 Bağlantıyı kesme hedefini ayarla 0x43
2 - 3 uint16 Ek veri uzunluğu 17
4 Uint8 Bırakılacak bağlı cihazı hedefle
1'e değişir: bu cihaz
5 - 12 İleti tek seferlik rastgele sayısı değişiklik gösterir
13 - 20 İleti kimlik doğrulama kodu değişiklik gösterir

Tablo 4.3.4.3: Bağlantı kesme hedefini ayarlama

Referans Uygulama

Referans uygulaması için Yakındaki yerleştirilmiş SDK kitaplığı'na bakın