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;
+ }
}
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;
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();
+ }
}
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;
private LocalBluetoothProfileManager mProfileManager;
@Mock
private BluetoothHeadset mService;
-
+ @Mock
+ private CachedBluetoothDevice mCachedBluetoothDevice;
+ @Mock
+ private BluetoothDevice mBluetoothDevice;
private BluetoothProfile.ServiceListener mServiceListener;
private HeadsetProfile mProfile;
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);
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);
+ }
}