Add the pairing string for CSIP supported device
Show the pairing dialog with the hint message that pairing this device will pair all of the set member of a coordinated set. If the device supports CSIP, the message will be shown. Screenshot: https://screenshot.googleplex.com/8WcrdgBoLRgJjHs Bug: 178981521 Test: make RunSettingsRoboTests ROBOTEST_FILTER=BlueotohPairingDialog Change-Id: I5432b7264652dd4485e2669f6004caa4f7459238 Merged-In: I5432b7264652dd4485e2669f6004caa4f7459238
This commit is contained in:
@@ -65,6 +65,18 @@
|
|||||||
android:textAppearance="@*android:style/TextAppearance.DeviceDefault.Subhead"
|
android:textAppearance="@*android:style/TextAppearance.DeviceDefault.Subhead"
|
||||||
android:visibility="gone" />
|
android:visibility="gone" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/pairing_group_message"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="@dimen/bluetooth_dialog_padding"
|
||||||
|
android:layout_marginEnd="@dimen/bluetooth_dialog_padding"
|
||||||
|
android:layout_marginBottom="@dimen/bluetooth_dialog_padding"
|
||||||
|
android:gravity="center_vertical"
|
||||||
|
android:text="@string/bluetooth_paring_group_msg"
|
||||||
|
android:textAppearance="@*android:style/TextAppearance.DeviceDefault.Body1"
|
||||||
|
android:visibility="gone" />
|
||||||
|
|
||||||
<CheckBox
|
<CheckBox
|
||||||
android:id="@+id/phonebook_sharing_message_confirm_pin"
|
android:id="@+id/phonebook_sharing_message_confirm_pin"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
@@ -1832,6 +1832,9 @@
|
|||||||
<!-- Message for confirmation of passkey to complete pairing. [CHAR LIMIT=NONE] -->
|
<!-- Message for confirmation of passkey to complete pairing. [CHAR LIMIT=NONE] -->
|
||||||
<string name="bluetooth_confirm_passkey_msg">To pair with:<br><b><xliff:g id="device_name">%1$s</xliff:g></b><br><br>Make sure it is showing this passkey:<br><b><xliff:g id="passkey">%2$s</xliff:g></b></string>
|
<string name="bluetooth_confirm_passkey_msg">To pair with:<br><b><xliff:g id="device_name">%1$s</xliff:g></b><br><br>Make sure it is showing this passkey:<br><b><xliff:g id="passkey">%2$s</xliff:g></b></string>
|
||||||
|
|
||||||
|
<!-- Pairing dialog text to remind user the pairing including all of the devices in a coordinated set. [CHAR LIMIT=NONE] -->
|
||||||
|
<string name="bluetooth_paring_group_msg">Confirm to pair with the coordinated set</string>
|
||||||
|
|
||||||
<!-- Message when bluetooth incoming pairing request for (2.1 devices) dialog is showing -->
|
<!-- Message when bluetooth incoming pairing request for (2.1 devices) dialog is showing -->
|
||||||
<string name="bluetooth_incoming_pairing_msg">From:<br><b><xliff:g id="device_name">%1$s</xliff:g></b><br><br>Pair with this device?</string>
|
<string name="bluetooth_incoming_pairing_msg">From:<br><b><xliff:g id="device_name">%1$s</xliff:g></b><br><br>Pair with this device?</string>
|
||||||
|
|
||||||
|
@@ -28,6 +28,7 @@ import androidx.annotation.VisibleForTesting;
|
|||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.bluetooth.BluetoothPairingDialogFragment.BluetoothPairingDialogListener;
|
import com.android.settings.bluetooth.BluetoothPairingDialogFragment.BluetoothPairingDialogListener;
|
||||||
|
import com.android.settingslib.bluetooth.CachedBluetoothDevice;
|
||||||
import com.android.settingslib.bluetooth.LocalBluetoothManager;
|
import com.android.settingslib.bluetooth.LocalBluetoothManager;
|
||||||
import com.android.settingslib.bluetooth.LocalBluetoothProfile;
|
import com.android.settingslib.bluetooth.LocalBluetoothProfile;
|
||||||
|
|
||||||
@@ -64,6 +65,7 @@ public class BluetoothPairingController implements OnCheckedChangeListener,
|
|||||||
private String mDeviceName;
|
private String mDeviceName;
|
||||||
private LocalBluetoothProfile mPbapClientProfile;
|
private LocalBluetoothProfile mPbapClientProfile;
|
||||||
private boolean mPbapAllowed;
|
private boolean mPbapAllowed;
|
||||||
|
private boolean mIsCoordinatedSetMember;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates an instance of a BluetoothPairingController.
|
* Creates an instance of a BluetoothPairingController.
|
||||||
@@ -90,6 +92,10 @@ 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);
|
||||||
|
final CachedBluetoothDevice cachedDevice =
|
||||||
|
mBluetoothManager.getCachedDeviceManager().findDevice(mDevice);
|
||||||
|
mIsCoordinatedSetMember = (cachedDevice != null)
|
||||||
|
? cachedDevice.isCoordinatedSetMemberDevice() : false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -155,6 +161,15 @@ public class BluetoothPairingController implements OnCheckedChangeListener,
|
|||||||
return mDeviceName;
|
return mDeviceName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A method for querying if the bluetooth device is a LE coordinated set member device.
|
||||||
|
*
|
||||||
|
* @return - A boolean indicating if the device is a CSIP supported device.
|
||||||
|
*/
|
||||||
|
public boolean isCoordinatedSetMemberDevice() {
|
||||||
|
return mIsCoordinatedSetMember;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 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.
|
||||||
*
|
*
|
||||||
|
@@ -344,6 +344,9 @@ public class BluetoothPairingDialogFragment extends InstrumentedDialogFragment i
|
|||||||
pairingViewContent.setVisibility(View.VISIBLE);
|
pairingViewContent.setVisibility(View.VISIBLE);
|
||||||
pairingViewContent.setText(mPairingController.getPairingContent());
|
pairingViewContent.setText(mPairingController.getPairingContent());
|
||||||
}
|
}
|
||||||
|
final TextView messagePairingSet = (TextView) view.findViewById(R.id.pairing_group_message);
|
||||||
|
messagePairingSet.setVisibility(mPairingController.isCoordinatedSetMemberDevice()
|
||||||
|
? View.VISIBLE : View.GONE);
|
||||||
return view;
|
return view;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -427,6 +427,34 @@ public class BluetoothPairingDialogTest {
|
|||||||
userEntryDialogExistingTextTest("test");
|
userEntryDialogExistingTextTest("test");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void groupPairing_setMemberDevice_showsMessageHint() {
|
||||||
|
// set the correct dialog type
|
||||||
|
when(controller.getDialogType()).thenReturn(BluetoothPairingController.CONFIRMATION_DIALOG);
|
||||||
|
when(controller.isCoordinatedSetMemberDevice()).thenReturn(true);
|
||||||
|
|
||||||
|
// build the fragment
|
||||||
|
BluetoothPairingDialogFragment frag = makeFragment();
|
||||||
|
|
||||||
|
// verify message is what we expect it to be and is visible
|
||||||
|
TextView message = frag.getmDialog().findViewById(R.id.pairing_group_message);
|
||||||
|
assertThat(message.getVisibility()).isEqualTo(View.VISIBLE);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void groupPairing_nonSetMemberDevice_hidesMessageHint() {
|
||||||
|
// set the correct dialog type
|
||||||
|
when(controller.getDialogType()).thenReturn(BluetoothPairingController.CONFIRMATION_DIALOG);
|
||||||
|
when(controller.isCoordinatedSetMemberDevice()).thenReturn(false);
|
||||||
|
|
||||||
|
// build the fragment
|
||||||
|
BluetoothPairingDialogFragment frag = makeFragment();
|
||||||
|
|
||||||
|
// verify message is what we expect it to be and is visible
|
||||||
|
TextView message = frag.getmDialog().findViewById(R.id.pairing_group_message);
|
||||||
|
assertThat(message.getVisibility()).isEqualTo(View.GONE);
|
||||||
|
}
|
||||||
|
|
||||||
// Runs a test simulating the user entry dialog type in a situation like device rotation, where
|
// Runs a test simulating the user entry dialog type in a situation like device rotation, where
|
||||||
// the dialog fragment gets created and we already have some existing text entered into the
|
// the dialog fragment gets created and we already have some existing text entered into the
|
||||||
// pin field.
|
// pin field.
|
||||||
|
Reference in New Issue
Block a user