Pengalihan Audio

Seiring makin banyaknya pengguna yang memanfaatkan berbagai perangkat sumber audio untuk melakukan tugas sehari-hari, permintaan akan solusi yang lebih sederhana untuk mengelola headset terus meningkat digunakan di seluruh perangkat. Pengalihan audio beralih koneksi headset dengan lancar antar perangkat berdasarkan aktivitas pengguna (mis. memulai film) dan diprioritaskan peristiwa (misalnya, panggilan masuk).

Prinsip UX

  1. Peralihan koneksi harus dilakukan dengan cepat dan berdasarkan tindakan pengguna.
  2. Peralihan koneksi harus transparan kepada pengguna, memungkinkan pengguna untuk {i>control/revert<i} jika pengalihan tidak diinginkan.
  3. Peralihan harus menghormati privasi pengguna.

Peran

Pencari Beralih Audio: Pencari adalah perangkat sumber audio (misalnya, ponsel atau tablet), mencari headset di sekitar untuk dihubungkan jika perlu.

Penyedia Beralih Audio: Penyedia biasanya adalah headset yang mengiklankan status kehadiran dan koneksi bagi Pencari Kerja untuk membuat keputusan peralihan.

Ringkasan Persyaratan

Untuk mencapai smart switch, Penyedia harus mematuhi persyaratan berikut:

Nama Deskripsi Persyaratan Wajib?
Pemindaian Halaman Untuk menerima permintaan koneksi baru dari Pencari Kerja lain saat ada koneksi yang ada.
Untuk Penyedia titik tunggal:
  • Perangkat sumber asli akan otomatis menjeda pemutaran audionya saat Penyedia memutuskan koneksi.
Untuk Penyedia multipoint:
  • Jika masih ada koneksi yang tersedia, permintaan koneksi akan diterima.
  • Jika bandwidth koneksi penuh, putuskan koneksi yang paling lama digunakan (misalnya, tidak ada peristiwa audio dalam waktu yang lama), dan terima permintaan masuk yang baru.
Mode pemindaian halaman latensi rendah (interval pemindaian tidak boleh lebih besar dari 640 md) diperlukan untuk meningkatkan performa.
Untuk mengimbangi masa pakai baterai dan performa pengalihan, Penyedia dapat memiliki mode pemindaian halaman default untuk sebagian besar kasus (mode daya rendah, interval pemindaian tidak boleh lebih besar dari 1.280 md). Namun, mode latensi rendah harus digunakan dalam situasi berikut:
  • 30 detik pertama dinyalakan
  • 30 detik pertama tanpa koneksi atau paging
  • 30 detik pertama perangkat tidak ada aktivitas
Wajib
Histori koneksi Untuk beralih kembali ke koneksi sebelumnya dan melanjutkan pemutaran jika memungkinkan.
Beralih kembali akan dipicu oleh komunikasi melalui Message Stream API.
Peristiwa jeda audio harus disertakan dalam rekaman untuk melanjutkan pemutaran jika berlaku.
Mempertahankan histori koneksi dan menerapkan Message Stream API. Wajib
Status koneksi Agar Pencari Kerja dapat melakukan penilaian pengalihan koneksi.Status sambungan mencakup:
  • Status koneksi
  • Jenis audio koneksi aktif
  • Informasi akun dari koneksi yang aktif
  • Perangkat terhubung
Menyertakan status koneksi di BLE Broadcastment dan Message Stream. Wajib
Perubahan kemampuan runtime Pengalihan audio dapat diaktifkan dengan mengupgrade firmware di Penyedia, sehingga kemampuan antara Pencari dan Penyedia perlu disinkronkan saat runtime. Mengimplementasikan Message Stream API untuk mengakses kemampuan runtime. Wajib
Aturan pengalihan yang dapat dikonfigurasi Izinkan Pencari mengonfigurasi prioritas antara streaming audio aktif yang ada dan permintaan streaming audio baru melalui setelan preferensi pengguna.
Misalnya, Pencari tombol audio dapat memberikan setelan UI untuk memungkinkan pengguna mengaktifkan/menonaktifkan pengalihan otomatis antara streaming dan panggilan media.
Pencari pengalihan audio akan menetapkan dan mendapatkan aturan pengalihan melalui Aliran Pesan.
Khusus Penyedia Multipoint.
Implementasikan Message Stream API agar aturan peralihan antar-perangkat terhubung dapat dikonfigurasi.
Opsional
Pengalihan perangkat aktif Izinkan Audio beralih Pencarier menyimulasikan Pengalihan audio antar-perangkat terhubung.
Di sisi Pencari beralih Audio, mungkin terdapat UI yang memudahkan pengguna beralih antar-perangkat terhubung.
Khusus Penyedia Multipoint.
Implementasikan Message Stream API untuk Pencari tombol Audio untuk menentukan sumber audio aktif di antara perangkat terhubung.
Wajib
Notifikasi pengalihan multipoint Izinkan Pencari pengalihan Audio menampilkan notifikasi pengalihan. Khusus Penyedia Multipoint.
Mengimplementasikan Message Stream API untuk memberi tahu Pencari pengalihan Audio yang terhubung saat pengalihan multipoint terjadi.
Wajib

