오디오 스위치

사용자가 일상 작업을 처리하기 위해 여러 오디오 소스 기기를 점점 더 많이 활용함에 따라 여러 기기에서 헤드셋 사용을 관리하는 간단한 솔루션에 대한 수요가 증가하고 있습니다. 오디오 전환은 사용자 활동 (예: 영화 시작) 및 우선순위가 지정된 이벤트 (예: 수신 전화)에 따라 기기 간에 헤드셋 연결을 원활하게 전환합니다.

UX 원칙

  1. 연결 전환은 사용자의 작업에 따라 빠르게 이루어져야 합니다.
  2. 연결 전환은 바람직하지 않은 경우 사용자가 제어/되돌릴 수 있도록 사용자에게 투명해야 합니다.
  3. 전환 시 사용자 개인 정보 보호를 준수해야 합니다.

역할

오디오 스위치 시커: Seeker는 휴대전화 또는 태블릿과 같은 오디오 소스 기기이며 해당하는 경우 연결할 수 있는 가까운 헤드셋을 찾습니다.

오디오 스위치 제공자: 제공자는 일반적으로 탐색자가 전환 결정을 내릴 수 있도록 존재감과 연결 상태를 알리는 헤드셋입니다.

요구사항 개요

스마트 전환을 달성하기 위해 제공업체는 다음 요구사항을 준수해야 합니다.

이름 설명 요구사항 필수 여부
페이지 스캔 기존 연결이 있을 때 다른 Seeker의 새 연결 요청을 수락하는 방법
단일 지점 제공업체:
  • 제공자가 연결을 해제하면 원래 소스 기기는 오디오 재생을 자동으로 일시중지합니다.
멀티포인트 제공업체:
  • 아직 사용 가능한 연결이 있는 경우 연결 요청을 수락합니다.
  • 연결 대역폭이 가득 찬 경우 가장 오래전에 사용한 연결의 연결을 끊고 (예: 오랫동안 오디오 이벤트가 없는 경우) 새 수신 요청을 수락합니다.
성능 향상을 위해서는 지연 시간이 짧은 페이지 스캔 모드 (스캔 간격이 640ms 이하여야 함)가 필요합니다.
제공업체는 배터리 수명과 전환 성능 사이에서 절충점을 찾기 위해 대부분의 경우 기본 페이지 스캔 모드를 사용할 수 있습니다 (저전력 모드의 경우 스캔 간격은 1,280ms 이하여야 함). 하지만 다음과 같은 상황에서는 짧은 지연 시간 모드를 사용해야 합니다.
  • 처음 30초 동안 전원 켜기
  • 연결 또는 페이징을 하지 않은 경우 처음 30초
  • 기기 유휴 상태 후 처음 30초
필수
연결 기록 이전 연결로 다시 전환하고 해당하는 경우 재생을 다시 시작합니다.
이전 전환은 Message Stream API를 통한 통신을 통해 트리거됩니다.
해당하는 경우 재생을 재개하려면 일시중지 오디오 이벤트가 기록에 포함되어야 합니다.
연결 기록 유지 및 Message Stream API 구현 필수
연결 상태 탐색자가 연결 전환을 판단해야 합니다. 연결 상태에는 다음이 포함됩니다.
  • 연결 상태
  • 활성 연결의 오디오 유형
  • 활성 연결의 계정 정보
  • 연결된 기기
