我一直在对我想做的这个项目进行大量研究,可能阅读了每一篇 SO 帖子(bluejacking、RFCOMM、beacons 等),我的头在旋转。
我想在家里创建一个系统,使用 Arduino(带蓝牙文件)扫描蓝牙并检测我的手机或任何家人的手机何时在附近。这是一个 MAC 扫描器还是简单地获取友好名称。我也想获得 RSSI。我不需要进行精确的距离测量,但我想知道它们大约有多近。有人对这种方法有什么建议吗?我知道我可以在手机上创建一个应用程序并将其变成一个信标,这可能是一个选项,但我担心 Android,它必须至少是 Marshmallow 5.0。我希望支持比这低一点,比如 JB 或 KK。所以,似乎应该有一个简单的扫描,只是寻找 MAC 或名称。这就是我真正需要的。
也就是说,我的主要问题是,如果蓝牙设备已经配对,您能否扫描并查看范围内的蓝牙设备?比如蓝牙耳机?我了解蓝牙是点对点的,但它是否允许多个连接或至少在配对时广播 mac 或名称?
这个问题以及任何一般性建议将极大地帮助我!
谢谢!
最佳答案
来自监听器的蓝牙发现涉及监听蓝牙查询数据包 (RX) 和查询响应 (TX)。如果持续进行,这将耗尽电池。因此,大多数设备(包括移动电话和耳机)都有一个何时可发现和可连接的策略。尤其是耳机只有在收到指令时才可发现并且可连接,直到一个设备连接到它(可能有异常(exception)情况,耳机能够同时连接到多部手机)。大多数手机只有在设置屏幕(Android、IOS 和 Windows Phone)中才能被发现,但与耳机盒不同,它们是可连接的。
因此,手机的一个选项是在配对一次后查看是否可以连接到它们(例如,通过尝试在远程设备上搜索服务并查看它是否返回服务属性,这会在内部建立连接并间接确保设备的存在)。
如果您特定于已经配对的手机,那么您可能需要建立具有身份验证和加密的更高层连接(例如 SPP)。这将强制在设备之间进行双向检查以查看它们是否已经配对。另一个不太安全的选择是依赖手机(Android 和 IOS 手机通常不允许没有加密/配对的更高层连接)并尝试与手机建立 SPP 连接。
另一种选择是使用低功耗蓝牙。但请注意,在 BTv4.1 之前,BT 的安全性优于 BLE,在 BTv4.2 上也是如此。
关于android - 配对时蓝牙接近扫描,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39472705/