Pengalihan Audio

Karena pengguna semakin menggunakan beberapa perangkat sumber audio untuk melakukan tugas harian mereka, ada juga permintaan akan solusi yang lebih sederhana untuk mengelola penggunaan headset di seluruh perangkat. Tombol audio mentransisikan koneksi headset antar-perangkat dengan lancar berdasarkan aktivitas pengguna (misalnya, memulai film) dan peristiwa yang diprioritaskan (misalnya panggilan masuk).

Prinsip UX

  1. Peralihan koneksi harus cepat dan berdasarkan tindakan pengguna.
  2. Pengalihan koneksi harus bersifat transparan bagi pengguna, sehingga pengguna dapat mengontrol/mengembalikannya jika peralihan tidak diinginkan.
  3. Peralihan harus menghormati privasi pengguna.

Peran

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

Penyedia Switch Audio: Penyedia biasanya adalah headset yang mengiklankan keberadaan dan status koneksinya bagi Pencari Kerja untuk membuat keputusan peralihan.

Ringkasan Persyaratan

Agar peralihan cerdas, Penyedia harus mematuhi persyaratan berikut:

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

Payload iklan

Penyedia harus menyertakan status koneksinya saat ini dalam iklan, yang dibuat berdasarkan data Akun Sambungan Cepat yang dijelaskan dalam Iklan: Jika 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
0bLLTTTT
  • L = panjang status koneksi dalam byte
  • T = jenis
0bLLLL0101
  • durasi: bervariasi
  • tipe = 0b0101
Wajib
1 uint8 Status koneksi
0bHAFRSSSS
  • H = saat deteksi kepala
  • A = ketersediaan koneksi
  • F = mode fokus
  • R = terhubung kembali secara otomatis
  • S = status koneksi
{i>0bHAFRSSSS<i}
Wajib
2 uint8 Data kustom
Saat ini, data ini hanya berisi jenis konten yang digunakan untuk menjelaskan penggunaan streaming audio saat ini. Pencari Kerja akan mengirimkannya ke Penyedia.
Nilai dikirim dari Pencari kerja streaming yang aktif saat ini ke Penyedia melalui aliran pesan. 0 jika streaming yang aktif saat ini bukan dari Pencari Kerja. Wajib
3 - var Bitmap perangkat yang terhubung
Bitmap untuk menampilkan perangkat yang saat ini terhubung ke Penyedia. Semua perangkat terikat disusun secara berurutan, satu bit untuk satu perangkat terikat. Panjang durasi akan bergantung pada jumlah perangkat terikat Penyedia yang ada.
Bit yang dipetakan ditetapkan ke 1 jika perangkat saat ini terhubung ke Penyedia, 0 jika perangkat tidak terhubung ke Penyedia.
Lihat Bitmap Perangkat yang Terhubung untuk mengetahui detailnya
Opsional

Tabel 4.1: Data mentah kolom status koneksi

Tanda Koneksi
  • 0bH = saat deteksi kepala

    • 1, di kepala sekarang
    • 0, jika tidak, tidak 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 penggunaan media, yaitu tidak ada pengalihan A2DP ke A2DP
    • 0, jika tidak
  • 0bR = terhubung kembali secara otomatis

    • 1, jika koneksi saat ini terhubung kembali secara otomatis oleh Penyedia, artinya koneksi tidak terhubung oleh pengguna (untuk multipoint, jika salah satu koneksi yang ada terhubung kembali secara otomatis, koneksi harus disetel ke 1)
    • 0, jika tidak
Status koneksi
  • 0x0: tidak ada koneksi
  • 0x1: paging
  • 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 sementara (misalnya update firmware)
Bitmap Perangkat yang Terhubung

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

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

  • 0: laptop (0bx0000000)
  • 1: phoneA (0b0x000000)
  • 2: phoneB (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, misalnya saat pengguna mereset headset ke setelan pabrik atau saat jumlah perangkat terikat mencapai batas atas.

Iklan yang Dapat Diselesaikan secara Acak

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)

dengan

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

    • Kunci dibuat oleh fungsi HKDF, IETF RFC 5869, menggunakan fungsi hash SHA-256.

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

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

  3. Data mentah status koneksi ditentukan dalam tabel 4.1, jika status koneksi berubah, salt dan RPA harus dibuat ulang pada jangka waktu iklan yang sama.

