Pada perangkat yang menjalankan Android 8.0 (API level 26) dan yang lebih tinggi, Anda dapat menyesuaikan dialog permintaan penyambungan saat mencoba menyambungkan dengan perangkat pendamping melalui Bluetooth, BLE, dan Wi-Fi.
Di aplikasi, Anda dapat menentukan apakah pengguna melihat daftar kemungkinan perangkat pendamping atau hanya satu saran untuk perangkat pendamping. Anda juga dapat memfilter item yang muncul di dialog permintaan penyambungan, seperti berdasarkan jenisnya (Bluetooth, BLE, dan Wi-Fi) atau berdasarkan nama perangkat.
Cuplikan kode berikut menunjukkan cara menampilkan dialog yang meminta apakah pengguna ingin menyambungkan perangkat genggam dengan satu perangkat pendamping yang terhubung melalui Bluetooth bernama "Perangkat saya":
Kotlin
class MyDeviceSelectionActivity : Activity() { private val deviceManager: CompanionDeviceManager by lazy(LazyThreadSafetyMode.NONE) { getSystemService(CompanionDeviceManager::class.java) } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // ... // To skip filtering based on name and supported feature flags (UUIDs), // don't include calls to setNamePattern() and addServiceUuid(), // respectively. This example uses Bluetooth. val deviceFilter: BluetoothDeviceFilter = BluetoothDeviceFilter.Builder() .setNamePattern(Pattern.compile("My device")) .addServiceUuid(ParcelUuid(UUID(0x123abcL, -1L)), null) .build() // The argument provided in setSingleDevice() determines whether a single // device name or a list of device names is presented to the user as // pairing options. val pairingRequest: AssociationRequest = AssociationRequest.Builder() .addDeviceFilter(deviceFilter) .setSingleDevice(true) .build() // When the app tries to pair with the Bluetooth device, show the // appropriate pairing request dialog to the user. deviceManager.associate(pairingRequest, object : CompanionDeviceManager.Callback() { override fun onDeviceFound(chooserLauncher: IntentSender) { startIntentSenderForResult(chooserLauncher, SELECT_DEVICE_REQUEST_CODE, null, 0, 0, 0) } override fun onFailure(error: CharSequence?) { // Handle failure } }, null) } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) { when (requestCode) { SELECT_DEVICE_REQUEST_CODE -> when(resultCode) { Activity.RESULT_OK -> { // User has chosen to pair with the Bluetooth device. val deviceToPair: BluetoothDevice = data.getParcelableExtra(CompanionDeviceManager.EXTRA_DEVICE) deviceToPair.createBond() // ... Continue interacting with the paired device. } } } } }
Java
public class MyDeviceSelectionActivity extends Activity { private CompanionDeviceManager deviceManager; private AssociationRequest pairingRequest; private BluetoothDeviceFilter deviceFilter; private static final int SELECT_DEVICE_REQUEST_CODE = 42; @override public void onCreate() { // ... deviceManager = getSystemService(CompanionDeviceManager.class); // To skip filtering based on name and supported feature flags (UUIDs), // don't include calls to setNamePattern() and addServiceUuid(), // respectively. This example uses Bluetooth. deviceFilter = new BluetoothDeviceFilter.Builder() .setNamePattern(Pattern.compile("My device"), null) .addServiceUuid(new ParcelUuid(new UUID(0x123abcL, -1L))) .build(); // The argument provided in setSingleDevice() determines whether a single // device name or a list of device names is presented to the user as // pairing options. pairingRequest = new AssociationRequest.Builder() .addDeviceFilter(deviceFilter) .setSingleDevice(true) .build(); // When the app tries to pair with the Bluetooth device, show the // appropriate pairing request dialog to the user. deviceManager.associate(pairingRequest, new CompanionDeviceManager.Callback() { @Override public void onDeviceFound(IntentSender chooserLauncher) { startIntentSenderForResult(chooserLauncher, SELECT_DEVICE_REQUEST_CODE, null, 0, 0, 0); } }, null); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == SELECT_DEVICE_REQUEST_CODE && resultCode == Activity.RESULT_OK) { // User has chosen to pair with the Bluetooth device. BluetoothDevice deviceToPair = data.getParcelableExtra(CompanionDeviceManager.EXTRA_DEVICE); deviceToPair.createBond(); // ... Continue interacting with the paired device. } } }