我该如何管理Android中的蓝牙连接?

Kev*_* J. 2 java android bluetooth connectivity

问:管理蓝牙连接的最佳做法是什么?

我已经阅读了android蓝牙指南和许多蓝牙连接教程.对封装设计和最佳实践没有帮助.

  • 我应该何时打开/关闭连接?
  • 与单个蓝牙设备的"连接"是否称为"套接字"连接?
  • 单个连接可以在收听时发送数据吗?(......或听力状态之间).

我以前从未编译过与外部设备的连接.我需要两个星期的时间来绕过扫描附近蓝牙设备的代码并将它们扔进ListView.听众,广播和适配器!

我的项目将在蓝牙收据打印机上每15分钟打印1-40张收据.目前,安全性不是问题.在同一个连接上,它也将接收数据(同时发送和接收似乎不是必要的,但会很有用).我还不确定如何在这个单个加密狗设备上配置设备,但我猜这些设备是通过USB控制器连接到加密狗的.

到目前为止,我有一个对象来管理单个I/O连接.静态地我打开一个活动来选择一个连接(以后在数据库中保存标签,macpin).根据教程,我有"打开","收听","发送"和"关闭"方法.令我困惑的是"如何"使用这些功能.我可以整天打开连接(10小时)并每隔3分钟使用一次吗?我应该在发送或请求数据时打开/关闭连接吗?我在哪里可以检测到需要重新连接?

Stu*_*uci 5

对不起简短的回答,但是从我使用蓝牙API的练习中,我发现这个视频描述的东西非常好(完全是个人意见......)

视频1

此外,如果您没有任何以前的经验,这将非常有用

教程

最后在stackoverflow中查看这个问题它有一堆很好的参考和例子!

再次为这次短缺感到抱歉,但我相信,如果你检查这些,至少大多数问题和疑虑都会得到解答!

:)


编辑


所以,让我更具描述性并分享我的一些经验.

我编写了一个与具有3个功能的BLE设备通信的应用程序

  • 双面事件驱动按钮(按下电话上的按钮 - >事件被触发到设备;按下BLE设备上的按钮 - >事件被触发到手机)

  • 从手机发送请求 - > BLE设备以当前电池百分比回答

  • 持续读取手机和BLE设备之间的强度信号(为aprox.距离)


到目前为止一切顺利,现在事情是基本的方法是:

  1. 搜索BLE设备(蓝牙搜索或附近蓝牙设备的"发现")

    • 在这里你需要android权限!
  2. 选择要连接的设备

    • 不同的设备(可能你周围有很多:))你可以使用BLE设备的名称或UUID或...最好 - 使用名称;)
  3. 在两个设备相互连接后,您可以启动Gatt通信.使用状态机的方法对我来说有点太过分了.但无论如何,通信是通过字节完成的(在我的情况下......)

  4. 在其中一个视频/资源中,至少对我来说有一些特定的,非常有用的!说实话,我并不完全记得它,但想法是在任何通信之前,建议阅读/获取BLE设备的所有选项或类似的东西......

    • 也许它就像discoverOptions()之类的东西
  5. 伟大的事情将是知道你的设备"通信代码"或至少我这样称呼他们.

    • 请查看此链接,例如:链接 **现在您可以看到有表格的USEFUL INFO!例如,如果您想要读取电池电量,请导航到此页面并查找为了读取电池,服务名称为UUID XXXXX,您需要将0x01发送到BLE设备,它将"回答"您的呼叫一些数据再次以字节为单位.

我真的希望这在某种程度上有所帮助!

请注意 这完全来自我的经验,可能存在一些不匹配或错误的术语,但这就是我个人看到的事情,因为我的项目很久以前,我不记得大部分事情.