BLE 광고 및 메시지 스트림에 연결 상태를 포함합니다. 필수
런타임 기능 변경 오디오 전환은 Provider에서 펌웨어를 업그레이드하여 사용 설정할 수 있으므로 런타임 시 Seeker와 Provider 간에 기능을 동기화해야 합니다. Message Stream API를 구현하여 런타임 기능에 액세스합니다. 필수
구성 가능한 전환 규칙 Seeker가 사용자 환경설정을 통해 기존 활성 오디오 스트리밍과 새로운 오디오 스트리밍 요청 간의 우선순위를 구성하도록 허용합니다.
예를 들어 오디오 전환 Seeker는 사용자가 미디어 스트리밍과 통화 간의 자동 전환을 사용 설정/중지할 수 있는 UI 설정을 제공할 수 있습니다.
오디오 전환 탐색자가 메시지 스트림을 통해 전환 규칙을 설정하고 받습니다.
멀티포인트 제공업체 전용입니다.
연결된 기기 간의 전환 규칙을 구성할 수 있도록 Message Stream API를 구현합니다.
선택사항
활성 기기 전환 오디오 전환 시커가 연결된 기기 간의 오디오 전환을 시뮬레이션하도록 허용합니다.
오디오 전환 탐색자 측에는 사용자가 연결된 기기 간에 쉽게 전환할 수 있는 UI가 있을 수 있습니다.
멀티포인트 제공업체만 해당합니다.
오디오 전환 시커용 메시지 스트림 API를 구현하여 연결된 기기 간의 활성 오디오 소스를 확인합니다.
필수
멀티포인트 전환 알림 오디오 전환 탐색자가 전환 알림을 표시하도록 허용합니다. 멀티포인트 제공업체만 해당합니다.
Message Stream API를 구현하여 멀티포인트 전환이 발생할 때 연결된 오디오 전환 탐색자에게 알립니다.
필수

광고 페이로드

제공자는 광고: 검색할 수 없는 경우에 설명된 빠른 페어링 계정 데이터를 바탕으로 현재 연결 상태를 광고에 포함해야 합니다.

표 4.2의 버전은 0x1입니다.

연결 상태 필드

옥텟 데이터 유형 설명 가치 필수 여부
0 uint8 필드 길이 및 유형
0bLLLLTTTT
  • L = 연결 상태 길이(바이트)
  • T = 유형
0bLLLL01010
  • 길이: 다름
  • 유형 = 0b0101
필수
1 uint8 연결 상태
0bHAFRSSSS
  • H = 머리 감지 시
  • A = 연결 가용성
  • F = 초점 모드
  • R = 자동으로 다시 연결됨
  • S = 연결 상태
0bHAFRSSSS
필수
2 uint8 맞춤 데이터
현재 이 데이터에는 현재 오디오 스트리밍 사용량을 설명하는 데 사용되는 콘텐츠 유형만 포함됩니다. 탐색자가 해당 데이터를 제공자에게 전송합니다.
이 값은 메시지 스트림을 통해 현재 활성 스트리밍 시커에서 제공업체로 전송됩니다. 현재 활성 스트리밍이 Seeker에서 오지 않은 경우 0입니다. 필수
3 - var 연결된 기기 비트맵
현재 제공업체에 연결된 기기를 보여주는 비트맵입니다. 연결된 모든 기기가 순서대로 정렬되어 있으며 한 개의 연결된 기기에는 1비트가 있습니다. 길이는 제공자가 연결된 기기의 수에 따라 달라집니다.
기기가 현재 제공자에 연결되어 있으면 매핑된 비트가 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: 연결 스위치를 일시적으로 사용 중지합니다 (예: 펌웨어 업데이트).
연결된 기기 비트맵

원치 않는 연결 전환을 방지하기 위해 시커는 현재 헤드셋이 연결된 기기를 알아야 할 수 있습니다. 예를 들어 헤드셋이 휴대전화에 연결되어 있으면 가족 구성원 중 한 명이 태블릿에서 YouTube를 시작할 때 연결 전환으로 인해 방해를 받고 싶어 하지 않습니다.

이 비트맵은 익명이므로 Seeker는 제공자와 연결된 다른 기기를 알 수 없습니다. 예를 들어 연결된 기기 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)

어디서

  1. 키는 다음 섹션에서 정의하는 사용 중인 계정 키에서 파생됩니다.

    • 키는 SHA-256 해시 함수를 사용하여 HKDF 함수인 IETF RFC 5869로 생성됩니다.

        Key = HKDF(account_key, NULL, UTF8("SASS-RRD-KEY"),16)
      
    • 제공자는 여기에서 원래 계정 키를 사용해야 합니다. 즉, 키의 첫 번째 바이트는 0x04이며 사용 패턴에 포함되지 않습니다.

  2. IV (초기 벡터)는 패딩이 없는 계정 키 데이터의 2바이트 솔트입니다. 즉, IV는 concat(솔트, 14바이트 0)입니다.

  3. 연결 상태 원시 데이터는 표 4.1에 정의되어 있습니다. 연결 상태가 변경되면 솔트 및 RPA는 동일한 광고 기간에 다시 생성되어야 합니다.

