Я пишу приложение, которое ищет несколько устройств BLE и добавляет их в Array of Strings.после завершения обнаружения он запускает операцию фрагмента и заполняет слои свайпа для каждого из них для управления устройствами.
С модулем Bluetooth HC-05 я использовал BluetoothAdapter.ACTION_DISCOVERY_FINISHED для перехвата после завершения обнаружения, как показано ниже
if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) {
bluetoothAdapter.cancelDiscovery();
snackBluetooth.dismiss();
doNotifyDataSetChangedOnce = true;
if(listSize>0){
logo.setVisibility(View.GONE);
//intro1.setVisibility(View.GONE);
//intro2.setVisibility(View.GONE);
numberOfPages = listSize;
SharedPreferences sharedData = context.getSharedPreferences(storedData,0);
SharedPreferences.Editor editor = sharedData.edit();
editor.putInt("NO_Fixtures", numberOfPages);
editor.commit();
setupPages();
}
для LeScanCallback обнаруживаются устройства, но я не могу найти способ вызвать setupPages только после того, как этот callBack () остановится.
public void onLeScan(final BluetoothDevice device, int rssi, byte[] scanRecord) {
runOnUiThread(new Runnable() {
@Override
public void run() {
String ss = device.getName();
if(ss!= null && ss.equals("MLT-BT05")) {
if(!Arrays.asList(bAddress).contains(device.getAddress())){
Toast.makeText(MainActivity.this, "Found a new Device", Toast.LENGTH_SHORT).show();
mLeDeviceListAdapter.addDevice(device);
mLeDeviceListAdapter.notifyDataSetChanged();
bName[Bindex] = device.getName();
bAddress[Bindex] = device.getAddress();
numOfDevices++;
addDevice(Bindex,numOfDevices,bName[Bindex],bAddress[Bindex]);
Bindex++;
}
}
if (ss!= null && ss.equals("LEDVANCE G50 F-6681")){
if(!Arrays.asList(bAddress).contains(device.getAddress())){
Toast.makeText(MainActivity.this, "Found a Second new Device", Toast.LENGTH_SHORT).show();
mLeDeviceListAdapter.addDevice(device);
mLeDeviceListAdapter.notifyDataSetChanged();
bName[Bindex] = device.getName();
bAddress[Bindex] = device.getAddress();
numOfDevices++;
addDevice(Bindex,numOfDevices,bName[Bindex],bAddress[Bindex]);
Bindex++;
}
}
}
});
}