Hal ini membuat kolom status koneksi terenkripsi berputar secara bersamaan dengan perputaran Data Kunci Akun.

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 - d Data Baterai bervariasi Opsional
s+1 - var Data yang Dapat Diselesaikan Acak bervariasi Wajib jika Daftar Kunci Akun tidak kosong,
jika tidak Dikecualikan.

Tabel 4.2: Iklan BLE dengan Data yang Dapat Diselesaikan Acak

Data yang Dapat Diselesaikan Acak berisi:

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

Tabel 4.2.1: Data yang Dapat Diselesaikan Acak

Sebagai contoh, jika Random Resolvable Data berisi kolom status koneksi terenkripsi, hasil yang didekripsi akan menjadi kolom status koneksi.

Untuk mencegah modifikasi, Data Kunci Akun di atas harus sedikit dimodifikasi saat Data yang Dapat Diselesaikan Acak disertakan dalam iklan. Biasanya, ketika membuat filter kunci akun, nilai V dihasilkan dengan menggabungkan filter kunci akun dengan salt. Sebagai gantinya, saat Data Random Resolvable juga sedang diiklankan, nilai V harus dibuat sebagai:

 V = concat(account_key, salt, random_resolvable_data)

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

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

Kunci Akun Sedang Digunakan

Pengalihan koneksi berbasis akun, sehingga Penyedia harus menyertakan informasi akun koneksi saat ini dalam pemberitahuan BLE. Jika perangkat yang terhubung saat ini adalah Pencari pengalihan Audio, Penyedia harus bisa mendapatkan kunci akun yang terkait dengan Pencari ini, dan menggunakan kunci akun ini untuk mengenkripsi kolom status koneksi. Jika sumber audio yang terhubung adalah Pencari pengalihan non-Audio, Penyedia harus menggunakan kunci akun yang terakhir digunakan.

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

  1. 0b00000100
    Kunci akun ini tidak digunakan.
    Ini adalah akun 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 tentang status koneksi saat ini. Hal ini dapat berarti tidak ada perangkat yang terhubung atau perangkat yang terhubung bukanlah Pencari tombol Audio.
  3. 0b00000110
    Kunci akun ini adalah kunci akun yang sedang digunakan.
    Kolom status koneksi dienkripsi oleh kunci akun ini, dan perangkat yang saat ini terhubung akan dikaitkan dengan kunci akun ini.

Skema untuk payload pengalihan Audio

Gambar di bawah ini menampilkan skema untuk payload pengalihan Audio.

Messages

Saat terhubung, Pencari dan Penyedia dapat menggunakan Streaming pesan untuk menyinkronkan kemampuan pengalihan Audio, memicu pengalihan koneksi, menetapkan dan mendapatkan preferensi pengalihan, memberi tahu status koneksi, dan sebagainya. Kami membuat grup pesan dan kode pesan khusus untuk pengalihan Audio seperti di bawah ini.

Nama Grup Pesan Nilai
Pengalihan audio 0x07

Detail tambahan untuk setiap kode pesan disertakan di bagian berikut.

Nama Kode Pesan Nilai Hanya multititik Pengirim Responden Enkripsi MAC ACK
Mendapatkan kemampuan pengalihan Audio 0x10 N Keduanya Keduanya, melalui kode 0x11 N T N
Kemampuan notifikasi untuk pengalihan Audio 0x11 N Keduanya Keduanya N Y Y
Menetapkan status multititik 0x12 Y Pencari Kerja Penyedia N Y Y
Menetapkan preferensi pengalihan 0x20 Y Pencari Kerja Penyedia N Y Y
Mendapatkan preferensi beralih 0x21 Y Pencari Kerja Penyedia, melalui kode 0x22 N T N
Beri tahu preferensi pengalihan 0x22 Y Penyedia Pencari Kerja N T N
Mengalihkan sumber audio aktif(ke perangkat yang terhubung) 0x30 Y Pencari Kerja Penyedia N Y Y
Beralih kembali (ke perangkat yang terputus) 0x31 N Pencari Kerja Penyedia N Y Y
Memberi tahu peristiwa pengalihan multipoint 0x32 Y Penyedia Pencari Kerja N T N
Mendapatkan status koneksi 0x33 Y Pencari Kerja Penyedia, melalui kode 0x34 N T N
Beri tahu status koneksi 0x34 Y Penyedia Pencari Kerja Y T N
Beri tahu bahwa pengalihan Audio dimulai 0x40 N Pencari Kerja Penyedia N Y Y
Tunjukkan bahwa kunci akun digunakan 0x41 N Pencari Kerja Penyedia N Y Y
Mengirim data kustom 0x42 N Pencari Kerja Penyedia N Y Y
Tetapkan target koneksi lepas 0x43 Y Pencari Kerja Penyedia N Y Y

