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

Commit a83146f1 authored by Sanket Agarwal's avatar Sanket Agarwal
Browse files

Change HFP Client API to support multi device

- Adds BluetoothDevice as a parameter where required
- Gets rid of device management APIs that can be done via
  BluetoothProfiles instead

Test: Manual sanity tests
Bug: b/33554547
Bug: b/30984220
Change-Id: I3485ac5bfe1fcb29c774ad040fdd608e1cacb8df
(cherry picked from commit 245f21bf)
parent a16eceb8
Loading
Loading
Loading
Loading
+14 −41
Original line number Diff line number Diff line
@@ -963,38 +963,6 @@ public final class BluetoothHeadsetClient implements BluetoothProfile {
        return false;
    }

    /**
     * Accept the incoming connection.
     */
    public boolean acceptIncomingConnect(BluetoothDevice device) {
        if (DBG) log("acceptIncomingConnect");
        if (mService != null && isEnabled()) {
            try {
                return mService.acceptIncomingConnect(device);
            } catch (RemoteException e) {Log.e(TAG, e.toString());}
        } else {
            Log.w(TAG, "Proxy not attached to service");
            if (DBG) Log.d(TAG, Log.getStackTraceString(new Throwable()));
        }
        return false;
    }

    /**
     * Reject the incoming connection.
     */
    public boolean rejectIncomingConnect(BluetoothDevice device) {
        if (DBG) log("rejectIncomingConnect");
        if (mService != null) {
            try {
                return mService.rejectIncomingConnect(device);
            } catch (RemoteException e) {Log.e(TAG, e.toString());}
        } else {
            Log.w(TAG, "Proxy not attached to service");
            if (DBG) Log.d(TAG, Log.getStackTraceString(new Throwable()));
        }
        return false;
    }

    /**
     * Returns current audio state of Audio Gateway.
     *
@@ -1016,13 +984,15 @@ public final class BluetoothHeadsetClient implements BluetoothProfile {
    /**
     * Sets whether audio routing is allowed.
     *
     * @param device    remote device
     * @param allowed   if routing is allowed to the device
     * Note: This is an internal function and shouldn't be exposed
     */
    public void setAudioRouteAllowed(boolean allowed) {
    public void setAudioRouteAllowed(BluetoothDevice device, boolean allowed) {
        if (VDBG) log("setAudioRouteAllowed");
        if (mService != null && isEnabled()) {
            try {
                mService.setAudioRouteAllowed(allowed);
                mService.setAudioRouteAllowed(device, allowed);
            } catch (RemoteException e) {Log.e(TAG, e.toString());}
        } else {
            Log.w(TAG, "Proxy not attached to service");
@@ -1032,14 +1002,15 @@ public final class BluetoothHeadsetClient implements BluetoothProfile {

    /**
     * Returns whether audio routing is allowed.
     *
     * @param device    remote device
     * @return whether the command succeeded
     * Note: This is an internal function and shouldn't be exposed
     */
    public boolean getAudioRouteAllowed() {
    public boolean getAudioRouteAllowed(BluetoothDevice device) {
        if (VDBG) log("getAudioRouteAllowed");
        if (mService != null && isEnabled()) {
            try {
                return mService.getAudioRouteAllowed();
                return mService.getAudioRouteAllowed(device);
            } catch (RemoteException e) {Log.e(TAG, e.toString());}
        } else {
            Log.w(TAG, "Proxy not attached to service");
@@ -1053,15 +1024,16 @@ public final class BluetoothHeadsetClient implements BluetoothProfile {
     *
     * It setup SCO channel with remote connected Handsfree AG device.
     *
     * @param device    remote device
     * @return          <code>true</code> if command has been issued successfully;
     *                   <code>false</code> otherwise;
     *                   upon completion HFP sends {@link #ACTION_AUDIO_STATE_CHANGED}
     *                   intent;
     */
    public boolean connectAudio() {
    public boolean connectAudio(BluetoothDevice device) {
        if (mService != null && isEnabled()) {
            try {
                return mService.connectAudio();
                return mService.connectAudio(device);
            } catch (RemoteException e) {
                Log.e(TAG, e.toString());
            }
@@ -1077,15 +1049,16 @@ public final class BluetoothHeadsetClient implements BluetoothProfile {
     *
     * It tears down the SCO channel from remote AG device.
     *
     * @param   device  remote device
     * @return          <code>true</code> if command has been issued successfully;
     *                   <code>false</code> otherwise;
     *                   upon completion HFP sends {@link #ACTION_AUDIO_STATE_CHANGED}
     *                   intent;
     */
    public boolean disconnectAudio() {
    public boolean disconnectAudio(BluetoothDevice device) {
        if (mService != null && isEnabled()) {
            try {
                return mService.disconnectAudio();
                return mService.disconnectAudio(device);
            } catch (RemoteException e) {
                Log.e(TAG, e.toString());
            }
+4 −7
Original line number Diff line number Diff line
@@ -29,9 +29,6 @@ interface IBluetoothHeadsetClient {
    boolean connect(in BluetoothDevice device);
    boolean disconnect(in BluetoothDevice device);

    boolean acceptIncomingConnect(in BluetoothDevice device);
    boolean rejectIncomingConnect(in BluetoothDevice device);

    List<BluetoothDevice> getConnectedDevices();
    List<BluetoothDevice> getDevicesMatchingConnectionStates(in int[] states);
    int getConnectionState(in BluetoothDevice device);
@@ -58,10 +55,10 @@ interface IBluetoothHeadsetClient {
    boolean getLastVoiceTagNumber(in BluetoothDevice device);

    int getAudioState(in BluetoothDevice device);
    boolean connectAudio();
    boolean disconnectAudio();
    void setAudioRouteAllowed(boolean allowed);
    boolean getAudioRouteAllowed();
    boolean connectAudio(in BluetoothDevice device);
    boolean disconnectAudio(in BluetoothDevice device);
    void setAudioRouteAllowed(in BluetoothDevice device, boolean allowed);
    boolean getAudioRouteAllowed(in BluetoothDevice device);

    Bundle getCurrentAgFeatures(in BluetoothDevice device);
}