mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-22 01:40:07 +01:00
Handle bluetooth permission crash during calls.
This commit is contained in:
@@ -309,6 +309,10 @@ private void processStateless(@NonNull Function1<WebRtcEphemeralState, WebRtcEph
|
||||
process((s, p) -> p.handleAudioDeviceChanged(s, activeDevice, availableDevices));
|
||||
}
|
||||
|
||||
public void onBluetoothPermissionDenied() {
|
||||
process((s, p) -> p.handleBluetoothPermissionDenied(s));
|
||||
}
|
||||
|
||||
public void selectAudioDevice(@NonNull SignalAudioManager.AudioDevice desiredDevice) {
|
||||
process((s, p) -> p.handleSetUserAudioDevice(s, desiredDevice));
|
||||
}
|
||||
|
||||
@@ -457,6 +457,13 @@ public abstract class WebRtcActionProcessor {
|
||||
return currentState;
|
||||
}
|
||||
|
||||
public @NonNull WebRtcServiceState handleBluetoothPermissionDenied(@NonNull WebRtcServiceState currentState) {
|
||||
return currentState.builder()
|
||||
.changeLocalDeviceState()
|
||||
.setBluetoothPermissionDenied(true)
|
||||
.build();
|
||||
}
|
||||
|
||||
protected @NonNull WebRtcServiceState handleSetUserAudioDevice(@NonNull WebRtcServiceState currentState, @NonNull SignalAudioManager.AudioDevice userDevice) {
|
||||
Log.i(tag, "handleSetUserAudioDevice not processed");
|
||||
return currentState;
|
||||
|
||||
@@ -267,6 +267,11 @@ public final class WebRtcCallService extends Service implements SignalAudioManag
|
||||
callManager.onAudioDeviceChanged(activeDevice, availableDevices);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBluetoothPermissionDenied() {
|
||||
callManager.onBluetoothPermissionDenied();
|
||||
}
|
||||
|
||||
private class HangUpRtcOnPstnCallAnsweredListener extends PhoneStateListener {
|
||||
@Override
|
||||
public void onCallStateChanged(int state, @NonNull String phoneNumber) {
|
||||
|
||||
@@ -14,7 +14,8 @@ data class LocalDeviceState constructor(
|
||||
var isLandscapeEnabled: Boolean = false,
|
||||
var deviceOrientation: Orientation = Orientation.PORTRAIT_BOTTOM_EDGE,
|
||||
var activeDevice: SignalAudioManager.AudioDevice = SignalAudioManager.AudioDevice.NONE,
|
||||
var availableDevices: Set<SignalAudioManager.AudioDevice> = emptySet()
|
||||
var availableDevices: Set<SignalAudioManager.AudioDevice> = emptySet(),
|
||||
var bluetoothPermissionDenied: Boolean = false
|
||||
) {
|
||||
|
||||
fun duplicate(): LocalDeviceState {
|
||||
|
||||
@@ -125,6 +125,11 @@ public class WebRtcServiceStateBuilder {
|
||||
toBuild.setAvailableDevices(availableDevices);
|
||||
return this;
|
||||
}
|
||||
|
||||
public @NonNull LocalDeviceStateBuilder setBluetoothPermissionDenied(boolean bluetoothPermissionDenied) {
|
||||
toBuild.setBluetoothPermissionDenied(bluetoothPermissionDenied);
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
public class CallSetupStateBuilder {
|
||||
|
||||
Reference in New Issue
Block a user