![](/img/trans.png)
[英]How should I manage connections when extending AbstractJavaSamplerClient?
[英]How should I manage Bluetooth connections in Android?
问: 管理蓝牙连接的最佳做法是什么?
我已经阅读了android蓝牙指南和许多蓝牙连接教程。 对封装设计和最佳实践没有帮助。
我以前从未编译过与外部设备的连接 。 我用了两个星期的时间来绕过扫描附近蓝牙设备的代码并将它们扔进ListView。 听众,广播和适配器!
我的项目将在蓝牙收据打印机上每15分钟打印1-40张收据。 目前,安全性不是问题。 在同一个连接上,它也将接收数据(同时发送和接收似乎不是必要的,但会很有用)。 我还不确定如何在这个单个加密狗设备上配置设备,但我猜这些设备是通过USB控制器连接到加密狗的。
到目前为止,我有一个对象来管理单个I / O连接。 静态地我打开一个活动来选择一个连接(以后在数据库中保存标签 , mac和pin )。 根据教程,我有“打开”,“收听”,“发送”和“关闭”方法。 令我困惑的是“如何”使用这些功能。 我可以整天打开连接(10小时)并每隔3分钟使用一次吗? 我应该在发送或请求数据时打开/关闭连接吗? 我在哪里可以检测到需要重新连接?
对不起简短的回答,但是从我使用蓝牙API的练习中,我发现这个视频描述的东西非常好(完全是个人意见......)
此外,如果您没有任何以前的经验,这将非常有用
最后在stackoverflow中查看这个问题它有一堆很好的参考和例子!
再次为这次短缺感到抱歉,但我相信,如果你检查这些,至少大多数问题和疑虑都会得到解答!
:)
编辑
所以,让我更具描述性并分享我的一些经验。
我编写了一个与具有3个功能的BLE设备通信的应用程序
双面事件驱动按钮(按下电话上的按钮 - >事件被触发到设备;按下BLE设备上的按钮 - >事件被触发到手机)
从手机发送请求 - > BLE设备以当前电池百分比回答
持续读取手机和BLE设备之间的强度信号(为aprox。距离)
到目前为止一切顺利,现在事情是基本的方法是:
搜索BLE设备(蓝牙搜索或附近蓝牙设备的“发现”)
选择要连接的设备
在两个设备相互连接后,您可以启动Gatt通信。 使用状态机的方法对我来说有点太过分了。 但无论如何,通信是通过字节完成的(在我的情况下......)
在其中一个视频/资源中,至少对我来说有一些特定的,非常有用的! 说实话,我并不完全记得它,但想法是在任何通信之前,建议阅读/获取BLE设备的所有选项或类似的东西......
伟大的事情将是知道你的设备“通信代码”或至少我这样称呼他们。
我真的希望这在某种程度上有所帮助!
请注意 这完全来自我的经验,可能存在一些不匹配或错误的术语,但这就是我个人看到的东西,因为我的项目很久以前,我不记得大部分事情。
这只是上面提供的STUCI提供的链接的总结。 他已经更新了他的答案, 我没有更新/编辑这个夏季。 我的夏季主题不是解释性的,而是提供参考和帮助产生具体问题。
谢谢Stuci! 其中一些是有帮助的: - 有些不是。 我认为最好收集我的想法,看看有什么解释,如果没有。
(我不能在评论中发布这么多,抱歉)
请打电话给我任何不正确的事情。
(涵盖一堆随机的东西)
虽然我“不喜欢”代码视频: - 我看了它,因为它被推荐......我很高兴我做到了。 虽然不是很有帮助但它确实引入了一些我不知道的概念。 由于我的目标是旧的Android设备(v8 +),因此LE功能无关紧要。
蓝牙连接确实可以保持开放; 从成功调用“startActivityForResult(...)方法的那一点开始。两个基本的因素会影响是否要维护一个打开的连接:
单个连接确实可以“拥有”同时的输入和输出流。 一世
既然有人建议,我重新阅读Android的蓝牙指南并在“管理连接”(谈论单个插座)下我注意到了......
...但继续注意到读写会相互阻塞。 我仍需要进一步研究的东西。 好像你不能同时在同一个插槽上进行I / O ???
我还查看了Stuci添加的最大连接问题,并且在Android端没有找到任何文档。 它可能存在,我找不到它。 但是,大多数人似乎都同意,无论您编写什么硬件,都存在限制(可能低至4)。 一些值得注意的链接: - 我们可以通过BLE蓝牙与Android配对多少台设备? - 我们一次可以通过蓝牙与Android设备配对多少台设备? - https://groups.google.com/forum/#!topic/android-developers/adeBD275u30
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.