我是android上BLE编程的新手。
在我第一次在android上使用BLE的应用程序中,我遇到了一个大问题。
我使用这个功能从苹果蓝牙耳机获得了一个扫描记录。
@重写公共void onScanResult(int callbackType,ScanResult结果)
我使用Apple corp, ID(0x4C)获得了制造商数据。之后,我不知道如何解码制造商数据。
我想获取蓝牙耳机的辅助信息,如电池信息、方向信息等,但我不知道如何解码制造商数据。
我还搜索了苹果的开发文档(https://developer.apple.com/accessories/Accessory-Design-Guidelines.pdf)但那个指导文件对我没有帮助。
不管怎样,谁能告诉我如何解决这个问题?!!?!谢谢你阅读我的问题。
好的,从您的评论来看,您似乎通过BLE扫描了设备并希望使用它提供的服务之一来获取电池信息等信息。
>
您需要做的第一件事是建立与BLE设备的连接。您粘贴的扫描结果有一个您需要调用的getDevice方法
获取设备后,可以调用其connectGatt方法。这将尝试连接您的手机和BLE设备。
步骤2中的connectGatt方法需要回调。当连接成功或不成功时,回调将触发onConnectionStateChanged。如果成功,它将具有成功状态。此方法还将为您提供我们将在步骤4中使用的gatt设备。
如果步骤3成功,我们可以假设您的手机已连接。我们要做的下一件事是发现服务。您可以使用gatt设备discoverServices方法来实现这一点。
当发现服务时,您的回调将触发ServicesDiscovery。现在,您可以使用服务了。根据耳机的API,他们希望您阅读或订阅服务特性和描述符。由于我不了解API,因此无法进一步帮助您。但最终需要使用以下一个或多个选项:
该值将在返回到您的回调。请记住,在写入/读取/订阅另一个特征或描述符之前,必须等待每个请求的回调。
在BLE制造商数据中,当从字节转换为字符串时,我得到如下数据: JLG BLE ��������ÿSPH90234380,100084 ,������������������. 即使是从字节到十六进制再到十六进制到字符串的转换,也只能像这样打印。 十六进制格式: 0201608084A4C4720424C45020A0A0FFF5307043734353393600000015FF53075048
在Lollipop版本中,扫描结果方法返回BLE的所有详细信息,如地址、名称扫描记录、rssi等。我在制造数据字段中广播了一些数据。我尝试使用getScanRecord()。getManufacturersspecificdata()以单独提取制造数据并存储在字符串中,但他们使用了稀疏数组来存储数据。是否有任何方法可以单独从该数组中提取数据。 下面是LOGCAT数据: 12-05 17:31:39
我是android新手,所以,基本上我正在开发一个应用程序,它可以从ble设备获取数据,以便对其进行进一步的操作。我到目前为止所做的:- 我扫描了设备,得到了它们的rssi和macaddress,但当我试图在回调方法中获取scanRecord时,为了访问制造商数据,我得到了如下sparseArray:- 但是我想要的是这样,
问题内容: 我正在使用Gson对此类进行序列化和反序列化。今天,我不得不在此对象中添加最终的UUID。我没有序列化的问题。我需要强制gson 在反序列化时使用构造函数。我该如何实现? 问题答案: 您可以实现一个自定义的JsonDeserializer并将其注册到GSON。 请记住,此代码尚未经过测试。
下面是关于Seth Ladd博客“Dart”中工厂构造器的使用-试图理解“工厂”构造器值。 在IMHO中,使用通用构造器,可以通过细微的差异实现相同的效果,但非常简单。 如上所示,尽管这两个实例 所以,我的问题是工厂构造函数(或工厂模式)比一般/const构造函数有什么特殊的优点?因为上面的示例代码本身并没有显示工厂构造函数的优点。 谁能解释一下在Dart语言而不是Java / C#中所谓的“工厂
我有一个消息线程用于发送消息缓冲区。一旦成功,每个消息就会排队发送,然后特征就会写入下一条消息。characeeristic还设置为,因此在特征写调用之间消息缓冲区队列非常快(大约0-7毫秒)。 有时我会在中得到一个状态为8的回调,设备超出范围。但这种情况并不总是发生。 消息线程代码: