gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 15:52:25 25 4
gpt4 key购买 nike

问。 您在管理蓝牙连接方面的最佳做法是什么?

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

  • 我应该什么时候打开/关闭连接?
  • 与单个蓝牙设备的“连接”是否称为“套接字”连接?
  • 单连接可以边监听边发送数据吗? (...或在聆听状态之间)。

我以前从未编码过与外部设备的连接。我花了两周的时间来研究扫描附近蓝牙设备并将它们放入 ListView 的代码。听众、广播和适配器!

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

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

最佳答案

抱歉,我的回答很简短,但是根据我对蓝牙 API 的实践,我发现这个视频描述的东西非常好(完全是个人意见......)

Video 1

此外,当您以前没有任何经验时,这很有用

Tutorial

最后在 stackoverflow 中检查这个问题它有很多很好的引用和示例!!

再次为短缺感到抱歉,但我相信如果您查看这些内容,至少您的大部分问题和疑虑都会得到解答!

:)


编辑


那么,让我稍微描述一下并分享我的一些经验。

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

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

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

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


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

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

    • 这里你需要安卓权限!
  2. 选择您要连接的设备

    • 为了区分设备(也许你周围有很多设备:))你可以使用 BLE 设备的名称或 UUID 或者...最好 - 使用名称 ;)
  3. 在两个设备相互连接后,您就可以开始 Gatt 通信了。状态机的方法对我来说有点过分了。但无论如何,通信是通过字节完成的(在我的例子中......)

  4. 在其中一个视频/资源中有一些特别的东西,至少对我来说非常有帮助!老实说,我记不太清了,但我的想法是,在进行任何通信之前,建议从 BLE 设备或类似设备读取/获取所有选项...

    • 也许是 discoverOptions() 之类的东西
  5. 了解您的设备“通信代码”或至少我是这样调用它们是一件好事。

    • 例如检查此链接:Link** 现在你可以看到有有用信息的表格!例如。如果你想读取电池电量,你导航到这个页面,发现为了读取电池,服务名称是 UUID XXXXX,你需要发送 0x01 到 BLE 设备,它会“回答”你的电话同样以字节为单位的数据。

我真的希望这对您有所帮助!

请注意这完全是根据我的经验得出的,可能存在一些不匹配或错误的术语,但这就是我个人的看法,而且因为我的项目是很久以前的事了,所以我不记得大部分内容了。

关于java - 我应该如何管理 Android 中的蓝牙连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29223989/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com