Как да се свържете със сдвоено BLE устройство

В момента имам устройство, сдвоено с моя смартфон (Micro:Bit BBC). Моето приложение трябва да се свърже с него, да се свърже отново, в случай че загуби връзка и да чете от една характеристика, която това устройство предоставя.

Нов съм в Android. Вече прочетох тази връзка Android BLE SDK, но аз не може да разбере всичко и има някои части от този код, които липсват.

Знам как да търся сдвоени устройства, но не знам какво да правя след това:

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

Това ми показва уникалното свързано устройство (BBC micro:bit [zogav]). Как мога да се свържа с това устройство, да поддържам връзката жива и да се свържа отново, в случай че micro:bit излезе извън обхват?


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