问题标签 [android-ble]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
893 浏览

android - 如何从 location_and_speed 特征中提取经纬度?

在一个扮演核心角色的 Android 应用程序中,您如何获取BLE 外围设备的org.bluetooth.service.location_and_navigation服务中的org.bluetooth.characteristic.location_and_speed特征中存储的纬度和经度?

我正在尝试以下 Java 代码 -

这是设备连接上调用的回调:

发现服务后,我尝试创建服务和特征对象(并验证它们不在null调试器中):

这是读取特征值时调用的回调:

请问两个问题:

  1. 我应该将哪些偏移参数传递给上面的getIntValue方法?
  2. 如何将整数转换为Google Maps Location所需的双精度数?
0 投票
1 回答
470 浏览

java - 如何检查是否在特定时间限制内收到蓝牙响应?

我正在开发一个应用蓝牙来与设备通信。我必须向该设备发送某个数据包,并且该设备在一定时间后以通知模式响应我。一切正常,但我必须检查响应是否在 3 秒内到达,如果没有及时到达,我必须发送另一个命令,而不再等待前一个数据包。

我可以通过什么方式在 Android 中实现计时器?

我曾想过: 1- 当我发送数据包时启动计时器 2- 当响应到达我或如果在 3 秒前发送更多消息时停止计时器,计时器会触发功能并启用重新发送其他消息

我想用处理程序和后延迟来做。

你怎么看 ?有没有更好的方法来实现这一点?

也许是 TimerTask ?

0 投票
1 回答
4958 浏览

android - 当 getBluetoothLeAdvertiser 返回一个对象时,为什么 isMultipleAdvertisementSupported() 返回 false?

我正在尝试在我的设备上使用 BLE 传输。

这是我使用的代码和输出:

我不明白为什么mBluetoothLeAdvertiser不是null,因为mBluetoothLeAdvertiser验证它不是false

0 投票
0 回答
994 浏览

android - 在 Android BLE 中读取 BluetoothGattDescriptor 内容的简单方法

我正在尝试BluetoothGattDescriptor在 Android 中获取 a 的内容。

我可以阅读BluetoothGattCharacteristic返回描述符的内容。

当我尝试以这种方式阅读它们时:

我可以看到一个字符串值“Characteristic 1”

我尝试使用BluetoothGattCharacteristic.getProperties()应该返回此特性的属性。根据 android API 的解释是,"The properties contain a bit mask of property flags indicating the features of this characteristic."如果我这样做,我会得到10. 我没有使用的经验"BLE",尤其是使用bitmask flags.

是否有更简单的方法来读取 BLE 服务器设备支持的功能?

0 投票
0 回答
1143 浏览

android - Galaxy s6 Android LL:onConnectionStateChange 返回 133 错误状态

我开发了一个应用程序,它必须重新连接到安装在特定设备上的服务器应用程序。我已经在某些设备上测试了我的应用程序,但是在带有 Lollipop 的 Galaxy s6 上我遇到了一些问题。

这是组合:

在最后一个组合中,连接函数返回 133 状态。

这是我的代码:

Kitkat 和 Lollipop 和有什么不一样?我必须以不同的方式处理连接吗?

这是 startscan 和 stopscan 函数:

并在unlock()我调用连接函数中。

PS:我要连接的设备名称(nexus 6)在 macaddress 变量中。

0 投票
1 回答
254 浏览

android - 3个高频率运行的线程使用相同的变量

我正在开发一个 android 应用程序,它高频接收来自 ble 通知的数据,在屏幕上打印数据并将数据发送到其他外围设备。

这是我的情况:

  1. onCharacteristicChanged 回调在 10hz 接收一个名为“ value ”的字节数组,并将数据解包到一些 float 和 int 变量中

  2. 与 handlerThread 关联的 Handler 每 30hz 启动一个 Runnable。此可运行对象使用从value解包的变量,将新数据保存在一些变量中并将广播消息发送到 UX

  3. 每 10hz 的另一个线程使用步骤 1 和 2 中保存的数据对此变量进行一些数学运算并在特征上写入数据。

在上面的步骤中,我保存并使用了 float、double 和 int 变量。

我害怕处理并发,我正在考虑在步骤 2 和 3 中使用相同的处理程序线程来解决并发问题。但是当另一个通知到达时,我认为存在竞争条件问题:/

其他问题: oncharacteristicchanged 在哪个线程执行?

我的问题的更多信息: 在 oncharacteristicchanged 到达新字节数组(以 10hz 频率)中,我在变量中解压缩数据,在其他线程 B(在 30hz)中使用此数据进行一些计算:发送广播到 ux 并将结果保存在其他一些变量;线程 C 使用线程 B 的结果,它进行一些其他计算并以 10hz 写入特性。

oncharacteristicchanged -> 线程 B -> 线程 C

但我不能停止 oncharacteristicchanged 因为我不知道它在哪个线程中执行..

0 投票
3 回答
3096 浏览

android - Android: adding ScanCallback gives me "Unfortunately, App has stopped." can't find MainActivity

I am very new to android dev. I've watched a few youtube video's and read some documentation. Today is like day 5, so be patient with me. I am trying to build a BluetoothLE app. I stole some code from here, but when I try to run in on my device. I get a "Unfortunately, (app name) has stopped" message. After commenting out different blocks of code I have pinned it down to the declaration of:

If I include that line, it crashes. If I don't, then it lives. Here is the full Java Class:

LogCat errors:

0 投票
0 回答
184 浏览

android - 新的 Lollipop BLE API 不会检测到所有的广告数据包

我看过一些关于相同问题的帖子,但我无法为我的问题找到解决方案。

我看到新 BLE API 的回调函数 (onScanResult) 仅第一次检测到来自外围设备的广告数据包。我根本看不到后续的数据包。奇怪的是,它只发生在少数设备上。在运行 Lollipop 的 S4 上不会发生这种情况,但我在一加一上看到过这个问题。但是我已经能够使用蓝牙 Gatt 方法连接到外围设备。

我也开始和停止扫描,中间有大约 2 秒的延迟。如果我在 Lollipop 设备上使用旧 API,它似乎工作正常,但扫描似乎要慢得多。

有人对此有解决方案吗?我一直在为这个问题头疼,但无法获得任何线索。任何帮助将不胜感激。

0 投票
0 回答
1022 浏览

android - Android:BLE 通知如何工作?

在 Android 上,当您想要接收特性更改的 BLE 通知时,您可以使用以下内容:

我的问题是:在gatt.setCharacteristicNotification()做什么?

我的假设是上面的代码代表:

  1. 告诉 Android 注意来自特性 X 的通知
  2. 告诉 BLE 设备开始广播 X 的更改通知

这似乎合乎逻辑,但我还没有在任何地方看到它的文档——相反,文档只是告诉你做我上面写的事情。我想确认setCharacteristicNotification()这个过程的目的。

0 投票
0 回答
367 浏览

bluetooth-lowenergy - 如何在android中读取和写入数据到BLE设备?

我扫描了 BLE 设备及其显示设备名称、RSSI 值和 MAC 地址。

如何检查BLE设备是否有数据?

以及如何从/向 BLE 设备读取和写入数据?

你能给我一个例子吗?