通話時の音声出力(Android)
Applications内でシームレスな音声出力の切り替えを実現するには、AndroidのTelecomフレームワークを統合することをお勧めします。Telecomを利用することで、アプリは通話サービスを効率的に管理でき、スムーズなユーザー体験を確保できます。Telecomに関する詳細は、Androidの公式ドキュメントをご参照ください。 これ.
通信の統合
プロジェクトへのTelecomフレームワークの組み込みに関する包括的なガイダンスについては、以下をご参照ください。 通信システムの統合.
オーディオ出力の変化の確認
デリゲートメソッドを登録することができます onCallAudioStateChanged または onCallEndpointChanged 音声出力の変化を確認するため。
その方法は次のとおりです:
Android API 33 以前向け
コピー
override fun onCallAudioStateChanged(state: CallAudioState?) {
state ?: return
// highlight-next-line
println("New call route: ${state.route}")
}
Android API 34 以降
コピー
override fun onCallEndpointChanged(callEndpoint: CallEndpoint) {
// highlight-next-line
println("New call endpoint: ${callEndpoint}")
}
また、以下の方法を使用して、オーディオ出力先を上書きすることもできます。 setAudioRoute または requestCallEndpointChange :
Android API 33 以前向け
コピー
call.setAudioRoute(CallAudioState.ROUTE_BLUETOOTH)
Android API 34 以降
コピー
override fun onAvailableCallEndpointsChanged(availableEndpoints: List<CallEndpoint>) {
for (endpoint in availableEndpoints) {
if (endpoint.endpointType == CallEndpoint.ENDPOINT_TYPE_BLUETOOTH) {
requestCallEndpointChange(
endpoint,
Executor { it.run() },
object : OutcomeReceiver<Void, CallEndpointException> {
override fun onResult(result: Void?) {
// Successfully switched to Bluetooth
}
override fun onError(error: CallEndpointException) {
// Handle error during endpoint change
}
}
)
break
}
}
}
より快適な操作体験を得るため、これらの方法による音声出力のルーティングは避け、Telecomの標準UIのみをご利用いただくことをお勧めします。