저전력 블루투스 오디오 (LEA)를 사용하면 사용자가 배터리 수명을 단축하지 않으면서 Hi-Fi 오디오를 수신하고 여러 사용 사례 간에 매끄럽게 전환할 수 있습니다. Android 13 (API 수준 33)에는 LEA 지원이 내장되어 있습니다.
LEA 소스 기기 시장 점유율이 증가할 때까지 대부분의 LEA 헤드셋은 이중 모드입니다. 사용자는 듀얼 모드 헤드셋에서 두 전송을 모두 페어링하고 설정할 수 있어야 합니다.
사용 사례
다음 사용 사례에 LEA를 통합하는 것이 좋습니다.
오디오 공유: 사용자는 하나 이상의 오디오 싱크 기기에 여러 오디오 스트림을 동시에 공유할 수 있습니다. 소스 기기와 연결된 기기 간에 오디오가 동기화됩니다.
오디오 브로드캐스트: 사용자는 친구 및 가족에게 오디오를 브로드캐스트하는 동시에 정보, 엔터테인먼트 또는 접근성을 위해 공개 방송에 연결할 수 있습니다.
LC3 오디오 코덱 지원: 기본 오디오 코덱이며 A2DP (미디어)에 사용되는 SBC 코덱과 HFP (음성)의 mSBC를 대체합니다. LC3는 더 효율적이고 재구성 가능하며 품질이 더 높습니다.
오디오 샘플링 개선: 헤드셋에서 마이크를 사용할 때 높은 출력 음질을 유지할 수 있습니다. 블루투스 클래식은 블루투스 마이크를 사용할 때 음질을 낮춥니다. BLE 오디오를 사용하면 입력 및 출력 샘플링이 32kHz에 도달할 수 있습니다.
스테레오 마이크: 히어러블은 공간 음향 개선을 위해 스테레오 마이크로 오디오를 녹음할 수 있습니다.
보청기 프로필 (HAP) 지원: HAP는 이전 ASHA 프로토콜보다 사용자에게 더 나은 접근성과 사용성을 제공합니다. 사용자는 전화 통화 및 VoIP 애플리케이션에 보청기를 사용할 수 있습니다.
향상된 속성 프로토콜 (EATT) 지원: EATT를 사용하면 개발자가 페어링된 히어러블에 여러 명령어를 한 번에 전송할 수 있습니다.
주요 시나리오
사용 사례에는 네 가지 주요 카테고리가 있습니다.
대화형: 지연 시간이 짧은 통신 라우팅이 필요한 다이얼러 및 VoIP 애플리케이션은 고품질 오디오와 적은 배터리 사용량을 제공합니다.
게임: 동시 마이크 및 고음질 재생을 통해 게임에서 고품질 오디오를 청각 기기에 스트리밍할 수 있습니다. 게임 앱은 게임에서 블루투스 마이크를 사용할 준비가 된 상태로 설정하면 BLE 오디오 입력에 액세스할 수 있습니다. 그러면 플레이어가 동료 플레이어와 실시간 대화를 시작할 때 게임 앱이 지연 없이 마이크 데이터를 사용할 수 있습니다.
미디어: 미디어 애플리케이션은 오디오 관리자의 기본 기기를 설정할 수 있습니다. 사용자는 시스템 설정에서 기본 기기를 변경하여 이를 재정의할 수 있습니다.
접근성: 이제 BLE 오디오를 지원하는 보청기에서 마이크를 사용할 수 있으므로 사용자가 통화 시 보청기를 계속 사용할 수 있습니다.
BLE 오디오 API 및 메서드
BLE 오디오 히어러블을 지원하려면 다음 API와 메서드가 필요합니다.
AudioManager
setCommunicationDevice()은 음성 또는 영상 통화와 같은 커뮤니케이션 사용 사례에 사용해야 하는 오디오 기기를 선택합니다. 이 메서드는 음성 또는 영상 채팅 애플리케이션이 플랫폼에서 기본적으로 선택한 오디오 기기 이외의 다른 오디오 기기를 선택하는 데 사용할 수 있습니다. 이 API는 지원 중단된startBluetoothSco(),stopBluetoothSco(),setSpeakerphoneOn()API를 대체합니다.clearCommunicationDevice()는 앱이 통화나 세션을 종료한 후에 호출되어 사용자가 여러 애플리케이션 간에 이동할 때 우수한 환경을 제공할 수 있도록 지원합니다.
BluetoothProfile
BluetoothLeAudio는 프록시 객체를 통해 블루투스 서비스를 제어합니다.
Telecom InCallService
InCallService#requestCallEndpointChange()는 지원 중단된InCallService.setAudioRoute()및InCallService.requestBluetoothAudio()API를 대체하여 앱이 특정CallEndpoint에 오디오 라우팅을 요청할 수 있도록 합니다. 클라이언트는 변경을 요청할 때 자체CallEndpoint을 정의해서는 안 됩니다. 대신 새 엔드포인트는InCallService.onAvailableCallEndpointsChanged(java.util.List)에서 제공하는 유효한 엔드포인트 중 하나여야 합니다.CallEndpoint.TYPE_BLUETOOTH는 블루투스를 통해 오디오 스트림을 전송합니다.- 앞서 언급한
InCallServiceAPI는 Android 휴대전화의 기본 전화 앱이나 오디오 라우팅에 영향을 줄 수 있는 웨어러블, 자동차, 기타 블루투스 기기와 같은 기타 통화 서피스에서 사용하도록 설계되었습니다.
Telecom CallControl
- 새로운
CallControl클래스는 VoIP 애플리케이션 전용으로Connection및ConnectionService를 대체하기 위해 API 수준 34에서 도입되었습니다. CallControl.requestCallEndpointChange()도CallEndpoint변경을 요청합니다. 이 API는 지원 중단된Connection.requestBluetoothAudio()및Connection.setAudioRoute()API를 대체합니다.- 업데이트된 Telecom 플랫폼 API 외에도 음성 또는 영상 통화 애플리케이션을 빌드할 때는 Telecom Jetpack 라이브러리를 사용하는 것이 좋습니다. 이 라이브러리는 통합 프로세스를 크게 간소화하고 모든 Android 표면에서 VoIP 통화를 개선할 수 있습니다.
오디오 기기 정보
AudioDeviceInfo.TYPE_BLE_HEADSET은 오디오 기기 유형을 LEA 기기로 설명합니다. 청각 보조 기기가 LEA 기기인지 식별하는 데 사용됩니다.
오디오 레코더
setPreferredDevice(): 사용할 오디오 라우팅의 기본 기기를 설정합니다. 사용자는 시스템 설정에서 이를 재정의할 수 있습니다.
블루투스 어댑터
isLeAudioSupported(): 기기 하드웨어에서 LE 오디오를 지원하는지 여부를 나타내는@BluetoothStatusCodes상수 (FEATURE_SUPPORTED,FEATURE_NOT_SUPPORTED또는 오류 코드)를 반환합니다.isLeAudioBroadcastSourceSupported(): 기기 하드웨어가 LE 오디오 브로드캐스트 소스를 지원하는지 나타내는@BluetoothStatusCodes상수 (FEATURE_SUPPORTED,FEATURE_NOT_SUPPORTED또는 오류 코드)를 반환합니다.
사용 사례 기반 가이드
아래는 특정 사용 사례에 따라 LEA를 구현하기 위한 가이드라인입니다.
음성 통신 애플리케이션
음성 통신 애플리케이션은 상태를 자체 관리하거나 오디오 라우팅 및 상태 로직을 실행하는 Telecom API를 사용하여 오디오 라우팅 및 기기 상태를 관리할 수 있습니다.
자체 관리: 현재
startBluetoothSco(),stopBluetoothSco(),setSpeakerphoneOn()을 사용 중이거나 오디오 라우팅 상태를 자체 관리하려는 애플리케이션의 경우 오디오 관리자 자체 관리 호출 가이드를 따르세요.관리: Telecom Jetpack 라이브러리 또는 Telecom 플랫폼 API를 사용하여 오디오 또는 동영상 통화 애플리케이션을 만듭니다.
이 두 솔루션을 사용하면 오디오 라우팅을 빠르고 쉽게 제어하고 Bluetooth 기기 간에 전환할 수 있습니다. 자세한 내용은 통신 사업자 관리 통화 가이드를 참고하세요.
오디오 녹음 애플리케이션
- 미디어 녹음기: 이제 미디어 녹음기를 사용하여 오디오를 녹음할 때 블루투스 청각 보조 기기가 LEA를 지원하는 경우 스테레오로 녹음할 수 있습니다. 오디오 녹음 가이드를 확인하세요.
헤드셋 권장사항
LEA 헤드셋이 더 많이 출시됨에 따라 실제 테스트에서 사용자 환경을 저하시키는 문제가 발견되었습니다. 사양에서는 이러한 문제를 모두 다루지 않습니다. 다음 표에는 Android 사용자의 엔드 투 엔드 환경을 개선하기 위해 LEA 헤드셋 제조업체가 따라야 하는 권장사항 목록이 나와 있습니다.
| 설명 | 컨텍스트 |
|---|---|
듀얼 모드 헤드셋의 교차 전송 키 파생 (CTKD) 지원:
|
LEA 소스 기기 시장 점유율이 증가할 때까지 대부분의 새 LEA 헤드셋은 이중 모드입니다. 사용자가 듀얼 모드 헤드셋을 원활하게 페어링하고 두 전송을 모두 설정할 수 있어야 합니다. 이는 Google 빠른 페어링에도 중요합니다. |
|
LEA 헤드셋이 소스 기기에 안정적으로 다시 연결되도록 하려면 타겟팅된 알림 (TA)을 지원합니다. LE 오디오 이어폰은 TA를 사용하여 중앙 기기에서 수신 연결을 요청해야 합니다. 향후 BT SIG에 추가될 예정입니다. |
전화나 헤드셋에서 연결을 시작할 수 있는 BR/EDR의 페이징 모델과 달리 LEA의 연결은 중앙 기기에서 시작해야 합니다. 현재 많은 헤드셋이 TA를 사용하지 않으므로 중앙 기기가 허용 목록에 추가하지 않고는 주변기기에 다시 연결하지 못할 수 있습니다. 하지만 허용 목록 해결 방법으로 인해 헤드셋이 다른 중앙 기기에 연결되지 않을 수 있습니다. 따라서 중앙 기기가 멀티포인트 연결을 중단할 수 있는 해결 방법 없이 안정적으로 다시 연결될 수 있도록 LEA 헤드셋이 TA를 적절히 지원하는 것이 중요합니다. |
듀얼 모드 이어폰의 검색 가능성 최적화
|
이렇게 하면 이중 모드 LEA 이어폰이 블루투스 설정에 중복 항목으로 표시되지 않으므로 사용자가 혼동하고 LEA 페어링 환경이 저하될 수 있습니다.
동적 리더 선택은 점진적으로 페어링되는 이중 모드 기기에 특히 중요합니다. 예를 들어 초기 페어링 시 이어폰이 하나만 사용 가능한 경우 듀얼 모드 기기로 표시되어야 합니다. 나중에 사용자가 두 번째 이어폰과 페어링하면 LE 구성요소와만 페어링하면 되고 CSIP는 Android에서 함께 그룹화되도록 합니다. BR/EDR 구성요소가 이미 기기의 공개 주소를 근처 기기에 노출하므로 페어링 중에 ID 주소를 사용하는 것이 좋습니다. |
| 향상된 속성 프로토콜 (EATT)을 지원해야 합니다. | 페어링 및 연결 지연 시간을 줄입니다. |
| 강력한 GATT 캐싱 지원 | 특히 TWS 이어폰의 연결 지연 시간을 줄입니다. |
| 연결 하위 등급 지원 | 더 유연한 패킷 예약과 잠재적인 배터리 절약이 가능합니다. |
| 재생과 캡처 모두의 전처리 및 후처리 중에 신호 처리 파이프라인이 16, 24, 32, 48kHz에서 작동하고 더 높은 주파수를 지원할 수 있어야 합니다. | LEA 통화 또는 VoIP 캡처 경로 및 미디어 재생에 지원되는 더 높은 샘플링 레이트를 활용합니다. |
| LE 전원 제어 지원 | 전원 관리 개선 |
컨텍스트 유형 지원
| 설명 | 컨텍스트 |
|---|---|
| 헤드셋이 특정 컨텍스트 유형을 명시적으로 지원하지 않는 경우를 제외하고 할당된 번호 6.12.3에 지정된 모든 컨텍스트 유형을 사용합니다. | 예를 들어 컨텍스트 유형 '게임'이 지원되지 않으면 Android는 게임 소리를 전송합니다. 특히 'Unspecified' 컨텍스트 유형은 '모든 컨텍스트 유형'을 의미하지 않으며 지원되지 않는 컨텍스트 유형을 포함하지 않습니다. |
중앙 기기가 주변기기의 ASCS와 상호작용하는 경우 주변기기는 중앙 기기의 MCS 및 TBS에 연결해야 합니다. 중앙 기기는 A2DP 또는 HFP 사용으로 대체될 수 있으므로 스트리밍 경로로 항상 LE 오디오를 사용하지 않을 수 있습니다. 주변기기는 중앙 기기가 스트리밍에 LE 오디오를 사용할지 여부를 나타내는 것으로 ASCS 상호작용을 사용할 수 있습니다. ASCS 상호작용의 몇 가지 예는 읽기, 쓰기, 알림 등록입니다. |
Auracast 트랜스미터 권장사항
이 섹션에서는 Auracast 트랜스미터를 구성하기 위한 권장사항을 제공합니다.
간헐적 방송
대중교통 터미널과 같은 공공장소의 오디오 알림은 간헐적이며 긴 침묵으로 구분되는 경우가 많습니다. 공지사항 사이에 무음 또는 배경 오디오를 지속적으로 스트리밍하면 수신기 전력이 낭비되고 사용자가 로컬 미디어나 다른 활성 Auracast 스트림과 같은 기본 오디오 스트림을 청취할 수 없습니다.
사용자 환경을 개선하기 위해 Android에서는 Auracast 트랜스미터가 간헐적인 브로드캐스트 처리에 관한 다음 가이드라인을 준수할 것을 권장합니다.
정의
- 관심 오디오: 게이트 또는 기차 안내와 같이 사용자를 위한 핵심 정보 콘텐츠입니다.
- 배경 오디오: 관심 오디오 기간 사이에 전송되는 배경 무음, 정적 또는 주변 음악입니다.
- 간헐적 방송: 관심 오디오 기간과 배경 오디오 기간 또는 오디오가 전혀 없는 기간이 번갈아 나타나는 방송입니다.
간헐적 방송 식별
방송을 간헐적 방송으로 지정하려면 방송사가 다음 두 위치에 Audio_Active_State 메타데이터 LTV (길이-유형-값) 구조[1] 를 포함해야 합니다.
- 기본 구조 레벨 2 메타데이터 (주기적 광고) [2]
- 공개 방송 공지사항 메타데이터 (확장 광고) [3]
수신자가 간헐적 브로드캐스트를 식별하고 스트림을 재생할지 결정할 수 있도록 브로드캐스터는 Streaming_Audio_Context 메타데이터 LTV 구조 [1]도 정확하게 설정해야 합니다.
관심 대상 오디오 식별
간헐적 브로드캐스트에 특정 시점에 관심 오디오가 포함되어 있는지 동적으로 신호로 알리기 위해 트랜스미터는 Audio_Active_State 메타데이터 LTV 구조를 사용합니다.
- BASE 구조 레벨 2 메타데이터: 값 0x01은 하위 그룹의 BIS에 현재 관심 오디오가 포함되어 있음을 나타냅니다.
- 공개 방송 알림 메타데이터: 값 0x01은 BIG 내 BIS 중 하나 이상에 관심 오디오가 포함되어 있음을 나타냅니다.
Audio_Active_State 메타데이터 LTV 값은 관심 오디오를 전송하기 직전에 0x01로 설정되어 스캔 기기가 공개 브로드캐스트 소스와 동기화될 수 있어야 합니다. 반대로 전송이 종료된 직후에는 0x00으로 설정해야 합니다.
스트리밍 오디오 컨텍스트 활용
명시적 컨텍스트를 제공하면 Android 프레임워크와 수신 기기에서 수신 스트림의 우선순위를 지정할 수 있습니다. 예를 들어 공공 주소 (PA) 시스템은 스트리밍_오디오_컨텍스트 유형을 교육용으로 설정하여 공지사항이 수신기의 로컬 미디어 재생을 깔끔하게 중단하고 나중에 원활하게 다시 시작할 수 있도록 합니다.
참조
[1] Bluetooth Assigned Numbers,
https://www.bluetooth.com/specifications/assigned-numbers/
[2] Basic Audio Profile,
https://www.bluetooth.com/specifications/specs/basic-audio-profile-1-0-3/
[3] Public Broadcast Profile,
https://www.bluetooth.com/specifications/specs/public-broadcast-profile-1-0-2/