Как читать UDID, Major, Minor маяка на устройствах Android?

Я пытаюсь разработать приложение BLE для Android.

Есть ли способ, с помощью которого я могу обнаружить и прочитать UDID, Major, Minor маяка на устройствах Android?

Я прочитал сервис android-ibeacon RadiusNetworks, но не могу понять, почему:

major = (256 * (0xFF & paramArrayOfByte[(i + 20)]) +
 (0xFF & paramArrayOfByte[(i + 21)]));

какой paramArrayOfByte есть LeScanCallback byte[] scanRecord


person user3136243    schedule 26.12.2013    source источник


Ответы (2)


Когда вы получите byte[] scanRecord из BluetoothAdapter.LeScanCallback, он будет включать заголовки Bluetooth LE, которые могут иметь переменную длину в зависимости от типа iBeacon.

Из-за заголовков переменной длины четыре байта, обозначающие рекламу iBeacon (4c 00 02 15), могут начинаться с третьего байта (scanRecord[2]) до шестого байта (scanRecord[5]). В последний код , Android iBeacon Library находит индексную позицию 4c 00 02 15 в scanRecord и называет ее startByte. Все остальное находится в фиксированном положении относительно этого startByte.

person davidgyoung    schedule 28.12.2013

  1. scanRecord следует анализировать как список структур AD.
  2. iBeacon — это разновидность структур AD.

С помощью nv-bluetooth вы можете извлечь iBeacon следующим образом.

public void onLeScan(BluetoothDevice device, int rssi, byte[] scanRecord)
{
    // Parse the payload of the advertising packet.
    List<ADStructure> structures =
        ADPayloadParser.getInstance().parse(scanRecord);

    // For each AD structure contained in the advertising packet.
    for (ADStructure structure : structures)
    {
        if (structure instanceof IBeacon)
        {
            // iBeacon was found.
            IBeacon iBeacon = (IBeacon)structure;

            // Proximity UUID, major number, minor number and power.
            UUID uuid = iBeacon.getUUID();
            int major = iBeacon.getMajor();
            int minor = iBeacon.getMinor();
            int power = iBeacon.getPower();

            ........

См. "iBeacon как разновидность структур AD." для получения подробной информации.

person Takahiko Kawasaki    schedule 20.03.2015