Android 配对时蓝牙接近扫描

Android 配对时蓝牙接近扫描,android,bluetooth,arduino,bluetooth-lowenergy,Android,Bluetooth,Arduino,Bluetooth Lowenergy,我对我想做的这个项目做了大量的研究,可能读了每一篇文章(bluejacking、RFCOMM、beacons等等),我的脑袋都在转 我想在家里创建一个系统,使用Arduino(带蓝牙le)扫描蓝牙并检测我的手机或我的任何家庭成员的手机是否在附近。无论这是一个MAC扫描仪还是简单地获取友好的名称。我还想得到RSSI。我不需要做精确的距离测量,但我想知道它们有多近。有人对这种方法有什么建议吗?我知道我可以在手机上创建一个应用程序,让它成为一个灯塔,这可能是一个选项,但我担心的是Android,它必须

我对我想做的这个项目做了大量的研究,可能读了每一篇文章(bluejacking、RFCOMM、beacons等等),我的脑袋都在转

我想在家里创建一个系统,使用Arduino(带蓝牙le)扫描蓝牙并检测我的手机或我的任何家庭成员的手机是否在附近。无论这是一个MAC扫描仪还是简单地获取友好的名称。我还想得到RSSI。我不需要做精确的距离测量,但我想知道它们有多近。有人对这种方法有什么建议吗?我知道我可以在手机上创建一个应用程序,让它成为一个灯塔,这可能是一个选项,但我担心的是Android,它必须至少是棉花糖5.0。我希望支持率比这低一点,比如JB或KK。所以,似乎应该有一个简单的扫描,只是寻找MAC或名称。这就是我真正需要的

也就是说,我的主要问题是,如果蓝牙设备已经配对到某个设备上,您是否可以扫描并查看范围内的蓝牙设备?像蓝牙耳机吗?我知道蓝牙是点对点的,但它是否允许多个连接,或者至少在配对时广播mac或名称

这个问题,连同任何一般性的建议,都将极大地帮助我


谢谢

来自侦听器的蓝牙发现涉及监听蓝牙查询数据包(RX)和查询响应(TX)。如果持续进行,将耗尽电池电量。因此,大多数设备(包括移动电话和耳机)都有一个何时可以发现和连接的策略。尤其是耳机,只有在一个设备连接到它之前,它们才被指示并可连接时才可被发现(可能有例外情况,耳机可以同时连接到多个电话)。大多数手机只有在设置屏幕(Android、IOS和Windows手机)中才能被发现,但与耳机壳不同,它们是可连接的

因此,使用MobilePhone的一个选项是,在配对一次后,看看是否可以连接到它们(例如,通过在远程设备上尝试服务搜索,看看它是否返回服务属性,这会在内部建立连接并间接确保设备的存在)

如果您对已配对的移动电话有明确要求,则可能需要建立具有身份验证和加密功能的高层连接(如SPP)。这将强制在设备之间进行双向检查,以查看它们是否已配对。另一个不太安全的选择是依靠手机(Android和IOS手机通常不允许没有加密/配对的更高层连接),并尝试建立与手机的SPP连接


另一个选择是使用蓝牙低能量。但请注意,在BTv4.1之前,BT的安全性优于BLE,在BTv4.2上也优于BLE。

感谢您的详细回复!这有助于我更多地理解它。如果我不担心配对和安全性呢?而且,我对BLE也很满意(尽管我需要研究BLE目前是否在Android和iOS设备中)。基本上,如果我有我的arduino,带BLE,不靠电池运行,不断地扫描,我仍然需要弄清楚怎么做,我可以通过蓝牙检测到我的手机在范围内。就像您在范围内看到wifi的SSID一样。我理解你的评论,它们通常是不可发现的。BLE是否会改变这一点?据我在Android和IOS中了解,手机必须处于蓝牙设置屏幕,或者手机上运行要求在手机上运行LE扫描的应用程序,在上述两种情况下,手机可以通过扫描仪检测广告,否则手机无法通过扫描仪检测广告。链接强度和加密密钥非常好。在BT4.2中,SHA-256(注意,没有已知的SHA-256断开实例)用于创建密钥,AES 128用于加密。Diffie–Hellman密钥交换用于在不安全的链接中安全地创建密钥。如果您打算从安全角度使用BT4.1,那么BT classic是一个更好的选择。但是如果你打算使用BT4.2,那么经典和低能耗都是同样安全的。