Tabel 4.3: Pesan pengalihan audio

MAC Pesan pengalihan Audio

Untuk memberikan autentikasi pesan, semua pesan pengalihan Audio dengan data tambahan yang dikirim dari Pencari ke Penyedia memerlukan Kode Autentikasi Pesan. Saat menerima pesan dengan MAC, pesan tersebut harus dikonfirmasi agar Pencari Kerja mengetahui apakah Penyedia telah bereaksi terhadap pesan tersebut atau belum.

Jika autentikasi pesan berhasil, Penyedia harus mengirimkan 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 Pengalihan audio 0x07
5 Uint8 Kode pesan pengalihan audio bervariasi
6 - d Data tambahan bervariasi

Jika gagal, Penyedia akan mengirimkan NAK untuk pesan tersebut:

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 Pengalihan 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 Pencari Sambungan Cepat yang terhubung mendukung pengalihan Audio atau tidak dengan menggunakan pesan di bawah:

Oktet Jenis Data Deskripsi Nilai
0 Uint8 Pengalihan 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

Beri tahu kemampuan pengalihan Audio

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

Oktet Jenis Data Deskripsi Nilai
0 Uint8 Pengalihan audio 0x07
1 Uint8 Beri 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 yang bukan nol berarti video mendukung pengalihan Audio. Kode versi saat ini (dengan peningkatan keamanan) adalah 0x0102.
0x0000 atau tidak ada respons dalam 1 detik berarti pengalihan Audio tidak didukung di perangkat ini
6 - 7 flags Tanda kemampuan pengalihan audio Penyedia
Jika ini dikirim oleh Pencari, kedua byte ini harus diabaikan.
bervariasi
Lihat Tanda kemampuan pengalihan audio
8 - 15 Pesan nonce
Hanya diperlukan jika pesan ini dikirim oleh Pencari
bervariasi
16 - 23 Kode autentikasi pesan
Hanya diperlukan jika pesan ini dikirim oleh Pencari
bervariasi

