Z tego przewodnika dowiesz się, jak przekierować dźwięk w przypadku urządzeń Bluetooth za pomocą Telecom API i skonfiguruj połączenie Połączenia VoIP. Przeczytaj Przewodnik po tworzeniu aplikacji do rozmów zanim przejdziesz dalej.
Za pomocą funkcji ConnectionService
i Connection
zajęć, masz dostęp
informacje o stanie dźwięku i listę dostępnych urządzeń Bluetooth. Może też kierować
do wybranego urządzenia Bluetooth.
Połączenia VoIP oraz ConnectionService
Utwórz klasę VoIPConnection
, która rozpoczyna się z
Connection
Ta klasa kontroluje stan bieżącego wywołania. Jako
Przewodnik po tworzeniu aplikacji do rozmów
ustaw tę aplikację jako aplikację do samodzielnego zarządzania i ustaw tryb audio dla połączeń VoIP
aplikacji.
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); } }
Następnie zwróć instancję klasy w
ConnectionService
, gdy
połączenia przychodzącego lub wychodzącego.
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(); } }
Sprawdź, czy plik manifestu prawidłowo wskazuje klasę 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>
W przypadku tych niestandardowych ustawień Connection
oraz
ConnectionService
zajęć, Ty
może kontrolować, które urządzenie i jakiego rodzaju kierowanie dźwięku chcesz używać podczas
.
Pobierz bieżący stan dźwięku
Aby poznać bieżący stan dźwięku, wywołaj
getCallAudioState()
getCallAudioState()
zwraca się, jeśli urządzenie przesyła dane strumieniowo przez Bluetooth, słuchawki, przewodową lub
Głośnik.
mAudioState = connection.getCallAudioState()
Zmiana stanu włączenia
Subskrybuj zmiany w CallAudioState przez zastąpienie
onCallAudioStateChanged()
Informuje o wszelkich zmianach stanu.
Kotlin
fun onCallAudioStateChanged(audioState: CallAudioState) { mAudioState = audioState }
Java
@Override public void onCallAudioStateChanged(CallAudioState audioState) { mAudioState = audioState; }
Pobierz obecne urządzenie
Pobierz bieżące aktywne urządzenie za pomocą
CallAudioState.getActiveBluetoothDevice()
Ta funkcja zwraca aktywne urządzenie Bluetooth.
Kotlin
val activeDevice: BluetoothDevice = mAudioState.getActiveBluetoothDevice()
Java
BluetoothDevice activeDevice = mAudioState.getActiveBluetoothDevice();
Pobierz urządzenia Bluetooth
Pobieranie listy urządzeń Bluetooth, które obsługują kierowanie dźwięku podczas połączeń
CallAudioState.getSupportedBluetoothDevices()
Kotlin
val availableBluetoothDevices: Collection= mAudioState.getSupportedBluetoothDevices()
Java
CollectionavailableBluetoothDevices = mAudioState.getSupportedBluetoothDevices();
Przekieruj dźwięk połączenia
Korzystanie z interfejsu API na poziomie 28 lub wyższym (zalecane)
Kieruj dźwięk rozmowy na dostępne urządzenie Bluetooth za pomocą
requestBluetoothAudio(BluetoothDevice)
:
requestBluetoothAudio(availableBluetoothDevices[0]);
Korzystanie z interfejsu API na poziomie 23 lub wyższym
Włącz
ROUTE_BLUETOOTH
bez wskazania urządzenia za pomocą
setAudioRoute(int)
Domyślnie ustawienia routingu na aktualnych, aktywnych urządzeniach Bluetooth na Androidzie 9 i nowszych.
setAudioRoute(CallAudioState.ROUTE_BLUETOOTH);