Payload iklan

Penyedia harus menyertakan status koneksinya saat ini dalam iklan, dibuat berdasarkan data Akun Sambungan Cepat yang dijelaskan dalam Iklan: Saat tidak dapat ditemukan.

Perhatikan bahwa versi tabel 4.2 adalah 0x1.

Kolom Status Koneksi

Oktet Jenis data Deskripsi Nilai Wajib?
0 uint8 Panjang dan jenis kolom
0bLLLLTTTT
  • L = panjang status koneksi dalam byte
  • T = jenis
0bLLLL0101
  • length: bervariasi
  • jenis = 0b0101
Wajib
1 uint8 Status koneksi
0bHAFRSSSS
  • H = saat terdeteksi oleh kepala
  • A = ketersediaan koneksi
  • F = mode fokus
  • R = terhubung kembali secara otomatis
  • S = status koneksi
0bHAFRSSSS
Wajib
2 uint8 Data kustom
Saat ini, format ini hanya berisi jenis konten yang digunakan untuk menjelaskan penggunaan streaming audio saat ini. Pencari akan mengirimkannya ke Penyedia.
Nilai dikirim dari Pencari streaming aktif saat ini ke Penyedia melalui aliran pesan. 0 jika streaming yang aktif saat ini bukan dari Pencari Kerja. Wajib
3 - var Bitmap perangkat terhubung
Bitmap untuk menunjukkan perangkat mana yang saat ini terhubung ke Penyedia. Semua perangkat dengan ikatan disusun berurutan, satu bit untuk satu perangkat dengan ikatan. Durasinya akan bergantung pada jumlah perangkat berikat dari Penyedia.
Bit yang dipetakan disetel ke 1 jika perangkat saat ini terhubung ke Provider, 0 jika tidak.
Lihat Bitmap Perangkat yang Terhubung untuk mengetahui detailnya
Opsional

Tabel 4.1: Data mentah kolom status koneksi

Tanda Koneksi
  • 0bH = deteksi kepala

    • 1, di depan mata
    • 0, jika tidak, tidak ada di kepala atau tidak ada sensor OHD
  • 0bA = ketersediaan koneksi

    • 1, ada koneksi yang tersedia
    • 0, jika tidak
  • 0bF = mode fokus

    • 1, dalam mode terfokus sekarang, pengalihan koneksi tidak diizinkan untuk media penggunaan, yaitu tidak ada peralihan A2DP ke A2DP
    • 0, jika tidak
  • 0bR = terhubung kembali secara otomatis

    • 1, jika koneksi saat ini dihubungkan secara otomatis oleh Penyedia, yang berarti tidak dihubungkan oleh pengguna (untuk multipoint, jika salah satu dari koneksi terhubung kembali secara otomatis, seharusnya disetel ke 1)
    • 0, jika tidak
Status koneksi
  • 0x0: tidak ada koneksi
  • 0x1: {i>paging<i}
  • 0x2: terhubung tetapi tidak ada transfer data
  • 0x3: Transfer data non-audio (hanya jika dapat dialihkan, jika tidak, menggunakan 0xF)
  • 0x4: Streaming A2DP, AVRCP tidak berlaku
  • 0x5: Streaming A2DP dan pemutaran AVRCP
  • 0x6: Streaming HFP (panggilan telepon/voip), termasuk nada dering inband dan non-inband
  • 0x7: LE audio - streaming media tanpa kontrol
  • 0x8: LE audio - streaming media dengan kontrol
  • 0x9: LE audio - streaming panggilan
  • 0xA: LE audio - siaran
  • 0xF: Menonaktifkan pengalihan koneksi untuk sementara (mis. update firmware)
Jenis Konteks LE Audio dan Status Koneksi

Menyarankan bahwa Penyedia Audio LE harus menangani semua jenis konteks yang ditentukan di Assigned Numbers 6.12.3 (kecuali jika Penyedia secara eksplisit tidak mendukung jenis konteks tertentu) dan pemetaan tipe konteks ke status koneksi seperti di bawah ini.

  • Percakapan: 0x9
  • Media: 0x8
  • Game: 0x7
  • Instruksional: 0x7
  • Asisten Suara: 0x9
  • Live: 0x9
  • Efek Suara: 0x2
  • Notifikasi: 0x2
  • Nada dering: 0x9
  • Peringatan: 0x7
  • Alarm Darurat: 0x9

