音訊自動切換
隨著使用者越來越常使用多個音訊來源裝置, 現代人需要更簡便的耳機管理解決方案 跨裝置使用。音訊自動切換功能可流暢地轉換耳機連線 根據使用者活動 (例如開始播放電影) 區分裝置與優先顯示 事件 (例如來電)。
使用者體驗原則
- 連線切換應該要能快速切換,並以使用者動作為依據。
- 連線切換功能應公開透明,讓使用者能 如果不想切換,則可控制/復原
- 改用 Pixel 時應尊重使用者隱私。
角色
尋找音訊自動切換器:探索工具是音訊來源裝置 (例如 手機或平板電腦),尋找鄰近的耳機以連線 (如適用)。
音訊切換供應商:供應商通常是用耳機宣傳自家的 是否存在與連線狀態,方便尋找者做出換機決定。
條件總覽
為實現智慧切換,供應商必須遵守下列規定:
名稱 | 說明 | 需求條件 | 必要? |
---|---|---|---|
掃描頁面 | 在已有連線時,接受其他 Seeker 傳送的新連結要求。 單一點供應商:
|
您必須使用低延遲頁面掃描模式 (掃描間隔時間不得超過 640 毫秒),才能提升效能。 在大多數情況下,供應商可設定預設網頁掃描模式,在電池續航力和切換效能之間做出取捨 (低耗電模式的掃描間隔不得大於 1280 毫秒)。但只有在下列情況中,才能使用低延遲模式:
|
必填 |
連線記錄 | 如何切回上一個連線並繼續播放 (如適用)。 訊息串流會透過 Message Stream API 啟動並繼續播放。 暫停的音訊事件應包含在記錄中,以便視情況繼續播放。 |
保留連線記錄並實作 Message Stream API。 | 必填 |
連線狀態 | 可讓尋求者進行連線切換判斷。連線狀態包括:
|
在 BLE 廣播和 Message Stream 中加入連線狀態。 | 必填 |
執行階段功能變更 | 透過升級供應器的韌體即可啟用音訊自動切換功能,因此這項功能必須在執行階段與 Seeker 和供應商之間保持同步。 | 實作 Message Stream API 以便存取執行階段功能。 | 必填 |
可設定的切換規則 | 讓 Seeker 透過使用者偏好設定,設定現有有效音訊串流和新音訊串流要求的優先順序。 例如,音訊切換器可能會提供 UI 設定,讓使用者啟用/停用媒體串流和通話服務的自動切換功能。 音訊自動切換功能可讓 Seeker 透過訊息串流設定及取得切換規則。 |
僅限多點供應商。 實作 Message Stream API 以設定已連線裝置之間的切換規則。 |
選用 |
使用中的裝置正在切換 | 讓「音訊自動切換工具」模擬各種連網裝置切換音訊的情況。 在音訊自動切換工具側,使用者可能會看見使用者介面,方便你在已連結的裝置之間切換。 |
僅限多點連線供應商。 為音訊切換器實作 Message Stream API,以便判斷連接裝置之間的音訊來源。 |
必填 |
多點切換通知 | 讓音訊自動切換器顯示切換通知。 | 僅限多點連線供應商。 實作 Message Stream API,以便在進行多點切換時,通知已連線的音訊切換裝置尋求者。 |
必填 |
廣告酬載
供應商應在廣告中加入目前的連線狀態, 以如 廣告:不易找到。
請注意,表格 4.2 的版本為 0x1。
連線狀態欄位
八位元 | 資料類型 | 說明 | 值 | 必要? |
---|---|---|---|---|
0 | uint8 |
欄位長度和類型 0bLLTTTT
|
0bLL0101
|
必填 |
1 | uint8 |
連線狀態 0bHAFRSSSS
|
0bHAFRSSSS |
必填 |
2 | uint8 |
自訂資料 目前僅包含用於說明目前音訊串流用途的內容類型。尋求者會將資訊傳送給供應商。 |
這個值會透過訊息串流,從目前進行中的串流探索者傳送。如果目前的串流並非來自 Seeker,則為 0。 | 必填 |
3 - var | 已連結的裝置點陣圖 點陣圖會顯示目前與供應商連線的裝置。所有綁定裝置都會按照順序排列,為一種綁約裝置有一個位元。長度取決於供應商的簽約裝置數量。 |
如果裝置目前已連線至供應器,則對應的位元會設為 1,否則對應位元會設為 0。 詳情請參閱「已連接的裝置點陣圖」 |
選用 |
表 4.1:連線狀態欄位原始資料
連線旗標
0bH = 偵測到頭部偵測
- 1,目前播映
- 0,否則代表頭部沒有,或是沒有 OHD 感應器
0bA = 連線可用性
- 1,有可用的連線
- 0,否則為
0bF = 聚焦模式
- 1 (目前處於專注模式),系統無法切換媒體的連線 也就是不從 A2DP 切換 A2DP
- 0,否則為
0bR = 自動重新連線
- 1,如果「供應商」已自動重新連線目前的連線,則 而未由使用者連結 (若為多點連線, 個連線已自動重新連線,應設為 1)
- 0,否則為
連線狀態
- 0x0:沒有連線
- 0x1:分頁
- 0x2:已連線但尚未轉移資料
- 0x3:非音訊資料傳輸 (僅適用於可切換音訊,如果不能,則使用 0xF)
- 0x4:A2DP 串流、AVRCP 不適用
- 0x5:A2DP 串流和 AVRCP 播放
- 0x6:HFP (電話/VIP 通話) 串流,包括頻帶和非頻帶鈴聲
- 0x7:LE 音訊 - 媒體串流 (不控制)
- 0x8:LE 音訊 - 媒體串流 (含操控)
- 0x9:LE 音訊 - 通話串流
- 0xA:LE Audio - 廣播
- 0xF:暫時停用連線切換鈕 (例如韌體更新)
LE Audio 情境類型與連線狀態
建議 LE Audio Provider 處理所有指定的結構定義類型 一節。 指派號碼 6.12.3 (除非供應商明確不支援指定的結構定義類型) 和對應。 連線狀態的結構定義類型,如下所示。
- 對話:0x9
- 媒體:0x8
- 遊戲:0x7
- 教學內容:0x7
- 語音助理:0x9
- 直播:0x9
- 音效:0x2
- 通知:0x2
- 鈴聲:0x9
- 快訊:0x7
- 緊急警報:0x9
針對混合 LE Audio 情境類型使用情境,例如:在 呼叫,供應商應使用最高優先順序的連線狀態,即使用 為上述情況使用 0x9 (呼叫),而非 0x8 (媒體)。
已連線裝置的點陣圖
為避免意外切換連線,尋找工具可能需要知道 個裝置目前連線。舉例來說 手機連線至手機時,使用者不希望因手機中斷連線 連線切換。 平板電腦。
請注意,此點陣圖為匿名狀態,因此求職者無法得知其他 與供應商的聯繫。舉例來說,假設有 5 部綁約裝置:
- 0:筆記型電腦 (0bx0000000)
- 1:phoneA (0b0x000000)
- 2: PhoneB (0b00x00000)
- 3:平板電腦 (0b000x0000)
- 4:電視 (0b0000x000)
如果目前連結的裝置是筆記型電腦和平板電腦, 點陣圖會是 0b10010000。如果無法避免,修改順序是可接受的 例如:使用者將耳機恢復原廠設定或綁定的裝置計數時 達到上限
隨機可解決的廣告
為避免追蹤並尊重使用者隱私,「供應商」必須旋轉並尊重使用者隱私, 使用 AES-CTR 以帳戶金鑰加密欄位:
encrypted_connection_status_field = connection_status_raw_data ^ AES(Key, IV)
媒介
金鑰衍生自使用中的帳戶金鑰, 定義請見下一節
金鑰是由 HKDF 函式 IETF RFC 5869 使用 SHA-256 產生 雜湊函式。
Key = HKDF(account_key, NULL, UTF8("SASS-RRD-KEY"),16)
提供者應在此使用原始帳戶金鑰,即第一個位元組 的鍵為 0x04,不包含在使用模式中。
IV (初始向量) 是「帳戶金鑰資料」的 2 位元組鹽 邊框間距,即 IV 是 concat(salt,14 個位元組)
連線狀態原始資料定義於表 4.1,如果 連線狀態變更時,請在此重新產生鹽和 RPA。 不同的廣告時間範圍
如此一來,加密連線狀態欄位就會與 「帳戶金鑰資料」會輪替。
BLE 廣告的結構如下:
八位元 | 資料類型 | 說明 | 值 | 必要? |
---|---|---|---|---|
0 | uint8 |
版本和標記 | 0x10 | 必填 |
1 至 t | 帳戶金鑰資料 | 各不相同 | 必填 | |
t+1 - S | 電池資料 | 各不相同 | 選用 | |
s+1 - var | 可隨機回報的資料 | 各不相同 | 如果帳戶金鑰清單並非空白,就必須指定此欄位, 否則即排除。 |
表 4.2:使用隨機無法解決資料的 BLE 廣告
隨機可撤銷的資料包含:
八位元 | 資料類型 | 說明 | 值 | 必要? |
---|---|---|---|---|
0 | uint8 |
欄位長度和類型 0bLLTTTT
|
0bLL0110
|
必填 |
1 - var | 加密資料 | 各不相同 | 必填 |
表 4.2.1:隨機可解決的資料
舉例來說,如果隨機可解析資料包含加密連線, status 欄位,解密的結果會是 連線狀態欄位。
為避免遭到竄改,請稍微修改上方的「帳戶金鑰資料」 當廣告包含「隨機可解決資料」時。正常情況下, 建立帳戶金鑰篩選器時,合併帳戶即可產生 V 值 加鹽的鍵篩選器相反地,「隨機可解析資料」 V 值應建構為:
V = concat(account_key, salt, random_resolvable_data)
如果廣告同時宣傳「電池資料」和「隨機可解決的資料」,V 應 建構為:
V = concat(account_key, salt, battery_data, random_resolvable_data)
使用中的帳戶金鑰
連線切換是以帳戶為準,因此供應商應加入 目前連線在 BLE 廣告中的帳戶資訊。如果 「目前的連結裝置」是音訊自動切換器,供應商可以 取得與此 Seeker 關聯的帳戶金鑰,並使用這組帳戶金鑰 加密連線狀態欄位。如果連線的音訊來源為非音訊 切換器,供應商應使用最近使用的帳戶金鑰。
在計算帳戶金鑰篩選器之前,供應商應修改第一個 帳戶金鑰的位元組,以在使用模式中包括下列其中一個值:
- 0b00000100
這個帳戶金鑰已停止使用。
此為預設值 (請參閱「帳戶金鑰」)。 - 0b00000101
這組帳戶金鑰是最近使用的帳戶金鑰。
連線狀態欄位是以這組帳戶金鑰加密。由於沒有 目前連線狀態的帳戶金鑰資訊,可能表示 連線的裝置或連結的裝置不是音訊自動切換器。 - 0b00000110
這個帳戶金鑰為使用中的帳戶金鑰。
連線狀態欄位會以這組帳戶金鑰加密, 已連結裝置已與這組帳戶金鑰建立關聯。
音訊切換酬載的結構定義
下圖顯示音訊切換酬載的結構定義。
![](https://developers-dot-devsite-v2-prod.appspot.com/nearby/fast-pair/images/SASS-ble-payload-schematic.png?authuser=6&hl=zh-tw)
訊息
連線後,求職者和供應商可以使用訊息串流同步處理音訊 切換功能, 觸發連線切換作業, 設定及啟動 偏好設定、通知連線狀態等等。我們建立訊息群組 音訊自動切換專用的訊息代碼,如下所示。
訊息群組名稱 | 值 |
---|---|
音訊切換 | 0x07 |
各簡訊代碼的其他詳細資料列於以下章節。
訊息代碼名稱 | 值 | 僅限多點連線 | 寄件者 | 作答者 | 加密 | MAC | 確認 |
---|---|---|---|---|---|---|---|
取得音訊自動切換的功能 | 0x10 | 否 | 兩者皆有 | 兩者皆透過程式碼 0x11 | 否 | 否 | 否 |
音訊自動切換功能的發出通知 | 0x11 | 否 | 兩者皆有 | 兩者皆有 | 否 | 是 | 是 |
設定多點狀態 | 0x12 | 是 | 追求者 | 供應商 | 否 | 是 | 是 |
調整切換偏好設定 | 0x20 | 是 | 追求者 | 供應商 | 否 | 是 | 是 |
接收切換偏好設定 | 0x21 | 是 | 追求者 | 供應商 (透過代碼 0x22) | 否 | 否 | 否 |
通知切換偏好設定 | 0x22 | 是 | 供應商 | 追求者 | 否 | 否 | 否 |
切換使用中的音訊來源(已連接的裝置) | 0x30 | 是 | 追求者 | 供應商 | 否 | 是 | 是 |
切換回舊版介面 | 0x31 | 否 | 追求者 | 供應商 | 否 | 是 | 是 |
通知多點切換事件 | 0x32 | 是 | 供應商 | 追求者 | 否 | 否 | 否 |
取得連線狀態 | 0x33 | 是 | 追求者 | 供應商 (透過代碼 0x34 傳送) | 否 | 否 | 否 |
通知連線狀態 | 0x34 | 是 | 供應商 | 追求者 | 是 | 否 | 否 |
通知音訊切換啟動連線 | 0x40 | 否 | 追求者 | 供應商 | 否 | 是 | 是 |
表示使用中的帳戶金鑰 | 0x41 | 否 | 追求者 | 供應商 | 否 | 是 | 是 |
傳送自訂資料 | 0x42 | 否 | 追求者 | 供應商 | 否 | 是 | 是 |
設定放置連線目標 | 0x43 | 是 | 追求者 | 供應商 | 否 | 是 | 是 |
表 4.3:音訊自動切換訊息
音訊切換 MAC 訊息
為提供訊息驗證,所有音訊自動切換訊息都會包含額外 從 Seeker 傳送至供應商的資料需要 訊息驗證碼。時間 接收 MAC 的訊息時,應經過確認,以便尋求工具 得知「供應商」是否已回應訊息。
如果訊息驗證成功,供應商就必須為 訊息:
八位元 | 資料類型 | 說明 | 值 |
---|---|---|---|
0 | uint8 | 確認聲明 | 0xFF |
1 | uint8 | 確認 | 0x01 |
2 - 3 | uint16 | 額外資料長度 | 各不相同 |
4 | uint8 | 音訊切換 | 0x07 |
5 | uint8 | 音訊切換訊息代碼 | 各不相同 |
6 - 秒 | 額外資料 | 各不相同 |
如果失敗,「供應商」應傳送訊息的 NAK:
八位元 | 資料類型 | 說明 | 值 |
---|---|---|---|
0 | uint8 | 確認聲明 | 0xFF |
1 | uint8 | 北美洲 | 0x02 |
2 - 3 | uint16 | 額外資料長度 | 0x0003 |
4 | uint8 | 錯誤原因 | 各不相同 |
5 | uint8 | 音訊切換 | 0x07 |
6 | uint8 | 音訊切換訊息代碼 | 各不相同 |
請注意,如果「供應商」為傳送者,就不需要使用 MAC。
取得音訊自動切換的功能
音訊切換供應商和探索者都能檢查已連線的快速配對 瀏覽器/供應商支援音訊切換功能,或不支援使用下列訊息:
八位元 | 資料類型 | 說明 | 值 |
---|---|---|---|
0 | uint8 | 音訊切換 | 0x07 |
1 | uint8 | 取得音訊自動切換的功能 | 0x10 |
2 - 3 | uint16 | 額外資料長度 | 0 |
表 4.3.1.0:取得音訊自動切換的功能
音訊自動切換功能的通知
收到 音訊自動切換訊息後 程式碼,音訊自動切換工具/供應商將以下列其中一個值回應 旗標:
八位元 | 資料類型 | 說明 | 值 |
---|---|---|---|
0 | uint8 | 音訊切換 | 0x07 |
1 | uint8 | 音訊自動切換功能的通知 | 0x11 |
2 - 3 | uint16 | 額外資料長度 | 如果由 Seeker 傳送,則為 20 4 |
4 - 5 | uint16 | 音訊切換版本代碼 | 如果值不是零,表示支援音訊自動切換。目前的版本 (含有安全性強化功能) 代碼為 0x0102。 0x0000 或未在 1 秒內回應,表示這部裝置不支援音訊自動切換 |
6 - 7 | flags | 提供者的音訊切換功能旗標 如果透過 Seeker 傳送這則訊息,請忽略這兩個位元組。 |
不相同 請參閱音訊切換功能旗標 |
8 - 15 | 訊息 Nonce 只有尋找人傳送這則訊息時 |
各不相同 | |
16 - 23 歲 | 訊息驗證碼 只有 Seeker 傳送這項資訊時才需要 |
各不相同 |
表 4.3.1.1:音訊自動切換的發出通知功能
音訊切換功能旗標
位元 0 (八位元 6、MSB):音訊切換狀態
- 1,如果音訊自動切換狀態已開啟
- 0,否則為
位元 1:多點設定
- 1,如果裝置支援多點連線,可以切換為開啟和 關閉
- 0,否則 (不支援多點或一律開啟多點連線)
位元 2:多點目前狀態
- 1 (如果多點已開啟)
- 0,否則為
位元 3:腕上偵測
- 1,如果這部裝置支援抬頭偵測,即使「前臂偵測」功能 正在關閉)
- 0,否則為
位元 4:抬頭偵測目前狀態
- 1 (如果已開啟抬頭偵測功能)
- 0,否則 (不支援站上偵測或站上偵測為 已停用)
其他位元均保留,預設值為 0。
設定多點狀態
使用音訊自動切換器時,我們可能會提供使用者開啟或關閉設定 多點功能尋找工具會將多點狀態設為 供應商使用下列訊息:
八位元 | 資料類型 | 說明 | 值 |
---|---|---|---|
0 | uint8 | 音訊切換 | 0x07 |
1 | uint8 | 設定多點狀態 | 0x12 |
2 - 3 | uint16 | 額外資料長度 | 17 |
4 | uint8 | 多點狀態 | 0:關閉多點連線 1:開啟多點連線 |
5 - 12 | 訊息 Nonce | 各不相同 | |
13 - 20 人 | 訊息驗證碼 | 各不相同 |
表 4.3.1.2:設定多點狀態
指定切換偏好設定
使用音訊自動切換器的使用者可以修改多點連線的切換偏好設定 將下方的訊息傳送給「供應商」:
八位元 | 資料類型 | 說明 | 值 |
---|---|---|---|
0 | uint8 | 音訊切換 | 0x07 |
1 | uint8 | 指定切換偏好設定 | 0x20 |
2 - 3 | uint16 | 額外資料長度 | 18 |
4 | flags | 切換偏好設定 | 各不相同 請參閱多點切換偏好設定標記 |
5 | 進階切換設定 已保留這個位元組,預設值為 0 |
各不相同 | |
6 - 13 | 訊息 Nonce | 各不相同 | |
14 - 21 歲 | 訊息驗證碼 | 各不相同 |
表 4.3.2.0:設定切換偏好設定
多點切換偏好設定旗標
- 位元 0 (MSB):A2DP 與 A2DP (預設為 0)
- 位元 1:HFP 與 HFP (預設值為 0)
- 位元 2:A2DP 與 HFP (預設值為 0)
- 位元 3:HFP 與 A2DP (預設為 1)
- 位元 4 - 7:保留
- 上方代表「新的個人資料要求」與「目前使用中的設定檔」相比
- 0 代表不切換
- 1 代表切換
取得切換偏好設定
使用音訊自動切換器的聽眾可以查詢多點連線的切換偏好設定 供應商使用下列訊息:
八位元 | 資料類型 | 說明 | 值 |
---|---|---|---|
0 | uint8 | 音訊切換 | 0x07 |
1 | uint8 | 取得切換設定 | 0x21 |
2 - 3 | uint16 | 額外資料長度 | 0 |
表 4.3.2.1:取得切換偏好設定
通知切換偏好設定
八位元 | 資料類型 | 說明 | 值 |
---|---|---|---|
0 | uint8 | 音訊切換 | 0x07 |
1 | uint8 | 通知切換偏好設定 | 0x22 |
2 - 3 | uint16 | 額外資料長度 | 2 |
4 | flags | 切換偏好設定標記 | 各不相同 請參閱多點切換偏好設定標記 |
5 | 進階切換設定 已保留這個位元組,預設值為 0 |
各不相同 |
表 4.3.2.2:通知切換偏好設定
切換使用中的音訊來源 (連線至已連接的裝置)
使用音訊自動切換器的使用者可要求多點供應商切換啟用狀態 要在已連線裝置間切換音訊來源,輸入如下訊息:
八位元 | 資料類型 | 說明 | 值 |
---|---|---|---|
0 | uint8 | 音訊切換 | 0x07 |
1 | uint8 | 切換使用中的音訊來源 (連線至已連接的裝置) | 0x30 |
2 - 3 | uint16 | 額外資料長度 | 17 |
4 | flags | 切換使用中的音訊來源事件旗標 | 不相同 請參閱切換有效音訊來源事件 |
5 - 12 | 訊息 Nonce | 各不相同 | |
13 - 20 人 | 訊息驗證碼 | 各不相同 |
表 4.3.3.0:切換使用中的音訊來源 (連線至已連結的裝置)
正在切換有效音訊來源事件
- 位元 0 (MSB):1 次切換到這部裝置,0 人切換到第二部連接的裝置
- 位元 1:切換後繼續在「切換到」裝置上播放,否則為 0。 繼續播放表示供應商傳送 PLAY 通知給尋找器 連線。如果先前的狀態 (切換前) 未 PLAY,供應商應忽略這個標記。
- 位元 2:1 拒絕使用已切換裝置後的總持有成本,否則為 0
- 位元 3:1 中斷與切換鈕裝置的藍牙連線,0 部。
- 位元 4 - 7:保留。
使用音訊自動切換功能的使用者不一定知道自己的狀態,因此有可能 ,讓供應商收到「切換至這部裝置」訊息 開啟中。在此情況下,如要在尋找工具中顯示正確的 UI, 供應商可以傳送含有錯誤原因 0x4 - 多餘裝置動作的 NAK。
如果 LE Audio Provider 有多位集合成員,供應商應 中斷與 Seeker 的所有成員連線,否則 探險家將重新連線到供應商。
切換回未連線的裝置
如果不需要切換連線,使用者可以還原切換,並 此時,重新播放音訊是很明智的選擇 服務中斷求職者會使用下方訊息觸發切換程序:
八位元 | 資料類型 | 說明 | 值 |
---|---|---|---|
0 | uint8 | 音訊切換 | 0x07 |
1 | uint8 | 切換回未連線的裝置 | 0x31 |
2 - 3 | uint16 | 額外資料長度 | 17 |
4 | uint8 | 切換回事件 | varies 0x01:切換回 0x02:切換回舊版並繼續播放 |
5 - 12 | 訊息 Nonce | 各不相同 | |
13 - 20 人 | 訊息驗證碼 | 各不相同 |
表 4.3.3.1:切換回已中斷連線的裝置
對多點供應商來說,進行連線切換時,供應商可能會捨棄 連線到其中一個音訊來源裝置,然後暫停另一部音訊來源裝置的音訊工作階段 音訊來源。舉例來說,假設多點耳機已連線至 平板電腦和第 3 部支援的音訊自動切換裝置使用者正在透過 手機接到來電時。手機會觸發 耳機上的連線開關,需要捨棄第 3 部裝置 連線,以便連線至手機,同時暫停媒體 才能從手機取得鈴聲。如果使用者拒絕 通話,手機可能會要求耳機「切換回舊或繼續播放」。 收到這項要求後,耳機必須重新連接到第 3 部裝置,並且 透過平板電腦繼續播放已暫停的影片。
通知多點切換事件
為協助使用者瞭解多點切換事件發生,音訊自動切換功能 探索者可能會向使用者顯示通知。供應商應通知已連線 透過音訊自動切換功能尋找關於切換事件的資訊。
八位元 | 資料類型 | 說明 | 值 |
---|---|---|---|
0 | uint8 | 音訊切換 | 0x07 |
1 | uint8 | 通知多點切換事件 提供者應在每次切換時傳送通知,包括從音訊切換器切換至非音訊自動切換器、非音訊自動切換器,以及音訊切換裝置尋求「音訊切換器」的使用者 |
0x32 |
2 - 3 | uint16 | 額外資料長度 | 各不相同 |
4 | uint8 | 切換原因 應根據連線狀態決定這個值。如果是 LE Audio 用途,建議查看 LE Audio 情境類型與連線狀態之間的對應資訊。舉例來說,與語音助理對應的連線狀態為 0x9(LE 音訊 - 通話串流)。因此,改用語音助理啟動切換的原因應為 0x02。 |
變動 0x00:未指定 0x01:媒體 (例如 A2DP 串流、LEA 媒體串流) 0x02:通話 (例如 HFP 串流、LEA 通話串流) |
5 | uint8 | 目標裝置 | 變動 0x01:這部裝置 0x02:另一部已連結的裝置 |
6 - n | utf8 | 目標裝置名稱: 如果目標裝置是音訊自動切換器,請使用嘗試接收者的名稱。如果不是的話,請使用 BT 名稱;如果不適用,則使用裝置位址的後 2 個位元組 |
各不相同 |
表 4.3.3.2:通知多點切換事件
取得連線狀態
探索者可以向供應商取得目前的連線狀態:
八位元 | 資料類型 | 說明 | 值 |
---|---|---|---|
0 | uint8 | 音訊切換 | 0x07 |
1 | uint8 | 取得連線狀態 | 0x33 |
2 - 3 | uint16 | 額外資料長度 | 0 |
表 4.3.3.3:取得連線狀態
收到這則訊息後,「供應商」應以訊息代碼做出回應 0x34, 通知連線狀態。
通知連線狀態
如 BLE 廣告酬載中定義, 多點供應商,如果連線狀態變更,但不包括變更 廣告封包,供應商也應通知已連線的廣告主, 使用同一個帳戶金鑰進行變更。如果供應商已連線 使用音訊自動切換器,以及使用非音訊自動切換器 (如果非音訊廣告) 切換 Seeker 已啟用,供應商也應通知連線的音訊 切換探索工具關於連線狀態的資訊 (使用尋求者的帳戶金鑰)。
八位元 | 資料類型 | 說明 | 值 |
---|---|---|---|
0 | uint8 | 音訊切換 | 0x07 |
1 | uint8 | 通知連線狀態 | 0x34 |
2 - 3 | uint16 | 額外資料長度 | 各不相同 |
4 | uint8 | 使用中的裝置標記 | varies 0x00:這位尋找者是被動式裝置,且正在使用相同帳戶金鑰 0x01:這位尋找者是使用中的裝置 0x02:這位尋找者是被動裝置,而使用中的裝置並非音訊自動切換器。 |
5 - n | 加密連線狀態 | 各不相同 | |
n+1 - n+8 | 訊息 Nonce | 各不相同 |
表 4.3.3.4:通知連線狀態
加密連線狀態訊息
encrypted_connection_status = connection_status_raw_data ^ AES(Key, IV)
其中:
-
Key = HKDF(account_key, NULL, UTF8("SASS-RRD-KEY"),16)
IV 為 concat(Session_nonce, Message_nonce)
connection_status_raw_data = concat(connection_state, custom_data, 連線裝置),在 BLE 中定義的 廣告酬載 請注意,請勿加入欄位長度和類型的位元組, 以及訊息代碼和資料長度
通知音訊切換啟動連線
音訊自動切換供應商可能需要知道連線切換是否觸發 音訊自動切換功能會產生不同的回應,例如停用音效。 切換事件。尋求者會傳送訊息給供應商 是透過音訊自動切換啟動的連線。
八位元 | 資料類型 | 說明 | 值 |
---|---|---|---|
0 | uint8 | 音訊切換 | 0x07 |
1 | uint8 | 通知音訊切換啟動連線 | 0x40 |
2 - 3 | uint16 | 額外資料長度 | 17 |
4 | uint8 | 音訊自動切換啟動的連線指標 | 變動 0:這個連線並非由音訊自動切換器觸發 1:這是音訊自動切換發起的連線 |
5 - 12 | 訊息 Nonce | 各不相同 | |
13 - 20 人 | 訊息驗證碼 | 各不相同 |
表 4.3.4.0:通知音訊自動切換啟動的連線
表示使用的帳戶金鑰
如果跳轉器上的多個帳戶 (例如多使用者) 與 供應商時,求職者會使用下方訊息來指出哪個帳戶 金鑰正在使用中。
八位元 | 資料類型 | 說明 | 值 |
---|---|---|---|
0 | uint8 | 音訊切換 | 0x07 |
1 | uint8 | 表示使用的帳戶金鑰 | 0x41 |
2 - 3 | uint16 | 額外資料長度 | 22 |
4 - 9 | utf8 | 使用字串 | UTF8 (「使用中」) |
10 - 17 歲 | 訊息 Nonce | 各不相同 | |
18 - 25 歲 | 訊息驗證碼 | 各不相同 |
表 4.3.4.1:說明使用中帳戶金鑰
收到這則訊息後,供應商可知道目前使用哪個帳戶金鑰 以驗證訊息驗證碼。
傳送自訂資料
使用中的音訊自動切換器可以封裝資訊 (例如音訊) ),再透過 以下訊息:
八位元 | 資料類型 | 說明 | 值 |
---|---|---|---|
0 | uint8 | 音訊切換 | 0x07 |
1 | uint8 | 傳送自訂資料 | 0x42 |
2 - 3 | uint16 | 額外資料長度 | 17 |
4 | uint8 | 自訂資料 | 各不相同 |
5 - 12 | 訊息 Nonce | 各不相同 | |
13 - 20 人 | 訊息驗證碼 | 各不相同 |
表 4.3.4.2:傳送自訂資料
收到自訂資料後,供應商會更新廣告封包 納入自訂資料如果是多點供應商,也應通知 連線狀態變更為另一個已連線的 Seeker (使用相同帳戶金鑰)。
設定放置連線目標
在多點耳機上,如果放置的偏好連線不是 最近至少有使用過的裝置;透過音訊自動切換器,供應商可以告訴供應商是哪一部裝置 捨棄訊息:
八位元 | 資料類型 | 說明 | 值 |
---|---|---|---|
0 | uint8 | 音訊切換 | 0x07 |
1 | uint8 | 設定放置連線目標 | 0x43 |
2 - 3 | uint16 | 額外資料長度 | 17 |
4 | uint8 | 要捨棄的目標裝置 | 不相同 1:這部裝置 |
5 - 12 | 訊息 Nonce | 各不相同 | |
13 - 20 人 | 訊息驗證碼 | 各不相同 |
表 4.3.4.3:設定放置連線目標
參考實作
請參閱 「附近內嵌的 SDK 程式庫」,瞭解如何實作