Allows Android apps to interact with BLE beacons

Overview

Android Beacon Library

Build Status

An Android library providing APIs to interact with beacons. Please visit the project website for how to use this library.

IMPORTANT: By default, this library will only detect beacons meeting the AltBeacon specification.

If you want this library to work with proprietary or custom beacons, see the BeaconParser class.

What does this library do?

It allows Android devices to use beacons much like iOS devices do. An app can request to get notifications when one or more beacons appear or disappear. An app can also request to get a ranging update from one or more beacons at a frequency of approximately 1Hz.

Documentation

The project website has full documentation including Javadocs.

Changes from the 0.x library version

This library has changed significantly from the 0.x library version and is now designed to work with open AltBeacons which fully support Android without any intellectual property restrictions. For more information on how to migrate projects using the 0.x APIs to the 2.x APIs, see API migration.

Downloads

Binary

You may download binary releases here.

JCenter

Add JCenter to your build file's list of repositories.

repositories {
    jcenter()
}

to use the JCenter Repository

dependencies {
    ...
    implementation 'org.altbeacon:android-beacon-library:${altbeacon.version}'
    ...
}

replacing ${altbeacon.version} with the version you wish to use.

How to build this Library

This project uses an AndroidStudio/gradle build system and is known working with Android Studio 3.4.1 and Gradle 5.1.1

Key Gradle build targets:

./gradlew test # run unit tests
./gradlew build # development build
./gradlew release -Prelease # release build

License

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

This software is available under the Apache License 2.0, allowing you to use the library in your applications.

If you want to help with the open source project, contact [email protected]

Publishing to Maven

The following instructions are for project administrators.

  1. Upload you Sonotype signing keypair to Bintray

  2. Configure your ~/.gradle/gradle.properties with:

     signing.keyId=<my key id>
     signing.password=<my passphrase>
     signing.secretKeyRingFile=~/.gnupg/secring.gpg
     signingPassword=<my passphrase>
     
     bintrayUserName=<bintray username>
     bintrayKey=<bintray api key>
    
  3. Run the build and upload

     git tag <version>
     git push --tags 
     ./gradlew release -Prelease
     ./gradlew bintrayUpload -Prelease
    
  4. Log in to JCenter, hit the button to publish the release, then select the Maven tab and enter your credentials to Sync to Maven