Untuk skenario jenis konteks LE Audio campuran seperti memutar media selama , Penyedia harus menggunakan status koneksi dengan prioritas tertinggi, yaitu menggunakan 0x9 (panggilan) untuk skenario di atas, bukan 0x8 (media).

Bitmap Perangkat Terhubung

Untuk menghindari pengalihan koneksi yang tidak diinginkan, Pencari Kerja mungkin perlu mengetahui perangkat yang saat ini tersambung dengan headset. Misalnya, saat headset terhubung ke ponsel, pengguna tidak ingin diganggu oleh beralih koneksi saat salah satu anggota keluarganya memulai YouTube di tablet.

Perhatikan bahwa bitmap ini bersifat anonim, Pencari Kerja tidak dapat mengetahui apa perangkat terhubung dengan Penyedia. Misalnya, ambil 5 perangkat yang memiliki ikatan:

  • 0: laptop (0bx0000000)
  • 1: teleponA (0b0x000000)
  • 2: teleponB (0b00x00000)
  • 3: tablet (0b000x0000)
  • 4: TV (0b0000x000)

Jika perangkat yang terhubung saat ini adalah laptop dan tablet, nilai bitmap akan menjadi 0b10010000. Perubahan pesanan dapat diterima jika tidak dapat dihindari, mis. saat pengguna mereset headset ke setelan pabrik atau saat jumlah perangkat yang terhubung mencapai batas atas.

Iklan Acak yang Dapat Diselesaikan

Untuk menghindari pelacakan dan menghormati privasi pengguna, Penyedia harus merotasi dan mengenkripsi kolom dengan kunci akun menggunakan AES-CTR:

 encrypted_connection_status_field = connection_status_raw_data ^ AES(Key, IV)

di mana

  1. Kunci berasal dari kunci akun yang sedang digunakan, yang akan didefinisikan di bagian berikutnya.

    • Kunci dihasilkan oleh fungsi HKDF, IETF RFC 5869, menggunakan SHA-256 fungsi {i>hash<i}.

        Key = HKDF(account_key, NULL, UTF8("SASS-RRD-KEY"),16)
      
    • Penyedia harus menggunakan kunci akun asli di sini, yaitu byte pertama kuncinya adalah 0x04, tidak termasuk dalam pola penggunaan.

  2. IV (vektor awal) adalah salt 2 byte dari Data Kunci Akun dengan nol padding, yaitu IV adalah concat(garam, 14-byte ZERO).

  3. Status koneksi data mentah didefinisikan dalam tabel 4.1, jika perubahan status koneksi, {i>salt<i} dan RPA harus dibuat kembali di rentang waktu iklan yang sama.

Hal ini membuat isian status koneksi yang dienkripsi berputar pada waktu yang sama dengan Data Kunci Akun dirotasi.

Iklan BLE akan disusun sebagai berikut:

Oktet Jenis data Deskripsi Nilai Wajib?
0 uint8 Versi dan tanda 0x10 Wajib
1 - t Data Kunci Akun bervariasi Wajib
t+1 - s Data Baterai bervariasi Opsional
s+1 - var Data yang Dapat Diselesaikan secara Acak bervariasi Wajib jika Daftar Kunci Akun tidak kosong,
jika tidak Dikecualikan.

Tabel 4.2: Iklan BLE dengan Data Acak yang Dapat Diselesaikan

Data yang Dapat Diselesaikan Acak berisi:

Oktet Jenis data Deskripsi Nilai Wajib?
0 uint8 Panjang dan jenis kolom
0bLLLLTTTT
  • L = panjang data yang dienkripsi
  • T = jenis
0bLL0110
  • length: bervariasi
  • jenis = 0b0110
Wajib
1 - var Data terenkripsi bervariasi Wajib

Tabel 4.2.1: Data Acak yang Dapat Diselesaikan

Sebagai contoh, jika Data yang Dapat Diselesaikan Acak berisi koneksi yang dienkripsi status, hasil yang didekripsi akan menjadi bidang status koneksi.

Untuk mencegah sabotase, Data Kunci Akun di atas harus sedikit diubah jika Data yang Dapat Diselesaikan Acak disertakan dalam iklan. Biasanya, ketika membuat filter kunci akun, nilai V dihasilkan dengan menggabungkan bagian dan menambahkan {i>salt<i}. Sebaliknya, ketika Data yang Dapat Diselesaikan Acak juga diiklankan, nilai V harus disusun sebagai:

 V = concat(account_key, salt, random_resolvable_data)

Jika Data Baterai dan Data yang Dapat Diselesaikan Acak diiklankan, V harus disusun sebagai:

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

