Как мы можем добиться, чтобы периферийное устройство BLE подключалось только к нашему приложению Android (центральному), если какое-либо другое приложение пытается подключиться, необходимо отключиться

Как было предложено в вопросе, у нас есть собственное устройство BLE и приложение Android для подключения к этому устройству. Мы можем подключиться к устройству BLE и успешно выполнить все операции.

Тем временем мы можем обнаружить наше устройство BLE с другими сторонними приложениями и можем подключаться и выполнять операции.

Но мы хотим запретить другим приложениям подключаться к нашему устройству BLE, и если они подключаются к устройству немедленно, его необходимо отключить. Я искал в google и SO, но не смог получить никакой информации для этого, если у кого-то есть идеи, помогите мне.


person YBDevi    schedule 13.02.2019    source источник
comment
вы можете отправить некоторые секретные данные на устройство, чтобы убедиться, что это ваше приложение, например. грамм. разрешать   -  person Vladyslav Matviienko    schedule 13.02.2019
comment
@VladyslavMatviienko, не могли бы вы рассказать немного подробнее, я новичок в этой теме, если у вас есть какие-либо статьи по этому посту, это мне очень поможет.   -  person YBDevi    schedule 13.02.2019
comment
У меня нет статей. В зависимости от того, как вы собираетесь взаимодействовать с устройством, вам нужно сообщить устройству некоторую секретную строку. Устройство проверит, правильно ли оно (соответствует ожидаемому), и только после этого продолжит связь. Если строка неверна или не отправлена ​​в течение некоторого времени, то устройство должно просто отключиться.\   -  person Vladyslav Matviienko    schedule 13.02.2019


Ответы (1)


в событии подключения отправьте некоторые данные из приложения на устройство и получите проверенные данные от устройства к приложению, измените какой-либо запрограммированный механизм, чтобы приложение отправляло некоторые данные на устройство, а устройство проверяло и давало подтверждение, и на основе этого вы сохраняете соединения, иначе вы можете отключиться от Устройство. Я реализовал это и отлично работал

public boolean connectDeviceBonded(String address, String name) {
        if (address == null) {
            throw new NullPointerException("Address cannot be null or not found");
        }
        macAddress = address;


        boolean value =  bluetoothLe.connectScannerBonded(address);
        if ( value) {
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            int ret = reqEncryptedKey(10000);
            if (ret != SUCCESS){
                return false;
            }
        }
        return value;
    }

reqEncryptedKey() отправляет некоторые зашифрованные данные на устройство, и устройство имеет тот же алгоритм шифрования, и устройство проверяет мои данные и дает ответ приложению об успехе и неудаче, в зависимости от успеха и неудачи приложение может поддерживать соединение и отключаться. и я также помещаю некоторый фрагмент кода в устройство, чтобы, если устройство дает сбой, устройство автоматически отключалось.

person Dharmeet Soni    schedule 13.02.2019
comment
Я попробую ваше предложение. - person YBDevi; 14.02.2019