이 가이드에서는 다음을 사용하여 블루투스 기기에 오디오를 라우팅하는 방법을 설명합니다. Telecom API로 이동하고 VoIP 통화 자세한 내용은 통화 앱 빌드 가이드 를 선택합니다.
ConnectionService
사용
및 Connection
수업에서는
오디오 상태와 사용 가능한 블루투스 기기 목록을 생성하고
선택한 블루투스 기기로 오디오를 전송합니다.
VoIP 연결 및 ConnectionService
다음에서 확장되는 VoIPConnection
클래스 만들기
Connection
이 클래스는 현재 통화의 상태를 제어합니다. 이
통화 앱 빌드 가이드
자체 관리형 애플리케이션으로 만들고 VoIP의 오디오 모드를 설정합니다.
애플리케이션입니다.
Kotlin
class VoIPConnection : Connection() { init { setConnectionProperties(PROPERTY_SELF_MANAGED) setAudioModeIsVoip(true) } }
자바
public class VoIPConnection extends Connection { public VoIPConnection() { setConnectionProperties(PROPERTY_SELF_MANAGED); setAudioModeIsVoip(true); } }
다음으로 이 클래스의 인스턴스를
ConnectionService
수신 또는 발신 전화 통화가 발생합니다.
Kotlin
class VoIPConnectionService : ConnectionService() { override fun onCreateOutgoingConnection( connectionManagerPhoneAccount: PhoneAccountHandle, request: ConnectionRequest, ): Connection { return VoIPConnection() } }
자바
public class VoIPConnectionService extends ConnectionService { @Override public Connection onCreateOutgoingConnection(PhoneAccountHandle connectionManagerPhoneAccount, ConnectionRequest request) { return new VoIPConnection(); } }
매니페스트가 VoIPConnectionService
클래스를 올바르게 가리키는지 확인합니다.
<service android:name=".voip.TelegramConnectionService" android:permission="android.permission.BIND_TELECOM_CONNECTION_SERVICE">
<intent-filter>
<action android:name="android.telecom.ConnectionService"/>
</intent-filter>
</service>
이러한 맞춤 Connection
및
ConnectionService
개 수업에 대해
통화하는 동안 사용하려는 장치와 오디오 라우팅의 유형을
있습니다.
현재 오디오 상태 가져오기
현재 오디오 상태를 가져오려면 다음을 호출합니다.
getCallAudioState()
getCallAudioState()
드림
기기가 블루투스, 이어폰, 유선 또는
발표자
mAudioState = connection.getCallAudioState()
On State 변경됨
재정의를 통해 CallAudioState 변경사항 구독
onCallAudioStateChanged()
상태가 변경되면 알립니다.
Kotlin
fun onCallAudioStateChanged(audioState: CallAudioState) { mAudioState = audioState }
자바
@Override public void onCallAudioStateChanged(CallAudioState audioState) { mAudioState = audioState; }
현재 기기 가져오기
다음을 사용하여 현재 활성 기기 가져오기
CallAudioState.getActiveBluetoothDevice()
이 함수는 활성 블루투스 기기를 반환합니다.
Kotlin
val activeDevice: BluetoothDevice = mAudioState.getActiveBluetoothDevice()
자바
BluetoothDevice activeDevice = mAudioState.getActiveBluetoothDevice();
블루투스 기기 가져오기
다음을 사용하여 통화 오디오 라우팅에 사용할 수 있는 블루투스 기기 목록을 가져옵니다.
CallAudioState.getSupportedBluetoothDevices()
Kotlin
val availableBluetoothDevices: Collection= mAudioState.getSupportedBluetoothDevices()
자바
CollectionavailableBluetoothDevices = mAudioState.getSupportedBluetoothDevices();
통화 오디오 라우팅
API 수준 28 이상 사용 (권장)
다음을 사용하여 통화 오디오를 사용 가능한 블루투스 기기로 라우팅합니다.
requestBluetoothAudio(BluetoothDevice)
:
requestBluetoothAudio(availableBluetoothDevices[0]);
API 수준 23 이상 사용
사용
ROUTE_BLUETOOTH
드림
명령어를 사용하여
setAudioRoute(int)
이는 기본적으로 Android 9 이상에서 현재 활성 상태인 블루투스 기기로 라우팅됩니다.
setAudioRoute(CallAudioState.ROUTE_BLUETOOTH);