Kunci Akun yang Sedang Digunakan

Pengalihan koneksi berbasis akun, sehingga Penyedia harus menyertakan informasi akun dari koneksi saat ini dalam iklan BLE. Jika perangkat yang terhubung saat ini adalah Pencari tombol akses audio, Penyedia harus dapat mendapatkan kunci akun yang terkait dengan Pencari Kerja ini, dan gunakan kunci akun ini untuk mengenkripsi kolom status koneksi. Jika sumber audio yang terhubung adalah non-Audio beralih Pencari, Penyedia harus menggunakan kunci akun yang terakhir digunakan.

Sebelum menghitung filter kunci akun, Penyedia harus memodifikasi kunci sandi byte kunci akun untuk menyertakan salah satu hal berikut dalam pola penggunaan:

  1. 0b00000100
    Kunci akun ini tidak digunakan.
    Kunci akun ini adalah kunci default (lihat Kunci akun).
  2. 0b00000101
    Kunci akun ini adalah kunci akun yang terakhir digunakan.
    Kolom status koneksi dienkripsi oleh kunci akun ini. Tidak ada informasi kunci akun dari status koneksi saat ini, itu bisa berarti tidak perangkat yang terhubung atau perangkat yang tersambung bukanlah Pencari sakelar audio.
  3. 0b00000110
    Kunci akun ini adalah kunci akun yang sedang digunakan.
    Kolom status koneksi dienkripsi oleh kunci akun ini, dan perangkat terhubung akan dikaitkan dengan kunci akun ini.

Skema untuk payload pengalihan Audio

Gambar di bawah menunjukkan skema untuk payload pengalihan Audio.

Pesan

Saat terhubung, Pencari dan Penyedia dapat menggunakan Stream pesan untuk menyinkronkan Audio kemampuan beralih, memicu pengalihan koneksi, menyetel dan memulai pengalihan preferensi, memberi tahu status koneksi dan sebagainya. Kita membuat grup pesan dan kode pesan khusus untuk Pengalihan audio seperti di bawah ini.

Nama Grup Pesan Nilai
Beralih audio 0x07

Detail tambahan untuk setiap kode pesan disertakan di bagian berikut.

Nama Kode Pesan Nilai Hanya multipoint Pengirim Perespons Enkripsikan MAC ACK
Mendapatkan kemampuan pengalihan Audio 0x10 T Keduanya Keduanya, melalui kode 0x11 T T T
Memberi tahu kemampuan pengalihan Audio 0x11 T Keduanya Keduanya T Y Y
Menetapkan status multititik 0x12 Y Pencari Kerja Penyedia T Y Y
Menetapkan preferensi pengalihan 0x20 Y Pencari Kerja Penyedia T Y Y
Mendapatkan preferensi pengalihan 0x21 Y Pencari Kerja Penyedia, melalui kode 0x22 T T T
Memberi tahu preferensi pengalihan 0x22 Y Penyedia Pencari Kerja T T T
Mengganti sumber audio aktif(ke perangkat yang terhubung) 0x30 Y Pencari Kerja Penyedia T Y Y
Beralih kembali 0x31 T Pencari Kerja Penyedia T Y Y
Memberi tahu peristiwa multipoint-switch 0x32 Y Penyedia Pencari Kerja T T T
Mendapatkan status koneksi 0x33 Y Pencari Kerja Penyedia, melalui kode 0x34 T T T
Beri tahu status koneksi 0x34 Y Penyedia Pencari Kerja Y T T
Beri tahu koneksi yang dimulai saat pengalihan Audio 0x40 T Pencari Kerja Penyedia T Y Y
Sebutkan kunci akun yang digunakan 0x41 T Pencari Kerja Penyedia T Y Y
Mengirim data kustom 0x42 T Pencari Kerja Penyedia T Y Y
Menetapkan target koneksi drop 0x43 Y Pencari Kerja Penyedia T Y Y

Tabel 4.3: Pesan beralih audio

MAC Pesan pengalihan Audio

Untuk memberikan autentikasi pesan, semua pesan beralih Audio dengan data yang dikirim dari Pencari Kerja ke Penyedia memerlukan Kode Autentikasi Pesan. Kapan pesan dengan MAC diterima, pesan tersebut harus dikonfirmasi agar Pencari Kerja mengetahui apakah Penyedia telah bereaksi terhadap pesan atau tidak.

Jika otentikasi pesan berhasil, Penyedia harus mengirim ACK untuk pesan:

Oktet Jenis Data Deskripsi Nilai
0 uint8 Persetujuan 0xFF
1 uint8 ACK 0x01
2 - 3 uint16 Panjang data tambahan bervariasi
4 uint8 Beralih audio 0x07
5 uint8 Kode pesan pengalihan audio bervariasi
6 - dtk Data tambahan bervariasi