이렇게 하면 암호화된 연결 상태 필드가 계정 키 데이터 순환과 동시에 순환됩니다.

BLE 광고는 다음과 같이 구성됩니다.

옥텟 데이터 유형 설명 가치 필수 여부
0 uint8 버전 및 플래그 0x10 필수
1~t 계정 키 데이터 경우에 따라 다름 필수
t+1 - s 배터리 데이터 경우에 따라 다름 선택사항
s+1 - var 랜덤 결정 가능 데이터 경우에 따라 다름 계정 키 목록이 비어 있지 않으면 필수이며
그렇지 않으면 제외됩니다.

표 4.2: 임의 확인 가능한 데이터를 사용하는 BLE 광고

확인 가능한 무작위 데이터에는 다음이 포함됩니다.

옥텟 데이터 유형 설명 가치 필수 여부
0 uint8 필드 길이 및 유형
0bLLLLTTTT
  • L = 암호화된 데이터의 길이
  • T = 유형
0bLLLL0110
  • 길이: 다름
  • 유형 = 0b0110
필수
1 - var 암호화된 데이터 경우에 따라 다름 필수

표 4.2.1: 확인 가능한 임의 데이터

예를 들어 임의 확인 가능한 데이터에 암호화된 연결 상태 필드가 포함된 경우 복호화된 결과는 연결 상태 필드가 됩니다.

조작을 방지하려면 임의 확인 가능한 데이터가 광고에 포함될 때 위의 계정 키 데이터를 약간 수정해야 합니다. 일반적으로 계정 키 필터를 빌드할 때 계정 키 필터를 솔트와 결합하여 값 V가 생성됩니다. 대신, 임의 확인 가능 데이터가 함께 광고되는 경우 값 V는 다음과 같이 구성되어야 합니다.

 V = concat(account_key, salt, random_resolvable_data)

배터리 데이터와 임의 확인 가능 데이터가 모두 공지되고 있다면 V는 다음과 같이 구성되어야 합니다.

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

사용 중인 계정 키

연결 전환은 계정 기반이므로 제공자는 BLE 광고에 현재 연결의 계정 정보를 포함해야 합니다. 현재 연결된 기기가 오디오 전환 시커인 경우 제공자는 이 시커와 연결된 계정 키를 가져오고 이 계정 키를 사용하여 연결 상태 필드를 암호화할 수 있어야 합니다. 연결된 오디오 소스가 오디오 스위치 시커가 아닌 경우 제공자는 가장 최근에 사용한 계정 키를 사용해야 합니다.

제공자는 계정 키 필터를 계산하기 전에 다음 사용 패턴 중 하나를 포함하도록 계정 키의 첫 번째 바이트를 수정해야 합니다.

  1. 0b00000100
    이 계정 키는 사용 중이 아닙니다.
    기본값입니다 (계정 키 참고).
  2. 0b00000101
    이 계정 키는 가장 최근에 사용된 계정 키입니다.
    연결 상태 필드는 이 계정 키로 암호화됩니다. 현재 연결 상태에 관한 계정 키 정보가 없습니다. 이는 연결된 기기가 없거나 연결된 기기가 오디오 전환 시커가 아님을 의미할 수 있습니다.
  3. 0b00000110
    이 계정 키는 사용 중인 계정 키입니다.
    연결 상태 필드는 이 계정 키로 암호화되며 현재 연결된 기기가 이 계정 키와 연결됩니다.

오디오 전환 페이로드 도식

아래 그림은 오디오 전환 페이로드의 도식을 보여줍니다.

메시지

