syu android蓝牙连接方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了syu android蓝牙连接方法相关的知识,希望对你有一定的参考价值。
syu android蓝牙连接方法:打开其他设备的蓝牙,并使其对其他设备可见。打开下拉顶帘,点击蓝牙图标使其变为绿色,跳出提示框,勾选对其他设备可见。
syu android判断蓝牙模块是否开启,blueadapter.isEnabled() true表示已经开启,false表示蓝牙并没启用。
syu android启动配置蓝牙可见模式,即进入可配对模式Intent in=newIntent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE)。
蓝牙连接技术优势:
支持语音和数据传输;采用无线电技术,传输范围大,可穿透不同物质以及在物质间扩散;采用跳频展频技术,抗干扰性强,不易窃听;使用在各国都不受限制的频谱,理论上说,不存在干扰问题;功耗低;成本低。蓝牙的劣势:传输速度慢。
蓝牙的技术性能参数:有效传输距离为10cm~10m,增加发射功率可达到100米,甚至更远。收发器工作频率为2.45GHz ,覆盖范围是相隔1MHz的79个通道(从2.402GHz到2.480GHz )。
syu android蓝牙连接方法先展示代码结构。
蓝牙是一种无线数据与语音通信的开放性全球规范,它以低成本的短距离无线连接为基础,可为固定的或移动的终端设备提供廉价的接入服务。
蓝牙(Bluetooth)是一项短途无线电连接系统,它可以将不同的电子器材连系起来。原理就好像收音机一样,装有蓝牙的电子器材,可以接收外来的讯息,从而进行特定的指令。
蓝牙简介:
不过,蓝牙不但可以接收,也都可以“传送”,因此装有蓝牙的电子器材,能够互相沟通。现在,大部分的电脑配件,如打印机、荧幕等,都要接驳上电线,才可以互传讯息,但蓝牙透过其短途的接收系统,便可以使这些配件在没有驳线下,仍然能够传送指令,做到真正“无线”的世界。
头蓝技术实质内容是为固定设备或移动设备之间的通信环境建立通用的近距无线接口,将通信技术与计算机技术进一步结合起来,使各种设备在没有电线或电缆相互连接的情况下,能在近距离范围内实现相互通信或操作。蓝牙功能可以参考下面的操作打开使用,打开其他设备的蓝牙。
并使其对其他设备可见,打开下拉顶帘,点击蓝牙图标使其变为绿色,跳出提示框,勾选对其他设备可见。点击扫描,搜索到其他设备后,点击该设备名称,双方点确定后配对成功。选择要传输的文件,共享通过蓝牙即可传输文件。
我应该如何在 Android 中管理蓝牙连接?
【中文标题】我应该如何在 Android 中管理蓝牙连接?【英文标题】:How should I manage Bluetooth connections in Android? 【发布时间】:2015-03-24 02:27:15 【问题描述】:问。 您在管理蓝牙连接方面的最佳做法是什么?
我已阅读 android 蓝牙指南和许多蓝牙连接教程。对封装设计和最佳实践没有帮助。
我应该什么时候打开/关闭连接? 与单个蓝牙设备的“连接”是否称为“套接字”连接? 单个连接可以在监听的同时发送数据吗? (...或在侦听状态之间)。我以前从未编写过与外部设备的连接。我花了两个星期的时间来研究扫描附近蓝牙设备并将它们放入 ListView 的代码。侦听器、广播和适配器!
我的项目将在蓝牙收据打印机上每 15 分钟打印 1-40 张收据。目前,安全不是问题。在同一连接上,它还将接收数据(同时发送和接收似乎不是必需的,但很有用)。我还不确定这些设备是如何在这个单一的加密狗设备上配置的,但我猜这些设备是通过 USB 控制器连接到加密狗的。
到目前为止,我有 1 个对象来管理单个 I/O 连接。我静态地打开一个活动来选择一个连接(稍后将 label、mac 和 pin 保存在数据库中)。根据教程,我有“打开”、“收听”、“发送”和“关闭”方法。 让我困惑的是“如何”使用这些功能。我可以让连接全天(10 小时)打开并每 3 分钟使用一次吗?我应该在发送或请求数据时打开/关闭连接吗?我在哪里可以检测到需要重新连接?
【问题讨论】:
不分心,不闲聊(阅读help→tour) 是的,没有干扰或闲聊。我不想要与蓝牙连接无关的主题。 merriam-webster.com/dictionary/chitchat我确实有提供太多信息的习惯,但是由于我刚刚扫描连接时遇到了所有麻烦,因此了解如何处理蓝牙连接将非常有用。 【参考方案1】:很抱歉简短的回答,但从我对蓝牙 API 的实践中,我发现这个视频描述的东西非常好(完全个人意见......)
Video 1
此外,当您以前没有任何经验时,这很有用
Tutorial
最后在***查看这个问题,它有很多很好的参考和例子!!
再次对短缺感到抱歉,但我相信如果您查看这些内容,至少您的大部分问题和疑虑都会得到解答!
:)
编辑
所以,让我描述一下并分享一些我的经验。
我编写了一个与具有 3 个功能的 BLE 设备通信的应用程序
双面事件驱动按钮(按下手机上的按钮 -> 向设备触发事件;按下 BLE 设备上的按钮 -> 向手机触发事件)
从手机发送请求 -> BLE 设备以当前电池百分比应答
连续读取手机与 BLE 设备之间的强度信号(近似距离)
到目前为止一切顺利,现在基本方法是:
搜索 BLE 设备(蓝牙搜索或“发现”附近的蓝牙设备)
这里你需要安卓权限!选择您要连接的设备
要区分设备(也许您周围有很多 :))您可以使用 BLE 设备的名称或 UUID 或...最好 - 使用名称 ;)两台设备相互连接后,您就可以开始 Gatt 通信了。状态机的方法对我来说有点过分了。但无论如何,通信是通过字节完成的(在我的情况下......)
在其中一个视频/资源中,有一些具体的内容,至少对我很有帮助!老实说,我记不太清了,但我的想法是,在进行任何通信之前,建议从 BLE 设备或类似设备中读取/获取所有选项……
可能是discoverOptions() 之类的东西知道您的设备“通信代码”或者至少我是这样称呼它们是一件好事。
查看此链接,例如:Link ** 现在您可以看到带有有用信息的表格!例如。如果你想读取电池电量,你导航到这个页面,发现为了读取电池,服务名称是 UUID XXXXX,你需要发送 0x01 到 BLE 设备,它会用一些“应答”你的电话再次以字节为单位的数据。我真的希望这会有所帮助!
请注意 这完全来自我的经验,可能存在一些不匹配或错误的术语,但这是我个人的看法,因为我的项目是很久以前的,我不记得确切的大部分内容。
【讨论】:
只是要注意一些重要的事情,根据我的经验,蓝牙活动连接的最大数量(尤其是低功耗蓝牙)硬编码为 6!在这个数字之后,结果是不可预测的:) 谢谢!发布了笔记,但将您的笔记标记为我的答案。希望以这种方式发帖没问题。这是很多信息要经过。 ;)【参考方案2】:重要提示:
这只是上面 STUCI 提供的链接的摘要。此后,他更新了他的答案,并且 我没有 在今年夏天更新/编辑。我的摘要中的主题不是解释性的,而是提供参考和帮助产生具体问题。
原帖...
谢谢斯图西!其中一些是有帮助的:- 有些没有。我认为最好收集我的想法,看看已经解释了什么,如果有什么没有解释。
(我不能在评论中发布这么多,抱歉)
如有任何不正确之处,请致电给我。
低功耗蓝牙视频
(涵盖一堆随机的东西) 虽然我“不喜欢”代码视频:- 我观看它是因为它被推荐……我很高兴我做到了。虽然不是很有帮助,但它确实介绍了一些我不知道的概念。由于我的目标是旧的 android 设备 (v8+),因此 LE 功能无关紧要。
推送数据:[取决于源功能集],不需要持续提取数据(例如使用温度传感器),但某些设备可以在更改时将其“推送”到设备。似乎使用了“广告”的设计理念。 UUID 定义连接设备的服务和/或特征。 可以在(到)连接的设备上写入配置。 似乎只是可以通过蓝牙分配的“设置”的特性。不确定这(约 19 分钟)是否适用于非 gatt 连接,但似乎类似于控制 的状态机 广告似乎是关于设备当前状态或配置的“元数据”(约 24 分钟)。同样,不确定这是否适用于非 LE 蓝牙。保持连接打开
蓝牙连接确实可以保持打开状态;从成功调用“startActivityForResult(...)”方法的那一点开始。 有两个基本因素会影响一个人是否想要保持打开的连接:
-
了解功耗。
使适配器处于活动状态只会消耗额外的电量。如果可以在适配器不是“绝对需要”时将其关闭,这将大大节省电池电量。
意外断开连接得到管理。
除了保持连接持续连接外,还可以在指定的时间间隔定期断开连接并重新连接,以确保连接正常。
在用于 I/O 的线程中,可以检查是否断开连接并重新连接(可能会启动一个新线程)。
I/O 流公关连接
单个连接确实可以“拥有”同时输入和输出流。我
由于有人建议,我重新阅读了 Android 的蓝牙指南,并在“管理连接”(谈论单个套接字)下注意到了这一点......
-
分别通过 getInputStream() 和 getOutputStream() 获取处理通过套接字传输的 InputStream 和 OutputStream。
使用 read(byte[]) 和 write(byte[]) 在流中读取和写入数据。
...但继续注意读写相互阻塞。我还需要进一步研究。好像不能在同一个socket上同时I/O???
最大连接数
我还查看了 Stuci 添加的最大连接问题,但没有发现 Android 端的文档。它可能存在,我找不到它。但是,大多数人似乎都同意,无论您编写什么硬件,都有一个限制(可能低至 4 个)。 一些值得注意的链接: - How many devices we can pair via Bluetooth of BLE to Android? - How many maximum device can we pair via Bluetooth to android device at a time? - https://groups.google.com/forum/#!topic/android-developers/adeBD275u30
【讨论】:
以上是关于syu android蓝牙连接方法的主要内容,如果未能解决你的问题,请参考以下文章