Jika gagal, Penyedia harus mengirim NAK untuk pesan:

Oktet Jenis Data Deskripsi Nilai
0 uint8 Persetujuan 0xFF
1 uint8 NAK 0x02
2 - 3 uint16 Panjang data tambahan 0x0003
4 uint8 Penyebab kesalahan bervariasi
5 uint8 Beralih audio 0x07
6 uint8 Kode pesan pengalihan audio bervariasi

Perhatikan bahwa, jika Penyedia adalah pengirim, MAC tidak diperlukan.

Mendapatkan kemampuan pengalihan Audio

Penyedia pengalihan Audio dan Pencari Kerja dapat memeriksa apakah Sambungan Cepat yang terhubung Pencari/Penyedia mendukung Pengalihan audio atau tidak dengan menggunakan pesan di bawah:

Oktet Jenis Data Deskripsi Nilai
0 uint8 Beralih audio 0x07
1 uint8 Mendapatkan kemampuan pengalihan Audio 0x10
2 - 3 uint16 Panjang data tambahan 0

Tabel 4.3.1.0: Mendapatkan kemampuan pengalihan Audio

Memberi tahu kemampuan pengalihan Audio

Setelah menerima pesan dapatkan kemampuan pengalihan Audio kode, Pencari/Penyedia tombol audio akan merespons dengan salah satu tanda:

Oktet Jenis Data Deskripsi Nilai
0 uint8 Beralih audio 0x07
1 uint8 Memberi tahu kemampuan pengalihan Audio 0x11
2 - 3 uint16 Panjang data tambahan 20 jika dikirim oleh Pencari Kerja
4 jika dikirim oleh Penyedia
4 - 5 uint16 Kode versi pengalihan audio Nilai bukan nol berarti fungsi ini mendukung pengalihan Audio. Kode versi saat ini (dengan peningkatan keamanan) adalah 0x0102.
0x0000 respons atau tidak ada respons dalam 1 detik berarti Pengalihan audio tidak didukung di perangkat ini
6 - 7 flags Tanda kemampuan pengalihan audio Penyedia
Jika dikirim oleh Pencari Kerja, kedua byte ini harus diabaikan.
bervariasi
Lihat Tanda kemampuan pengalihan audio
8-15 tahun Pesan nonce
Hanya diperlukan saat dikirim oleh Pencari Kerja
bervariasi
16 - 23 Kode autentikasi pesan
Hanya diperlukan saat dikirim oleh Pencari Kerja
bervariasi

Tabel 4.3.1.1: Kemampuan notifikasi untuk Pengalihan audio

Tanda kemampuan pengalihan audio
  1. Bit 0 (oktet 6, MSB): Status pengalihan audio

    • 1, jika status pengalihan Audio aktif
    • 0, jika tidak
  2. Bit 1: kemampuan konfigurasi multipoint

    • 1, jika perangkat mendukung multipoint dan dapat diaktifkan nonaktif
    • 0, jika tidak (tidak mendukung multipoint atau multipoint selalu aktif)
  3. Bit 2: status saat ini multipoint

    • 1, jika multipoint aktif
    • 0, jika tidak
  4. Bit 3: deteksi di kepala

    • 1, jika perangkat ini mendukung deteksi pada kepala (meskipun deteksi pada kepala dinonaktifkan sekarang)
    • 0, jika tidak
  5. Bit 4: status saat ini deteksi di kepala

    • 1, jika deteksi pada kepala diaktifkan
    • 0, jika tidak (tidak mendukung deteksi pada kepala atau deteksi kepala dinonaktifkan)
  6. Semua bit lainnya dicadangkan, secara default 0.

Menetapkan status multipoint

Di Pencari tombol Audio, kami dapat menyediakan setelan untuk mengaktifkan/menonaktifkan Pencari tombol audio fungsi multipoint. Pencari akan menyetel status multipoint ke Penyedia menggunakan pesan di bawah ini:

Oktet Jenis Data Deskripsi Nilai
0 uint8 Beralih audio 0x07
1 uint8 Menetapkan status multipoint 0x12
2 - 3 uint16 Panjang data tambahan 17
4 uint8 Status multipoint 0: nonaktifkan multipoint
1: aktifkan multipoint
5-12 tahun Nonce pesan bervariasi
13 - 20 Kode autentikasi pesan bervariasi

Tabel 4.3.1.2: Menetapkan status multipoint

Menyetel preferensi pengalihan

Pencari pengalihan audio dapat memodifikasi preferensi pengalihan multipoint dan ke Penyedia menggunakan pesan di bawah ini:

