В данных производителя BLE при преобразовании байтов в String я получаю такие данные:
JLG BLE
ÿS7452396��������ÿSPH90234380,100084, �����������������.
Даже преобразование из байтов в шестнадцатеричное, а затем из шестнадцатеричного в строковую печать только так.
шестнадцатеричный формат:
02010608084A4C4720424C45020A0A0FFF530704373435323339360000000015FF5307504839303233343338302C3130303038342C000000000000000000.
В ios Manufacture данные печатаются вот так
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, mManufacturerSpecificData = {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, timestampNanos = 34872779608333, eventType = 27, primaryPhy = 1, secondaryPhy = 0, AdvertisingSid = 255, txPower = 127, periodAdvertisingInterval = 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*/
}
};