Tabel 4.3.1.1: Notifikasi kemampuan 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 multititik

    • 1, jika perangkat mendukung multipoint dan dapat dialihkan antara aktif dan nonaktif
    • 0, sebaliknya (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 di kepala (meskipun deteksi di kepala dinonaktifkan sekarang)
    • 0, jika tidak
  5. Bit 4: status deteksi di kepala saat ini

    • 1, jika deteksi di kepala diaktifkan
    • 0, jika tidak (tidak mendukung deteksi di kepala atau deteksi di kepala dinonaktifkan)
  6. Semua bit lainnya dicadangkan, {i>default-<i}nya adalah 0.

Menetapkan status multititik

Bagi Pencari pengalihan Audio, kami dapat menyediakan setelan bagi pengguna untuk mengaktifkan/menonaktifkan fungsi multipoint. Pencari akan menyetel status multipoint ke Penyedia menggunakan pesan di bawah:

Oktet Jenis Data Deskripsi Nilai
0 Uint8 Pengalihan audio 0x07
1 Uint8 Menetapkan status multititik 0x12
2 - 3 Uint16 Panjang data tambahan 17
4 Uint8 Status multititik 0: menonaktifkan multipoint
1: aktifkan multipoint
5 - 12 Nonce pesan bervariasi
13 - 20 Kode autentikasi pesan bervariasi

Tabel 4.3.1.2: Menetapkan status multipoint

Tetapkan preferensi beralih

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

Oktet Jenis Data Deskripsi Nilai
0 Uint8 Pengalihan audio 0x07
1 Uint8 Tetapkan preferensi beralih 0x20
2 - 3 Uint16 Panjang data tambahan 18
4 flags Preferensi peralihan bervariasi
Lihat flag preferensi pengalihan multipoint
5 Setelan pengalihan lanjutan
Byte ini sudah dicadangkan, nilai defaultnya adalah 0
bervariasi
6 - 13 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: dicadangkan
  • Di atas mewakili "permintaan profil baru" vs "profil aktif saat ini"
    • 0 karena tidak beralih
    • 1 untuk beralih

Mendapatkan preferensi beralih

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

Oktet Jenis Data Deskripsi Nilai
0 Uint8 Pengalihan audio 0x07
1 Uint8 Mendapatkan konfigurasi pengalihan 0x21
2 - 3 Uint16 Panjang data tambahan 0

Tabel 4.3.2.1: Mendapatkan preferensi peralihan

Beri tahu preferensi pengalihan

Oktet Jenis Data Deskripsi Nilai
0 Uint8 Pengalihan audio 0x07
1 Uint8 Beri tahu preferensi pengalihan 0x22
2 - 3 Uint16 Panjang data tambahan 2
4 flags Mengalihkan tanda preferensi bervariasi
Lihat flag preferensi pengalihan multipoint
5 Setelan pengalihan lanjutan
Byte ini sudah dicadangkan, nilai defaultnya harus 0
bervariasi

Tabel 4.3.2.2: Preferensi notifikasi beralih

Alihkan sumber audio aktif (ke perangkat yang terhubung)

Pencari pengalihan audio dapat meminta Penyedia multititik untuk mengalihkan sumber audio aktif di antara perangkat yang terhubung menggunakan pesan di bawah:

Oktet Jenis Data Deskripsi Nilai
0 Uint8 Pengalihan audio 0x07
1 Uint8 Alihkan 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 mengalihkan peristiwa sumber audio aktif
5 - 12 Nonce pesan bervariasi
13 - 20 Kode autentikasi pesan bervariasi

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

Mengalihkan peristiwa sumber audio aktif
  • Bit 0 (MSB): 1 tombol ke perangkat ini, 0 tombol ke perangkat kedua yang terhubung
  • Bit 1: 1 lanjutkan diputar di sakelar ke perangkat setelah peralihan, 0 jika tidak. Melanjutkan pemutaran berarti Penyedia mengirimkan notifikasi PLAY ke Pencari Kerja melalui profil AVRCP. Jika status sebelumnya (sebelum dialihkan) bukan PUTAR, Penyedia harus mengabaikan tanda ini.
  • Bit 2: 1 tolak SCO pada perangkat yang beralih, 0 jika tidak
  • Bit 3: 1 putuskan Bluetooth pada perangkat beralih, 0 jika sebaliknya.
  • Bit 4 - 7: dicadangkan.

Pencari pengalihan audio mungkin tidak selalu mengetahui statusnya dengan benar, sehingga mungkin Penyedia mungkin menerima pesan "beralih ke perangkat ini" jika Pencari Kerja sudah menjadi perangkat aktif. Dalam hal ini, untuk menampilkan UI yang benar pada Pencari, Penyedia dapat mengirim NAK dengan alasan error, 0x4 - Tindakan perangkat yang redundan.

Beralih kembali (ke perangkat yang terputus)

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

Oktet Jenis Data Deskripsi Nilai
0 Uint8 Pengalihan audio 0x07
1 Uint8 Beralih kembali (ke perangkat yang terputus) 0x31
2 - 3 Uint16 Panjang data tambahan 17
4 Uint8 Ganti peristiwa kembali bervariasi
0x01: beralih kembali
0x02: beralih kembali dan melanjutkan pemutaran
5 - 12 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 memutus koneksi dengan satu perangkat sumber audio dan menjeda sesi audio di sumber audio lainnya. Misalnya, anggap headset multititik terhubung ke tablet dan perangkat pengalihan Audio ketiga yang didukung. Pengguna menonton video di tablet ketika ada panggilan masuk di ponsel mereka. Ponsel akan memicu tombol koneksi pada headset yang perlu memutuskan koneksi perangkat ketiga agar dapat terhubung ke ponsel, sekaligus menjeda sesi media di tablet untuk mendapatkan nada dering dari ponsel. Jika pengguna menolak panggilan, ponsel mungkin 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 pengalihan multititik

Untuk membuat pengguna mengetahui peristiwa pengalihan multititik yang sedang terjadi, Pencari pengalihan Audio dapat menampilkan notifikasi kepada pengguna. Penyedia harus memberi tahu Pencari tombol Audio yang terhubung tentang peristiwa pengalihan.

Oktet Jenis Data Deskripsi Nilai
0 Uint8 Pengalihan audio 0x07
1 Uint8 Memberi tahu peristiwa pengalihan multipoint
Penyedia harus mengirimkannya di setiap tombol akses, termasuk Pencari pengalihan Audio ke Pencari Kerja non-Audio, Pencari kerja non-Audio mengalihkan Pencari ke Pencari dan Pencari pengalihan Audio, dan Pencari kerja mengalihkan Pencari ke pengalihan Audio Pencari
0x32
2 - 3 Uint16 Panjang data tambahan bervariasi
4 Uint8 Alasan beralih bervariasi
0x00: Tidak ditentukan
0x01: Streaming A2DP
0x02: HFP
5 Uint8 Perangkat target bervariasi
0x01: perangkat ini
0x02: perangkat lain terhubung
6 - t utf8 Nama perangkat target
jika perangkat target adalah Pencari pengalihan Audio, menggunakan nama yang dikirim Pencari Kerja, atau menggunakan nama BT, jika tidak berlaku, menggunakan 2 byte terakhir dari alamatnya
bervariasi

Tabel 4.3.3.2: Memberi tahu peristiwa pengalihan multipoint

Dapatkan status koneksi

Pencari bisa mendapatkan status koneksi saat ini dari Penyedia:

Oktet Jenis Data Deskripsi Nilai
0 Uint8 Pengalihan audio 0x07
1 Uint8 Dapatkan 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, memberi tahu status koneksi.

Beri tahu status koneksi

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

Oktet Jenis Data Deskripsi Nilai
0 Uint8 Pengalihan 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 bersifat pasif, dan perangkat aktif menggunakan kunci akun yang sama
0x01: Pencari ini adalah perangkat aktif
0x02: Pencari ini bersifat pasif, dan perangkat aktif adalah Pencari tombol non-Audio.
5 - t 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:

Notifikasi untuk pengalihan Audio dimulai

Penyedia pengalihan audio mungkin perlu mengetahui apakah pengalihan koneksi dipicu oleh pengalihan Audio agar memiliki reaksi yang berbeda, misalnya menonaktifkan earcon untuk peristiwa pengalihan Audio. Pencari Kerja mengirimkan pesan untuk memberi tahu Penyedia bahwa koneksi ini adalah koneksi yang dimulai dengan pengalihan Audio.

Oktet Jenis Data Deskripsi Nilai
0 Uint8 Pengalihan audio 0x07
1 Uint8 Notifikasi untuk pengalihan Audio dimulai 0x40
2 - 3 Uint16 Panjang data tambahan 17
4 Uint8 Indikasi koneksi dimulai pengalihan audio bervariasi
0: koneksi ini tidak dipicu oleh Tombol audio
1: ini adalah koneksi yang dimulai dengan pengalihan Audio
5 - 12 Nonce pesan bervariasi
13 - 20 Kode autentikasi pesan bervariasi

Tabel 4.3.4.0: Koneksi yang dimulai untuk pengalihan Notifikasi Audio

Tunjukkan kunci akun yang digunakan

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

Oktet Jenis Data Deskripsi Nilai
0 Uint8 Pengalihan audio 0x07
1 Uint8 Tunjukkan kunci akun yang 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 penggunaan kunci akun

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

Mengirim data kustom

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

Oktet Jenis Data Deskripsi Nilai
0 Uint8 Pengalihan audio 0x07
1 Uint8 Mengirim data kustom 0x42
2 - 3 Uint16 Panjang data tambahan 17
4 Uint8 Data kustom bervariasi
5 - 12 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 agar menyertakan data kustom. Untuk Penyedia multipoint, penyedia juga harus memberi tahu perubahan status koneksi ke Pencari Kerja lain yang terhubung menggunakan kunci akun yang sama.

Tetapkan target koneksi lepas

Pada headset multipoint, jika koneksi yang lebih disukai yang dilepaskan bukan yang paling jarang digunakan, Pencari pengalihan Audio dapat memberi tahu Penyedia perangkat mana yang akan dilepaskan menggunakan pesan di bawah ini:

Oktet Jenis Data Deskripsi Nilai
0 Uint8 Pengalihan audio 0x07
1 Uint8 Tetapkan target koneksi lepas 0x43
2 - 3 Uint16 Panjang data tambahan 17
4 Uint8 Menargetkan perangkat terhubung untuk dihapus bervariasi
1: perangkat ini
5 - 12 Nonce pesan bervariasi
13 - 20 Kode autentikasi pesan bervariasi

Tabel 4.3.4.3: Menetapkan target koneksi lepas

Penerapan Referensi

Lihat Library SDK tersemat terdekat untuk penerapan referensi