bt: Add late bonding confirmation mechanism am: 63d37a3d78
am: f38b16808b
am: e13e275026
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/23276700 Change-Id: I66f1a80109916a81e5620572f477b3f44866f370 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -1446,6 +1446,9 @@
|
|||||||
<!-- Title for the dialog to enter PIN. [CHAR LIMIT=40] -->
|
<!-- Title for the dialog to enter PIN. [CHAR LIMIT=40] -->
|
||||||
<string name="bluetooth_pairing_request">Pair with <xliff:g id="device_name">%1$s</xliff:g>?</string>
|
<string name="bluetooth_pairing_request">Pair with <xliff:g id="device_name">%1$s</xliff:g>?</string>
|
||||||
|
|
||||||
|
<!-- Message when a bluetooth device from a coordinated set is bonding late. [CHAR LIMIT=NONE] -->
|
||||||
|
<string name="bluetooth_pairing_group_late_bonding">Add new member to the existing coordinated set</string>
|
||||||
|
|
||||||
<!-- Message when bluetooth is informing the user of the pairing key. [CHAR LIMIT=NONE] -->
|
<!-- Message when bluetooth is informing the user of the pairing key. [CHAR LIMIT=NONE] -->
|
||||||
<string name="bluetooth_pairing_key_msg">Bluetooth pairing code</string>
|
<string name="bluetooth_pairing_key_msg">Bluetooth pairing code</string>
|
||||||
|
|
||||||
|
@@ -72,6 +72,7 @@ public class BluetoothPairingController implements OnCheckedChangeListener,
|
|||||||
private boolean mIsCoordinatedSetMember;
|
private boolean mIsCoordinatedSetMember;
|
||||||
private boolean mIsLeAudio;
|
private boolean mIsLeAudio;
|
||||||
private boolean mIsLeContactSharingEnabled;
|
private boolean mIsLeContactSharingEnabled;
|
||||||
|
private boolean mIsLateBonding;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates an instance of a BluetoothPairingController.
|
* Creates an instance of a BluetoothPairingController.
|
||||||
@@ -98,6 +99,7 @@ public class BluetoothPairingController implements OnCheckedChangeListener,
|
|||||||
mDeviceName = mBluetoothManager.getCachedDeviceManager().getName(mDevice);
|
mDeviceName = mBluetoothManager.getCachedDeviceManager().getName(mDevice);
|
||||||
mPbapClientProfile = mBluetoothManager.getProfileManager().getPbapClientProfile();
|
mPbapClientProfile = mBluetoothManager.getProfileManager().getPbapClientProfile();
|
||||||
mPasskeyFormatted = formatKey(mPasskey);
|
mPasskeyFormatted = formatKey(mPasskey);
|
||||||
|
mIsLateBonding = mBluetoothManager.getCachedDeviceManager().isLateBonding(mDevice);
|
||||||
|
|
||||||
final CachedBluetoothDevice cachedDevice =
|
final CachedBluetoothDevice cachedDevice =
|
||||||
mBluetoothManager.getCachedDeviceManager().findDevice(mDevice);
|
mBluetoothManager.getCachedDeviceManager().findDevice(mDevice);
|
||||||
@@ -116,7 +118,10 @@ public class BluetoothPairingController implements OnCheckedChangeListener,
|
|||||||
|
|
||||||
mIsLeContactSharingEnabled = DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_SETTINGS_UI,
|
mIsLeContactSharingEnabled = DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_SETTINGS_UI,
|
||||||
SettingsUIDeviceConfig.BT_LE_AUDIO_CONTACT_SHARING_ENABLED, true);
|
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;
|
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.
|
* A method for querying if the bluetooth device has a profile already set up on this device.
|
||||||
*
|
*
|
||||||
|
@@ -357,6 +357,10 @@ public class BluetoothPairingDialogFragment extends InstrumentedDialogFragment i
|
|||||||
pairingViewContent.setText(mPairingController.getPairingContent());
|
pairingViewContent.setText(mPairingController.getPairingContent());
|
||||||
}
|
}
|
||||||
final TextView messagePairingSet = (TextView) view.findViewById(R.id.pairing_group_message);
|
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()
|
messagePairingSet.setVisibility(mPairingController.isCoordinatedSetMemberDevice()
|
||||||
? View.VISIBLE : View.GONE);
|
? View.VISIBLE : View.GONE);
|
||||||
return view;
|
return view;
|
||||||
|
@@ -26,6 +26,7 @@ import android.os.UserHandle;
|
|||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
|
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
|
||||||
import com.android.settingslib.bluetooth.LocalBluetoothManager;
|
import com.android.settingslib.bluetooth.LocalBluetoothManager;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -53,17 +54,28 @@ public final class BluetoothPairingRequest extends BroadcastReceiver {
|
|||||||
boolean shouldShowDialog = LocalBluetoothPreferences.shouldShowDialogInForeground(
|
boolean shouldShowDialog = LocalBluetoothPreferences.shouldShowDialogInForeground(
|
||||||
context, device);
|
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
|
if (pairingVariant == BluetoothDevice.PAIRING_VARIANT_CONSENT
|
||||||
&& (device.canBondWithoutDialog()
|
&& (device.canBondWithoutDialog()
|
||||||
|| mBluetoothManager.getCachedDeviceManager().isOngoingPairByCsip(device))) {
|
|| (mBluetoothManager.getCachedDeviceManager().isOngoingPairByCsip(device)
|
||||||
|
&& !mBluetoothManager.getCachedDeviceManager().isLateBonding(device)))) {
|
||||||
device.setPairingConfirmation(true);
|
device.setPairingConfirmation(true);
|
||||||
} else if (powerManager.isInteractive() && shouldShowDialog) {
|
} else if (powerManager.isInteractive() && shouldShowDialog) {
|
||||||
// Since the screen is on and the BT-related activity is in the foreground,
|
// Since the screen is on and the BT-related activity is in the foreground,
|
||||||
// just open the dialog
|
// just open the dialog
|
||||||
// convert broadcast intent into activity intent (same action string)
|
// convert broadcast intent into activity intent (same action string)
|
||||||
Intent pairingIntent = BluetoothPairingService.getPairingDialogIntent(context,
|
Intent pairingIntent = BluetoothPairingService.getPairingDialogIntent(
|
||||||
intent, BluetoothDevice.EXTRA_PAIRING_INITIATOR_FOREGROUND);
|
context, intent, BluetoothDevice.EXTRA_PAIRING_INITIATOR_FOREGROUND);
|
||||||
|
|
||||||
context.startActivityAsUser(pairingIntent, UserHandle.CURRENT);
|
context.startActivityAsUser(pairingIntent, UserHandle.CURRENT);
|
||||||
} else {
|
} else {
|
||||||
|
Reference in New Issue
Block a user