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

Commit e504e132 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add new function to get audio state" into pi-dev

parents ed2a3cad 23b947e2
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -1079,4 +1079,20 @@ public class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice>
        return getBondState() == BluetoothDevice.BOND_BONDING ?
                mContext.getString(R.string.bluetooth_pairing) : null;
    }

    /**
     * @return {@code true} if {@code cachedBluetoothDevice} is a2dp device
     */
    public boolean isA2dpDevice() {
        return mProfileManager.getA2dpProfile().getConnectionStatus(mDevice) ==
                BluetoothProfile.STATE_CONNECTED;
    }

    /**
     * @return {@code true} if {@code cachedBluetoothDevice} is HFP device
     */
    public boolean isHfpDevice() {
        return mProfileManager.getHeadsetProfile().getConnectionStatus(mDevice) ==
                BluetoothProfile.STATE_CONNECTED;
    }
}
+5 −0
Original line number Diff line number Diff line
@@ -168,6 +168,11 @@ public class HeadsetProfile implements LocalBluetoothProfile {
        return mService.isAudioOn();
    }

    public int getAudioState(BluetoothDevice device) {
        if (mService == null) return BluetoothHeadset.STATE_AUDIO_DISCONNECTED;
        return mService.getAudioState(device);
    }

    public boolean isPreferred(BluetoothDevice device) {
        if (mService == null) return false;
        return mService.getPriority(device) > BluetoothProfile.PRIORITY_OFF;
+36 −0
Original line number Diff line number Diff line
@@ -334,4 +334,40 @@ public class CachedBluetoothDeviceTest {
        mCachedDevice.onProfileStateChanged(mHfpProfile, BluetoothProfile.STATE_DISCONNECTED);
        assertThat(mCachedDevice.setActive()).isFalse();
    }

    @Test
    public void testIsA2dpDevice_isA2dpDevice() {
        when(mProfileManager.getA2dpProfile()).thenReturn(mA2dpProfile);
        when(mA2dpProfile.getConnectionStatus(mDevice)).
                thenReturn(BluetoothProfile.STATE_CONNECTED);

        assertThat(mCachedDevice.isA2dpDevice()).isTrue();
    }

    @Test
    public void testIsA2dpDevice_isNotA2dpDevice() {
        when(mProfileManager.getA2dpProfile()).thenReturn(mA2dpProfile);
        when(mA2dpProfile.getConnectionStatus(mDevice)).
                thenReturn(BluetoothProfile.STATE_DISCONNECTING);

        assertThat(mCachedDevice.isA2dpDevice()).isFalse();
    }

    @Test
    public void testIsHfpDevice_isHfpDevice() {
        when(mProfileManager.getHeadsetProfile()).thenReturn(mHfpProfile);
        when(mHfpProfile.getConnectionStatus(mDevice)).
                thenReturn(BluetoothProfile.STATE_CONNECTED);

        assertThat(mCachedDevice.isHfpDevice()).isTrue();
    }

    @Test
    public void testIsHfpDevice_isNotHfpDevice() {
        when(mProfileManager.getHeadsetProfile()).thenReturn(mHfpProfile);
        when(mHfpProfile.getConnectionStatus(mDevice)).
                thenReturn(BluetoothProfile.STATE_DISCONNECTING);

        assertThat(mCachedDevice.isHfpDevice()).isFalse();
    }
}
+19 −1
Original line number Diff line number Diff line
@@ -8,6 +8,7 @@ import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;

import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothHeadset;
import android.bluetooth.BluetoothProfile;
import android.content.Context;
@@ -31,7 +32,10 @@ public class HeadsetProfileTest {
    private LocalBluetoothProfileManager mProfileManager;
    @Mock
    private BluetoothHeadset mService;
    
    @Mock
    private CachedBluetoothDevice mCachedBluetoothDevice;
    @Mock
    private BluetoothDevice mBluetoothDevice;
    private BluetoothProfile.ServiceListener mServiceListener;
    private HeadsetProfile mProfile;

@@ -44,6 +48,7 @@ public class HeadsetProfileTest {
            mServiceListener = (BluetoothProfile.ServiceListener) invocation.getArguments()[1];
            return null;
        }).when(mAdapter).getProfileProxy(any(Context.class), any(), eq(BluetoothProfile.HEADSET));
        when(mCachedBluetoothDevice.getDevice()).thenReturn(mBluetoothDevice);

        mProfile = new HeadsetProfile(context, mAdapter, mDeviceManager, mProfileManager);
        mServiceListener.onServiceConnected(BluetoothProfile.HEADSET, mService);
@@ -57,4 +62,17 @@ public class HeadsetProfileTest {
        when(mService.isAudioOn()).thenReturn(false);
        assertThat(mProfile.isAudioOn()).isFalse();
    }

    @Test
    public void testHeadsetProfile_shouldReturnAudioState() {
        when(mService.getAudioState(mBluetoothDevice)).
                thenReturn(BluetoothHeadset.STATE_AUDIO_DISCONNECTED);
        assertThat(mProfile.getAudioState(mBluetoothDevice)).
                isEqualTo(BluetoothHeadset.STATE_AUDIO_DISCONNECTED);

        when(mService.getAudioState(mBluetoothDevice)).
                thenReturn(BluetoothHeadset.STATE_AUDIO_CONNECTED);
        assertThat(mProfile.getAudioState(mBluetoothDevice)).
                isEqualTo(BluetoothHeadset.STATE_AUDIO_CONNECTED);
    }
}