연결되면 Seeker와 Provider가 메시지 스트림을 사용하여 오디오 전환 기능을 동기화하고, 연결 전환을 트리거하고, 전환 환경설정을 설정 및 가져오고, 연결 상태를 알리는 등의 작업을 할 수 있습니다. 아래와 같이 오디오 전환 전용 메시지 그룹과 메시지 코드를 만듭니다.

메시지 그룹 이름 가치
오디오 전환 0x07

각 메시지 코드에 대한 추가 세부정보는 다음 섹션에 나와 있습니다.

메시지 코드 이름 가치 멀티포인트만 보내는 사람 응답자 암호화 MAC 확인
오디오 전환 기능 가져오기 0x10 구매 불가 둘 다 둘 다(코드 0x11 사용) 구매 불가 구매 불가 구매 불가
오디오 전환 알림 기능 0x11 구매 불가 둘 다 둘 다 구매 불가 구매 가능 구매 가능
멀티포인트 상태 설정 0x12 구매 가능 시커 제공업체 구매 불가 구매 가능 구매 가능
전환 환경설정 지정 0x20 구매 가능 시커 제공업체 구매 불가 구매 가능 구매 가능
전환 환경설정 가져오기 0x21 구매 가능 시커 제공업체, 코드 0x22 사용 구매 불가 구매 불가 구매 불가
전환 환경설정 알림 0x22 구매 가능 제공업체 시커 구매 불가 구매 불가 구매 불가
활성 오디오 소스 전환(연결된 기기로) 0x30 구매 가능 시커 제공업체 구매 불가 구매 가능 구매 가능
연결 해제된 기기로 돌아가기 0x31 구매 불가 시커 제공업체 구매 불가 구매 가능 구매 가능
멀티포인트 전환 이벤트 알림 0x32 구매 가능 제공업체 시커 구매 불가 구매 불가 구매 불가
연결 상태 가져오기 0x33 구매 가능 시커 제공업체, 코드 0x34 사용 구매 불가 구매 불가 구매 불가
연결 상태 알림 0x34 구매 가능 제공업체 시커 구매 가능 구매 불가 구매 불가
오디오 스위치에서 시작된 연결 알림 0x40 구매 불가 시커 제공업체 구매 불가 구매 가능 구매 가능
사용 중인 계정 키 표시 0x41 구매 불가 시커 제공업체 구매 불가 구매 가능 구매 가능
맞춤 데이터 보내기 0x42 구매 불가 시커 제공업체 구매 불가 구매 가능 구매 가능
연결 중단 대상 설정 0x43 구매 가능 시커 제공업체 구매 불가 구매 가능 구매 가능

표 4.3: 오디오 전환 메시지

오디오 전환 메시지의 MAC

메시지 인증을 제공하려면 시커에서 제공업체로 전송되는 추가 데이터가 포함된 모든 오디오 전환 메시지에 메시지 인증 코드가 필요합니다. MAC이 포함된 메시지가 수신되면 탐색자가 제공자가 메시지에 반응했는지 알 수 있도록 메시지를 확인해야 합니다.

메시지 인증에 성공하면 제공자는 메시지에 대한 ACK를 보내야 합니다.

옥텟 데이터 유형 설명 가치
0 Uint8 확인 0xFF
1 Uint8 확인 0x01
2~3명 단위16 추가 데이터 길이 경우에 따라 다름
4 Uint8 오디오 전환 0x07
5 Uint8 오디오 전환 메시지 코드 경우에 따라 다름
6~ 추가 데이터 경우에 따라 다름

실패하면 제공자는 메시지에 NAK를 보내야 합니다.

옥텟 데이터 유형 설명 가치
0 Uint8 확인 0xFF
1 Uint8 NAK 0x02
2~3명 단위16 추가 데이터 길이 0x0003
4 Uint8 오류 이유 경우에 따라 다름
5 Uint8 오디오 전환 0x07
6 Uint8 오디오 전환 메시지 코드 경우에 따라 다름

참고로, 제공업체가 발신자인 경우 MAC가 필요하지 않습니다.

오디오 전환 기능 가져오기

