最有效的方式将蓝牙连接到嵌入式设备

时间:2014-06-13 12:13:24

标签: android bluetooth bluez

我有:1)带蓝牙连接器的嵌入式设备,我和BlueZ一起使用,2)我有一部Android手机正在编写应用程序。

目标:我想确保当这两个设备彼此靠近时,它们会快速检测到彼此并建立通信。不幸的是,我正在努力解决Android上可行的复杂功能和节能问题。

初步设计:最初,我一直在思考和实施以下内容 -

  • 嵌入式设备:始终处于可发现模式,创建服务,运行RFCOMM服务器以接受多个连接。

  • Android手机:收听广播意图,告诉我嵌入式设备(可发现)何时在附近,然后创建一个RFCOMM客户端套接字。

我对这种设计的困难在于,当我期待它时,我没有意图。即使我打开嵌入式设备并将Android手机的蓝牙适配器关闭/开启...... 没有接收到这些广播意图

    BluetoothDevice.ACTION_FOUND
    BluetoothDevice.ACTION_ACL_CONNECTED
    BluetoothDevice.ACTION_BOND_STATE_CHANGED

唯一可行的方法是定期让手机尝试连接蓝牙设备的RFCOMM插座,或周期性地触发蓝牙扫描(两者功率效率低)。这将触发ACTION_FOUNDACTION_ACL_CONNECTED。如果我关闭嵌入式设备,我将收到ACTION_ACL_DISCONNECTED。同样的问题是,如果我没有明确让手机尝试启动套接字连接,则不会收到这些内容。这对手机的电源效率不利。


我的逻辑是否向后?嵌入式设备是否应跟踪与之配对的蓝牙MAC地址并成为RFCOMM客户端,而Android应用程序会创建服务并且是RFCOMM服务器只是闲逛,等待连接?这似乎在逻辑上是倒退的,但是......我不认为Android手机会创建服务或成为实现这一目标的服务器。

如果我进入我的车,它几乎立即设法与我的手机建立连接。所以,我知道这是可能的!

我所遇到的具体问题是双重的:1)我的初始设计是否存在问题"为了使它更有效,2)我提出的第二个逻辑是什么样的汽车用于建立快速通信和频繁轮询? (因为汽车的电池电量不是问题......)

0 个答案:

没有答案