Oktet Jenis Data Deskripsi Nilai
0 uint8 Beralih audio 0x07
1 uint8 Menyetel preferensi pengalihan 0x20
2 - 3 uint16 Panjang data tambahan 18
4 flags Beralih preferensi bervariasi
Lihat tanda preferensi pengalihan multititik
5 Setelan pengalihan lanjutan
Byte ini dicadangkan, nilai defaultnya adalah 0
bervariasi
6-13 tahun Nonce pesan bervariasi
14 - 21 Kode autentikasi pesan bervariasi

Tabel 4.3.2.0: Menetapkan preferensi pengalihan

Tanda preferensi pengalihan multititik
  • Bit 0 (MSB): A2DP vs A2DP (default 0)
  • Bit 1: HFP vs HFP (default 0)
  • Bit 2: A2DP vs HFP (default 0)
  • Bit 3: HFP vs A2DP (default 1)
  • Bit 4 - 7: cadangan
  • Di atas mewakili "permintaan profil baru" vs "profil yang aktif saat ini"
    • 0 jika tidak beralih
    • 1 untuk beralih

Mendapatkan preferensi beralih

Pencari pengalihan audio dapat mengkueri preferensi pengalihan multipoint dari Penyedia menggunakan pesan di bawah ini:

Oktet Jenis Data Deskripsi Nilai
0 uint8 Beralih audio 0x07
1 uint8 Mendapatkan konfigurasi pengalihan 0x21
2 - 3 uint16 Panjang data tambahan 0

Tabel 4.3.2.1: Mendapatkan preferensi pengalihan

Beri tahu preferensi pengalihan

Oktet Jenis Data Deskripsi Nilai
0 uint8 Beralih audio 0x07
1 uint8 Beri tahu preferensi pengalihan 0x22
2 - 3 uint16 Panjang data tambahan 2
4 flags Mengalihkan tanda preferensi bervariasi
Lihat tanda preferensi pengalihan multititik
5 Setelan pengalihan lanjutan
Byte ini dicadangkan, nilai default harus 0
bervariasi

Tabel 4.3.2.2: Memberi tahu preferensi pengalihan

Mengalihkan sumber audio aktif (ke perangkat yang terhubung)

Pencari pengalihan audio dapat meminta Penyedia multipoint untuk mengalihkan sumber audio antar-perangkat terhubung menggunakan pesan di bawah:

Oktet Jenis Data Deskripsi Nilai
0 uint8 Beralih audio 0x07
1 uint8 Mengalihkan sumber audio aktif (ke perangkat yang terhubung) 0x30
2 - 3 uint16 Panjang data tambahan 17
4 flags Mengalihkan tanda peristiwa sumber audio aktif bervariasi
Lihat mengganti peristiwa sumber audio aktif
5-12 tahun Nonce pesan bervariasi
13 - 20 Kode autentikasi pesan bervariasi

Tabel 4.3.3.0: Mengalihkan sumber audio aktif (ke perangkat terhubung)

Mengalihkan peristiwa sumber audio aktif
  • Bit 0 (MSB): 1 beralih ke perangkat ini, 0 beralih ke perangkat kedua yang terhubung
  • Bit 1: 1 melanjutkan pemutaran saat beralih ke perangkat setelah beralih, 0 jika tidak. Melanjutkan pemutaran berarti Penyedia mengirimkan notifikasi PLAY kepada Pencari Kerja melalui profil AVRCP. Jika status sebelumnya (sebelum dialihkan) tidak PLAY, Penyedia harus mengabaikan tanda ini.
  • Bit 2: 1 tolak SCO pada perangkat yang dialihkan, 0 jika tidak
  • Bit 3: 1 memutuskan Bluetooth pada perangkat beralih, 0 jika tidak.
  • Bit 4 - 7: cadangan.

Pencari pengalihan audio mungkin tidak selalu mengetahui statusnya dengan benar, jadi mungkin saja bagi Penyedia untuk menerima "tombol ke perangkat ini" pesan saat Pencari Kerja perangkat yang aktif. Dalam hal ini, untuk menampilkan UI yang benar di Pencari, Penyedia dapat mengirim NAK dengan alasan error, 0x4 - Tindakan perangkat yang redundan.

Untuk Penyedia Audio LE yang memiliki lebih dari satu anggota, Penyedia harus memutuskan sambungan semua anggota dari Pencari, jika tidak, tumpukan bluetooth dari Pencari akan terhubung kembali ke Penyedia.

Beralih kembali (ke perangkat yang terputus)

Jika pengalihan koneksi tidak diinginkan, pengguna dapat mengembalikan pengalihan tersebut, dan skenario tertentu, sebaiknya pulihkan koneksi audio untuk meminimalkan gangguan layanan. Pencari akan menggunakan pesan di bawah ini untuk memicu pengalihan kembali:

