что такое LeScanCallback эквивалентно BluetoothAdapter.ACTION_DISCOVERY_FINISHED - PullRequest
0 голосов
/ 20 февраля 2019

Я пишу приложение, которое ищет несколько устройств 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++;


                            }
                        }

                    }

                });

            }
...