通話音声出力の変更

このガイドでは、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および一部の古いバージョンのブラウザではサポートされていません。を見る 互換性テーブル 正確なバージョンについては

参考