Oktet Jenis Data Deskripsi Nilai
0 uint8 Beralih audio 0x07
1 uint8 Beralih kembali (ke perangkat yang terputus) 0x31
2 - 3 uint16 Panjang data tambahan 17
4 uint8 Beralih kembali ke peristiwa bervariasi
0x01: beralih kembali
0x02: beralih kembali dan lanjutkan pemutaran
5-12 tahun Nonce pesan bervariasi
13 - 20 Kode autentikasi pesan bervariasi

Tabel 4.3.3.1: Beralih kembali (ke perangkat yang terputus)

Bagi Penyedia multipoint, untuk melakukan pengalihan koneksi, Penyedia dapat melepaskan dengan satu perangkat sumber audio dan menjeda sesi audio di perangkat lainnya sumber audio. Misalnya, anggaplah headset multipoint terhubung ke tablet dan perangkat pengalihan Audio ke-3 yang didukung. Pengguna sedang menonton video tablet ketika ada panggilan masuk di ponsel mereka. Ponsel akan dipicu tombol koneksi di headset, yang perlu melepaskan agar terhubung ke ponsel, sekaligus menjeda media di tablet untuk mendapatkan nada dering dari ponsel. Jika pengguna menolak panggilan, ponsel mungkin akan meminta headset untuk "beralih kembali dan melanjutkan pemutaran". Setelah menerima permintaan ini, headset harus terhubung kembali ke perangkat ketiga, dan melanjutkan pemutaran video yang dijeda di tablet.

Memberi tahu peristiwa multipoint-switch

Agar pengguna mengetahui terjadinya peristiwa pengalihan multipoint, tombol Audio Pencari dapat menampilkan notifikasi kepada pengguna. Penyedia harus memberi tahu bahwa koneksi Pencari pengalihan audio tentang peristiwa pengalihan.

Oktet Jenis Data Deskripsi Nilai
0 uint8 Beralih audio 0x07
1 uint8 Beri tahu peristiwa pengalihan multipoint
Penyedia harus mengirimkannya di setiap tombol, termasuk Pencari pengalihan Audio ke Pencari tombol akses non-Audio, Pencari pengalihan non-Audio ke Pencari pengalihan Audio, dan Pencari pengalihan Audio ke Pencari pengalihan audio
0x32
2 - 3 uint16 Panjang data tambahan bervariasi
4 uint8 Alasan pengalihan
Nilai ini harus ditentukan berdasarkan Status koneksi. Untuk kasus penggunaan LE Audio, mempelajari pemetaan antara Jenis Konteks LE Audio dan status Koneksi mungkin berguna. Misalnya, status koneksi yang sesuai dengan Asisten Suara adalah 0x9(LE audio - streaming panggilan). Jadi, alasan pengalihan untuk tombol yang dimulai oleh Asisten Suara seharusnya 0x02.
bervariasi
0x00: Tidak ditentukan
0x01: Media (misalnya streaming A2DP, streaming media LEA)
0x02: Panggilan (misalnya streaming HFP, streaming panggilan LEA)
5 uint8 Perangkat target bervariasi
0x01: perangkat ini
0x02: perangkat lain yang tersambung
6 - n utf8 Nama perangkat target
jika perangkat target adalah Pencari pengalihan audio, menggunakan nama yang dikirimi Pencari, atau menggunakan nama BT, jika tidak berlaku, menggunakan 2 byte terakhir alamatnya
bervariasi

Tabel 4.3.3.2: Memberi tahu peristiwa multipoint-switch

Mendapatkan status koneksi

Pencari Kerja bisa mendapatkan status koneksi saat ini dari Penyedia:

Oktet Jenis Data Deskripsi Nilai
0 uint8 Beralih audio 0x07
1 uint8 Mendapatkan status koneksi 0x33
2 - 3 uint16 Panjang data tambahan 0

Tabel 4.3.3.3: Mendapatkan status koneksi

Setelah menerima pesan ini, Penyedia harus merespons dengan kode pesan 0x34, beri tahu status koneksi.

Beri tahu status koneksi

Seperti yang ditentukan dalam payload iklan BLE, untuk penyedia multipoint, jika status koneksi berubah, kecuali untuk perubahan paket iklan, Penyedia juga harus memberi tahu Pencari yang terhubung yang menggunakan kunci akun yang sama tentang perubahan tersebut. Jika Penyedia terhubung dengan Pencari tombol akses Audio dan Pencari tombol akses non-Audio, jika tombol Pencari aktif, Penyedia juga harus memberi tahu Audio yang terhubung alihkan Pencari Kerja tentang status sambungan (menggunakan kunci akun Pencari).