오디오 스위치 제공자와 탐색자 모두 아래 메시지를 사용하여 연결된 빠른 페어링 시커/제공업체가 오디오 전환을 지원하는지 확인할 수 있습니다.

옥텟 데이터 유형 설명 가치
0 Uint8 오디오 전환 0x07
1 Uint8 오디오 전환 기능 가져오기 0x10
2~3명 단위16 추가 데이터 길이 0

표 4.3.1.0: 오디오 전환 기능 가져오기

오디오 전환 알림 기능

오디오 전환 가져오기 기능 메시지 코드를 수신하면 오디오 전환 시커/제공업체는 다음 플래그 중 하나로 응답합니다.

옥텟 데이터 유형 설명 가치
0 Uint8 오디오 전환 0x07
1 Uint8 오디오 전환 알림 기능 0x11
2~3명 단위16 추가 데이터 길이 Seeker에서 보낸 경우 20,
제공자가 보낸 경우 4
4~5명 단위16 오디오 전환 버전 코드 0이 아닌 값은 오디오 전환을 지원함을 의미합니다. 보안 향상 기능이 포함된 현재 버전 코드는 0x0102입니다.
0x0000이거나 1초 동안 응답이 없는 경우 이 기기에서 오디오 전환이 지원되지 않음을 의미합니다.
6 ~ 7 flags 제공업체의 오디오 전환 기능 플래그입니다.
시커에 의해 전송되는 경우 이 두 바이트는 무시해야 합니다.
다름
오디오 전환 기능 플래그를 참고하세요.
8~15명 메시지 nonce
Seeker에서 보낸 메시지인 경우에만 필요합니다.
경우에 따라 다름
만 16~23세 메시지 인증 코드
Seeker에서 보낸 경우에만 필요합니다.
경우에 따라 다름

표 4.3.1.1: 오디오 전환 알림 기능

오디오 전환 기능 플래그
  1. 비트 0 (옥텟 6, MSB): 오디오 전환 상태

    • 1: 오디오 스위치 상태가 켜져 있는 경우
    • 0, 그렇지 않은 경우
  2. 비트 1: 멀티포인트 구성 가능성

    • 1: 기기가 멀티포인트를 지원하고 켜고 끌 수 있는 경우
    • 0, 그렇지 않은 경우 (멀티포인트를 지원하지 않거나 멀티포인트가 상시 사용 설정됨)
  3. 비트 2: 멀티포인트 현재 상태

    • 1(멀티포인트가 사용 설정된 경우)
    • 0, 그렇지 않은 경우
  4. 비트 3: 온헤드 감지

    • 1 - 이 기기가 온헤드 감지를 지원하는 경우 (지금 온헤드 감지가 사용 중지된 경우에도)
    • 0, 그렇지 않은 경우
  5. 비트 4: 온헤드 감지 현재 상태

    • 1(온헤드 감지가 사용 설정된 경우)
    • 0, 그렇지 않은 경우 (온헤드 감지를 지원하지 않거나 온헤드 감지가 사용 중지됨)
  6. 다른 모든 비트는 예약되며 기본값은 0입니다.

멀티포인트 상태 설정

오디오 전환 시커에서 사용자가 멀티포인트 기능을 사용 설정하거나 중지할 수 있는 설정을 제공할 수 있습니다. 시커는 아래 메시지를 사용하여 제공자에 멀티포인트 상태를 설정합니다.

옥텟 데이터 유형 설명 가치
0 Uint8 오디오 전환 0x07
1 Uint8 멀티포인트 상태 설정 0x12
2~3명 단위16 추가 데이터 길이 17
4 Uint8 멀티포인트 상태 0: 멀티포인트 사용 중지
1: 멀티포인트 켜기
5~12명 메시지 nonce 경우에 따라 다름
13~20명 메시지 인증 코드 경우에 따라 다름

표 4.3.1.2: 멀티포인트 상태 설정

전환 환경설정

오디오 전환 탐색자는 멀티포인트의 전환 환경설정을 수정하고 아래 메시지를 사용하여 제공자로 설정할 수 있습니다.

