このガイドでは、 Telecom API を呼び出し、サービス アカウントの接続を VoIP 通話。詳しくは、 通話アプリの作成ガイド 確認してから次に進みます。
ConnectionService
を使用する
および Connection
クラスでは、
オーディオ状態、利用可能な Bluetooth デバイスのリスト、
選択した Bluetooth デバイスに音声を転送します。
VoIP 接続と ConnectionService
次のソースから拡張する VoIPConnection
クラスを作成します。
Connection
。このクラスは、現在の呼び出しの状態を制御します。
通話アプリの作成ガイド
セルフマネージド アプリケーションにして、VoIP のオーディオ モードを設定
説明します。
Kotlin
class VoIPConnection : Connection() { init { setConnectionProperties(PROPERTY_SELF_MANAGED) setAudioModeIsVoip(true) } }
Java
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() } }
Java
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()
は、デバイスが Bluetooth、受話口、有線、または
スピーカー。
mAudioState = connection.getCallAudioState()
状態の変更
次のメソッドをオーバーライドして、CallAudioState の変更を受け取る
onCallAudioStateChanged()
。
これにより、状態に変化があったことが通知されます。
Kotlin
fun onCallAudioStateChanged(audioState: CallAudioState) { mAudioState = audioState }
Java
@Override public void onCallAudioStateChanged(CallAudioState audioState) { mAudioState = audioState; }
現在のデバイスを入手する
以下を使用して、現在アクティブなデバイスを取得する
CallAudioState.getActiveBluetoothDevice()
。
この関数は、アクティブな Bluetooth デバイスを返します。
Kotlin
val activeDevice: BluetoothDevice = mAudioState.getActiveBluetoothDevice()
Java
BluetoothDevice activeDevice = mAudioState.getActiveBluetoothDevice();
Bluetooth デバイスを入手する
以下を使用して、通話の音声ルーティングに使用できる Bluetooth デバイスのリストを取得します。
CallAudioState.getSupportedBluetoothDevices()
。
Kotlin
val availableBluetoothDevices: Collection= mAudioState.getSupportedBluetoothDevices()
Java
CollectionavailableBluetoothDevices = mAudioState.getSupportedBluetoothDevices();
通話の音声をルーティングする
API レベル 28 以降を使用(推奨)
利用可能な Bluetooth デバイスに通話の音声をルーティングするには、
requestBluetoothAudio(BluetoothDevice)
:
requestBluetoothAudio(availableBluetoothDevices[0]);
API レベル 23 以降の使用
有効にする
ROUTE_BLUETOOTH
デバイスを指定せずに
setAudioRoute(int)
。
Android 9 以降では、現在アクティブな Bluetooth デバイスにデフォルトでルーティングされます。
setAudioRoute(CallAudioState.ROUTE_BLUETOOTH);