Как подключиться к сопряженному устройству BLE

В настоящее время у меня есть устройство, сопряженное с моим смартфоном (Micro: Bit BBC). Мое приложение должно подключиться к нему, повторно подключиться в случае потери соединения и прочитать одну характеристику, которую предоставляет это устройство.

Я новичок в Android. Я уже прочитал эту ссылку Android BLE SDK, но я не могу понять всего, и в этом коде отсутствуют некоторые части.

Я знаю, как искать сопряженные устройства, но я не знаю, что делать после этого:

bleAdapter = ((BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE)).getAdapter();
Set<BluetoothDevice> pairedDevices = bleAdapter.getBondedDevices();

Это показывает мне уникальное устройство, связанное (BBC micro:bit [zogav]). Как я могу подключиться к этому устройству, сохранить соединение и переподключиться, если микро: бит выйдет за пределы диапазона?


person Lechucico    schedule 14.02.2018    source источник
comment
Что вы имеете в виду под keep the connection alive?   -  person Salman Naseem    schedule 15.02.2018
comment
Я имею в виду, что мой смартфон подписывается на характеристику и переподключается к micro:bit в случае потери соединения.   -  person Lechucico    schedule 15.02.2018


Ответы (1)


Итак, после получения набора Paired Devices найдите свое устройство и подключитесь к нему следующим образом:

BluetoothAdapter bleAdapter = ((BluetoothManager) getSystemService(BLUETOOTH_SERVICE)).getAdapter();
            Set<BluetoothDevice> pairedDevices = bleAdapter.getBondedDevices();
            for(BluetoothDevice d: pairedDevices){
                if(d.getAddress().equals("Your Device MAC")){
                   d.connectGatt(MainActivity.this, true, new BluetoothGattCallback() {
                        @Override
                        public void onConnectionStateChange(BluetoothGatt 
                               gatt, int status, int newState) {
                            super.onConnectionStateChange(gatt, status, newState);
                            switch (newState) {
                                case BluetoothProfile.STATE_CONNECTED:
                                    Log.i("GattCallback", "connected");
                                    gatt.getServices();
                                    break;
                                case BluetoothProfile.STATE_DISCONNECTED:
                                    Log.i("GattCallback", "Disconnected");
                                    break;
                            }
                        }
                    });
                }
            }

Для достижения Auto Connect установите Auto Connect переменную true в device.connectGatt(context, Auto Connect, BluetoothGattCallback);.

person Salman Naseem    schedule 15.02.2018
comment
Спасибо! Я опубликовал еще один вопрос с большим количеством сомнений: характеристика"> stackoverflow.com/questions/48810469/ - person Lechucico; 15.02.2018
comment
извините, я не знаю, почему при запуске LeScan адрес D7:1E:5E:34:74:D1, но после подключения к этому устройству + getBondedDevices() я получил 66:F2:24:55:5E:A8 - person famfamfam; 16.02.2020