通話音声出力の変更
このガイドでは、Vonage Client SDKで通話音声出力を変更する方法を説明します。始める前に、お使いのアプリにSDKが追加されていることを確認してください。アンドロイド, iOS, JS)で、次のことができる。 作る または 受け取る のコール。
注:現在、モバイルブラウザとSafariでは音声出力ルーティングがサポートされていないため、以下のJavaScriptの例はデスクトップブラウザにのみ適用されます。 互換性テーブル.
アンドロイド
Androidアプリケーション内でシームレスなオーディオ出力切り替えを可能にするには、次のように統合します。 ConnectionService.これにより、オペレーティングシステムは、ユーザーが慣れ親しんでいるデフォルトの通話UIを介してオーディオ出力ルーティングを処理することができます。
アンドロイド ConnectionService リソース
- In-Appを使用した音声リファレンスアプリ
ConnectionService- ギットハブ
オーディオ出力ルートの変更を検出する
を購読することができる。 onCallAudioStateChanged または onCallEndpointChanged オーディオ出力の変化を観察するために、APIレベルに応じてデリゲートメソッドを使用します:
// Android API 34 and above
override fun onCallEndpointChanged(callEndpoint: CallEndpoint) {
state ?: return
println("New Callendpoint ${callEndpoint}")
}
// Android API 33 and below
override fun onCallAudioStateChanged(state: CallAudioState?) {
state ?: return
println("is curent audio state route ${state.route == ROUTE_BLUETOOTH}")
}
iOS
iOSアプリケーション内でシームレスなオーディオ出力切り替えを可能にするには、次のように統合します。 CallKit.これにより、各オペレーティングシステムは、ユーザーが慣れ親しんでいるデフォルトの通話UIを介してオーディオ出力ルーティングを処理することができます。
iOS CallKit リソース
In-Appを使用した音声リファレンスアプリ
CallKit- ギットハブiOSのCallkitを使ってVoIPプッシュ通知を処理する方法 ブログ
iOSのCallKitを使って発信電話をかける ブログ
オーディオ出力ルートの取得
let outputs = AVAudioSession.sharedInstance().currentRoute.outputs
オーディオ出力ルートの変更を検出する
を購読することができる。 AVAudioSession.routeChangeNotification 音声出力の変化を観察するための通知:
// myRouteChangeHandler is a function you need to create
NotificationCenter.default.addObserver(self, selector: #selector(myRouteChangeHandler), name: AVAudioSession.routeChangeNotification, object: nil)
オーディオ出力ルートの変更
スピーカーへの音声出力をオーバーライドできます:
AVAudioSession.sharedInstance().overrideOutputAudioPort(.speaker)
詳細については アップル・ドキュメント.
JavaScript(デスクトップ)
モバイルブラウザでの音声出力ルーティングはサポートされていないため、以下のJavaScriptの例はデスクトップブラウザにのみ適用可能です。以下の例には 提案 Web APIにサポートを追加する。
オーディオ出力ルートの取得
オーディオ出力のルートを変更する前に、どのルートが利用可能かを確認してください:
const audioOutputDevices = await navigator.mediaDevices.enumerateDevices().then(devices => devices.filter(d => d.kind == "audiooutput"));
オーディオ出力ルートの変更
コールが作成されると、Vonage Client SDK は HTMLAudioElement の出力ストリームにアタッチする。 srcObject.オーディオ・エレメントには、以下の方法でアクセスできます:
const audioOutputElement = client.getAudioOutputElement();
について HTMLAudioElement というメソッドがあります。 setSinkId を取る。 deviceId を選択し、それを使って希望のオーディオ出力デバイスを HTMLAudioElement ソース
audioElement.setSinkId(audioOutputDevices[2].deviceId);
注 setSinkId メソッドは、Safariおよび一部の古いバージョンのブラウザではサポートされていません。を見る 互換性テーブル 正確なバージョンについては