Oktet Jenis Data Deskripsi Nilai
0 uint8 Beralih audio 0x07
1 uint8 Beri tahu status koneksi 0x34
2 - 3 uint16 Panjang data tambahan bervariasi
4 uint8 Tanda perangkat aktif bervariasi
0x00: Pencari ini pasif, dan perangkat aktif menggunakan kunci akun yang sama
0x01: Pencari ini adalah perangkat aktif
0x02: Pencari ini pasif, dan perangkat aktif adalah Pencari tombol non-Audio.
5 - n Status koneksi terenkripsi bervariasi
n+1 - n+8 Nonce pesan bervariasi

Tabel 4.3.3.4: Memberi tahu status koneksi

Pesan status koneksi terenkripsi

 encrypted_connection_status = connection_status_raw_data ^ AES(Key, IV)

dalam hal ini:

Beri tahu koneksi yang dimulai saat pengalihan Audio

Penyedia pengalihan audio mungkin perlu mengetahui apakah pengalihan koneksi dipicu oleh tombol Audio untuk memberikan reaksi yang berbeda, misalnya nonaktifkan earcon untuk Audio peristiwa switch. Pencari Kerja mengirim pesan untuk memberi tahu Penyedia bahwa adalah koneksi yang dimulai dengan pengalihan Audio.

Oktet Jenis Data Deskripsi Nilai
0 uint8 Beralih audio 0x07
1 uint8 Beri tahu koneksi yang dimulai saat pengalihan Audio 0x40
2 - 3 uint16 Panjang data tambahan 17
4 uint8 Indikasi koneksi dimulainya pengalihan audio bervariasi
0: koneksi ini tidak dipicu oleh pengalihan Audio
1: ini adalah koneksi yang dimulai pengalihan Audio
5-12 tahun Nonce pesan bervariasi
13 - 20 Kode autentikasi pesan bervariasi

Tabel 4.3.4.0: Memberi tahu koneksi yang dimulai untuk pengalihan Audio

Cantumkan kunci akun yang sedang digunakan

Jika beberapa kunci akun pada Pencari Kerja (mis. multi-pengguna) dikaitkan dengan Penyedia, Pencari akan menggunakan pesan di bawah ini untuk menunjukkan akun mana kunci yang sedang digunakan.

Oktet Jenis Data Deskripsi Nilai
0 uint8 Beralih audio 0x07
1 uint8 Cantumkan kunci akun yang sedang digunakan 0x41
2 - 3 uint16 Panjang data tambahan 22
4 - 9 utf8 String yang sedang digunakan UTF8 ("sedang digunakan")
10 - 17 Nonce pesan bervariasi
18 - 25 Kode autentikasi pesan bervariasi

Tabel 4.3.4.1: Menunjukkan kunci akun yang digunakan

Setelah menerima pesan ini, Penyedia dapat mengetahui kunci akun mana yang digunakan dengan memverifikasi kode otentikasi pesan.

Kirim data kustom

Pencari tombol Audio aktif dapat merangkum informasi (misalnya, audio penggunaan) streaming audio dalam byte data kustom, dan mengirimkannya ke Penyedia dengan menggunakan pesan di bawah ini:

Oktet Jenis Data Deskripsi Nilai
0 uint8 Beralih audio 0x07
1 uint8 Kirim data kustom 0x42
2 - 3 uint16 Panjang data tambahan 17
4 uint8 Data kustom bervariasi
5-12 tahun Nonce pesan bervariasi
13 - 20 Kode autentikasi pesan bervariasi

Tabel 4.3.4.2: Mengirim data kustom

Setelah menerima data kustom, Penyedia akan memperbarui paket iklan menyertakan data khusus. Untuk Penyedia multipoint, penyedia itu juga harus memberi tahu status koneksi berubah menjadi Pencari Kerja lain yang terhubung menggunakan kunci akun yang sama.

Menetapkan target drop koneksi

Pada headset multititik, jika koneksi pilihan yang akan dilepas bukan yang paling jarang digunakan, Pencari pengalihan audio dapat memberi tahu Penyedia perangkat mana untuk melepaskannya menggunakan pesan di bawah ini:

Oktet Jenis Data Deskripsi Nilai
0 uint8 Beralih audio 0x07
1 uint8 Menetapkan target drop koneksi 0x43
2 - 3 uint16 Panjang data tambahan 17
4 uint8 Perangkat target yang terhubung akan dilepaskan bervariasi
1: perangkat ini
5-12 tahun Nonce pesan bervariasi
13 - 20 Kode autentikasi pesan bervariasi

Tabel 4.3.4.3: Menetapkan target drop koneksi

Penerapan Referensi

Lihat Library SDK tersemat terdekat untuk implementasi referensi