Comments
  • Android O 8.0  java.lang.OutOfMemoryError:

    Android O 8.0 java.lang.OutOfMemoryError:

    Expected behavior

    Same behavior or other devices

    Actual behavior

    I see an error and a store ANR.

    Steps to reproduce this behavior

    use a Google Pixel (sailfish), 4096MB RAM, Android 8.0 or Sony Xperia XZ1 (G8341), 4096MB RAM, Android 8.0

    Mobile device model and OS version

    use a Google Pixel (sailfish), 4096MB RAM, Android 8.0 or Sony Xperia XZ1 (G8341), 4096MB RAM, Android 8.0

    Android Beacon Library version

    2.12.2 IMPORTANT: This forum is reserved for feature requests or reproducible bugs with the library itself. If you need help with using the library with your project, please open a new question on StackOverflow.com.

    java.lang.OutOfMemoryError: at java.lang.Thread.nativeCreate (Thread.java) at java.lang.Thread.start (Thread.java:733) at java.util.concurrent.ThreadPoolExecutor.addWorker (ThreadPoolExecutor.java:970) at java.util.concurrent.ThreadPoolExecutor.execute (ThreadPoolExecutor.java:1377) at android.os.AsyncTask.executeOnExecutor (AsyncTask.java:651) at org.altbeacon.beacon.service.ScanHelper.processScanResult (ScanHelper.java:125) at org.altbeacon.beacon.service.ScanHelper$1.onLeScan (ScanHelper.java:207) at org.altbeacon.beacon.service.scanner.CycledLeScannerForLollipop$4.onScanResult (CycledLeScannerForLollipop.java:300) at android.bluetooth.le.BluetoothLeScanner$BleScanCallbackWrapper$1.run (BluetoothLeScanner.java:464) at android.os.Handler.handleCallback (Handler.java:789) at android.os.Handler.dispatchMessage (Handler.java:98) at android.os.Looper.loop (Looper.java:164) at android.app.ActivityThread.main (ActivityThread.java:6541) at java.lang.reflect.Method.invoke (Method.java) at com.android.internal.os.Zygote$MethodAndArgsCaller.run (Zygote.java:240) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:767)

    opened by MrD0llaro 44
  • java.lang.IllegalStateException in android.bluetooth.le.BluetoothLeUtils.checkAdapterStateOn

    java.lang.IllegalStateException in android.bluetooth.le.BluetoothLeUtils.checkAdapterStateOn

    Expected behavior

    Exception to be caught by library, in event of unusual IllegalStateException

    Actual behavior

    Exception not caught and causes app crash.

    java.lang.IllegalStateException: BT Adapter is not turned ON
    at android.bluetooth.le.BluetoothLeUtils.checkAdapterStateOn(BluetoothLeUtils.java:136)
    at android.bluetooth.le.BluetoothLeScanner$1.handleMessage(BluetoothLeScanner.java:85)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:168)
    at android.app.ActivityThread.main(ActivityThread.java:5885)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:687)
    

    Steps to reproduce this behavior

    Exact sequence not found but appears to be happening predominantly on HTC devices on app start. This has been reported from two apps we are involved with. Additionally, found the same issue reported on http://stackoverflow.com/q/37965687/5580666

    Mobile device model and OS version

    Description from one of the app teams:

    "It seems that there is some problem with some new HTC phones (like htc one_e8 dual sim) that are running latest Android 6.0. Possibly this is bug in their firmware. This bug is on the 6th place with total crashes of 147.

    It probably causes app to crash on start, so It's not possible for users to use the app when bluetooth is turned on. It's reported even in Google Play."

    Android Beacon Library version

    Seen in version 2.6.1 in the two apps we are involved with and also reported in version 2.7 on http://stackoverflow.com/q/37965687/5580666

    IMPORTANT: This forum is reserved for feature requests or reproducible bugs with the library itself. If you need help with using the library with your project, please open a new question on StackOverflow.com.

    opened by catchmartin 40
  • BLE Scanning Broken on Nexus 5 with Android 6.0

    BLE Scanning Broken on Nexus 5 with Android 6.0

    nexus 5 android 6.0

    I get an empty list beacons when call didRangeBeaconsInRegion. This happened after the upgrade to Android 6.0. Before that, everything worked FINE. Add a permission android.permission.ACCESS_COARSE_LOCATION in the manifest, but not helped

    edit: also set app https://play.google.com/store/apps/details?id=com.radiusnetworks.locate Does not work. Previously worked well.

    opened by evansgelist 37
  • didEnterRegion sometimes not firing

    didEnterRegion sometimes not firing

    Expected behavior

    didEnterRegion to call any time I enter the region from an exited state.

    Actual behavior

    didEnterRegion is sometimes not getting called (seemingly randomly).

    Steps to reproduce this behavior

    Unplug my Beacon. Wait for about ~10 minutes until I have gotten a didExitRegion event. Plug the Beacon back in and my didEnterRegion only fires sometimes.

    Mobile device model and OS version

    Samsung Galaxy S7 on Android 8.0

    Android Beacon Library version

    v 2.16.1

    Here is some debug logs from around the time I plugged the Beacon back in... https://pastebin.com/raw/JtERQ1N8

    Specifically, I had unplugged the Beacon at 14:00:00, a few minutes before the logs start. I plugged the Beacon back in around 14:07:58. Interestingly, you can see that it is trying to notify me that we have entered, I just never get the entry event...

    "2019-02-22 14:07:58.219 5114-24731/com.simpleinout.android D/Callback: attempting callback via local broadcast intent: org.altbeacon.beacon.monitor_notification"

    The Beacon remains plugged in for the remainder of the logs.

    If I unplug the Beacon I get the didExitRegion event (despite didEnterRegion never getting called). I have never had any issues with didExitRegion firing, only didEnterRegion.

    Let me know if you need any implementation details.

    Thanks!

    opened by stephenruda 34
  • Ranging is not available when screen is off (Galaxy note 9, Android 8.1)

    Ranging is not available when screen is off (Galaxy note 9, Android 8.1)

    Expected behavior

    Should be able to Range beacons when the screen is off.

    Actual behavior

    The size of the beacon list is zero, even though there is an beacon enabled around the device.

    Steps to reproduce this behavior

    1. Just setup beacon scanning at 'onCreate' of my project mBeaconManager = BeaconManager.getInstanceForApplication(this.mContext); BeaconManager.setDebug(true); mBeaconManager.getBeaconParsers().add(new BeaconParser().setBeaconLayout(I_BEACON_LAYOUT)); if (!mBeaconManager.isAnyConsumerBound()) { Log.d(TAG,"there is no consumer bound, bind new consumer"); mBeaconManager.bind(this);

               Log.i(TAG, "Using [Android Beacon Library v" + org.altbeacon.beacon.BuildConfig.VERSION_NAME + "]");
           } else {
               Log.d(TAG,"there are consumer already bound!");
           }
      
    2. Start ranging Beacon at 'onBeaconServiceConnect' try { mBeaconManager.startRangingBeaconsInRegion(new Region("com.example.myapp.boostrapRegion", null, null,null)); } catch (RemoteException e) { Log.e(TAG, "startRangingBeaconsInRegion exception!!!" + e); }

    3. When screen is off, size of beacon list is always zero. At callback 'didRangeBeaconsInRegion'

    p.s. Ranging activity of your reference app always call 'onPause' when screen is off. So I couldn't reproduce with reference app.

    Mobile device model and OS version

    Samsung Galaxy Note 9 (SM-N960N), OS version : 8.1.0 (O_MR)

    Android Beacon Library version

    Library version 2.15.2

    Log_ranging_not_available_screen_off.txt

    I've attached full log. Thank you.

    IMPORTANT: This forum is reserved for feature requests or reproducible bugs with the library itself. If you need help with using the library with your project, please open a new question on StackOverflow.com.

    opened by wodnd23 33
  • org.altbeacon.beacon.service.MonitoringStatus org.altbeacon.beacon.service.ScanState.getMonitoringStatus()

    org.altbeacon.beacon.service.MonitoringStatus org.altbeacon.beacon.service.ScanState.getMonitoringStatus()

    "androidversion":"8.0.0","brand":"HUAWEI HONOR DUK-AL20",

    Android 2.16.2

    error

    error

    E/JobServiceEngine: Application unable to handle onStopJob. java.lang.NullPointerException: Attempt to invoke virtual method 'org.altbeacon.beacon.service.MonitoringStatus org.altbeacon.beacon.service.ScanState.getMonitoringStatus()' on a null object reference at org.altbeacon.beacon.service.ScanJob.startPassiveScanIfNeeded(ScanJob.java:139) at org.altbeacon.beacon.service.ScanJob.onStopJob(ScanJob.java:171) at android.app.job.JobService$1.onStopJob(JobService.java:76) at android.app.job.JobServiceEngine$JobHandler.handleMessage(JobServiceEngine.java:117) at android.os.Handler.dispatchMessage(Handler.java:108) at android.os.Looper.loop(Looper.java:166) at android.app.ActivityThread.main(ActivityThread.java:7425) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:245) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:921)

    opened by AiPacinoDebug 30
  • Android N Repeat Region Exit/Entry Events

    Android N Repeat Region Exit/Entry Events

    As of Android N, DP4:

    We’ve changed the BLE Scanning behavior starting in DP4. We’ll prevent applications from starting and stopping scans more than 5 times in 30 seconds. For long running scans, we’ll convert them into opportunistic scans.

    https://developer.android.com/preview/support.html

    With default settings, scanning is stopped and restarted every 1.1 seconds in the foreground (needed for older Bluetooth chipsets and stacks, mostly on devices running older Android version, that only deliver one advertisement callback per device per scan cycle. Because mostly older devices behave this way, this regular scan restarting probably not needed for devices running Android N.)

    The problem happens on Android N because after 5.5 seconds, (5 scan restarts within 30 seconds) scans get blocked for the next 24.5 seconds, causing a region exit because no beacon packets are detected in that time. After 30 seconds, a scan succeeds in starting and a new packet detection causes a new entry event.

    Proposed solution is to detect if running on Android N, and if so, don't stop scans so frequently, and instead simply continue scanning.

    opened by davidgyoung 30
  • Expedite Samsung Screen Off Detections

    Expedite Samsung Screen Off Detections

    This change is designed to solve the problem reported in #936 where a Samsung Device will be slow do detect a beacon (it will take an extra full scan period) if the app is put to the background with the screen on, then subsequently the screen goes off.

    This is caused by the fact that an empty scan filter is set up when the app is pushed to the background, then disallowed by Samsung once the screen goes off. The required non-empty screen off scan filter is not set up until the next scan cycle ends.

    The solution is to start a BroadcastReceiver on Samsung devices for this case to look for screen off events before the next scan cycle starts. If a screen off is detected, switch immediately to a non-empty scan filter.

    This is a work in progress as I have not yet tested it on a Samsung device.

    opened by davidgyoung 28
  • Lollipop long period scan broke phone's Bluetooth

    Lollipop long period scan broke phone's Bluetooth

    In order to test if my beacons signal was stable enough, I let them on contact all night long with 2 phones, one on Android 4.4, the other on Android 5.1.1 Below is my scanning service code...

    In the morning the Android 4.4 was still scanning successfully the beacons. But the Android 5.1.1 stopped after 8 consecutive hours, and I have this repeating in the logs :

    09-19 06:42:11.914: E/CycledLeScannerForLollipop(11355): Scan Failed
    09-19 06:42:18.964: I/MonitorService(11355): didRangeBeaconsInRegion, number of beacons detected = 0
    09-19 06:42:18.970: E/CycledLeScannerForLollipop(11355): Scan Failed
    09-19 06:42:26.059: I/MonitorService(11355): didRangeBeaconsInRegion, number of beacons detected = 0
    

    Worst than this : the Bluetooth of the Android 5.1.1 device is broken... I can no longer activate it / deactivate it, and neither of the connected devices (headset etc.) can connect to it. Even if I restart my App. Even if I uninstall my App (just to be sure...)...

    So at the end it looks like it broke the Bluetooth of this phone... and the Bluetooth came back only after rebooting the device.

    Is there any precaution to take when scanning continuously beacons ? (for example maybe interrupting sometimes the scan could make it more stable ?? I have no idea what is playing behind the scene here...)

    Thanks for your feedback

    public class MonitorService extends Service implements BeaconConsumer 
    {
    
        protected static final String TAG = "MonitorService";
        private BeaconManager beaconManager;
    
    
        @Override
        public void onCreate() 
        {
            super.onCreate();
    
            beaconManager = BeaconManager.getInstanceForApplication(this);
            beaconManager.getBeaconParsers().add(new BeaconParser().
                    setBeaconLayout("m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24"));
    
            beaconManager.setForegroundScanPeriod(5000l);
            beaconManager.setBackgroundScanPeriod(5000l);
            beaconManager.setForegroundBetweenScanPeriod(1100l);
            beaconManager.setBackgroundBetweenScanPeriod(1100l);
    
            setupBeaconManager();
        }
    
    
        private void setupBeaconManager()
        {
            if (!beaconManager.isBound(this))
                beaconManager.bind(this);
        }
    
    
        private void unsetBeaconManager()
        {
            if (beaconManager.isBound(this))
            {
                beaconManager.unbind(this);
                try 
                {
                    beaconManager.stopRangingBeaconsInRegion(new Region("apr", null, null, null));
                } 
                catch (RemoteException e) 
                {  
                    Log.i(TAG, "RemoteException = "+e.toString());
                }
            }
        }
    
    
        @Override
        public void onBeaconServiceConnect() 
        {
            beaconManager.setRangeNotifier(new RangeNotifier() {
                @Override 
                public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) 
                {
                    Log.i(TAG,"didRangeBeaconsInRegion, number of beacons detected = "+beacons.size());
                }
            });
    
            try 
            {
                beaconManager.startRangingBeaconsInRegion(new Region("apr", null, null, null));
            } 
            catch (RemoteException e) 
            {  
                Log.i(TAG, "RemoteException = "+e.toString());
            }
        }
    
        @Override
        public void onDestroy() 
        {
            unsetBeaconManager();
            super.onDestroy();
        }
    }
    
    opened by jbarmanet 26
  • Not seeing beacons after App is killed - ACTION_POWER_CONNECTED

    Not seeing beacons after App is killed - ACTION_POWER_CONNECTED

    Hi,

    I have read this on StackOverflow :

    1. The app has been installed but never launched
    2. The app has been launched once but since rebooted
    3. The app has been killed from the task switcher Using the code above, here is the expected behavior in each case:

    The app will not be running and cannot auto-launch the Activity. The app will start scanning for beacons periodically after boot and will launch the Activity when one is detected. The app will not be running and cannot auto-launch until charger connect/disconnect or reboot. After that time, behavior is as in (2). More details on this case are available here.

    And my current behavior is in case (3), and when the app is killed, and the charger is disconnected and reconnected, it doesnt start the app again, nor does it re-detect the beacons.

    I looked through the logcat,

    10-21 15:00:21.013 W/ActivityManager( 951): Scheduling restart of crashed service /org.altbeacon.beacon.service.BeaconService in 1000ms 10-21 15:00:22.133 I/BeaconService(11088): beaconService version 2.0-beta3 is starting up'

    And the logcat stopped showing any more logs from BeaconService.

    opened by cokeby190 25
  • Not receiving advertisements when screen off on older Samsung phones?

    Not receiving advertisements when screen off on older Samsung phones?

    Using the reference application and viewing adb, I seem to infrequently receive advertisements when the phone screen is off. I've seen this happen on my S6 and S7 but not with the exact same app on my S10.

    The S6 and S7 are running Android 6 and 7. The adverts seem to not come in around 5 seconds or so after the screen turns off but then I sometimes get events every 5 seconds or so after the continuous scans stop.

    The only code I have modified is adding a beacon parser with this info. This seems to work fine as when the screen is on I can clearly see advertisments come in.

    mHardwareAssistManufacturers = new int[] {0x0551};
    this.setBeaconLayout("m:0-1=5105,i:0-1,p:1-1");
    this.mIdentifier = "sylerobeacon";
    

    And this to enable continuous scans.

    beaconManager.setEnableScheduledScanJobs(false);
    beaconManager.setBackgroundBetweenScanPeriod(0);
    beaconManager.setBackgroundScanPeriod(1000);
    

    I also don't see anything obviously wrong with any log messages.

    Here are the messages when the device is slept. The device was sending out advertisements more than one time per second and once I slept, they came very infrequently. The target device is here the sylero one.

    2019-08-03 18:44:59.030 31910-31919/org.altbeacon.beaconreference D/ScanRecord: parseFromBytes
    2019-08-03 18:44:59.030 31910-31919/org.altbeacon.beaconreference D/ScanRecord: first manudata for manu ID
    2019-08-03 18:44:59.031 31910-31910/org.altbeacon.beaconreference D/CycledLeScannerForLollipop: got record
    2019-08-03 18:44:59.042 31910-32628/org.altbeacon.beaconreference D/BeaconParser: Ignoring pdu type 01
    2019-08-03 18:44:59.042 31910-32628/org.altbeacon.beaconreference D/BeaconParser: Processing pdu type FF: 02011a1bff75004204012076180700020100000000000000000000000000001e085b54565d2053616d73756e67204672616d652053657269657320283635 with startIndex: 5, endIndex: 30
    2019-08-03 18:44:59.043 31910-32628/org.altbeacon.beaconreference D/BeaconParser: This is not a matching Beacon advertisement. (Was expecting 51 05.  The bytes I see are: 02011a1bff75004204012076180700020100000000000000000000000000001e085b54565d2053616d73756e67204672616d652053657269657320283635
    2019-08-03 18:44:59.481 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Done with scan cycle
    2019-08-03 18:44:59.481 31910-31910/org.altbeacon.beaconreference D/ScanHelper: Beacon simulator not enabled
    2019-08-03 18:44:59.489 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Not stopping scanning.  Device capable of multiple indistinct detections per scan.
    2019-08-03 18:44:59.489 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: starting a new scan cycle
    2019-08-03 18:44:59.489 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: We are already scanning and have been for 542902 millis
    2019-08-03 18:44:59.490 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Waiting to stop scan cycle for another 1000 milliseconds
        
        --------- beginning of system
    2019-08-03 18:44:59.505 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Set a wakeup alarm to go off in 300000 ms: PendingIntent{38c2293: android.os.BinderProxy@5e5b2d0}
    2019-08-03 18:44:59.505 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Scan started
    2019-08-03 18:45:00.507 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Done with scan cycle
    2019-08-03 18:45:00.507 31910-31910/org.altbeacon.beaconreference D/ScanHelper: Beacon simulator not enabled
    2019-08-03 18:45:00.515 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Not stopping scanning.  Device capable of multiple indistinct detections per scan.
    2019-08-03 18:45:00.516 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: starting a new scan cycle
    2019-08-03 18:45:00.516 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: We are already scanning and have been for 543929 millis
    2019-08-03 18:45:00.517 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Waiting to stop scan cycle for another 1000 milliseconds
    2019-08-03 18:45:00.535 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Set a wakeup alarm to go off in 300000 ms: PendingIntent{38c2293: android.os.BinderProxy@5e5b2d0}
    2019-08-03 18:45:00.535 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Scan started
    2019-08-03 18:45:01.538 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Done with scan cycle
    2019-08-03 18:45:01.538 31910-31910/org.altbeacon.beaconreference D/ScanHelper: Beacon simulator not enabled
    2019-08-03 18:45:01.548 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Not stopping scanning.  Device capable of multiple indistinct detections per scan.
    2019-08-03 18:45:01.548 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: starting a new scan cycle
    2019-08-03 18:45:01.548 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: We are already scanning and have been for 544961 millis
    2019-08-03 18:45:01.549 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Waiting to stop scan cycle for another 1000 milliseconds
    2019-08-03 18:45:01.571 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Set a wakeup alarm to go off in 300000 ms: PendingIntent{38c2293: android.os.BinderProxy@5e5b2d0}
    2019-08-03 18:45:01.571 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Scan started
    2019-08-03 18:45:02.574 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Done with scan cycle
    2019-08-03 18:45:02.574 31910-31910/org.altbeacon.beaconreference D/ScanHelper: Beacon simulator not enabled
    2019-08-03 18:45:02.584 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Not stopping scanning.  Device capable of multiple indistinct detections per scan.
    2019-08-03 18:45:02.585 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: starting a new scan cycle
    2019-08-03 18:45:02.585 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: We are already scanning and have been for 545998 millis
    2019-08-03 18:45:02.585 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Waiting to stop scan cycle for another 1000 milliseconds
    2019-08-03 18:45:02.614 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Set a wakeup alarm to go off in 300000 ms: PendingIntent{38c2293: android.os.BinderProxy@5e5b2d0}
    2019-08-03 18:45:02.614 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Scan started
    2019-08-03 18:45:03.616 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Done with scan cycle
    2019-08-03 18:45:03.616 31910-31910/org.altbeacon.beaconreference D/ScanHelper: Beacon simulator not enabled
    2019-08-03 18:45:03.623 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Not stopping scanning.  Device capable of multiple indistinct detections per scan.
    2019-08-03 18:45:03.627 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: starting a new scan cycle
    2019-08-03 18:45:03.627 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: We are already scanning and have been for 547040 millis
    2019-08-03 18:45:03.627 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Waiting to stop scan cycle for another 1000 milliseconds
    2019-08-03 18:45:03.641 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Set a wakeup alarm to go off in 300000 ms: PendingIntent{38c2293: android.os.BinderProxy@5e5b2d0}
    2019-08-03 18:45:03.641 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Scan started
    2019-08-03 18:45:03.831 31910-31924/org.altbeacon.beaconreference D/ScanRecord: parseFromBytes
    2019-08-03 18:45:03.833 31910-31924/org.altbeacon.beaconreference D/ScanRecord: first manudata for manu ID
    2019-08-03 18:45:03.834 31910-31910/org.altbeacon.beaconreference D/CycledLeScannerForLollipop: got record
    2019-08-03 18:45:03.837 31910-32602/org.altbeacon.beaconreference D/BeaconParser: Ignoring pdu type 01
    2019-08-03 18:45:03.839 31910-32602/org.altbeacon.beaconreference D/BeaconParser: Processing pdu type FF: 0201061bff510503d81247ad78424da3afaf51f4901bc94b0000001f1c010100000000000000000000000000000000000000000000000000000000000000 with startIndex: 5, endIndex: 30
    2019-08-03 18:45:03.842 31910-32602/org.altbeacon.beaconreference D/BeaconParser: This is a recognized beacon advertisement -- 51 05 seen
    2019-08-03 18:45:03.845 31910-32602/org.altbeacon.beaconreference D/BeaconParser: Bytes are: 0201061bff510503d81247ad78424da3afaf51f4901bc94b0000001f1c010100000000000000000000000000000000000000000000000000000000000000
    2019-08-03 18:45:03.859 31910-32602/org.altbeacon.beaconreference D/ScanHelper: Beacon packet detected for: id1: 20741 type sylerobeacon with rssi -69
    2019-08-03 18:45:03.859 31910-32602/org.altbeacon.beaconreference D/ScanHelper: beacon detected : id1: 20741 type sylerobeacon
    2019-08-03 18:45:03.865 31910-32602/org.altbeacon.beaconreference D/Callback: attempting callback via local broadcast intent: org.altbeacon.beacon.monitor_notification
    2019-08-03 18:45:03.872 31910-31910/org.altbeacon.beaconreference D/IntentHandler: got monitoring data
    2019-08-03 18:45:03.873 31910-31910/org.altbeacon.beaconreference D/IntentHandler: Calling monitoring notifier: org.altbeacon.beaconreference.BeaconReferenceApplication@f7ef55d
    2019-08-03 18:45:03.873 31910-31910/org.altbeacon.beaconreference D/BeaconReferenceApp: did enter region.
    2019-08-03 18:45:03.873 31910-31910/org.altbeacon.beaconreference D/BeaconReferenceApp: Sending notification.
    2019-08-03 18:45:03.886 31910-459/org.altbeacon.beaconreference D/ScanRecord: parseFromBytes
    2019-08-03 18:45:03.887 31910-459/org.altbeacon.beaconreference D/ScanRecord: first manudata for manu ID
    2019-08-03 18:45:03.942 31910-31910/org.altbeacon.beaconreference D/CycledLeScannerForLollipop: got record
    2019-08-03 18:45:03.962 31910-31919/org.altbeacon.beaconreference D/ScanRecord: parseFromBytes
    2019-08-03 18:45:03.963 31910-31919/org.altbeacon.beaconreference D/ScanRecord: first manudata for manu ID
    2019-08-03 18:45:03.963 31910-31910/org.altbeacon.beaconreference D/CycledLeScannerForLollipop: got record
    2019-08-03 18:45:03.966 31910-32603/org.altbeacon.beaconreference D/BeaconParser: Ignoring pdu type 01
    2019-08-03 18:45:03.966 31910-32603/org.altbeacon.beaconreference D/BeaconParser: Processing pdu type FF: 0201061bff510503d81247ad78424da3afaf51f4901bc94b0000001f1c010000000000000000000000000000000000000000000000000000000000000000 with startIndex: 5, endIndex: 30
    2019-08-03 18:45:03.967 31910-32603/org.altbeacon.beaconreference D/BeaconParser: This is a recognized beacon advertisement -- 51 05 seen
    2019-08-03 18:45:03.967 31910-32603/org.altbeacon.beaconreference D/BeaconParser: Bytes are: 0201061bff510503d81247ad78424da3afaf51f4901bc94b0000001f1c010000000000000000000000000000000000000000000000000000000000000000
    2019-08-03 18:45:03.971 31910-32603/org.altbeacon.beaconreference D/ScanHelper: Beacon packet detected for: id1: 20741 type sylerobeacon with rssi -69
    2019-08-03 18:45:03.971 31910-32603/org.altbeacon.beaconreference D/ScanHelper: beacon detected : id1: 20741 type sylerobeacon
    2019-08-03 18:45:03.973 31910-32622/org.altbeacon.beaconreference D/BeaconParser: Ignoring pdu type 01
    2019-08-03 18:45:03.973 31910-32622/org.altbeacon.beaconreference D/BeaconParser: Processing pdu type FF: 0201061bff510503d81247ad78424da3afaf51f4901bc94b0001001f1b010100000000000000000000000000000000000000000000000000000000000000 with startIndex: 5, endIndex: 30
    2019-08-03 18:45:03.974 31910-32622/org.altbeacon.beaconreference D/BeaconParser: This is a recognized beacon advertisement -- 51 05 seen
    2019-08-03 18:45:03.974 31910-32622/org.altbeacon.beaconreference D/BeaconParser: Bytes are: 0201061bff510503d81247ad78424da3afaf51f4901bc94b0001001f1b010100000000000000000000000000000000000000000000000000000000000000
    2019-08-03 18:45:03.978 31910-32622/org.altbeacon.beaconreference D/ScanHelper: Beacon packet detected for: id1: 20741 type sylerobeacon with rssi -70
    2019-08-03 18:45:03.978 31910-32622/org.altbeacon.beaconreference D/ScanHelper: beacon detected : id1: 20741 type sylerobeacon
    2019-08-03 18:45:03.980 31910-32602/org.altbeacon.beaconreference D/MonitoringStatus: saveMonitoringStatusIfOn()
    2019-08-03 18:45:03.990 31910-32602/org.altbeacon.beaconreference D/ScanHelper: looking for ranging region matches for this beacon
    2019-08-03 18:45:03.991 31910-32603/org.altbeacon.beaconreference D/ScanHelper: looking for ranging region matches for this beacon
    2019-08-03 18:45:03.992 31910-32622/org.altbeacon.beaconreference D/ScanHelper: looking for ranging region matches for this beacon
    2019-08-03 18:45:04.025 31910-31924/org.altbeacon.beaconreference D/ScanRecord: parseFromBytes
    2019-08-03 18:45:04.026 31910-31924/org.altbeacon.beaconreference D/ScanRecord: first manudata for manu ID
    2019-08-03 18:45:04.026 31910-31910/org.altbeacon.beaconreference D/CycledLeScannerForLollipop: got record
    2019-08-03 18:45:04.027 31910-32627/org.altbeacon.beaconreference D/BeaconParser: Ignoring pdu type 01
    2019-08-03 18:45:04.028 31910-32627/org.altbeacon.beaconreference D/BeaconParser: Processing pdu type FF: 0201061bff510503d81247ad78424da3afaf51f4901bc94b0001001f1f010100000000000000000000000000000000000000000000000000000000000000 with startIndex: 5, endIndex: 30
    2019-08-03 18:45:04.028 31910-32627/org.altbeacon.beaconreference D/BeaconParser: This is a recognized beacon advertisement -- 51 05 seen
    2019-08-03 18:45:04.028 31910-32627/org.altbeacon.beaconreference D/BeaconParser: Bytes are: 0201061bff510503d81247ad78424da3afaf51f4901bc94b0001001f1f010100000000000000000000000000000000000000000000000000000000000000
    2019-08-03 18:45:04.032 31910-32627/org.altbeacon.beaconreference D/ScanHelper: Beacon packet detected for: id1: 20741 type sylerobeacon with rssi -69
    2019-08-03 18:45:04.032 31910-32627/org.altbeacon.beaconreference D/ScanHelper: beacon detected : id1: 20741 type sylerobeacon
    2019-08-03 18:45:04.033 31910-32627/org.altbeacon.beaconreference D/ScanHelper: looking for ranging region matches for this beacon
    2019-08-03 18:45:04.094 31910-459/org.altbeacon.beaconreference D/ScanRecord: parseFromBytes
    2019-08-03 18:45:04.094 31910-459/org.altbeacon.beaconreference D/ScanRecord: first manudata for manu ID
    2019-08-03 18:45:04.095 31910-31910/org.altbeacon.beaconreference D/CycledLeScannerForLollipop: got record
    2019-08-03 18:45:04.096 31910-32625/org.altbeacon.beaconreference D/BeaconParser: Ignoring pdu type 01
    2019-08-03 18:45:04.096 31910-32625/org.altbeacon.beaconreference D/BeaconParser: Processing pdu type FF: 0201061bff510503d81247ad78424da3afaf51f4901bc94b0001001f1c010000000000000000000000000000000000000000000000000000000000000000 with startIndex: 5, endIndex: 30
    2019-08-03 18:45:04.097 31910-32625/org.altbeacon.beaconreference D/BeaconParser: This is a recognized beacon advertisement -- 51 05 seen
    2019-08-03 18:45:04.097 31910-32625/org.altbeacon.beaconreference D/BeaconParser: Bytes are: 0201061bff510503d81247ad78424da3afaf51f4901bc94b0001001f1c010000000000000000000000000000000000000000000000000000000000000000
    2019-08-03 18:45:04.103 31910-32625/org.altbeacon.beaconreference D/ScanHelper: Beacon packet detected for: id1: 20741 type sylerobeacon with rssi -69
    2019-08-03 18:45:04.104 31910-32625/org.altbeacon.beaconreference D/ScanHelper: beacon detected : id1: 20741 type sylerobeacon
    2019-08-03 18:45:04.105 31910-32625/org.altbeacon.beaconreference D/ScanHelper: looking for ranging region matches for this beacon
    2019-08-03 18:45:04.158 31910-31919/org.altbeacon.beaconreference D/ScanRecord: parseFromBytes
    2019-08-03 18:45:04.159 31910-31919/org.altbeacon.beaconreference D/ScanRecord: first manudata for manu ID
    2019-08-03 18:45:04.159 31910-31910/org.altbeacon.beaconreference D/CycledLeScannerForLollipop: got record
    2019-08-03 18:45:04.160 31910-32600/org.altbeacon.beaconreference D/BeaconParser: Ignoring pdu type 01
    2019-08-03 18:45:04.161 31910-32600/org.altbeacon.beaconreference D/BeaconParser: Processing pdu type FF: 0201061bff510503d81247ad78424da3afaf51f4901bc94b0001001f1f010000000000000000000000000000000000000000000000000000000000000000 with startIndex: 5, endIndex: 30
    2019-08-03 18:45:04.161 31910-32600/org.altbeacon.beaconreference D/BeaconParser: This is a recognized beacon advertisement -- 51 05 seen
    2019-08-03 18:45:04.161 31910-32600/org.altbeacon.beaconreference D/BeaconParser: Bytes are: 0201061bff510503d81247ad78424da3afaf51f4901bc94b0001001f1f010000000000000000000000000000000000000000000000000000000000000000
    2019-08-03 18:45:04.165 31910-32600/org.altbeacon.beaconreference D/ScanHelper: Beacon packet detected for: id1: 20741 type sylerobeacon with rssi -70
    2019-08-03 18:45:04.166 31910-32600/org.altbeacon.beaconreference D/ScanHelper: beacon detected : id1: 20741 type sylerobeacon
    2019-08-03 18:45:04.169 31910-32600/org.altbeacon.beaconreference D/ScanHelper: looking for ranging region matches for this beacon
    2019-08-03 18:45:04.642 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Done with scan cycle
    2019-08-03 18:45:04.643 31910-31910/org.altbeacon.beaconreference D/ScanHelper: Beacon simulator not enabled
    2019-08-03 18:45:04.659 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Not stopping scanning.  Device capable of multiple indistinct detections per scan.
    2019-08-03 18:45:04.659 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: starting a new scan cycle
    2019-08-03 18:45:04.659 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: We are already scanning and have been for 548072 millis
    2019-08-03 18:45:04.659 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Waiting to stop scan cycle for another 1000 milliseconds
    2019-08-03 18:45:04.670 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Set a wakeup alarm to go off in 300000 ms: PendingIntent{38c2293: android.os.BinderProxy@5e5b2d0}
    2019-08-03 18:45:04.671 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Scan started
    2019-08-03 18:45:05.671 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Done with scan cycle
    2019-08-03 18:45:05.672 31910-31910/org.altbeacon.beaconreference D/ScanHelper: Beacon simulator not enabled
    2019-08-03 18:45:05.679 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Not stopping scanning.  Device capable of multiple indistinct detections per scan.
    2019-08-03 18:45:05.679 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: starting a new scan cycle
    2019-08-03 18:45:05.680 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: We are already scanning and have been for 549092 millis
    2019-08-03 18:45:05.680 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Waiting to stop scan cycle for another 1000 milliseconds
    2019-08-03 18:45:05.702 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Set a wakeup alarm to go off in 300000 ms: PendingIntent{38c2293: android.os.BinderProxy@5e5b2d0}
    2019-08-03 18:45:05.702 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Scan started
    2019-08-03 18:45:06.705 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Done with scan cycle
    2019-08-03 18:45:06.706 31910-31910/org.altbeacon.beaconreference D/ScanHelper: Beacon simulator not enabled
    2019-08-03 18:45:06.713 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Not stopping scanning.  Device capable of multiple indistinct detections per scan.
    2019-08-03 18:45:06.713 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: starting a new scan cycle
    2019-08-03 18:45:06.713 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: We are already scanning and have been for 550126 millis
    2019-08-03 18:45:06.714 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Waiting to stop scan cycle for another 1000 milliseconds
    2019-08-03 18:45:06.739 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Set a wakeup alarm to go off in 300000 ms: PendingIntent{38c2293: android.os.BinderProxy@5e5b2d0}
    2019-08-03 18:45:06.739 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Scan started
    2019-08-03 18:45:07.741 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Done with scan cycle
    2019-08-03 18:45:07.742 31910-31910/org.altbeacon.beaconreference D/ScanHelper: Beacon simulator not enabled
    2019-08-03 18:45:07.749 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Not stopping scanning.  Device capable of multiple indistinct detections per scan.
    2019-08-03 18:45:07.749 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: starting a new scan cycle
    2019-08-03 18:45:07.750 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: We are already scanning and have been for 551162 millis
    2019-08-03 18:45:07.751 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Waiting to stop scan cycle for another 1000 milliseconds
    2019-08-03 18:45:07.770 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Set a wakeup alarm to go off in 300000 ms: PendingIntent{38c2293: android.os.BinderProxy@5e5b2d0}
    2019-08-03 18:45:07.771 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Scan started
    2019-08-03 18:45:08.773 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Done with scan cycle
    2019-08-03 18:45:08.774 31910-31910/org.altbeacon.beaconreference D/ScanHelper: Beacon simulator not enabled
    2019-08-03 18:45:08.783 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Not stopping scanning.  Device capable of multiple indistinct detections per scan.
    2019-08-03 18:45:08.783 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: starting a new scan cycle
    2019-08-03 18:45:08.784 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: We are already scanning and have been for 552196 millis
    2019-08-03 18:45:08.787 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Waiting to stop scan cycle for another 1000 milliseconds
    2019-08-03 18:45:08.796 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Set a wakeup alarm to go off in 300000 ms: PendingIntent{38c2293: android.os.BinderProxy@5e5b2d0}
    2019-08-03 18:45:08.796 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Scan started
    2019-08-03 18:45:08.819 31910-31924/org.altbeacon.beaconreference D/ScanRecord: parseFromBytes
    2019-08-03 18:45:08.819 31910-31924/org.altbeacon.beaconreference D/ScanRecord: first manudata for manu ID
    2019-08-03 18:45:08.820 31910-31910/org.altbeacon.beaconreference D/CycledLeScannerForLollipop: got record
    2019-08-03 18:45:08.822 31910-32626/org.altbeacon.beaconreference D/BeaconParser: Ignoring pdu type 01
    2019-08-03 18:45:08.822 31910-32626/org.altbeacon.beaconreference D/BeaconParser: Processing pdu type FF: 0201061bff510503d81247ad78424da3afaf51f4901bc94b0000001f1b010000000000000000000000000000000000000000000000000000000000000000 with startIndex: 5, endIndex: 30
    2019-08-03 18:45:08.828 31910-32626/org.altbeacon.beaconreference D/BeaconParser: This is a recognized beacon advertisement -- 51 05 seen
    2019-08-03 18:45:08.828 31910-32626/org.altbeacon.beaconreference D/BeaconParser: Bytes are: 0201061bff510503d81247ad78424da3afaf51f4901bc94b0000001f1b010000000000000000000000000000000000000000000000000000000000000000
    2019-08-03 18:45:08.833 31910-32626/org.altbeacon.beaconreference D/ScanHelper: Beacon packet detected for: id1: 20741 type sylerobeacon with rssi -72
    2019-08-03 18:45:08.835 31910-32626/org.altbeacon.beaconreference D/ScanHelper: beacon detected : id1: 20741 type sylerobeacon
    2019-08-03 18:45:08.836 31910-32626/org.altbeacon.beaconreference D/ScanHelper: looking for ranging region matches for this beacon
    2019-08-03 18:45:08.888 31910-459/org.altbeacon.beaconreference D/ScanRecord: parseFromBytes
    2019-08-03 18:45:08.888 31910-459/org.altbeacon.beaconreference D/ScanRecord: first manudata for manu ID
    2019-08-03 18:45:08.889 31910-31910/org.altbeacon.beaconreference D/CycledLeScannerForLollipop: got record
    2019-08-03 18:45:08.890 31910-32629/org.altbeacon.beaconreference D/BeaconParser: Ignoring pdu type 01
    2019-08-03 18:45:08.891 31910-32629/org.altbeacon.beaconreference D/BeaconParser: Processing pdu type FF: 0201061bff510503d81247ad78424da3afaf51f4901bc94b0001001f1f010100000000000000000000000000000000000000000000000000000000000000 with startIndex: 5, endIndex: 30
    2019-08-03 18:45:08.891 31910-32629/org.altbeacon.beaconreference D/BeaconParser: This is a recognized beacon advertisement -- 51 05 seen
    2019-08-03 18:45:08.891 31910-32629/org.altbeacon.beaconreference D/BeaconParser: Bytes are: 0201061bff510503d81247ad78424da3afaf51f4901bc94b0001001f1f010100000000000000000000000000000000000000000000000000000000000000
    2019-08-03 18:45:08.896 31910-32629/org.altbeacon.beaconreference D/ScanHelper: Beacon packet detected for: id1: 20741 type sylerobeacon with rssi -69
    2019-08-03 18:45:08.897 31910-32629/org.altbeacon.beaconreference D/ScanHelper: beacon detected : id1: 20741 type sylerobeacon
    2019-08-03 18:45:08.898 31910-32629/org.altbeacon.beaconreference D/ScanHelper: looking for ranging region matches for this beacon
    2019-08-03 18:45:08.951 31910-31919/org.altbeacon.beaconreference D/ScanRecord: parseFromBytes
    2019-08-03 18:45:08.951 31910-31919/org.altbeacon.beaconreference D/ScanRecord: first manudata for manu ID
    2019-08-03 18:45:08.952 31910-31910/org.altbeacon.beaconreference D/CycledLeScannerForLollipop: got record
    2019-08-03 18:45:08.953 31910-32628/org.altbeacon.beaconreference D/BeaconParser: Ignoring pdu type 01
    2019-08-03 18:45:08.953 31910-32628/org.altbeacon.beaconreference D/BeaconParser: Processing pdu type FF: 0201061bff510503d81247ad78424da3afaf51f4901bc94b0001001f1d010100000000000000000000000000000000000000000000000000000000000000 with startIndex: 5, endIndex: 30
    2019-08-03 18:45:08.957 31910-32628/org.altbeacon.beaconreference D/BeaconParser: This is a recognized beacon advertisement -- 51 05 seen
    2019-08-03 18:45:08.958 31910-32628/org.altbeacon.beaconreference D/BeaconParser: Bytes are: 0201061bff510503d81247ad78424da3afaf51f4901bc94b0001001f1d010100000000000000000000000000000000000000000000000000000000000000
    2019-08-03 18:45:08.971 31910-32628/org.altbeacon.beaconreference D/ScanHelper: Beacon packet detected for: id1: 20741 type sylerobeacon with rssi -69
    2019-08-03 18:45:08.972 31910-32628/org.altbeacon.beaconreference D/ScanHelper: beacon detected : id1: 20741 type sylerobeacon
    2019-08-03 18:45:08.975 31910-32628/org.altbeacon.beaconreference D/ScanHelper: looking for ranging region matches for this beacon
    2019-08-03 18:45:09.031 31910-31924/org.altbeacon.beaconreference D/ScanRecord: parseFromBytes
    2019-08-03 18:45:09.032 31910-31924/org.altbeacon.beaconreference D/ScanRecord: first manudata for manu ID
    2019-08-03 18:45:09.033 31910-31910/org.altbeacon.beaconreference D/CycledLeScannerForLollipop: got record
    2019-08-03 18:45:09.051 31910-32602/org.altbeacon.beaconreference D/BeaconParser: Ignoring pdu type 01
    2019-08-03 18:45:09.051 31910-32602/org.altbeacon.beaconreference D/BeaconParser: Processing pdu type FF: 0201061bff510503d81247ad78424da3afaf51f4901bc94b0001001f1d010000000000000000000000000000000000000000000000000000000000000000 with startIndex: 5, endIndex: 30
    2019-08-03 18:45:09.051 31910-32602/org.altbeacon.beaconreference D/BeaconParser: This is a recognized beacon advertisement -- 51 05 seen
    2019-08-03 18:45:09.052 31910-32602/org.altbeacon.beaconreference D/BeaconParser: Bytes are: 0201061bff510503d81247ad78424da3afaf51f4901bc94b0001001f1d010000000000000000000000000000000000000000000000000000000000000000
    2019-08-03 18:45:09.059 31910-32602/org.altbeacon.beaconreference D/ScanHelper: Beacon packet detected for: id1: 20741 type sylerobeacon with rssi -69
    2019-08-03 18:45:09.059 31910-32602/org.altbeacon.beaconreference D/ScanHelper: beacon detected : id1: 20741 type sylerobeacon
    2019-08-03 18:45:09.060 31910-32602/org.altbeacon.beaconreference D/ScanHelper: looking for ranging region matches for this beacon
    2019-08-03 18:45:09.074 31910-459/org.altbeacon.beaconreference D/ScanRecord: parseFromBytes
    2019-08-03 18:45:09.074 31910-459/org.altbeacon.beaconreference D/ScanRecord: first manudata for manu ID
    2019-08-03 18:45:09.075 31910-31910/org.altbeacon.beaconreference D/CycledLeScannerForLollipop: got record
    2019-08-03 18:45:09.083 31910-32603/org.altbeacon.beaconreference D/BeaconParser: Ignoring pdu type 01
    2019-08-03 18:45:09.083 31910-32603/org.altbeacon.beaconreference D/BeaconParser: Processing pdu type FF: 0201061bff510503d81247ad78424da3afaf51f4901bc94b0000001f1d010100000000000000000000000000000000000000000000000000000000000000 with startIndex: 5, endIndex: 30
    2019-08-03 18:45:09.083 31910-32603/org.altbeacon.beaconreference D/BeaconParser: This is a recognized beacon advertisement -- 51 05 seen
    2019-08-03 18:45:09.083 31910-32603/org.altbeacon.beaconreference D/BeaconParser: Bytes are: 0201061bff510503d81247ad78424da3afaf51f4901bc94b0000001f1d010100000000000000000000000000000000000000000000000000000000000000
    2019-08-03 18:45:09.090 31910-32603/org.altbeacon.beaconreference D/ScanHelper: Beacon packet detected for: id1: 20741 type sylerobeacon with rssi -69
    2019-08-03 18:45:09.090 31910-32603/org.altbeacon.beaconreference D/ScanHelper: beacon detected : id1: 20741 type sylerobeacon
    2019-08-03 18:45:09.091 31910-32603/org.altbeacon.beaconreference D/ScanHelper: looking for ranging region matches for this beacon
    2019-08-03 18:45:09.153 31910-31919/org.altbeacon.beaconreference D/ScanRecord: parseFromBytes
    2019-08-03 18:45:09.153 31910-31919/org.altbeacon.beaconreference D/ScanRecord: first manudata for manu ID
    2019-08-03 18:45:09.154 31910-31910/org.altbeacon.beaconreference D/CycledLeScannerForLollipop: got record
    2019-08-03 18:45:09.155 31910-32622/org.altbeacon.beaconreference D/BeaconParser: Ignoring pdu type 01
    2019-08-03 18:45:09.155 31910-32622/org.altbeacon.beaconreference D/BeaconParser: Processing pdu type FF: 0201061bff510503d81247ad78424da3afaf51f4901bc94b0000001f1a010100000000000000000000000000000000000000000000000000000000000000 with startIndex: 5, endIndex: 30
    2019-08-03 18:45:09.156 31910-32622/org.altbeacon.beaconreference D/BeaconParser: This is a recognized beacon advertisement -- 51 05 seen
    2019-08-03 18:45:09.156 31910-32622/org.altbeacon.beaconreference D/BeaconParser: Bytes are: 0201061bff510503d81247ad78424da3afaf51f4901bc94b0000001f1a010100000000000000000000000000000000000000000000000000000000000000
    2019-08-03 18:45:09.159 31910-32622/org.altbeacon.beaconreference D/ScanHelper: Beacon packet detected for: id1: 20741 type sylerobeacon with rssi -69
    2019-08-03 18:45:09.160 31910-32622/org.altbeacon.beaconreference D/ScanHelper: beacon detected : id1: 20741 type sylerobeacon
    2019-08-03 18:45:09.160 31910-32622/org.altbeacon.beaconreference D/ScanHelper: looking for ranging region matches for this beacon
    2019-08-03 18:45:09.222 31910-31924/org.altbeacon.beaconreference D/ScanRecord: parseFromBytes
    2019-08-03 18:45:09.223 31910-31924/org.altbeacon.beaconreference D/ScanRecord: first manudata for manu ID
    2019-08-03 18:45:09.224 31910-31910/org.altbeacon.beaconreference D/CycledLeScannerForLollipop: got record
    2019-08-03 18:45:09.233 31910-32627/org.altbeacon.beaconreference D/BeaconParser: Ignoring pdu type 01
    2019-08-03 18:45:09.235 31910-32627/org.altbeacon.beaconreference D/BeaconParser: Processing pdu type FF: 0201061bff510503d81247ad78424da3afaf51f4901bc94b0000001f1a010000000000000000000000000000000000000000000000000000000000000000 with startIndex: 5, endIndex: 30
    2019-08-03 18:45:09.236 31910-32627/org.altbeacon.beaconreference D/BeaconParser: This is a recognized beacon advertisement -- 51 05 seen
    2019-08-03 18:45:09.236 31910-32627/org.altbeacon.beaconreference D/BeaconParser: Bytes are: 0201061bff510503d81247ad78424da3afaf51f4901bc94b0000001f1a010000000000000000000000000000000000000000000000000000000000000000
    2019-08-03 18:45:09.248 31910-32627/org.altbeacon.beaconreference D/ScanHelper: Beacon packet detected for: id1: 20741 type sylerobeacon with rssi -69
    2019-08-03 18:45:09.249 31910-32627/org.altbeacon.beaconreference D/ScanHelper: beacon detected : id1: 20741 type sylerobeacon
    2019-08-03 18:45:09.249 31910-32627/org.altbeacon.beaconreference D/ScanHelper: looking for ranging region matches for this beacon
    2019-08-03 18:45:09.285 31910-459/org.altbeacon.beaconreference D/ScanRecord: parseFromBytes
    2019-08-03 18:45:09.285 31910-459/org.altbeacon.beaconreference D/ScanRecord: first manudata for manu ID
    2019-08-03 18:45:09.286 31910-31910/org.altbeacon.beaconreference D/CycledLeScannerForLollipop: got record
    2019-08-03 18:45:09.295 31910-32625/org.altbeacon.beaconreference D/BeaconParser: Ignoring pdu type 01
    2019-08-03 18:45:09.297 31910-32625/org.altbeacon.beaconreference D/BeaconParser: Processing pdu type FF: 0201061bff510503d81247ad78424da3afaf51f4901bc94b0000001f1a010000000000000000000000000000000000000000000000000000000000000000 with startIndex: 5, endIndex: 30
    2019-08-03 18:45:09.298 31910-32625/org.altbeacon.beaconreference D/BeaconParser: This is a recognized beacon advertisement -- 51 05 seen
    2019-08-03 18:45:09.298 31910-32625/org.altbeacon.beaconreference D/BeaconParser: Bytes are: 0201061bff510503d81247ad78424da3afaf51f4901bc94b0000001f1a010000000000000000000000000000000000000000000000000000000000000000
    2019-08-03 18:45:09.306 31910-32625/org.altbeacon.beaconreference D/ScanHelper: Beacon packet detected for: id1: 20741 type sylerobeacon with rssi -69
    2019-08-03 18:45:09.306 31910-32625/org.altbeacon.beaconreference D/ScanHelper: beacon detected : id1: 20741 type sylerobeacon
    2019-08-03 18:45:09.307 31910-32625/org.altbeacon.beaconreference D/ScanHelper: looking for ranging region matches for this beacon
    2019-08-03 18:45:09.797 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Done with scan cycle
    2019-08-03 18:45:09.798 31910-31910/org.altbeacon.beaconreference D/ScanHelper: Beacon simulator not enabled
    2019-08-03 18:45:09.805 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Not stopping scanning.  Device capable of multiple indistinct detections per scan.
    2019-08-03 18:45:09.806 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: starting a new scan cycle
    2019-08-03 18:45:09.806 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: We are already scanning and have been for 553219 millis
    2019-08-03 18:45:09.807 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Waiting to stop scan cycle for another 1000 milliseconds
    2019-08-03 18:45:09.829 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Set a wakeup alarm to go off in 300000 ms: PendingIntent{38c2293: android.os.BinderProxy@5e5b2d0}
    2019-08-03 18:45:09.829 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Scan started
    2019-08-03 18:45:10.832 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Done with scan cycle
    2019-08-03 18:45:10.832 31910-31910/org.altbeacon.beaconreference D/ScanHelper: Beacon simulator not enabled
    2019-08-03 18:45:10.840 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Not stopping scanning.  Device capable of multiple indistinct detections per scan.
    2019-08-03 18:45:10.840 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: starting a new scan cycle
    2019-08-03 18:45:10.841 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: We are already scanning and have been for 554253 millis
    2019-08-03 18:45:10.841 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Waiting to stop scan cycle for another 1000 milliseconds
    2019-08-03 18:45:10.867 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Set a wakeup alarm to go off in 300000 ms: PendingIntent{38c2293: android.os.BinderProxy@5e5b2d0}
    2019-08-03 18:45:10.867 31910-31910/org.altbeacon.beaconreference D/CycledLeScanner: Scan started
    
    
    opened by maxkunes 24
  • Prevent crashes in BluetoothMedic from missing Android 12 permissions

    Prevent crashes in BluetoothMedic from missing Android 12 permissions

    • also removed unused broadcast notification code

    This addresses the issue reported here: https://stackoverflow.com/questions/74709808/altbeacon-bluetoothmedic-crashes-with-android-version-12-13

    This also deprecates the BluetoothMedic’s power cycling method in favor of a renamed legacy method that makes it clear that power cycling is no longer possible on Android 13 per #1109

    opened by davidgyoung 0
  • Beacon values reading is not consistent, gap between two beacon reading is around 8 to 10s depening on phone

    Beacon values reading is not consistent, gap between two beacon reading is around 8 to 10s depening on phone

    Expected behavior

    Beacon reaading should be consistent gap between two beacon reading should be less than 2 sec
    

    Actual behavior

    Beacon reaading is inconsistent gap between two beacon reading is more than 8 to 10 sec in some phones
    

    Steps to reproduce this behavior

    Install altbeacon reference apk and take readings
    

    Mobile device model and OS version

    Device: Oppo F1s/Vivo
    OS: Android 12
    

    Android Beacon Library version

    altbeacon_version = "2.19.4"
    
    opened by gptshubham595 6
  • beacon distance value showing negative distance on Motorola phones (moto edge 20 pro & moto g5+)

    beacon distance value showing negative distance on Motorola phones (moto edge 20 pro & moto g5+)

    Expected behavior

    Distance observed via beacon should be positive
    

    Actual behavior

       Distance observed via beacon is negative at any distance even if there's a little shake
    

    Steps to reproduce this behavior

      1. Install altbeacon reference app on mototrola phone and observe the distance shown
      2. shake the phone
    

    Mobile device model and OS version

     Tested on moto edge 20 pro & moto g5+
     OS Version: 12
    

    Android Beacon Library version

    altbeacon_version = "2.19.4"

    opened by gptshubham595 12
  • Parser priority is required for interoperability

    Parser priority is required for interoperability

    AltBeacon is meant to be an 'open' interoperable standard. I have a use case where I have a layout for an alternative beacon that has similarities with AltBeacon but adds additional features. I still want to detect AltBeacon's, but I want to give my parser a priority for trying to find variants on AltBeacon.

    To clarify: I have the AltBeacon parser and my own parser. My own parser will detect a subset of beacons detected by the AltBeacon parser

    Expected behavior

    I originally expected the parser priority to depend on the order on which it was added to the BeaconManager, so I cleared the getBeaconParsers to remove the default AltBeacon parser. I added my own parser and added the AltBeacon parser again.

    https://github.com/AltBeacon/android-beacon-library/blob/master/lib/src/main/java/org/altbeacon/beacon/BeaconManager.java#L336-L346

    (I would do a .clear() on the list to remove AltBeacon)

    Actual behavior

    Due to the HashSet https://github.com/AltBeacon/android-beacon-library/blob/db4622cc4baad43d100333f85e40b4d2a4ae0637/lib/src/main/java/org/altbeacon/beacon/service/ScanHelper.java#L75 the order is not determined If a beacon is parsed by "a" parser: https://github.com/AltBeacon/android-beacon-library/blob/db4622cc4baad43d100333f85e40b4d2a4ae0637/lib/src/main/java/org/altbeacon/beacon/service/ScanHelper.java#L436-L442 other parsers are ignored

    I can manage to get the parser working by not 'readding' the AltBeacon parser. However, I still want to detect AltBeacons that are not a subset of my own parser.

    Android Beacon Library version

    2.19.4 I have tried the beta with the same result.

    Possible Fix

    Add a priority to the beacon parser or maintain priority based on its order in the beacon manager.

    opened by Maximvdw 2
  • Monitoring not working after app is killed

    Monitoring not working after app is killed

    Expected behavior

    I should receive a post request to my api when the device detects ble beacons. I receive the request correctly when the app is opened, but when it is killed, I don't receive the call.

    Actual behavior

    I don't receive any request.

    Steps to reproduce this behavior

    class CustomApplication : FlutterApplication() { companion object { private const val TAG = "CustomApplication" }

    override fun onCreate() {
        super.onCreate()
        //Works here, i receive the call on my api properly
        //sendRequest() 
        Log.d(TAG, "App started up")
         val beaconManager: BeaconManager = BeaconManager.getInstanceForApplication(this)
         val region = Region("FetchVision", null, null, null)
         beaconManager.getRegionViewModel(region).regionState.observeForever(monitoringObserver)
         beaconManager.startMonitoring(region)
    }
    
    private val monitoringObserver = Observer<Int> { state ->
        if (state == MonitorNotifier.INSIDE) {
            Log.d(TAG, "Got a didEnterRegion call")
            //Doesn't work when app is killed, but works when is open
            sendRequest()
        }
        else {
            Log.d(TAG, "No beacons detected")
        }
    }
    

    }

    Mobile device model and OS version

    Google pixel 5, Android 13

    opened by NickLou26 5
  • BluetoothMedic's power cycle workaround no longer works on Android 13

    BluetoothMedic's power cycle workaround no longer works on Android 13

    First off, this is not a bug report: I'm not positive that there's anything that can be done by BluetoothMedic on devices running Android 13 or above. Consider this more of an FYI with the potential to improve the library's API to account for shortcomings of Android!


    Basically, every once in a while my Pixel 6 Pro runs into a state wherein any BLE scan yields a SCAN_FAILED_APPLICATION_REGISTRATION_FAILED error. I have BluetoothMedic's automatic power-cycles enabled on this project and the logs confirmed that this was attempted correctly, but the issue wasn't resolved for some reason. I need to turn Bluetooth off and back on by hand, and then all works well again.

    Checking the Android documentation, I learnt that both BluetoothAdapter.disable() and BluetoothAdapter.enable() were deprecated without replacement in API 33. Neither method does anything when called on a device running it (source). It seems like this behavior is linked to the project's targetSdk version, but I haven't tested that myself.

    In essence, BluetoothMedic.enablePowerCycleOnFailures() can no longer be relied upon for Android 13 and beyond. I was thinking about a potential replacement API, but all I can think of is to present some UI to the user and inform them about the broken Bluetooth state (setNotificationsEnabled() works, but I cannot localize the text of the notifications as they are hardcoded). I'm wondering if an optional listener interface for broken Bluetooth state should be added to BluetoothMedic. An application could hook into the checks and react to bad states. Maybe it makes sense to deprecate the current variant of enablePowerCycleOnFailures() and redirect to a version that requires this listener, allowing for some sort of fallback on newer devices.

    Expected behavior

    The best possible recourse to fix bad BLE states on Android 13 is provided via BluetoothMedic.

    Actual behavior

    On the surface, it looks like BLE power-cycling is done correctly. However, Android 13 silently fails any call to programmatically change the state of a BluetoothAdapter.

    Steps to reproduce this behavior

    I don't have any reliable steps to get a device into the bad state related to SCAN_FAILED_APPLICATION_REGISTRATION_FAILED. But once done, BluetoothMedic is unable to get the device out of that state if that device runs on API 33.

    Mobile device model and OS version

    Pixel 6 Pro, Android 13

    Android Beacon Library version

    2.19.4

    opened by mannodermaus 1
Releases(2.19)
  • 2.19(Aug 13, 2021)

    • Manual binding/unbinding deprecated. (#1046, David G. Young)
    • Android 12 changes. (#1043, Nick Badal, David G. Young)
    • Bug fixes to autobind (#1035, David G. Young)
    • Add experimental autobind methods for starting beacon ranging/monitoring without a manual call to bind(). (#1035, David G. Young)
    • Add support for beacon parsers based on 128-bit service UUIDs (#1035, David G. Young)
    • Add experimental IntentScanStrategy to eliminate a foreground service for some background scan use cases. (#1030, David G. Young)
    • Update service declarations as required for Android 12 (#1033, David G. Young)
    • Reduce crashes on starting foreground service (#1024, David G. Young)
    • Reduce minSdk to 14 (#1023 David G. Young)
    • Add experimental LiveData interface (#1025, David G. Young)
    Source code(tar.gz)
    Source code(zip)
  • 2.18(Aug 13, 2021)

    • Remove dependency on androidx.localbroadcastmanager.content.LocalBroadcastManager (#1022, David G. Young)
    • Redo build scripts and publishing setup for Maven Central due to JCenter sunset (#1022, David G. Young)
    • Prevent internal growth of rangedRegions tracking set (#991, Oleksandr Vandalko)
    Source code(tar.gz)
    Source code(zip)
  • 2.17.1(Jun 11, 2020)

    • Parse multiple manufacturer sections in the advertisement and the scan response to look for beacons. (#970, David G. Young)
    • Improve HW filter detection mechanism in order to detect beacons immediately after starting in background (#974, Vlad Vladau)
    • Fix crash on BluetoothMedic when started on thread without a looper (#980, David G. Young)
    Source code(tar.gz)
    Source code(zip)
    android-beacon-library-2.17.1.aar(205.93 KB)
  • 2.17(Apr 26, 2020)

  • 2.16.4(Jan 26, 2020)

  • 2.16.4-beta-1(Jan 9, 2020)

  • 2.16.3(Sep 18, 2019)

  • 2.16.3-beta4(Jul 8, 2019)

    None of these crashes have instructions to reproduce, so this release is intended to deploy the fixes in the wild to see if reports of these crashes go away.

    To use this release, you must download the aar file attached to this release, and configure it with your project like so:

    • Edit your outermost build.gradle file to add an libs entry like so:
         allprojects {
             repositories {
                 google()
                 jcenter()
                 flatDir {
                     dirs 'libs'
                 }
             }
         }
    
    • Edit your innermost build.gradle file to add the beta library AAR as a dependency like so:
    dependencies {
        implementation 'org.altbeacon:android-beacon-library:2.16.3-beta4@aar'
    }
    
    • Create a /libs folder next to the innermost build.gradle above, then download and copy the aar file attached to this release into this folder.
    Source code(tar.gz)
    Source code(zip)
    android-beacon-library-2.16.3-beta4.aar(202.60 KB)
  • 2.16.3-beta3(Jul 5, 2019)

    None of these crashes have instructions to reproduce, so this release is intended to deploy the fixes in the wild to see if reports of these crashes go away.

    To use this release, you must download the aar file attached to this release, and configure it with your project like so:

    • Edit your outermost build.gradle file to add an libs entry like so:
         allprojects {
             repositories {
                 google()
                 jcenter()
                 flatDir {
                     dirs 'libs'
                 }
             }
         }
    
    • Edit your innermost build.gradle file to add the beta library AAR as a dependency like so:
    dependencies {
        implementation 'org.altbeacon:android-beacon-library:2.16.3-beta3@aar'
    }
    
    • Create a /libs folder next to the innermost build.gradle above, then download and copy the aar file attached to this release into this folder.
    Source code(tar.gz)
    Source code(zip)
    android-beacon-library-2.16.3-beta3.aar(202.60 KB)
  • 2.16.3-beta2(Jun 26, 2019)

    None of these crashes have instructions to reproduce, so this release is intended to deploy the fixes in the wild to see if reports of these crashes go away.

    To use this release, you must download the aar file attached to this release, and configure it with your project like so:

    • Edit your outermost build.gradle file to add an libs entry like so:
         allprojects {
             repositories {
                 google()
                 jcenter()
                 flatDir {
                     dirs 'libs'
                 }
             }
         }
    
    • Edit your innermost build.gradle file to add the beta library AAR as a dependency like so:
    dependencies {
        implementation 'org.altbeacon:android-beacon-library:2.16.3-beta2@aar'
    }
    
    • Create a /libs folder next to the innermost build.gradle above, then download and copy the aar file attached to this release into this folder.
    Source code(tar.gz)
    Source code(zip)
    android-beacon-library-2.16.3-beta2.aar(202.43 KB)
  • 2.16.3-beta1(Jun 5, 2019)

    None of these crashes have instructions to reproduce, so this release is intended to deploy the fixes in the wild to see if reports of these crashes go away.

    To use this release, you must download the aar file attached to this release, and configure it with your project like so:

    • Edit your outermost build.gradle file to add an libs entry like so:
         allprojects {
             repositories {
                 google()
                 jcenter()
                 flatDir {
                     dirs 'libs'
                 }
             }
         }
    
    • Edit your innermost build.gradle file to add the beta library AAR as a dependency like so:
    dependencies {
        implementation 'org.altbeacon:android-beacon-library:2.16.3-beta1@aar'
    }
    
    • Create a /libs folder next to the innermost build.gradle above, then download and copy the aar file attached to this release into this folder.
    Source code(tar.gz)
    Source code(zip)
    android-beacon-library-2.16.3-beta1.aar(202.29 KB)
  • 2.16.2(May 29, 2019)

    Bug Fixes:

    • Prevent crash on alarms going off with a different user active (#886, David G. Young)
    • Fix thread leak caused by scheduling ScanJob when no consumers bound. (#885, David G. Young)
    • Protect against a NPE when changing ranged regions. (#770, David G. Young)
    • Fix intermittent failed ranging/monitoring callbacks in race conditions. (#842, David G. Young)
    • Prevent duplicate callbacks on Android 8+ with a foreground service by stopping ScanJob. (#847, Stephen Ruda)
    • Only apply Samsung-specific non-empty scan filters when the screen is off (#855, Marcel Schnelle)
    Source code(tar.gz)
    Source code(zip)
    android-beacon-library-2.16.2.aar(201.66 KB)
  • 2.16.2-beta1(Mar 9, 2019)

    To use this release, you must download the aar file attached to this release, and configure it with your project like so:

    • Edit your outermost build.gradle file to add an libs entry like so:
         allprojects {
             repositories {
                 google()
                 jcenter()
                 flatDir {
                     dirs 'libs'
                 }
             }
         }
    
    • Edit your innermost build.gradle file to add the beta library AAR as a dependency like so:
    dependencies {
        implementation 'org.altbeacon:android-beacon-library:2.16.2-beta1@aar'
    }
    
    • Create a /libs folder next to the innermost build.gradle above, then download and copy the aar file attached to this release into this folder.
    Source code(tar.gz)
    Source code(zip)
    android-beacon-library-2.16.2-beta1.aar(199.31 KB)
  • 2.16.1(Feb 10, 2019)

    Features:

    • New Region Bootstrap constructors allowing separate context and notifir (#821, Alper Tekin)

    Bug Fixes:

    • Fix crash on starting scanning with a forground service configured when multiple BeaconConsumer instances bound. (#828, David G. Young)
    • Fix broken RegionBoostrap callbacks caused by change in previous release (#829, David G. Young)
    • Fix intermittent crash caused by internal Android NPE (#824, kababu007)
    • Update gradle and robolectric (#805, Tony Tang)
    • Fix problem on service shutdown that leaked threads and left scanning on (#804, David G. Young)
    Source code(tar.gz)
    Source code(zip)
    android-beacon-library-2.16.1.aar(199.26 KB)
    android-beacon-library-2.16.1.tar.gz(202.08 KB)
  • 2.15.5-alpha1(Dec 20, 2018)

    This release fixes a logic problem preventing proper service shutdown.

    To use this release, you must download the aar file attached to this release, and configure it with your project like so:

    • Edit your outermost build.gradle file to add an libs entry like so:
         allprojects {
             repositories {
                 google()
                 jcenter()
                 flatDir {
                     dirs 'src/main/libs'
                 }
             }
         }
    
    • Edit your innermost build.gradle file to add the beta library AAR as a dependency like so:
    dependencies {
      compile 'android-beacon-library-2.15.5-alpha1@aar'
    }
    
    • Create a /libs folder next to the build.gradle above, then download and copy the aar file attached to this release into this folder.
    Source code(tar.gz)
    Source code(zip)
    android-beacon-library-2.15.5-alpha1.aar(199.52 KB)
  • 2.15.4(Dec 11, 2018)

  • 2.15.3(Dec 11, 2018)

    • Samsung screen-off scans on Android 8.1+ fixed. (#798, David G. Young)
    • Fix bug preventing callbacks after unbind/bind when using ScanJobs. (#765, David G. Young)
    • Prevent NPE on access CycledLEScanner after OOM on Android 8+. (#766, David G. Young)
    • Make switching back and forth between a foreground service and scan jobs more reliable (#767, David G. Young)
    • Disable BluetoothCrashResolver on Android 5+ as a it is not helpful can can create log noise. (#768, David G. Young)
    • Prevent NPE on start scan. (#780, Adrián Nieto Rodríguez)
    • Fix thread leak leading to OOM Exceptions when using ScanJobs (#785, David G. Young)
    Source code(tar.gz)
    Source code(zip)
    android-beacon-library-2.15.3.aar(199.49 KB)
    android-beacon-library-2.15.3.tar.gz(201.77 KB)
  • 2.15.3-beta1(Nov 24, 2018)

    This release adds more changes to help make repeatedly stopping and starting a foreground service more reliable.

    To use this release, you must download the aar file attached to this release, and configure it with your project like so:

    • Edit your outermost build.gradle file to add an libs entry like so:
         allprojects {
             repositories {
                 google()
                 jcenter()
                 flatDir {
                     dirs 'src/main/libs'
                 }
             }
         }
    
    • Edit your innermost build.gradle file to add the beta library AAR as a dependency like so:
    dependencies {
      compile 'android-beacon-library-2.15.3-beta1@aar'
    }
    
    • Create a /libs folder next to the build.gradle above, then download and copy the aar file attached to this release into this folder.
    Source code(tar.gz)
    Source code(zip)
    android-beacon-library-2.15.3-beta1.aar(199.32 KB)
  • more-reliable-service-stop2(Nov 8, 2018)

    This release adds more changes to help make repeatedly stopping and starting a foreground service more reliable.

    To use this release, you must download the aar file attached to this release, and configure it with your project like so:

    • Edit your outermost build.gradle file to add an libs entry like so:
         allprojects {
             repositories {
                 google()
                 jcenter()
                 flatDir {
                     dirs 'libs'
                 }
             }
         }
    
    • Edit your innermost build.gradle file to add the beta library AAR as a dependency like so:
    dependencies {
      compile 'org.altbeacon:android-beacon-library-more-reliable-service-stop2@aar'
    }
    
    • Create a /libs folder next to the build.gradle above, then download and copy the aar file attached to this release into this folder.
    Source code(tar.gz)
    Source code(zip)
    android-beacon-library-more-reliable-service-stop2-1-g7dbb6b3.aar(198.76 KB)
  • more-reliable-service-stop(Nov 7, 2018)

    This release commands a stopSelf() of the beacon scanning service after the last client connection unbinds. This may help make stopping foreground services more reliable.

    To use this release, you must download the aar file attached to this release, and configure it with your project like so:

    • Edit your innermost build.gradle file to add the beta library AAR as a dependency like so:

      dependencies {
        compile 'org.altbeacon:android-beacon-library-more-reliable-service-stop@aar'
      }
      
    • Create a /libs folder next to the build.gradle above, then download and copy the aar file attached to this release into this folder.

    Source code(tar.gz)
    Source code(zip)
    android-beacon-library-more-reliable-service-stop.aar(198.68 KB)
  • 2.15.2(Oct 17, 2018)

  • fix-start-foreground-service-at-boot-release-2(Oct 8, 2018)

    This is an ad-hoc test release intended to fix the issue reported in #7046

    To use this release, you must download the aar file attached to this release, and configure it with your project like so:

    • Edit your innermost build.gradle file to add the beta library AAR as a dependency like so:
          dependencies {
            compile 'android-beacon-library:fix-start-foreground-service-at-boot-release-1-1-g75f756f@aar'
          }
    
    • Create a /libs folder next to the build.gradle above, then download and copy the aar file attached to this release into this folder.
    Source code(tar.gz)
    Source code(zip)
    android-beacon-library-release.aar(201.80 KB)
  • fix-start-foreground-service-at-boot-release-1(Oct 3, 2018)

    This is a test release intended to fix the issue reported in #7046

    To use this release, you must download the aar file attached to this release, and configure it with your project like so:

    • Edit your innermost build.gradle file to add the beta library AAR as a dependency like so:
          dependencies {
            compile 'android-beacon-library:2.15.1-1-gccb2071@aar'
          }
    
    • Create a /libs folder next to the build.gradle above, then download and copy the aar file attached to this release into this folder.
    Source code(tar.gz)
    Source code(zip)
    android-beacon-library-2.15.1-1-gccb2071.aar(201.66 KB)
  • 2.15.1(Sep 1, 2018)

    Bug Fixes:

    • Prevent crash caused by internal Android exception when stopping scanning (#724, David G. Young)
    • Fix Android 8 crashing apps on background monitoring/ranging data delivery (#720, David G. Young)
    • Fix intermittent NPE on ranging beacons (#716, Federico Bertoli, David G. Young)
    • Stop running scheduled jobs to do scans after last consumer unbound. (#702, David G. Young)
    Source code(tar.gz)
    Source code(zip)
    android-beacon-library-2.15.1.aar(201.58 KB)
    android-beacon-library-2.15.1.tar.gz(204.07 KB)
  • 2.15.1-beta2(Aug 15, 2018)

    This is a test release intended to fix the issue reported in #701. Note: this release does NOT include changes from 2.14.1-beta1.

    To use this release, you must download the aar file attached to this release, and configure it with your project like so:

    • Edit your innermost build.gradle file to add the beta library AAR as a dependency like so:
          dependencies {
            compile 'android-beacon-library:2.15.1-beta2@aar'
          }
    
    • Create a /libs folder next to the build.gradle above, then download and copy the aar file attached to this release into this folder.
    Source code(tar.gz)
    Source code(zip)
    android-beacon-library-2.15.1-beta2.aar(201.37 KB)
  • 2.15.1-beta1(Aug 11, 2018)

    This is a test release intended to fix the issue reported in #720

    To use this release, you must download the aar file attached to this release, and configure it with your project like so:

    • Edit your innermost build.gradle file to add the beta library AAR as a dependency like so:
          dependencies {
            compile 'android-beacon-library:2.15.1-beta1@aar'
          }
    
    • Create a /libs folder next to the build.gradle above, then download and copy the aar file attached to this release into this folder.
    Source code(tar.gz)
    Source code(zip)
    android-beacon-library-2.15.1-beta1.aar(201.45 KB)
  • 2.15(Jul 4, 2018)

    Enhancements:

    • Optional foreground beacon scanning service for faster background detections on Android 8+ (#663, David G. Young)

    Bug Fixes:

    • Fixes inability to detect on some 5.x Samsung Devices without scan filters. (#693, David G. Young)
    • Fix inverted logic for "disable ScanJob" warning (#700, Marcel Schnelle)
    • Fix crash on scanning an Eddystone-URL packet with a negative-length URL. (#703, David G. Young)
    Source code(tar.gz)
    Source code(zip)
    android-beacon-library-2.15.aar(201.28 KB)
    android-beacon-library-2.15.tar.gz(203.75 KB)
  • 2.14.1-beta1(Jun 1, 2018)

    This is a test release intended to fix the issue reported in #691

    To use this release, you must download the aar file attached to this release, and configure it with your project like so:

    • Edit your innermost build.gradle file to add the beta library AAR as a dependency like so:
          dependencies {
            compile 'android-beacon-library:2.14.1-beta1@aar'
          }
    
    • Create a /libs folder next to the build.gradle above, then download and copy the aar file attached to this release into this folder.

    • Configure your app's outermost build.gradle File to reference the /libs directory from above in a flatDir declaration:

          allprojects {
              repositories {
                  jcenter()
                  flatDir {
                      dirs 'libs'
                  }
              }
          }
    
    Source code(tar.gz)
    Source code(zip)
    android-beacon-library-2.14.1-beta1.aar(200.42 KB)
    android-beacon-library-2.14.1-beta1.tar.gz(202.89 KB)
  • 2.14(May 17, 2018)

    Enhancements:

    • Add warnings about disabling scheduled scan jobs on Android 8+ (#674, David G. Young)
    • Add warning about setting short scan periods on Android 8 (#677, David G. Young)
    • BeaconTransmitter advertisements may be configured as connectable (#683, Michael Harper)

    Bug Fixes:

    • Fix crashes of BluetoothMedic caused by Bluetooth being turned off (#675, David G. Young)
    • Fix flawed in BeaconManager.isBound method on Android 8 (#655, David G. Young)
    Source code(tar.gz)
    Source code(zip)
    android-beacon-library-2.14.aar(200.25 KB)
    android-beacon-library-2.14.tar.gz(202.70 KB)
  • 2.13.1(Mar 6, 2018)

Owner
AltBeacon
The Open and Interoperable Proximity Beacon specification
AltBeacon
BLESSED Coroutines, a Bluetooth Low Energy (BLE) library for Android using Kotlin Coroutines

BLESSED for Android with Coroutines - BLE made easy BLESSED is a very compact Bluetooth Low Energy (BLE) library for Android 8 and higher, that makes

Martijn van Welie 82 Jan 1, 2023
This library allows for easy access to a Bluetooth LE device's AdRecord and RSSI value. It offers additional functionality for iBeacons.

Bluetooth LE Library for Android This library allows for easy access to a Bluetooth LE device's Advertisement Records. It also offers: A simple runnin

Alexandros Schillings 843 Dec 13, 2022
An Android Library for handling Bluetooth Low Energy on Android Easy

An Android Library for handling Bluetooth Low Energy on Android Easy

Leandro SQ 42 Jan 3, 2023
An Android library that solves a lot of Android's Bluetooth Low Energy problems

A library that makes working with Bluetooth LE on Android a pleasure. Seriously.

Nordic Semiconductor 1.4k Jan 7, 2023
[UNMAINTAINED][Android] Bluetooth Serial Port Profile which comfortable to developer application to communication with microcontroller via bluetooth

⚠ WARNING: This project is no longer being maintained Android-BluetoothSPPLibrary Bluetooth Serial Port Profile which comfortable to developer applica

Akexorcist 1.7k Dec 31, 2022
Smooth communication via bluetooth with other android devices or microcontrollers such as Arduino.

Android Smooth Bluetooth Smooth communication via bluetooth with other android devices or microcontrollers such as Arduino. Getting Started Add Gradle

Mantas Palaima 191 Nov 28, 2022
A reactive, interface-driven central role Bluetooth LE library for Android

RxCentralBle RxCentralBle provides a simple reactive paradigm for connecting to and communicating with Bluetooth LE peripherals from the central role.

Uber Open Source 198 Nov 29, 2022
Android Bluetooth Helper Library, Bluetooth Device Finder

Bluetooth Helper Allows you to access the Bluetooth of your mobile device, manage turn-on - turn off, and discover bluetooth devices around you. Getti

Tolga Bolatcan 44 Jul 15, 2022
A Bluetooth kotlin multiplatform "Cross-Platform" library for iOS and Android

Blue-Falcon A Bluetooth "Cross Platform" Kotlin Multiplatform library for iOS, Android, MacOS, Raspberry Pi and Javascript. Bluetooth in general has t

Andrew Reed 220 Dec 28, 2022
RxBle: Use Android Bluetooth API in Rx way

RxBle: Use Android Bluetooth API in Rx way A lightweight encapsulation of Android Bluetooth API. Use Android Bluetooth API in Rx way. Support multiple

null 3 Dec 2, 2022
🍔 Meals is a small demo app based on modern Android technologies and MVVM architecture

Meals ?? Meals is a small demo app based on modern Android technologies and MVVM architecture. built-in Kotlin, Coroutine, Flow, Retrofit, and Jetpack

Amr Jyniat 4 Nov 6, 2022
kotlin android - network connection

MarsPhotos - Starter Code Starter code for Android Basics in Kotlin. Introduction Using this stater code you will create MarsPhotos is a demo app that

RICKY_SENSEI 1 Oct 25, 2022
A simple, lightweight library intended to take away some of the cruft and tediousness of using the Android BLE.

Blueteeth What Is Blueteeth? Blueteeth is a simple, lightweight library intended to take away some of the cruft and tediousness of using the Android B

Robot Pajamas 103 Nov 26, 2022
BLESSED Coroutines, a Bluetooth Low Energy (BLE) library for Android using Kotlin Coroutines

BLESSED for Android with Coroutines - BLE made easy BLESSED is a very compact Bluetooth Low Energy (BLE) library for Android 8 and higher, that makes

Martijn van Welie 82 Jan 1, 2023
This component allows you to interact with remote machine via SSH. You can execute commands or run scripts located on that machine

th2 act ssh (1.2.0) Overview Provides user with the ability to execute specified scripts or commands with the parameter he needs Custom resources for

th2 1 Dec 18, 2022
XClipper is a clipboard manager for Windows & Android which helps to track clipboard activities and makes it easier to interact with them.

XClipper XClipper is a clipboard manager for Windows & Android which helps to track clipboard activities and makes it easier to interact with them ❤️

Kaustubh Patange 134 Dec 31, 2022
Mock up social media android application created to interact with a backend Java server using GraphQL.

The Community Board Project Authorship: author: dnglokpor date: may 2022 Project Summary: The Community Board Project consists of a Java Spring Boot b

Delwys Glokpor 1 May 17, 2022
SimpleApiCalls is a type-safe REST client for Android. The library provides the ability to interact with APIs and send network requests with HttpURLConnection.

SimpleApiCalls ?? SimpleApiCalls is a type-safe REST client for Android. The library provides the ability to interact with APIs and send network reque

null 4 Nov 28, 2022
:octocat: ≡ DirectSelect is a selection widget with an ethereal, full-screen modal popup displaying the available choices when the widget is interact with.

DIRECT SELECT [JAVA] Selection widget with an ethereal, full-screen modal popup displaying the available choices We specialize in the designing and co

Ramotion 536 Nov 22, 2022