Я хочу создать приложение, которое сканирует локальные устройства Bluetooth. Приложение находит все сопряженные устройства, но нет сопряженных. У меня есть кнопка, и когда я нажимаю ее, я хочу видеть в Log
найденных устройствах.
В AndroidManifest
я добавил разрешения для BLUETOOTH
, BLUETOOTH_ADMIN
и ACCESS_COARSE_LOCATION
.
onCreate
Я получаю адаптер Bluetooth по умолчанию и получаю сопряженные устройства.
protected void onCreate(Bundle savedInstanceState) {
....
bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
if(!bluetoothAdapter.isEnabled()) {
Intent enable = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enable, REQUEST_ENABLE_BT);
}
pairedDevices = bluetoothAdapter.getBondedDevices();
///Add paired Devices
for(BluetoothDevice device : pairedDevices){
Log.i("DEVICE", device.getAddress()+" "+device.getName());
devicesList.add(device);
}
}
В onClick
я выполняю функцию scanDevices
, где я использую ScanCallBack
.
final ScanCallback scanCallback = new ScanCallback() {
@Override
public void onScanResult(int callbackType, ScanResult result) {
super.onScanResult(callbackType, result);
if(!devicesList.contains(result.getDevice())) {
Log.i("DEVICE", result.getDevice().getName()+ " "+result.getDevice().getAddress());
devicesList.add(result.getDevice());
}
}
@Override
public void onScanFailed(int errorCode) {
super.onScanFailed(errorCode);
}
};
bluetoothAdapter.getBluetoothLeScanner().startScan(scanCallback);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
bluetoothAdapter.getBluetoothLeScanner().stopScan(scanCallback);
}
}, 10000);
}
Когда я запускаю приложение, оно ничего не делает, ни одно устройство не печатается в журнале, а когда я пытаюсь его отладить, оно даже не останавливается в ScanCallBack.