diff --git a/res/values/strings.xml b/res/values/strings.xml
index c77edb41a48..b00a1f56edd 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1446,6 +1446,9 @@
Pair with %1$s?
+
+ Add new member to the existing coordinated set
+
Bluetooth pairing code
diff --git a/src/com/android/settings/bluetooth/BluetoothPairingController.java b/src/com/android/settings/bluetooth/BluetoothPairingController.java
index 535e04086c0..f75d301ad22 100644
--- a/src/com/android/settings/bluetooth/BluetoothPairingController.java
+++ b/src/com/android/settings/bluetooth/BluetoothPairingController.java
@@ -72,6 +72,7 @@ public class BluetoothPairingController implements OnCheckedChangeListener,
private boolean mIsCoordinatedSetMember;
private boolean mIsLeAudio;
private boolean mIsLeContactSharingEnabled;
+ private boolean mIsLateBonding;
/**
* Creates an instance of a BluetoothPairingController.
@@ -98,6 +99,7 @@ public class BluetoothPairingController implements OnCheckedChangeListener,
mDeviceName = mBluetoothManager.getCachedDeviceManager().getName(mDevice);
mPbapClientProfile = mBluetoothManager.getProfileManager().getPbapClientProfile();
mPasskeyFormatted = formatKey(mPasskey);
+ mIsLateBonding = mBluetoothManager.getCachedDeviceManager().isLateBonding(mDevice);
final CachedBluetoothDevice cachedDevice =
mBluetoothManager.getCachedDeviceManager().findDevice(mDevice);
@@ -116,7 +118,10 @@ public class BluetoothPairingController implements OnCheckedChangeListener,
mIsLeContactSharingEnabled = DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_SETTINGS_UI,
SettingsUIDeviceConfig.BT_LE_AUDIO_CONTACT_SHARING_ENABLED, true);
- Log.d(TAG, "BT_LE_AUDIO_CONTACT_SHARING_ENABLED is " + mIsLeContactSharingEnabled);
+ Log.d(TAG,
+ "BT_LE_AUDIO_CONTACT_SHARING_ENABLED is "
+ + mIsLeContactSharingEnabled + " isCooridnatedSetMember "
+ + mIsCoordinatedSetMember);
}
}
@@ -192,6 +197,15 @@ public class BluetoothPairingController implements OnCheckedChangeListener,
return mIsCoordinatedSetMember;
}
+ /**
+ * A method for querying if the bluetooth device from a coordinated set is bonding late.
+ *
+ * @return - A boolean indicating if the device is bonding late.
+ */
+ public boolean isLateBonding() {
+ return mIsLateBonding;
+ }
+
/**
* A method for querying if the bluetooth device has a profile already set up on this device.
*
diff --git a/src/com/android/settings/bluetooth/BluetoothPairingDialogFragment.java b/src/com/android/settings/bluetooth/BluetoothPairingDialogFragment.java
index ad38fa1296b..3d6a44fb58b 100644
--- a/src/com/android/settings/bluetooth/BluetoothPairingDialogFragment.java
+++ b/src/com/android/settings/bluetooth/BluetoothPairingDialogFragment.java
@@ -357,6 +357,10 @@ public class BluetoothPairingDialogFragment extends InstrumentedDialogFragment i
pairingViewContent.setText(mPairingController.getPairingContent());
}
final TextView messagePairingSet = (TextView) view.findViewById(R.id.pairing_group_message);
+ if (mPairingController.isLateBonding()) {
+ messagePairingSet.setText(getString(R.string.bluetooth_pairing_group_late_bonding));
+ }
+
messagePairingSet.setVisibility(mPairingController.isCoordinatedSetMemberDevice()
? View.VISIBLE : View.GONE);
return view;
diff --git a/src/com/android/settings/bluetooth/BluetoothPairingRequest.java b/src/com/android/settings/bluetooth/BluetoothPairingRequest.java
index ed477c84602..ace0643ee7b 100644
--- a/src/com/android/settings/bluetooth/BluetoothPairingRequest.java
+++ b/src/com/android/settings/bluetooth/BluetoothPairingRequest.java
@@ -26,6 +26,7 @@ import android.os.UserHandle;
import android.text.TextUtils;
import android.util.Log;
+import com.android.settingslib.bluetooth.CachedBluetoothDevice;
import com.android.settingslib.bluetooth.LocalBluetoothManager;
/**
@@ -53,17 +54,28 @@ public final class BluetoothPairingRequest extends BroadcastReceiver {
boolean shouldShowDialog = LocalBluetoothPreferences.shouldShowDialogInForeground(
context, device);
- // Skips consent pairing dialog if the device was recently associated with CDM
+ Log.d(TAG,
+ "Receive ACTION_PAIRING_REQUEST pairingVariant=" + pairingVariant
+ + " canBondWithoutDialog=" + device.canBondWithoutDialog()
+ + " isOngoingPairByCsip="
+ + mBluetoothManager.getCachedDeviceManager().isOngoingPairByCsip(device)
+ + " isLateBonding="
+ + mBluetoothManager.getCachedDeviceManager().isLateBonding(device));
+
+ /* Skips consent pairing dialog if the device was recently associated with CDM
+ * or if the device is a member of the coordinated set and is not bonding late.
+ */
if (pairingVariant == BluetoothDevice.PAIRING_VARIANT_CONSENT
- && (device.canBondWithoutDialog()
- || mBluetoothManager.getCachedDeviceManager().isOngoingPairByCsip(device))) {
+ && (device.canBondWithoutDialog()
+ || (mBluetoothManager.getCachedDeviceManager().isOngoingPairByCsip(device)
+ && !mBluetoothManager.getCachedDeviceManager().isLateBonding(device)))) {
device.setPairingConfirmation(true);
} else if (powerManager.isInteractive() && shouldShowDialog) {
// Since the screen is on and the BT-related activity is in the foreground,
// just open the dialog
// convert broadcast intent into activity intent (same action string)
- Intent pairingIntent = BluetoothPairingService.getPairingDialogIntent(context,
- intent, BluetoothDevice.EXTRA_PAIRING_INITIATOR_FOREGROUND);
+ Intent pairingIntent = BluetoothPairingService.getPairingDialogIntent(
+ context, intent, BluetoothDevice.EXTRA_PAIRING_INITIATOR_FOREGROUND);
context.startActivityAsUser(pairingIntent, UserHandle.CURRENT);
} else {