Bluetooth Scanrecord те же значения равны нулю

Я попытался прочитать результат сканирования маяка, пришли некоторые значения, но result.getScanRecord().getServiceUuids() всегда ноль.

И также я не понимаю, как я могу разобрать "result.getScanRecord().getBytes()". Я видел много примеров, но они непонятны или сложны. Мне нужны второстепенные, основные и uuid значения.

Я использую minSdkVersion 21.

1 ответ

Наконец-то я кое-что нашел, может быть, и вам нужно;

во-первых, вам нужно проанализировать данные;

private String[] myFormula(byte[] data) {
    String[] newData = new String[data.length];

    for (int i = 0; i < data.length; i++) {
        if (data[i] > 0) {
            if (Integer.parseInt(data[i] + "", 16) < 9) {
                newData[i] = "0" + Integer.toHexString(data[i]);
            } else {
                newData[i] = Integer.toHexString(data[i]);
            }
        } else {
            newData[i] = Integer.toHexString(data[i] + 256);
        }
    }

    return newData;
}

после того, как вы получите другие данные;

public int getTxPower() {
    Number xx = hexToDec(scanRecord[26]);

    return xx.intValue();
    //return Integer.parseInt(scanRecord[26], 16);
}

public int getMinor() {
    String s = "";
    if (!scanRecord[24].equals("100")) {
        s += scanRecord[24];
    }

    s += scanRecord[25];

    try {
        return Integer.parseInt(s, 16);
    } catch (NumberFormatException e) {
        e.printStackTrace();
        return -1;
    }
}

public int getMajor() {
    String s = "";
    if (!scanRecord[22].equals("100")) {
        s += scanRecord[22];
    }

    s += scanRecord[23];

    try {
        return Integer.parseInt(s, 16);
    } catch (NumberFormatException e) {
        e.printStackTrace();
        return -1;
    }
}

public void get allDatas(){
    scanRecord = myFormula(result.getScanRecord().getBytes());

    MINOR = getMinor();
    MAJOR = getMajor();
    TXPOWER = getTxPower();
}
Другие вопросы по тегам