android蓝牙开启的通知,Android蓝牙LE通知的问题

我正在尝试编写一个可以访问Zephyr HxM Smart心脏监护仪的蓝牙LE应用程序.此显示器有几种蓝牙服务,但我对电池服务,心率服务以及具有活动和峰值加速的自定义服务感兴趣.电池电平,(BAT),心率测量(HR)和自定义测量(CUS)各有一个特征. HxM每秒更新一次.

我正在使用Android 4.4的Galaxy S4进行此操作.

它没有按照文档的预期工作.

我最初的做法是:

Read BAT

Set notification for HR

Set notification for CUS.

然后等待回调.设置通知意味着呼叫

BluetoothGatt.setCharacteristicNotification(Characteristic char , boolean enabled)

(也可以对BAT进行通知,但是,规范并不要求支持它.但是,HxM确实支持它.)

这没用.我得到了人力资源的BAT和通知,但不是CUS.如果我取消了第二步,我收到了CUS的通知.我无法得到两者. (这表明我正在正确地阅读这些特征,因此[可能]不是问题.)

我发现一些迹象表明Android的蓝牙堆栈存在同步问题,但没有硬文档.然后我尝试了以下内容:

Read BAT.

Wait for the BAT reading, then set notification for HR,

Get HR, then disable notification for HR, and start notification for CUS.

Get CUS, then disable notification for CUS, and start notification for HR.

And continue to loop.

我得到了BAT,就是这样.

通过反复试验,我发现了以下工作:

Read BAT.

Wait for the BAT reading, then set notification for HR,

Get HR, then start notification for CUS.

Get CUS, then start notification for HR.

And continue to loop.

(与上面相同,但没有禁用通知.)通常,我得到一个HR读数,然后在200毫秒内得到CUS.可以假设它们来自同一更新. (数据中没有时间戳,必须保持简短为LE.)实际上逻辑更复杂,因为在没有预期读数的情况下需要定时器.这个逻辑更加复杂(和比我第一次尝试更容易出错,这就是文档似乎说的恰当.

我已经联系过Zephyr,他们说HxM Smart已经在Windows上进行了广泛测试,并且会同时进行通知.也有迹象表明它可以在iOS上运行.

还有一个我不明白的问题.要获取通知,您必须在本地启用“特征”以通知,例如:

BluetoothGattDescriptor descriptor = characteristic

.getDescriptor(UUID_CLIENT_CHARACTERISTIC_CONFIG);

resSet = descriptor.setValue(BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE);

resWrite = mBluetoothGatt.writeDescriptor(descriptor);

这是每个特征设置,并且只需要在首次接收特征时进行一次.相反,我发现每次设置通知时都必须这样做.这可能会导致事情有足够的时间延迟.我不知道.这种反复试验花费了我很多时间.最好有一个关于它是如何工作的明确陈述.

我应该注意,对于返回结果的所有调用,结果为true(成功).

我为这个冗长的声明道歉.我的问题是:

我找不到任何文档,我必须做所描述的事情.所有迹象都表明您设置了通知并等待回调.有文档,或者这是一个错误,还是一个糟糕的实现? (或者是我的错误?)我特别想知道我必须做的文件在哪里.

其次,还有一个复杂的问题.我试图调试例程,看看代码实际上在做什么.当我到达BluetoothGatt.class时,源代码行与调试堆栈的内容不匹配.因此我假设S4没有使用标准的Android.我不知道从哪里去.令人沮丧的是,虽然我有一些似乎有用的东西,但它很笨拙,几乎肯定不那么健壮.

谢谢你的帮助.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值