首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android和其他设备之间的蓝牙SPP,UUID和PIN问题

Android和其他设备之间的蓝牙SPP,UUID和PIN问题
EN

Stack Overflow用户
提问于 2011-03-10 17:05:15
回答 1查看 48.8K关注 0票数 21

我正在尝试实现一个Android应用程序来接收来自医疗设备的数据,但是我无法通过发现过程获得电话和设备之间的配对或连接。

描述医疗设备的:,该设备使用服务发现协议()和串口配置文件(SPP)。它开始一个查询过程,以发现(最多10个)周围的接入点与匹配的COD过滤器和服务名称。然后,通过检查PIN,依次与接入点建立连接(使用Page过程)。一旦PIN被匹配,数据就被上传。在上传数据时,设备等待确认。装饰是主人,并发起沟通。

我控制不了医疗器械。我所能做的就是启动它,等待上面描述的过程(在测量之后)。

,安卓应用程序:,我从开发人员页面上的蓝牙聊天示例开始。到目前为止,我已经用00001101-0000-1000-8000-00805f9b34fb替换了UUID,以使用SPP,并将服务名称设置为适当的名称。通过计算机对服务的检查,我可以确认这似乎是正确的。由于医疗设备是查询和启动通信的设备,所以我的服务是使用BluetoothServerSocketaccept()方法开始监听它。

  1. 在开发人员页面中,我看到UUID必须在试图通信的应用程序之间匹配。因为我不能为医疗设备设置任何UUID,所以我想知道这是一个问题还是医疗设备使用SP配置文件是否足够?
  2. 如果服务名称和UUID是正确的,医疗设备实际上将尝试连接到我的蓝牙服务,这是监听连接,Android系统是否会提示我手动输入PIN,以便能够配对设备(因为医疗设备有一个预先设置的PIN)?
  3. 我还没有在Android中找到任何允许我为我的蓝牙服务设置PIN的东西(以防出现故障),这有可能吗?

我已经读过,PIN通常是由系统生成的,用户确认是唯一需要的东西。我想不是在我的系统里,因为这个设备有点老了。

如果你愿意分享一些知识,提示,猜测与我上面所描述的任何相关的东西,我将是伟大的!

预先谢谢你,弗雷德里克

编辑:

现在我已经把这个设备和一个bluegiga盒子配在一起,它们的通讯正常。现在我在寻找血压装置连接到我手机的标准。我可以通过Linux计算机(终端中的sdptool search SP)检查bluegiga提供的蓝牙服务,并将其与我在Android上提供的蓝牙服务进行比较。这些值是我得到的:

~$ sdptool搜索SP 询问..。 在8C:71:F8:E5:XX:XX上搜索SP。。。 服务名称: 1808130054 服务RecHandle: 0x10003 服务类别ID列表: UUID 128: 00001101-0000-1000-8000-00805f9b34fb 协议描述符列表: "L2CAP“(0x0100) "RFCOMM“(0x0003) 频道: 13 00:07:80:88:XX:XX .。。 服务名称: 1808130054 服务描述: 1808130054 服务RecHandle: 0x10005 服务类别ID列表: “串行口”(0x1101) 协议描述符列表: "L2CAP“(0x0100) "RFCOMM“(0x0003) 频道: 12 语言基础Attr列表: code_ISO639: 0x656e 编号: 0x6a base_offset: 0x100

发现的第一个设备是电话(mac=8C:71...Google Nexus )和第二个设备(mac=00:07.是蓝发怪。我注意到Android设备上没有服务描述。我认为最重要的区别是在服务类ID列表中。在Android上UUID 128,但在bluegiga上描述这一点的格式完全不同。

  1. 是否可以在Android上使用UUID以外的其他格式来实现服务类it?
  2. 您能操作在服务发现DB中注册的服务记录吗?
  3. 是否可以使用本机开发的c/c++直接实现BlueZ?

/Fredrik

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-11 18:23:13

如果你能提供到医疗设备的名称/链接(如果它是一个商业设备),它可能有助于阅读它的指南来猜测更多可能发生的事情。以下是一些建议:

  1. 除了串行端口UUID之外,SPP上的每个服务都可以有一个自定义特定的UUID --例如,医疗设备可以使用这个特定的UUID查找与其兼容的服务。 如果医疗设备当前成功地连接到PC或其他访问点并传输数据,则可以尝试读取该设备的SDP记录,并确定除SPP之外还有哪些特定的UUID正在使用,并在应用程序中也使用相同的UUID。
  2. 如果医疗设备无法找到您的手机/应用程序,可能是因为它无法被发现。默认情况下,即使您是服务器,Android设备也是不可发现的,它只能是可连接的,不能被发现,您可以尝试通过设置或通过设置使其可被发现,并查看医疗设备是否能够找到您的设备。看这里- 在Android中启用可发现性
  3. 对于PIN配对,当非配对设备试图连接到它时,android设备应该启动配对过程,您可以在通过建议(1)和(2)之后尝试PIN配对,如果其中一个设备早于蓝牙2.1版本,则使用PIN配对,即使是较新的设备,也需要在手机上设置一个6位密码键,并在电话上进行一些用户干预/确认(这只是一个很好的安全策略,不允许在没有用户干预的情况下自动发生这种情况),希望配对只需要第一次连接发生,以后就不需要任何用户对后续连接进行干预。
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5263144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档