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());
}
}
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);
}
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);
}
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));
}
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;
}
Aggregations