Update connect() api

Use BluetoothAdapter.connectAllEnabledProfiles() to connect all
individual profile once instead of connect each individual profile.

Fixes: 141582844
Test: manually
Change-Id: I8d58aceed87a2df212d4097362369c60a8ec0c08
This commit is contained in:
hughchen
2020-01-14 15:55:29 +08:00
parent cb1aa8d29c
commit 4ae2186f42
3 changed files with 23 additions and 37 deletions

View File

@@ -262,13 +262,28 @@ public class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice>
}
}
/**
* Connect this device.
*
* @param connectAllProfiles {@code true} to connect all profile, {@code false} otherwise.
*
* @deprecated use {@link #connect()} instead.
*/
@Deprecated
public void connect(boolean connectAllProfiles) {
connect();
}
/**
* Connect this device.
*/
public void connect() {
if (!ensurePaired()) {
return;
}
mConnectAttempted = SystemClock.elapsedRealtime();
connectWithoutResettingTimer(connectAllProfiles);
connectAllEnabledProfiles();
}
public long getHiSyncId() {
@@ -289,10 +304,10 @@ public class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice>
void onBondingDockConnect() {
// Attempt to connect if UUIDs are available. Otherwise,
// we will connect when the ACTION_UUID intent arrives.
connect(false);
connect();
}
private void connectWithoutResettingTimer(boolean connectAllProfiles) {
private void connectAllEnabledProfiles() {
synchronized (mProfileLock) {
// Try to initialize the profiles if they were not.
if (mProfiles.isEmpty()) {
@@ -307,36 +322,7 @@ public class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice>
return;
}
int preferredProfiles = 0;
for (LocalBluetoothProfile profile : mProfiles) {
if (connectAllProfiles ? profile.accessProfileEnabled()
: profile.isAutoConnectable()) {
if (profile.isPreferred(mDevice)) {
++preferredProfiles;
connectInt(profile);
}
}
}
if (BluetoothUtils.D) Log.d(TAG, "Preferred profiles = " + preferredProfiles);
if (preferredProfiles == 0) {
connectAutoConnectableProfiles();
}
}
}
private void connectAutoConnectableProfiles() {
if (!ensurePaired()) {
return;
}
synchronized (mProfileLock) {
for (LocalBluetoothProfile profile : mProfiles) {
if (profile.isAutoConnectable()) {
profile.setPreferred(mDevice, true);
connectInt(profile);
}
}
mLocalAdapter.connectAllEnabledProfiles(mDevice);
}
}
@@ -703,7 +689,7 @@ public class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice>
*/
if (!mProfiles.isEmpty()
&& ((mConnectAttempted + timeout) > SystemClock.elapsedRealtime())) {
connectWithoutResettingTimer(false);
connectAllEnabledProfiles();
}
dispatchAttributesChanged();
@@ -722,7 +708,7 @@ public class CachedBluetoothDevice implements Comparable<CachedBluetoothDevice>
refresh();
if (bondState == BluetoothDevice.BOND_BONDED && mDevice.isBondingInitiatedLocally()) {
connect(false);
connect();
}
}

View File

@@ -122,7 +122,7 @@ public class LocalMediaManager implements BluetoothCallback {
final CachedBluetoothDevice cachedDevice =
((BluetoothMediaDevice) device).getCachedDevice();
if (!cachedDevice.isConnected() && !cachedDevice.isBusy()) {
cachedDevice.connect(true);
cachedDevice.connect();
return;
}
}

View File

@@ -127,7 +127,7 @@ public class LocalMediaManagerTest {
mLocalMediaManager.registerCallback(mCallback);
mLocalMediaManager.connectDevice(device);
verify(cachedDevice).connect(true);
verify(cachedDevice).connect();
}
@Test