옥텟 데이터 유형 설명 가치
0 Uint8 오디오 전환 0x07
1 Uint8 전환 환경설정 0x20
2~3명 단위16 추가 데이터 길이 18
4 flags 전환 환경설정 varies
다지점 전환 환경설정 플래그를 참조하세요.
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명 단위16 추가 데이터 길이 0

표 4.3.2.1: 전환 환경설정 가져오기

전환 환경설정 알림

옥텟 데이터 유형 설명 가치
0 Uint8 오디오 전환 0x07
1 Uint8 전환 환경설정 알림 0x22
2~3명 단위16 추가 데이터 길이 2
4 flags 환경설정 플래그 전환 varies
다지점 전환 환경설정 플래그를 참조하세요.
5 고급 전환 설정
이 바이트는 예약되어 있으며 기본값은 0이어야 합니다.
경우에 따라 다름

표 4.3.2.2: 전환 환경설정 알림

활성 오디오 소스 전환 (연결된 기기로)

오디오 전환 탐색자는 아래 메시지를 사용하여 멀티포인트 제공자에 연결된 기기 간에 활성 오디오 소스를 전환하도록 요청할 수 있습니다.

옥텟 데이터 유형 설명 가치
0 Uint8 오디오 전환 0x07
1 Uint8 활성 오디오 소스 전환 (연결된 기기로) 0x30
2~3명 단위16 추가 데이터 길이 17
4 flags 활성 오디오 소스 이벤트 플래그 전환 다름
활성 오디오 소스 이벤트 전환을 참조하세요.
5~12명 메시지 nonce 경우에 따라 다름
13~20명 메시지 인증 코드 경우에 따라 다름

표 4.3.3.0: 활성 오디오 소스 전환 (연결된 기기로)

활성 오디오 소스 이벤트 전환 중
  • 비트 0 (MSB): 1번 이 기기로 전환, 0을 두 번째 연결된 기기로 전환
  • 비트 1: 1은 전환 후 기기로 전환하여 재생 재개, 그렇지 않은 경우 0. 재생을 재개하면 제공업체가 AVRCP 프로필을 통해 시커에게 PLAY 알림을 전송합니다. 전환되기 전의 이전 상태가 PLAY가 아닌 경우 제공자는 이 플래그를 무시해야 합니다.
  • 비트 2: 전환된 기기에서 1은 SCO 거부, 그렇지 않은 경우 0
  • 비트 3: 1은 기기에서 블루투스 연결을 해제합니다. 그렇지 않으면 0입니다.
  • 비트 4~7: 예약됨.

오디오 전환 시커가 항상 상태를 올바르게 인식하지 못할 수 있으므로, Seeker가 이미 활성 기기인 경우 제공자가 '이 기기로 전환' 메시지를 수신할 수 있습니다. 이 경우 Seeker에 올바른 UI를 표시하기 위해 제공업체는 오류 이유인 0x4 - 중복 기기 작업과 함께 NAK를 전송할 수 있습니다.

다시 연결 해제된 기기로 전환

연결 전환이 원치 않는 경우 사용자는 전환을 되돌릴 수 있으며 특정 시나리오에서는 오디오 연결을 복원하여 중단을 최소화하는 것이 좋습니다. 탐색자가 아래 메시지를 사용하여 이전 버전으로의 전환을 트리거합니다.

옥텟 데이터 유형 설명 가치
0 Uint8 오디오 전환 0x07
1 Uint8 다시 연결 해제된 기기로 전환 0x31
2~3명 단위16 추가 데이터 길이 17
4 Uint8 이전 일정 전환 다름
0x01: 다시 전환
0x02: 다시 전환 및 재생 다시 시작
5~12명 메시지 nonce 경우에 따라 다름
13~20명 메시지 인증 코드 경우에 따라 다름

표 4.3.3.1: 다시 연결 해제된 기기로 전환

