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.
class VoIPConnection : Connection() {
init {
setConnectionProperties(PROPERTY_SELF_MANAGED)
setAudioModeIsVoip(true)
}
}
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.
class VoIPConnectionService : ConnectionService() {
override fun onCreateOutgoingConnection(
connectionManagerPhoneAccount: PhoneAccountHandle,
request: ConnectionRequest,
): Connection {
return VoIPConnection()
}
}
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.
fun onCallAudioStateChanged(audioState: CallAudioState) {
mAudioState = audioState
}
@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.
val activeDevice: BluetoothDevice = mAudioState.getActiveBluetoothDevice()
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()
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);