Search in sources :

Example 16 with Region

use of org.altbeacon.beacon.Region in project android-beacon-library by AltBeacon.

the class MonitoringStatus method updateNewlyOutside.

public synchronized void updateNewlyOutside() {
    Iterator<Region> monitoredRegionIterator = regions().iterator();
    boolean needsMonitoringStateSaving = false;
    while (monitoredRegionIterator.hasNext()) {
        Region region = monitoredRegionIterator.next();
        RegionMonitoringState state = stateOf(region);
        if (state.markOutsideIfExpired()) {
            needsMonitoringStateSaving = true;
            LogManager.d(TAG, "found a monitor that expired: %s", region);
            state.getCallback().call(mContext, "monitoringData", new MonitoringData(state.getInside(), region).toBundle());
        }
    }
    if (needsMonitoringStateSaving) {
        saveMonitoringStatusIfOn();
    } else {
        updateMonitoringStatusTime(System.currentTimeMillis());
    }
}
Also used : Region(org.altbeacon.beacon.Region)

Example 17 with Region

use of org.altbeacon.beacon.Region in project android-beacon-library by AltBeacon.

the class RangingData method fromBundle.

public static RangingData fromBundle(Bundle bundle) {
    bundle.setClassLoader(Region.class.getClassLoader());
    Region region = null;
    Collection<Beacon> beacons = null;
    if (bundle.get(BEACONS_KEY) != null) {
        beacons = (Collection<Beacon>) bundle.getSerializable(BEACONS_KEY);
    }
    if (bundle.get(REGION_KEY) != null) {
        region = (Region) bundle.getSerializable(REGION_KEY);
    }
    return new RangingData(beacons, region);
}
Also used : Beacon(org.altbeacon.beacon.Beacon) Region(org.altbeacon.beacon.Region)

Example 18 with Region

use of org.altbeacon.beacon.Region in project android-beacon-library by AltBeacon.

the class MonitoringData method fromBundle.

public static MonitoringData fromBundle(Bundle bundle) {
    bundle.setClassLoader(Region.class.getClassLoader());
    Region region = null;
    if (bundle.get(REGION_KEY) != null) {
        region = (Region) bundle.getSerializable(REGION_KEY);
    }
    Boolean inside = bundle.getBoolean(INSIDE_KEY);
    return new MonitoringData(inside, region);
}
Also used : Region(org.altbeacon.beacon.Region)

Example 19 with Region

use of org.altbeacon.beacon.Region in project android-beacon-library by AltBeacon.

the class RangingDataTest method testSerializationBenchmark.

@Test
public // On MacBookPro 2.5 GHz Core I7, 10000 serialization/deserialiation cycles of RangingData took 22ms
void testSerializationBenchmark() throws Exception {
    Context context = RuntimeEnvironment.application;
    ArrayList<Identifier> identifiers = new ArrayList<Identifier>();
    identifiers.add(Identifier.parse("2f234454-cf6d-4a0f-adf2-f4911ba9ffa6"));
    identifiers.add(Identifier.parse("1"));
    identifiers.add(Identifier.parse("2"));
    Region region = new Region("testRegion", identifiers);
    ArrayList<Beacon> beacons = new ArrayList<Beacon>();
    Beacon beacon = new Beacon.Builder().setIdentifiers(identifiers).setRssi(-1).setRunningAverageRssi(-2).setTxPower(-50).setBluetoothAddress("01:02:03:04:05:06").build();
    for (int i = 0; i < 10; i++) {
        beacons.add(beacon);
    }
    RangingData data = new RangingData(beacons, region);
    long time1 = System.currentTimeMillis();
    for (int i = 0; i < 10000; i++) {
        Bundle bundle = data.toBundle();
        RangingData data2 = RangingData.fromBundle(bundle);
    }
    long time2 = System.currentTimeMillis();
    System.out.println("*** Ranging Data Serialization benchmark: " + (time2 - time1));
}
Also used : Context(android.content.Context) Identifier(org.altbeacon.beacon.Identifier) Bundle(android.os.Bundle) ArrayList(java.util.ArrayList) Beacon(org.altbeacon.beacon.Beacon) Region(org.altbeacon.beacon.Region) Test(org.junit.Test)

Example 20 with Region

use of org.altbeacon.beacon.Region in project android-beacon-library by AltBeacon.

the class ScanFilterUtils method createScanFiltersForBeaconParsers.

