在BLE制造商数据中,当从字节转换为字符串时,我得到如下数据:
JLG BLE
��������ÿSPH90234380,100084 ,������������������.
即使是从字节到十六进制再到十六进制到字符串的转换,也只能像这样打印。
十六进制格式:
0201608084A4C4720424C45020A0A0FFF5307043734353393600000015FF5307504839303233343338302C3130303038342C00000000000000000000。
在ios中像这样打印制造数据
1.原始数据(Ascii):
53070355 52323031 39313130 33315048 39303233 34333830 2c313030 3038342c
2、字符串值:
SUR201911031PH90234380,100084,
那么在Android中,如何像iOS一样打印原始数据和字符串值呢
我得到这样的扫描结果
ScanResult{device=D6:23:72:02:69:72,scanRecord=scanRecord[mAdvertiseFlags=6,mServiceUuids=null,MmanufacturersSpecificData={1875=[80,72,57,48,50,51,52,51,56,48,44,49,48,48,48,56,52,44]},mServiceData={},mTxPowerLevel=10,mDeviceName=JLG BLE],rssi=-59,TimeStamp=34872779608333,eventType=27,primaryPhy=1,Secondary Aryphy=0,advertisingSid=255,txPower=127,periodicAdvertisingInterval=0}
private ScanCallback mScanCallback = new ScanCallback() {
@Override
public void onScanResult(int callbackType, ScanResult result) {
try {
BluetoothDevice btDevice = result.getDevice();
String name = btDevice.getName();
// Log.d("advertisedData",);
if (name != null && name.equalsIgnoreCase(JLGConstants.BLE_NAME)) {
JLGBluetoothManufacturerData bluetoothManufacturerData = new JLGBluetoothManufacturerData();
bluetoothManufacturerData.setBluetoothDevice(result.getDevice());
bluetoothManufacturerData.setRssi(result.getRssi());
Log.e("address",""+result);
if (bluetoothManufactureDataList.isEmpty()) {
String scanHex = "";
SparseArray<byte[]> advertisedData = result.getScanRecord().getManufacturerSpecificData();
ScanRecord advertisedDataBytes = result.getScanRecord();
Log.d("advertisedData hex format",JLGCommonFunctions.bytesToHex(advertisedDataBytes.getBytes()));
Log.d("advertisedData String format",JLGCommonFunctions.bytesToString(advertisedDataBytes.getBytes()));
}
}
} catch (Exception e) {
JLGCommonFunctions.logExceptions(e);
}
}
@Override
public void onBatchScanResults(List<ScanResult> results) {
/*do nothing*/
}
@Override
public void onScanFailed(int errorCode) {
/*do nothing*/
}
};
以下字节位于Android和iOS上接收的原始数据中:
39303233343338302C3130303038342C
在这一部分之前,您的JLG外设在Android和iOS之间编码不同的制造商数据。
据推测,iOS数据包括外围设备的专用BLE地址,因为使用iOS,不可能通过使用CoreBooth的广告包获得广告BLE外围设备的专用地址。
如果您的应用程序需要唯一标识未知的BLE外围设备,则该标识信息必须由外围设备提供,只要该信息适合广告包。
我是android新手,所以,基本上我正在开发一个应用程序,它可以从ble设备获取数据,以便对其进行进一步的操作。我到目前为止所做的:- 我扫描了设备,得到了它们的rssi和macaddress,但当我试图在回调方法中获取scanRecord时,为了访问制造商数据,我得到了如下sparseArray:- 但是我想要的是这样,
我目前只有一部5.0手机可以测试这个功能(Moto E2 3G在5.0Lollipop上),但我无法在Android 5.0上发布自定义UUID。当我说自定义UUID时,我指的是蓝牙LE规范未预定义的UUID。 在我的Nexus 6 Android 5.1上,一切正常。 当查看广告包的摩托罗拉E2与自定义UUID,这里是什么我可以看到-注意没有关于服务UUID的信息: 如果我在Moto E2上公布
在Lollipop版本中,扫描结果方法返回BLE的所有详细信息,如地址、名称扫描记录、rssi等。我在制造数据字段中广播了一些数据。我尝试使用getScanRecord()。getManufacturersspecificdata()以单独提取制造数据并存储在字符串中,但他们使用了稀疏数组来存储数据。是否有任何方法可以单独从该数组中提取数据。 下面是LOGCAT数据: 12-05 17:31:39
我是android上BLE编程的新手。 在我第一次在android上使用BLE的应用程序中,我遇到了一个大问题。 我使用这个功能从苹果蓝牙耳机获得了一个扫描记录。 @重写公共void onScanResult(int callbackType,ScanResult结果) 我使用Apple corp, ID(0x4C)获得了制造商数据。之后,我不知道如何解码制造商数据。 我想获取蓝牙耳机的辅助信息,
在文章底部加一个广告: 到后台扩展工具->网站广告->添加广告名称 为'portal_article_bottom'的广告,同时加上广告代码; 模板里代码如下: <div> {:sp_getad("portal_article_bottom")} </div>
以下术语是什么意思:A2DP、LE、APTX?