public void onLeScan(BluetoothDevice device, int rssi, byte[] scanRecord)
{
    // アドバータイジングパケットのペイロードをパースする。
    List<ADStructure> structures =
        ADPayloadParser.getInstance().parse(scanRecord);
 
    // アドバータイジングパケットに含まれる各 AD structure ごとに
    for (ADStructure structure : structures)
    {
        if (structure instanceof EddystoneUID)
        {
            // Eddystone UID
            EddystoneUID es = (EddystoneUID)structure;
            // ビーコン ID (= 名前空間 ID + インスタンス ID)
            // byte[] beaconId = es.getBeaconId();
            String beaconId = es.getBeaconIdAsString();
            // 名前空間 ID
            // byte[] namespaceId = es.getNamespaceId();
            String namespaceId = es.getNamespaceIdAsString();
            // インスタンス ID
            // byte[] instanceId = es.getInstanceId();
            String instanceId = es.getInstanceIdAsString();
            // Tx Power
            int power = es.getTxPower();
        }
        else if (structure instanceof EddystoneURL)
        {
            // Eddystone URL
            EddystoneURL es = (EddystoneURL)structure;
            // URL
            URL url = es.getURL();
            // Tx Power
            int power = es.getTxPower();
        }
        else if (structure instanceof EddystoneTLM)
        {
            // Eddystone TLM
            EddystoneTLM es = (EddystoneTLM)structure;
            // TLM バージョン
            int version = es.getTLMVersion();
            // 電圧
            int voltage = es.getBatteryVoltage();
            // 温度
            float temperature = es.getBeaconTemperature();
            // 電源 ON もしくはリブートからのアドバタイズパケット総数
            long count = es.getAdvertisementCount();
            // 電源 ON もしくはリブートからの経過時間
            long time = es.getElapsedTime();
        }
        else if (structure instanceof IBeacon)
        {
            // ついでに iBeacon も
            IBeacon iBeacon = (IBeacon)structure;
            // メジャー番号
            int major = iBeacon.getMajor();
            // マイナー番号
            int minor = iBeacon.getMinor();
            // Proximity UUID
            UUID uuid = iBeacon.getUUID();
            // Tx Power
            int power = iBeacon.getPower();
        }
    }
}
nv-bluetooth を使うには、build.gradle の dependencies ブロックに次の行を追加すればよい。
compile 'com.neovisionaries:nv-bluetooth:1.7'
参考リンク
- nv-bluetooth
- nv-bluetooth の JavaDoc
- Eddystone
- Eddystone UID
- Eddystone URL
- Eddystone TLM
- Bluetooth: Specification Adopted Documents
 