멀티포인트 제공자의 경우 연결 전환을 위해 제공자는 한 오디오 소스 기기와의 연결을 끊고 다른 오디오 소스에서 오디오 세션을 일시중지할 수 있습니다. 예를 들어 멀티포인트 헤드셋이 태블릿과 지원되는 세 번째 오디오 전환 기기에 연결되어 있다고 가정해 보겠습니다. 사용자가 태블릿에서 동영상을 시청하고 있으며 휴대전화에 수신 전화가 있을 때 휴대전화는 헤드셋에서 연결 스위치를 트리거합니다. 이 스위치는 휴대전화에 연결하기 위해 세 번째 기기의 연결을 끊고, 태블릿의 미디어 세션을 일시중지하여 휴대전화에서 벨소리를 가져올 수도 있습니다. 사용자가 통화를 거부하면 휴대전화에서 헤드셋에 '다시 전환하고 재생을 다시 시작'하도록 요청할 수 있습니다. 이 요청을 수신하면 헤드셋이 세 번째 기기에 다시 연결하고 태블릿에서 일시중지된 동영상 재생을 재개해야 합니다.

멀티포인트 전환 이벤트 알림

멀티포인트 전환 이벤트를 사용자에게 알리기 위해 오디오 전환 탐색자는 사용자에게 알림을 표시할 수 있습니다. 제공자는 연결된 오디오 전환 시커에게 전환 이벤트를 알려야 합니다.

옥텟 데이터 유형 설명 가치
0 Uint8 오디오 전환 0x07
1 Uint8 멀티포인트 전환 이벤트 알림
제공업체는 오디오 전환 탐색자에서 비 오디오 전환 시커로, 비오디오 전환 탐색자에서 오디오 전환 시커로, 오디오 전환 탐색자로 오디오 전환 탐색자로 전송하는 등 모든 전환에서 전송해야 함
0x32
2~3명 단위16 추가 데이터 길이 경우에 따라 다름
4 Uint8 전환 이유 다름
0x00: 지정되지 않음
0x01: A2DP 스트리밍
0x02: HFP
5 Uint8 대상 기기 다름
0x01: 이 기기
0x02: 연결된 다른 기기
6~n UF8 대상 기기 이름
대상 기기가 오디오 전환 시커인 경우 시커가 보낸 이름을 사용하며, 해당하는 경우 블루투스 이름 사용(주소의 마지막 2바이트 사용)
경우에 따라 다름

표 4.3.3.2: 멀티포인트 전환 이벤트 알림

연결 상태 가져오기

Seeker는 제공업체로부터 현재 연결 상태를 확인할 수 있습니다.

옥텟 데이터 유형 설명 가치
0 Uint8 오디오 전환 0x07
1 Uint8 연결 상태 가져오기 0x33
2~3명 단위16 추가 데이터 길이 0

표 4.3.3.3: 연결 상태 가져오기

제공업체는 이 메시지를 수신한 즉시 메시지 코드 0x34로 응답하고 연결 상태를 알려야 합니다.

연결 상태 알림

BLE 광고 페이로드에 정의된 것처럼, 멀티포인트 제공자의 경우 광고 패킷 변경을 제외하고 연결 상태가 변경되면 제공자는 동일한 계정 키를 사용하는 연결된 시커에도 변경사항에 관해 알려야 합니다. 제공업체가 오디오 전환 시커 및 비 오디오 전환 시커와 연결된 경우, 비 오디오 스위치 시커가 활성 상태이면 제공자는 연결된 오디오 스위치 시커에도 연결 상태를 알려야 합니다 (시커의 계정 키 사용).

옥텟 데이터 유형 설명 가치
0 Uint8 오디오 전환 0x07
1 Uint8 연결 상태 알림 0x34
2~3명 단위16 추가 데이터 길이 경우에 따라 다름
4 Uint8 활성 기기 플래그 다름
0x00: 이 Seeker는 수동이며 활성 기기가 동일한 계정 키
0x01을 사용합니다. 이 Seeker는 활성 기기입니다.
0x02: 이 Seeker는 수동이며 활성 기기는 비 오디오 전환 Seeker입니다.
5~n 암호화된 연결 상태 경우에 따라 다름
n+1~n+8 메시지 nonce 경우에 따라 다름

