오디오 스위치
사용자가 오디오, 동영상, 오디오, 오디오 등 여러 가지 오디오 소스 장치를 헤드셋을 관리할 수 있는 간단한 솔루션에 대한 수요가 늘고 있습니다. 다양한 기기에서 사용할 수 있습니다. 오디오 스위치가 헤드셋 연결을 매끄럽게 전환 사용자 활동 (예: 영화 시작)에 따라 기기 간 상호작용 이벤트 (예: 수신 전화)를 자동으로 전송합니다.
UX 원칙
- 연결 전환은 빠르고 사용자 작업에 기반해야 합니다.
- 연결 전환은 사용자에게 투명하게 이루어져야 하며, 이를 통해 제어하거나, 전환이 바람직하지 않은 경우 되돌립니다.
- 전환 시 사용자 개인 정보 보호를 존중해야 합니다.
역할
Audio Switch Seeker: Seeker는 오디오 소스 기기입니다 (예: 휴대전화 또는 태블릿) 근처에 있는 헤드셋을 찾는 경우 해당되는 경우 연결할 수 있습니다.
오디오 스위치 제공업체: 제공업체는 일반적으로 접속 상태가 될 수도 있습니다.
요구사항 개요
스마트 전환을 달성하려면 제공업체는 다음 요구사항을 준수해야 합니다.
이름 | 설명 | 요구사항 | 필수 여부 |
---|---|---|---|
페이지 스캔 | 기존 연결이 있을 때 다른 탐색자의 새 연결 요청을 수락하려는 경우. 단일 포인트 제공업체의 경우:
|
성능을 개선하려면 지연 시간이 짧은 페이지 스캔 모드 (스캔 간격은 640ms 이하여야 함)가 필요합니다. 배터리 수명과 전환 성능 간의 절충을 위해 제공업체는 대부분의 경우 기본 페이지 검색 모드 (저전력 모드, 검색 간격은 1, 280ms 이하여야 함)를 사용할 수 있습니다. 하지만 다음과 같은 상황에서는 짧은 지연 시간 모드를 사용해야 합니다.
|
필수 |
연결 기록 | 이전 연결로 다시 전환하고 해당하는 경우 재생을 다시 시작하려면 Message Stream API를 통한 통신으로 되돌리기 전환이 트리거됩니다. 해당하는 경우 재생을 다시 시작하려면 오디오 일시중지가 기록에 포함되어야 합니다. |
연결 기록을 유지하고 Message Stream API를 구현합니다. | 필수 |
연결 상태 | 탐색자가 연결 전환 판단을 수행해야 합니다. 연결 상태는 다음과 같습니다.
|
BLE 광고 및 메시지 스트림에 연결 상태를 포함합니다. | 필수 |
런타임 기능 변경 | 제공자의 펌웨어를 업그레이드하여 오디오 전환을 활성화할 수 있으므로 런타임에 Seeker와 Provider 간에 기능을 동기화해야 합니다. | Message Stream API를 구현하여 런타임 기능에 액세스합니다. | 필수 |
구성 가능한 전환 규칙 | Seeker가 사용자 환경설정을 통해 기존 활성 오디오 스트리밍과 새 오디오 스트리밍 요청 간의 우선순위를 구성하도록 허용합니다. 예를 들어 오디오 전환 Seeker는 사용자가 미디어 스트리밍과 통화 간의 자동 전환을 사용 설정/중지할 수 있는 UI 설정을 제공할 수 있습니다. 오디오 전환 탐색자가 메시지 스트림을 통해 전환 규칙을 설정하고 가져옵니다. |
멀티포인트 제공자만 해당됩니다. 메시지 스트림 API를 구현하여 연결된 기기 간의 전환 규칙을 구성 가능하도록 만드세요. |
선택사항 |
활성 기기 전환 | Audio switch Seeker가 연결된 기기 간의 오디오 전환을 시뮬레이션하도록 허용합니다. Audio switch Seeker 측에는 사용자가 연결된 기기 간에 쉽게 전환할 수 있는 UI가 있을 수 있습니다. |
멀티포인트 제공업체에만 적용됩니다. 오디오 전환 시커용 메시지 스트림 API를 구현하여 연결된 기기 간의 활성 오디오 소스를 확인합니다. |
필수 |
멀티포인트 전환 알림 | 오디오 전환 탐색자가 전환 알림을 표시하도록 허용합니다. | 멀티포인트 제공자만 해당. Message Stream API를 구현하여 멀티포인트 전환이 진행 중일 때 연결된 오디오 전환 탐색자에게 이를 알립니다. |
필수 |
광고 페이로드
제공자는 광고에 현재 연결 상태를 포함해야 합니다. 빠른 페어링 계정 데이터에 기반하여 빌드됩니다. 광고: 검색할 수 없는 경우.
표 4.2의 버전은 0x1입니다.
연결 상태 필드
옥텟 | 데이터 유형 | 설명 | 값 | 필수 여부 |
---|---|---|---|---|
0 | uint8 |
필드 길이 및 유형 0bLLLLTTTT
|
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(전화/VoIP 통화) 스트리밍(대역 내 및 비인대역 벨소리 포함)
- 0x7: LE 오디오 - 제어 없는 미디어 스트리밍
- 0x8: LE 오디오 - 컨트롤이 포함된 미디어 스트리밍
- 0x9: LE 오디오 - 통화 스트리밍
- 0xA: LE 오디오 - 브로드캐스트
- 0xF: 연결 스위치를 일시적으로 비활성화합니다 (예: 펌웨어 업데이트).
LE 오디오 컨텍스트 유형 및 연결 상태
LE 오디오 제공업체가 지정된 모든 컨텍스트 유형을 처리해야 함 할당 번호 6.12.3 (제공자가 지정된 컨텍스트 유형을 명시적으로 지원하지 않는 경우) 및 매핑 컨텍스트 유형을 아래와 같이 연결 상태로 변경합니다.
- 대화형: 0x9
- 미디어: 0x8
- 게임: 0x7
- 안내: 0x7
- 음성 어시스턴트: 0x9
- 라이브: 0x9
- 음향 효과: 0x2
- 알림: 0x2
- 벨소리: 0x9
- 알림: 0x7
- 응급 상황 경보: 0x9
혼합 LE 오디오 컨텍스트 유형 시나리오(예: 제공자는 가장 높은 우선순위의 연결 상태를 사용해야 합니다. 즉, 위 시나리오의 경우 0x8 (미디어) 대신 0x9 (호출)
연결된 기기 비트맵
원치 않는 연결 전환을 방지하려면 탐색자가 헤드셋이 현재 연결된 기기입니다. 예를 들어 헤드셋이 전화에 연결되어 있을 때 사용자는 그 때문에 가족 구성원 중 한 명이 YouTube에서 태블릿입니다.
이 비트맵은 익명이므로 탐색자는 다른 비트맵이 무엇인지 제공자와 결합됩니다. 예를 들어 연결된 기기 5대를 살펴보겠습니다.
- 0: 노트북 (0bx0000000)
- 1: phoneA (0b0x000000)
- 2: phoneB (0b00x00000)
- 3: 태블릿 (0b000x0000)
- 4: TV (0b0000x000)
현재 연결된 기기가 노트북과 태블릿인 경우 비트맵은 0b10010000이 됩니다. 불가피한 경우에는 주문 변경이 허용되는 경우 예: 사용자가 헤드셋을 초기화하거나 연결된 기기 수가 초과될 때 상한에 도달하게 됩니다.
랜덤 확인 가능한 광고
추적을 방지하고 사용자 개인 정보를 보호하기 위해 제공자는 AES-CTR을 사용하여 계정 키로 필드를 암호화합니다.
encrypted_connection_status_field = connection_status_raw_data ^ AES(Key, IV)
어디서
키는 사용 중인 계정 키에서 파생되며 다음 섹션에서 정의됩니다.
키는 SHA-256을 사용하는 HKDF 함수(IETF RFC 5869)로 생성됩니다. 해시 함수.
Key = HKDF(account_key, NULL, UTF8("SASS-RRD-KEY"),16)
제공업체는 여기서 원래 계정 키, 즉 첫 번째 바이트를 사용해야 합니다. 0x04이며 사용 패턴에 포함되지 않습니다.
IV (초기 벡터)는 0이 있는 계정 키 데이터의 2바이트 솔트입니다. 패딩입니다. 즉, IV는 concat(솔트, 14바이트 0)입니다.
연결 상태 원시 데이터는 표 4.1에 정의되어 있습니다. 솔트와 RPA는 다시 생성되어야 하므로 확인할 수 있습니다
이렇게 하면 암호화된 연결 상태 필드가 계정 키 데이터는 순환됩니다.
BLE 광고는 아래와 같이 구성됩니다.
옥텟 | 데이터 유형 | 설명 | 값 | 필수 여부 |
---|---|---|---|---|
0 | uint8 |
버전 및 플래그 | 0x10 | 필수 |
1~시간 | 계정 키 데이터 | 다름 | 필수 | |
t+1~s | 배터리 데이터 | 다름 | 선택사항 | |
s+1 - var | 확인 가능한 무작위 데이터 | 다름 | 계정 키 목록이 비어 있지 않은 경우 필수이며 그렇지 않으면 제외됩니다. |
표 4.2: 랜덤 확인 가능 데이터를 사용한 BLE 광고
확인 가능한 임의 데이터에는 다음이 포함됩니다.
옥텟 | 데이터 유형 | 설명 | 값 | 필수 여부 |
---|---|---|---|---|
0 | uint8 |
필드 길이 및 유형 0bLLLLTTTT
|
0bLL0110
|
필수 |
1 - var | 암호화된 데이터 | 다름 | 필수 |
표 4.2.1: 임의 확인 가능 데이터
예를 들어 랜덤 확인 가능 데이터에 암호화된 연결이 포함된 경우 복호화된 결과는 연결 상태 필드를 참고하세요.
조작을 방지하기 위해 위의 계정 키 데이터를 약간 수정해야 합니다. 광고에 포함된 임의의 확인 가능 데이터 일반적으로 계정 키 필터를 만들면 계정과 솔트가 포함된 키 필터입니다. 대신 임의 확인 가능 데이터도 값 V는 다음과 같이 구성되어야 합니다.
V = concat(account_key, salt, random_resolvable_data)
배터리 데이터와 무작위 확인 가능 데이터를 모두 광고하는 경우 V는 다음과 같이 구성됩니다.
V = concat(account_key, salt, battery_data, random_resolvable_data)
사용 중인 계정 키
연결 전환은 계정 기반이므로 제공업체는 다음을 포함해야 합니다. BLE 광고의 현재 연결 계정 정보 만약 현재 연결된 기기가 오디오 전환 탐색자인 경우 제공업체는 를 호출하여 이 탐색자와 연결된 계정 키를 가져오고, 이 계정 키를 사용하여 연결 상태 필드를 암호화합니다. 연결된 오디오 소스가 오디오가 아닌 경우 switch Seeker를 사용하는 경우 제공업체는 가장 최근에 사용된 계정 키를 사용해야 합니다.
제공업체는 계정 키 필터를 계산하기 전에 첫 번째 바이트에 추가하여 사용 패턴에 다음 중 하나를 포함할 수 있습니다.
- 0b00000100
이 계정 키는 사용되지 않습니다.
이는 기본 키입니다 (계정 키 참고). - 0b00000101
이 계정 키가 가장 최근에 사용된 계정 키입니다.
연결 상태 필드는 이 계정 키로 암호화됩니다. 없음 현재 연결 상태의 계정 키 정보가 없다면 연결된 기기가 오디오 전환 탐색 도구가 아닙니다. - 0b00000110
이 계정 키가 사용 중인 계정 키입니다.
연결 상태 필드는 이 계정 키로 암호화되며 현재 연결된 기기가 이 계정 키와 연결되어 있습니다.
오디오 전환 페이로드 도식
아래 그림은 오디오 전환 페이로드의 도식을 보여줍니다.
![](https://developers-dot-devsite-v2-prod.appspot.com/nearby/fast-pair/images/SASS-ble-payload-schematic.png?authuser=3&hl=ko)
메시지
연결되면 탐색자와 제공업체가 메시지 스트림을 사용하여 오디오를 동기화할 수 있습니다. 스위치 기능, 연결 스위치 트리거, 전환 설정 및 가져오기 환경설정, 연결 상태 알림 등이 있습니다. 메시지 그룹을 만들고 메시지 코드입니다.
메시지 그룹 이름 | 값 |
---|---|
오디오 전환 | 0x07 |
각 메시지 코드에 대한 추가 세부정보는 다음 섹션에 포함되어 있습니다.
메시지 코드 이름 | 값 | 멀티포인트만 | 보내는 사람 | 응답자 | 암호화 | MAC | 확인 |
---|---|---|---|---|---|---|---|
오디오 전환 기능 얻기 | 0x10 | N | 둘 다 | 둘 다, 코드 0x11 사용 | N | 아니요 | N |
오디오 전환 기능 알림 | 0x11 | N | 둘 다 | 둘 다 | N | 예 | Y |
멀티포인트 상태 설정 | 0x12 | Y | 탐색자 | 제공업체 | N | 예 | Y |
전환 환경설정 지정 | 0x20 | Y | 탐색자 | 제공업체 | N | 예 | Y |
전환 환경설정 가져오기 | 0x21 | Y | 탐색자 | 제공업체, 코드 0x22 사용 | N | 아니요 | N |
전환 환경설정 알림 | 0x22 | Y | 제공업체 | 탐색자 | N | 아니요 | N |
연결된 기기로 활성 오디오 소스 전환하기 | 0x30 | Y | 탐색자 | 제공업체 | N | 예 | Y |
다시 전환 | 0x31 | N | 탐색자 | 제공업체 | N | 예 | Y |
멀티포인트 전환 이벤트 알림 | 0x32 | Y | 제공업체 | 탐색자 | N | 아니요 | N |
연결 상태 가져오기 | 0x33 | Y | 탐색자 | 제공업체, 코드 0x34 사용 | N | 아니요 | N |
연결 상태 알림 | 0x34 | Y | 제공업체 | 탐색자 | Y | 아니요 | N |
오디오 전환이 시작된 연결 알림 | 0x40 | N | 탐색자 | 제공업체 | N | 예 | Y |
사용 중인 계정 키 표시 | 0x41 | N | 탐색자 | 제공업체 | N | 예 | Y |
맞춤 데이터 보내기 | 0x42 | N | 탐색자 | 제공업체 | N | 예 | Y |
삭제 연결 타겟 설정 | 0x43 | Y | 탐색자 | 제공업체 | N | 예 | Y |
표 4.3: 오디오 전환 메시지
오디오 전환 메시지의 MAC
메시지 인증을 제공하기 위해 모든 오디오 전환 메시지에 Seeker에서 제공업체로 전송된 데이터에는 메시지 인증 코드가 필요합니다. 날짜 MAC가 포함된 메시지가 수신되면 Seeker를 통해 확인되어야 합니다. 제공업체가 메시지에 반응했는지 알 수 있습니다.
메시지 인증이 성공하면 제공자는 메시지:
옥텟 | 데이터 유형 | 설명 | 값 |
---|---|---|---|
0 | uint8 | 확인 | 0xFF |
1 | uint8 | 확인 | 0x01 |
2~3명 | uint16 | 추가 데이터 길이 | 다름 |
4 | uint8 | 오디오 전환 | 0x07 |
5 | uint8 | 오디오 전환 메시지 코드 | 다름 |
6~초 | 추가 데이터 | 다름 |
실패하는 경우 제공자는 메시지에 대한 NAK를 전송해야 합니다.
옥텟 | 데이터 유형 | 설명 | 값 |
---|---|---|---|
0 | uint8 | 확인 | 0xFF |
1 | uint8 | NAK | 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 | 추가 데이터 길이 | 탐색자가 보낸 경우 20, 제공자가 보낸 경우 4 |
4~5명 | uint16 | 오디오 전환 버전 코드 | 0이 아닌 값은 오디오 전환을 지원한다는 의미입니다. 현재 버전 (보안 향상 포함) 코드는 0x0102입니다. 0x0000 또는 1초에 응답이 없으면 이 기기에서 오디오 전환이 지원되지 않음 |
6~7 | flags | 제공자의 오디오 전환 기능 플래그입니다. Seeker가 이 플래그를 전송하는 경우 이 2바이트는 무시해야 합니다. |
다름 오디오 전환 기능 플래그 참고 |
8~15 | 메시지 nonce Seeker가 보낸 경우에만 필요합니다. |
다름 | |
만 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 vs HFP (기본값 0)
- 비트 2: A2DP vs HFP (기본값 0)
- 비트 3: HFP vs 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: 전환 후 스위치에서 기기 1회 재생 재개, 그렇지 않은 경우 0회. 재생을 재개하면 제공업체가 탐색자에게 PLAY 알림을 전송합니다. AVRCP 프로필을 통해 전달됩니다. 이전 상태 (전환하기 전)가 PLAY를 사용하는 경우 제공업체는 이 플래그를 무시해야 합니다.
- 비트 2: 1 전환된 원격 기기의 SCO 거부, 그렇지 않은 경우 0
- 비트 3: 1은 기기 전환 시 블루투스 연결을 해제하고, 그렇지 않으면 0입니다.
- 비트 4 - 7: 예약되었습니다.
오디오 전환 탐색자가 자신의 상태를 항상 정확하게 알지 못할 수도 있으므로 가능함 제공업체가 '이 기기로 전환'을 수신할 수 있도록 메시지가 표시될 때 활성화해야 합니다. 이 경우 Seeker에서 올바른 UI를 표시하기 위해 제공업체는 오류 이유인 0x4 - 중복 기기 작업과 함께 NAK를 전송할 수 있습니다.
LE 오디오 제공업체의 회원이 2명 이상인 경우 제공업체는 다음과 같은 조치를 취해야 합니다. Seeker에서 모든 멤버의 연결을 끊어야 합니다. 그러지 않으면 탐색자가 제공업체에 다시 연결됩니다.
다시 전환 (연결 해제된 기기로)
연결 전환이 원치 않는 경우 사용자는 전환을 되돌릴 수 있으며 오디오 연결을 복원하는 것이 발생할 수 있습니다 탐색자는 아래 메시지를 사용하여 다시 전환을 트리거합니다.
옥텟 | 데이터 유형 | 설명 | 값 |
---|---|---|---|
0 | uint8 | 오디오 전환 | 0x07 |
1 | uint8 | 다시 전환 (연결 해제된 기기로) | 0x31 |
2~3명 | uint16 | 추가 데이터 길이 | 17 |
4 | uint8 | 이전 이벤트로 전환 | 다양함 0x01: 뒤로 전환 0x02: 뒤로 전환 및 재생 다시 시작 |
5~12 | 메시지 nonce | 다름 | |
13~20명 | 메시지 인증 코드 | 다름 |
표 4.3.3.1: 다시 전환 (연결 해제된 기기로)
멀티포인트 제공자의 경우 연결 전환을 위해 제공자는 하나의 오디오 소스 기기와 연결하고 다른 오디오 세션을 일시중지합니다. 오디오 소스입니다. 예를 들어 멀티포인트 헤드셋이 태블릿 및 세 번째 지원되는 오디오 전환 기기가 있어야 합니다. 사용자가 동영상을 시청하고 있습니다. 태블릿에 수신 전화가 걸려 올 때 태블릿에 태블릿이 표시됩니다. 휴대전화가 실행됩니다. 헤드셋에 연결 스위치가 있어 세 번째 기기의 연결해야 합니다. 세션을 사용하여 휴대전화의 벨소리를 받아 보세요. 사용자가 거부하는 경우 통화할 때 휴대전화에서 헤드셋에 '다시 전환하여 재생을 다시 시작'하라고 요청할 수 있습니다. 이 요청을 받으면 헤드셋을 세 번째 기기에 다시 연결해야 합니다. 일시중지된 동영상을 태블릿에서 다시 재생
멀티포인트 전환 이벤트 알림
사용자가 멀티포인트 스위치 이벤트가 발생함을 알 수 있도록 오디오 전환 탐색자가 사용자에게 알림을 표시할 수 있습니다. 제공업체는 연결 상태를 오디오 전환 전환 이벤트에 대한 탐색자입니다.
옥텟 | 데이터 유형 | 설명 | 값 |
---|---|---|---|
0 | uint8 | 오디오 전환 | 0x07 |
1 | uint8 | 멀티포인트 전환 이벤트를 알립니다. 제공자는 오디오 전환 시커를 오디오 외 전환 탐색자로, 비 오디오 전환 시커에서 오디오 전환 시커로, 오디오 전환 시커에서 오디오 전환 시커로 이동하는 등 모든 전환 시 이를 전송해야 합니다. |
0x32 |
2~3명 | uint16 | 추가 데이터 길이 | 다름 |
4 | uint8 | 전환 이유 이 값은 연결 상태에 따라 결정되어야 합니다. LE 오디오 사용 사례의 경우 LE 오디오 컨텍스트 유형과 연결 상태 간의 매핑을 살펴보는 것이 유용할 수 있습니다. 예를 들어 음성 어시스턴트에 해당하는 연결 상태는 0x9(LE 오디오 - 통화 스트리밍)입니다. 따라서 음성 어시스턴트에서 시작된 스위치의 전환 이유는 0x02여야 합니다. |
다름 0x00: 지정되지 않음 0x01: 미디어 (예: A2DP 스트리밍, LEA 미디어 스트리밍) 0x02: 통화 (예: HFP 스트리밍, LEA 통화 스트리밍) |
5 | uint8 | 대상 기기 | 다름 0x01: 이 기기 0x02: 연결된 다른 기기 |
6~n | utf8 | 대상 기기 이름: 대상 기기가 Audio switch Seeker인 경우 탐색자가 보낸 이름을 사용하고, 해당하지 않는 경우 주소의 마지막 2바이트를 사용해 BT 이름을 사용합니다. |
다름 |
표 4.3.3.2: 멀티포인트 전환 이벤트 알림
연결 상태 가져오기
탐색자가 제공자로부터 현재 연결 상태를 가져올 수 있습니다.
옥텟 | 데이터 유형 | 설명 | 값 |
---|---|---|---|
0 | uint8 | 오디오 전환 | 0x07 |
1 | uint8 | 연결 상태 가져오기 | 0x33 |
2~3명 | uint16 | 추가 데이터 길이 | 0 |
표 4.3.3.3: 연결 상태 가져오기
제공자는 이 메시지를 수신한 후 메시지 코드로 응답해야 합니다. 0x34, 연결 상태를 알립니다.
연결 상태 알림
BLE 광고 페이로드에 정의된 대로 멀티포인트 제공자(연결 상태가 변경되면(연결 상태가 변경되는 경우는 제외) 공급자는 연결된 탐색자에게도 해당 패킷에 대해 알려야 합니다. 동일한 계정 키를 사용하고 있는지 확인 제공업체가 연결된 경우 오디오 전환 탐색자와 비 오디오 전환 탐색자가 있는 switch Seeker가 활성 상태인 경우 제공업체는 연결된 오디오 Seeker의 계정 키를 사용하여 연결 상태에 대해 Seeker를 전환합니다.
옥텟 | 데이터 유형 | 설명 | 값 |
---|---|---|---|
0 | uint8 | 오디오 전환 | 0x07 |
1 | uint8 | 연결 상태 알림 | 0x34 |
2~3명 | uint16 | 추가 데이터 길이 | 다름 |
4 | uint8 | 활성 기기 플래그 | 다름 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(연결_상태, 사용자설정_데이터, BLE에 정의되어 있음) 광고 페이로드 필드 길이 및 유형의 바이트는 포함해서는 안 됩니다. 여기에 메시지 코드와 데이터 길이가 있습니다.
오디오 전환이 시작된 연결 알림
오디오 전환 제공업체는 연결 전환이 트리거되었는지 알아야 할 수 있습니다. 다르게 반응할 수 있습니다. 예를 들어 오디오용 이어콘 사용 중지 switch 이벤트. 탐색자는 메시지를 보내 공급자에게 이 사실을 알립니다. 연결이 오디오 전환이 시작된 연결이었습니다.
옥텟 | 데이터 유형 | 설명 | 값 |
---|---|---|---|
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: 맞춤 데이터 전송
제공업체는 맞춤 데이터를 수신한 후 광고 패킷을 업데이트합니다. 맞춤 데이터를 포함할 수 있습니다. 멀티포인트 제공자의 경우 동일한 계정 키를 사용하여 연결된 다른 탐색자로 연결 상태가 변경됩니다.
드롭 연결 타겟 설정
멀티포인트 헤드셋에서 중단하려는 기본 연결이 오디오 전환 탐색자는 제공자가 어떤 기기를 사용할지 아래 메시지를 사용하여 드롭하세요.
옥텟 | 데이터 유형 | 설명 | 값 |
---|---|---|---|
0 | uint8 | 오디오 전환 | 0x07 |
1 | uint8 | 드롭 연결 타겟 설정 | 0x43 |
2~3명 | uint16 | 추가 데이터 길이 | 17 |
4 | uint8 | 삭제할 연결된 기기 타겟팅 | 다름 1: 이 기기 |
5~12 | 메시지 nonce | 다름 | |
13~20명 | 메시지 인증 코드 | 다름 |
표 4.3.4.3: 드롭 연결 타겟 설정
참조 구현
참조 구현은 Nearby 삽입된 SDK 라이브러리를 참고하세요.