public void onLeScan(BluetoothDevice device, int rssi, byte[] scanRecord) { // Parse the payload part of an advertisement packet. List<ADStructure> structures = ADPayloadParser.getInstance().parse(scanRecord); // For each AD structure contained in the packet. for (ADStructure structure : structures) { if (structure instanceof EddystoneUID) { // Eddystone UID EddystoneUID es = (EddystoneUID)structure; // Beacon ID (= Namespace ID + Instance ID) // byte[] beaconId = es.getBeaconId(); String beaconId = es.getBeaconIdAsString(); // Namespace ID // byte[] namespaceId = es.getNamespaceId(); String namespaceId = es.getNamespaceIdAsString(); // Instance 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 Version int version = es.getTLMVersion(); // Battery Voltage int voltage = es.getBatteryVoltage(); // Beacon Temperature float temperature = es.getBeaconTemperature(); // The number of advertisement packets since power-on or reboot. long count = es.getAdvertisementCount(); // The elapsed time since power-on or reboot. long time = es.getElapsedTime(); } else if (structure instanceof IBeacon) { // In passing, iBeacon IBeacon iBeacon = (IBeacon)structure; // Major Number int major = iBeacon.getMajor(); // Minor Number int minor = iBeacon.getMinor(); // Proximity UUID UUID uuid = iBeacon.getUUID(); // Tx Power int power = iBeacon.getPower(); } } }
All you need to do to use nv-bluetooth is to add one line shown below into dependencies block in build.gradle.
compile 'com.neovisionaries:nv-bluetooth:1.6'
Links
- nv-bluetooth
- nv-bluetooth JavaDoc
- Eddystone
- Eddystone UID
- Eddystone URL
- Eddystone TLM
- Bluetooth: Specification Adopted Documents