표 4.3.3.4: 연결 상태 알림

암호화된 연결 상태 메시지

 encrypted_connection_status = connection_status_raw_data ^ AES(Key, IV)

각 항목의 의미는 다음과 같습니다.

오디오 스위치가 연결을 시작했음을 알림

오디오 전환 제공업체는 다른 반응(예: 오디오 전환 이벤트에 이어콘 사용 중지)을 갖기 위해 오디오 스위치로 연결 전환이 트리거되는지 알아야 할 수 있습니다. 시커는 제공자에 이 연결이 오디오 스위치에서 시작된 연결임을 알리는 메시지를 보냅니다.

옥텟 데이터 유형 설명 가치
0 Uint8 오디오 전환 0x07
1 Uint8 오디오 스위치가 연결을 시작했음을 알림 0x40
2~3명 단위16 추가 데이터 길이 17
4 Uint8 오디오 스위치로 연결 시작 표시 다름
0: 오디오 스위치로 인해 이 연결이 트리거되지 않았습니다.
1: 오디오 전환에서 시작된 연결입니다.
5~12명 메시지 nonce 경우에 따라 다름
13~20명 메시지 인증 코드 경우에 따라 다름

표 4.3.4.0: 오디오 스위치에서 시작된 연결 알림

사용 중인 계정 키 표시

Seeker의 여러 계정 키 (예: 멀티 사용자)가 제공업체와 연결된 경우 탐색자는 아래 메시지를 사용하여 어떤 계정 키를 사용 중인지 나타냅니다.

옥텟 데이터 유형 설명 가치
0 Uint8 오디오 전환 0x07
1 Uint8 사용 중인 계정 키 표시 0x41
2~3명 단위16 추가 데이터 길이 22
4~9명 UF8 사용 중인 문자열 UTF8 ('사용 중')
10~17명 메시지 nonce 경우에 따라 다름
만 18~25세 메시지 인증 코드 경우에 따라 다름

표 4.3.4.1: 사용 중인 계정 키 표시

이 메시지를 수신한 제공자는 메시지 인증 코드를 확인하여 어떤 계정 키가 사용 중인지 알 수 있습니다.

맞춤 데이터 전송

활성 오디오 전환 시커는 맞춤 데이터 바이트에 오디오 스트림의 정보 (예: 오디오 사용량)를 캡슐화하고 아래 메시지를 사용하여 제공자에게 전송할 수 있습니다.

옥텟 데이터 유형 설명 가치
0 Uint8 오디오 전환 0x07
1 Uint8 맞춤 데이터 전송 0x42
2~3명 단위16 추가 데이터 길이 17
4 Uint8 맞춤 데이터 경우에 따라 다름
5~12명 메시지 nonce 경우에 따라 다름
13~20명 메시지 인증 코드 경우에 따라 다름

표 4.3.4.2: 맞춤 데이터 전송

맞춤 데이터를 수신하면 제공자는 맞춤 데이터를 포함하도록 광고 패킷을 업데이트합니다. 멀티포인트 제공자의 경우 동일한 계정 키를 사용하여 다른 연결된 Seeker에도 연결 상태 변경을 알려야 합니다.

연결 중단 대상 설정

멀티포인트 헤드셋에서 삭제할 기본 연결이 최근에 사용한 연결이 아니라면 오디오 전환 탐색자는 아래 메시지를 사용하여 삭제할 기기를 제공업체에 알릴 수 있습니다.

옥텟 데이터 유형 설명 가치
0 Uint8 오디오 전환 0x07
1 Uint8 연결 중단 대상 설정 0x43
2~3명 단위16 추가 데이터 길이 17
4 Uint8 드롭할 연결 대상 기기 다름
1: 이 기기
5~12명 메시지 nonce 경우에 따라 다름
13~20명 메시지 인증 코드 경우에 따라 다름

표 4.3.4.3: 연결 중단 대상 설정

참조 구현

참조 구현은 주변에 삽입된 SDK 라이브러리를 참고하세요.