android - 如果任何其他应用程序尝试连接需要断开连接,我们如何实现 BLE 外围设备仅连接到我们的 Android 应用程序(中央)

标签 android embedded bluetooth-lowenergy gatt bluetooth-gatt

正如问题所建议的,我们有自己的 BLE 设备和 Android 应用程序来与该设备连接。我们能够连接BLE设备并成功完成所有操作。

与此同时,我们能够通过其他第 3 方应用程序检测我们的 BLE 设备,并能够连接和执行操作。

但我们希望限制其他应用程序与我们的 BLE 设备连接,如果它们立即与设备连接,则需要断开连接。 我已经在谷歌和SO中进行了搜索,但无法获得任何信息来实现这一目标,如果有人有想法可以帮助我

最佳答案

在连接事件中,将一些数据从应用程序发送到设备,并从设备到应用程序获取经过验证的数据,更改一些编程机制,使应用程序将一些数据发送到设备,设备验证并给予确认,并基于您保持连接,否则您可以与设备断开连接。我已经实现了这个东西并且工作得很好

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() 向设备发送一些加密数据,设备具有相同的加密算法,设备验证我的数据并对应用程序的成功和失败做出响应,基于成功和失败应用程序可以保持连接和断开连接。我还在设备中放置了一些代码,以便如果设备出现故障,设备会自动断开连接。

关于android - 如果任何其他应用程序尝试连接需要断开连接,我们如何实现 BLE 外围设备仅连接到我们的 Android 应用程序(中央),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54670707/

相关文章:

java - 带有自定义适配器的 ListView 不显示所有项目

android - 如何读取当前权限状态?

ios - 不同设备上的 BLE 外设名称不同

android - Azure 通知和移动服务

c - 如何检索存储在无符号变量中的有符号值

windows - 即使 Windows 在缓存中有条目(ARP 表),也会发送 ARP 请求

c - 嵌入式开发的 Pin Mask 约定

android - 对特征/描述符寻址和 UUID 感到困惑

android - BLE扫描失败

android - 切换到 3.0 canary 5 后 Gradle 同步失败