使用Android的API进行伴侣设备配对可以避免使用Chooser。以下是一个基于Android BLE API的示例代码:
private BluetoothAdapter.LeScanCallback mLeScanCallback = new BluetoothAdapter.LeScanCallback() {
@Override
public void onLeScan(final BluetoothDevice device, final int rssi, final byte[] scanRecord) {
runOnUiThread(new Runnable() {
@Override
public void run() {
// 根据扫描到的广播信息过滤出伴侣设备
if (isCompanionDevice(scanRecord)) {
// 停止扫描
mBluetoothAdapter.stopLeScan(mLeScanCallback);
// 连接伴侣设备
connectToDevice(device);
}
}
});
}
};
private void startScanning() {
// 开始BLE扫描
mBluetoothAdapter.startLeScan(mLeScanCallback);
}
private boolean isCompanionDevice(byte[] scanRecord) {
// 在这里添加检测伴侣设备的代码
}
private void connectToDevice(BluetoothDevice device) {
// 在这里添加连接伴侣设备的代码
}
private final AdvertiseSettings mAdvertisingSettings =
new AdvertiseSettings.Builder()
.setAdvertiseMode(AdvertiseSettings.ADVERTISE_MODE_LOW_LATENCY)
.setConnectable(true)
.setTimeout(0)
.setTxPowerLevel(AdvertiseSettings.ADVERTISE_TX_POWER_HIGH)
.build();
private void startAdvertising() {
// 构造广播包,并添加伴侣设备信息
byte[] scanRecord = buildScanRecord(mCompanionDeviceName, mCompanionDeviceId);
// 开始广播
mAdvertiser = mBluetoothAdapter.getBluetoothLeAdvertiser();
mAdvertiser.startAdvertising(mAdvertisingSettings