问题标签 [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.
android - 如何从 location_and_speed 特征中提取经纬度?
在一个扮演核心角色的 Android 应用程序中,您如何获取BLE 外围设备的org.bluetooth.service.location_and_navigation服务中的org.bluetooth.characteristic.location_and_speed特征中存储的纬度和经度?
我正在尝试以下 Java 代码 -
这是设备连接上调用的回调:
发现服务后,我尝试创建服务和特征对象(并验证它们不在null
调试器中):
这是读取特征值时调用的回调:
请问两个问题:
- 我应该将哪些偏移参数传递给上面的getIntValue方法?
- 如何将整数转换为Google Maps Location所需的双精度数?
java - 如何检查是否在特定时间限制内收到蓝牙响应?
我正在开发一个应用蓝牙来与设备通信。我必须向该设备发送某个数据包,并且该设备在一定时间后以通知模式响应我。一切正常,但我必须检查响应是否在 3 秒内到达,如果没有及时到达,我必须发送另一个命令,而不再等待前一个数据包。
我可以通过什么方式在 Android 中实现计时器?
我曾想过: 1- 当我发送数据包时启动计时器 2- 当响应到达我或如果在 3 秒前发送更多消息时停止计时器,计时器会触发功能并启用重新发送其他消息
我想用处理程序和后延迟来做。
你怎么看 ?有没有更好的方法来实现这一点?
也许是 TimerTask ?
android - 当 getBluetoothLeAdvertiser 返回一个对象时,为什么 isMultipleAdvertisementSupported() 返回 false?
我正在尝试在我的设备上使用 BLE 传输。
这是我使用的代码和输出:
我不明白为什么mBluetoothLeAdvertiser
不是null
,因为mBluetoothLeAdvertiser
验证它不是false
:
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 服务器设备支持的功能?
android - Galaxy s6 Android LL:onConnectionStateChange 返回 133 错误状态
我开发了一个应用程序,它必须重新连接到安装在特定设备上的服务器应用程序。我已经在某些设备上测试了我的应用程序,但是在带有 Lollipop 的 Galaxy s6 上我遇到了一些问题。
这是组合:
在最后一个组合中,连接函数返回 133 状态。
这是我的代码:
Kitkat 和 Lollipop 和有什么不一样?我必须以不同的方式处理连接吗?
这是 startscan 和 stopscan 函数:
并在unlock()
我调用连接函数中。
PS:我要连接的设备名称(nexus 6)在 macaddress 变量中。
android - 3个高频率运行的线程使用相同的变量
我正在开发一个 android 应用程序,它高频接收来自 ble 通知的数据,在屏幕上打印数据并将数据发送到其他外围设备。
这是我的情况:
onCharacteristicChanged 回调在 10hz 接收一个名为“ value ”的字节数组,并将数据解包到一些 float 和 int 变量中
与 handlerThread 关联的 Handler 每 30hz 启动一个 Runnable。此可运行对象使用从value解包的变量,将新数据保存在一些变量中并将广播消息发送到 UX
- 每 10hz 的另一个线程使用步骤 1 和 2 中保存的数据对此变量进行一些数学运算并在特征上写入数据。
在上面的步骤中,我保存并使用了 float、double 和 int 变量。
我害怕处理并发,我正在考虑在步骤 2 和 3 中使用相同的处理程序线程来解决并发问题。但是当另一个通知到达时,我认为存在竞争条件问题:/
其他问题: oncharacteristicchanged 在哪个线程执行?
我的问题的更多信息: 在 oncharacteristicchanged 到达新字节数组(以 10hz 频率)中,我在变量中解压缩数据,在其他线程 B(在 30hz)中使用此数据进行一些计算:发送广播到 ux 并将结果保存在其他一些变量;线程 C 使用线程 B 的结果,它进行一些其他计算并以 10hz 写入特性。
oncharacteristicchanged -> 线程 B -> 线程 C
但我不能停止 oncharacteristicchanged 因为我不知道它在哪个线程中执行..
你
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:
android - 新的 Lollipop BLE API 不会检测到所有的广告数据包
我看过一些关于相同问题的帖子,但我无法为我的问题找到解决方案。
我看到新 BLE API 的回调函数 (onScanResult) 仅第一次检测到来自外围设备的广告数据包。我根本看不到后续的数据包。奇怪的是,它只发生在少数设备上。在运行 Lollipop 的 S4 上不会发生这种情况,但我在一加一上看到过这个问题。但是我已经能够使用蓝牙 Gatt 方法连接到外围设备。
我也开始和停止扫描,中间有大约 2 秒的延迟。如果我在 Lollipop 设备上使用旧 API,它似乎工作正常,但扫描似乎要慢得多。
有人对此有解决方案吗?我一直在为这个问题头疼,但无法获得任何线索。任何帮助将不胜感激。
android - Android:BLE 通知如何工作?
在 Android 上,当您想要接收特性更改的 BLE 通知时,您可以使用以下内容:
我的问题是:在gatt.setCharacteristicNotification()
做什么?
我的假设是上面的代码代表:
- 告诉 Android 注意来自特性 X 的通知
- 告诉 BLE 设备开始广播 X 的更改通知
这似乎合乎逻辑,但我还没有在任何地方看到它的文档——相反,文档只是告诉你做我上面写的事情。我想确认setCharacteristicNotification()
这个过程的目的。
bluetooth-lowenergy - 如何在android中读取和写入数据到BLE设备?
我扫描了 BLE 设备及其显示设备名称、RSSI 值和 MAC 地址。
如何检查BLE设备是否有数据?
以及如何从/向 BLE 设备读取和写入数据?
你能给我一个例子吗?