Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 085479e9 authored by Bryce Lee's avatar Bryce Lee
Browse files

Allow for automatic routing on HF AG to be disabled.

Bug: 25485578
Change-Id: Iefe06f9df811311040f154ddf8f578893b275ef4
parent df1dbb41
Loading
Loading
Loading
Loading
+23 −0
Original line number Diff line number Diff line
@@ -243,6 +243,21 @@ public class HeadsetService extends ProfileService {
            return service.disconnectAudio();
        }

        public void setAudioRouteAllowed(boolean allowed) {
            HeadsetService service = getService();
            if (service == null) return;
            service.setAudioRouteAllowed(allowed);
        }

        public boolean getAudioRouteAllowed() {
            HeadsetService service = getService();
            if (service != null) {
                return service.getAudioRouteAllowed();
            }

            return false;
        }

        public boolean startScoUsingVirtualVoiceCall(BluetoothDevice device) {
            HeadsetService service = getService();
            if (service == null) return false;
@@ -448,6 +463,14 @@ public class HeadsetService extends ProfileService {
        return mStateMachine.getAudioState(device);
    }

    public void setAudioRouteAllowed(boolean allowed) {
        mStateMachine.setAudioRouteAllowed(allowed);
    }

    public boolean getAudioRouteAllowed() {
        return mStateMachine.getAudioRouteAllowed();
    }

    boolean connectAudio() {
        // TODO(BT) BLUETOOTH or BLUETOOTH_ADMIN permission
        enforceCallingOrSelfPermission(BLUETOOTH_PERM, "Need BLUETOOTH permission");
+12 −1
Original line number Diff line number Diff line
@@ -162,6 +162,9 @@ final class HeadsetStateMachine extends StateMachine {
    private IBluetoothHeadsetPhone mPhoneProxy;
    private boolean mNativeAvailable;

    // Indicates whether audio can be routed to the device.
    private boolean mAudioRouteAllowed = true;

    // mCurrentDevice is the device connected before the state changes
    // mTargetDevice is the device to be connected
    // mIncomingDevice is the device connecting to us, valid only in Pending state
@@ -2153,6 +2156,14 @@ final class HeadsetStateMachine extends StateMachine {
        return false;
    }

    public void setAudioRouteAllowed(boolean allowed) {
        mAudioRouteAllowed = allowed;
    }

    public boolean getAudioRouteAllowed() {
        return mAudioRouteAllowed;
    }

    int getAudioState(BluetoothDevice device) {
        synchronized(this) {
            if (mConnectedDevicesList.size() == 0) {
@@ -3292,7 +3303,7 @@ final class HeadsetStateMachine extends StateMachine {
    // Accept incoming SCO only when there is active call, VR activated,
    // active VOIP call
    private boolean isScoAcceptable() {
        return (mVoiceRecognitionStarted || isInCall());
        return mAudioRouteAllowed && (mVoiceRecognitionStarted || isInCall());
    }

    boolean isConnected() {