public List<ScanFilter> createScanFiltersForBeaconParsers(List<BeaconParser> beaconParsers, List<Region> regions) {
    ArrayList<Region> nonNullRegions = new ArrayList<>();
    if (regions == null) {
        nonNullRegions.add(null);
    } else {
        nonNullRegions.addAll(regions);
    }
    List<ScanFilter> scanFilters = new ArrayList<ScanFilter>();
    for (Region region : nonNullRegions) {
        for (BeaconParser beaconParser : beaconParsers) {
            List<ScanFilterData> sfds = createScanFilterDataForBeaconParser(beaconParser, region == null ? null : region.getIdentifiers());
            for (ScanFilterData sfd : sfds) {
                ScanFilter.Builder builder = new ScanFilter.Builder();
                if (sfd.serviceUuid != null) {
                    // Use a 16 bit service UUID in a 128 bit form
                    String serviceUuidString = String.format("0000%04X-0000-1000-8000-00805f9b34fb", sfd.serviceUuid);
                    String serviceUuidMaskString = "FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF";
                    ParcelUuid parcelUuid = ParcelUuid.fromString(serviceUuidString);
                    ParcelUuid parcelUuidMask = ParcelUuid.fromString(serviceUuidMaskString);
                    if (LogManager.isVerboseLoggingEnabled()) {
                        LogManager.d(TAG, "making scan filter for service: " + serviceUuidString + " " + parcelUuid);
                        LogManager.d(TAG, "making scan filter with service mask: " + serviceUuidMaskString + " " + parcelUuidMask);
                    }
                    builder.setServiceUuid(parcelUuid, parcelUuidMask);
                } else if (sfd.serviceUuid128Bit.length != 0) {
                    String serviceUuidString = Identifier.fromBytes(sfd.serviceUuid128Bit, 0, 16, true).toString();
                    String serviceUuidMaskString = "FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF";
                    ParcelUuid parcelUuid = ParcelUuid.fromString(serviceUuidString);
                    ParcelUuid parcelUuidMask = ParcelUuid.fromString(serviceUuidMaskString);
                    if (LogManager.isVerboseLoggingEnabled()) {
                        LogManager.d(TAG, "making scan filter for service: " + serviceUuidString + " " + parcelUuid);
                        LogManager.d(TAG, "making scan filter with service mask: " + serviceUuidMaskString + " " + parcelUuidMask);
                    }
                    builder.setServiceUuid(parcelUuid, parcelUuidMask);
                } else {
                    builder.setServiceUuid(null);
                    builder.setManufacturerData((int) sfd.manufacturer, sfd.filter, sfd.mask);
                    if (LogManager.isVerboseLoggingEnabled()) {
                        LogManager.d(TAG, "making scan filter for manufacturer: " + sfd.manufacturer + " " + sfd.filter);
                    }
                }
                ScanFilter scanFilter = builder.build();
                if (LogManager.isVerboseLoggingEnabled()) {
                    LogManager.d(TAG, "Set up a scan filter: " + scanFilter);
                }
                scanFilters.add(scanFilter);
            }
        }
    }
    return scanFilters;
}
Also used : ParcelUuid(android.os.ParcelUuid) BeaconParser(org.altbeacon.beacon.BeaconParser) ScanFilter(android.bluetooth.le.ScanFilter) ArrayList(java.util.ArrayList) Region(org.altbeacon.beacon.Region)

Aggregations

Region (org.altbeacon.beacon.Region)23 Context (android.content.Context)6 Test (org.junit.Test)6 ArrayList (java.util.ArrayList)4 Beacon (org.altbeacon.beacon.Beacon)4 Bundle (android.os.Bundle)2 IOException (java.io.IOException)2 HashMap (java.util.HashMap)2 ConcurrentHashMap (java.util.concurrent.ConcurrentHashMap)2 BeaconManager (org.altbeacon.beacon.BeaconManager)2 BeaconParser (org.altbeacon.beacon.BeaconParser)2 Identifier (org.altbeacon.beacon.Identifier)2 ScanFilter (android.bluetooth.le.ScanFilter)1 ParcelUuid (android.os.ParcelUuid)1 RemoteException (android.os.RemoteException)1 MainThread (androidx.annotation.MainThread)1 WorkerThread (androidx.annotation.WorkerThread)1 FileInputStream (java.io.FileInputStream)1 FileOutputStream (java.io.FileOutputStream)1 InvalidClassException (java.io.InvalidClassException)1