Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save Assure-thinkTech/53619619bb4bbce86792f887d43b5017 to your computer and use it in GitHub Desktop.
Save Assure-thinkTech/53619619bb4bbce86792f887d43b5017 to your computer and use it in GitHub Desktop.

Revisions

  1. @stkent stkent revised this gist Nov 30, 2019. 1 changed file with 0 additions and 1 deletion.
    1 change: 0 additions & 1 deletion android-bluetooth-low-energy-resources.md
    Original file line number Diff line number Diff line change
    @@ -16,7 +16,6 @@
    - [Beepiz/BleGattCoroutines](https://github.com/Beepiz/BleGattCoroutines) - For using Kotlin's coroutines to sidestep BLE callback hell.
    - [iDevicesInc/SweetBlue](https://github.com/iDevicesInc/SweetBlue/) (proprietary) - May be useful if you have more dollars than time, or if you are developing stability-critical applications.
    - [douglasjunior/AndroidBluetoothLibrary](https://github.com/douglasjunior/AndroidBluetoothLibrary).
    - [Beepiz/BleGattCoroutines](https://github.com/Beepiz/BleGattCoroutines) - For using Kotlin's Coroutines with BLE.

    # Building

  2. @stkent stkent revised this gist Nov 30, 2019. 1 changed file with 2 additions and 1 deletion.
    3 changes: 2 additions & 1 deletion android-bluetooth-low-energy-resources.md
    Original file line number Diff line number Diff line change
    @@ -14,8 +14,9 @@
    - [NordicSemiconductor/Android-BLE-Library](https://github.com/NordicSemiconductor/Android-BLE-Library/) - Contains production-ready implementations of many of the important components (queues, managers, etc.) for working with BLE on Android. Consider using this library as-is or browsing the source code as inspiration if building your own implementation.
    - [Polidea/RxAndroidBle](https://github.com/Polidea/RxAndroidBle) - For using RxJava with BLE.
    - [Beepiz/BleGattCoroutines](https://github.com/Beepiz/BleGattCoroutines) - For using Kotlin's coroutines to sidestep BLE callback hell.
    - [iDevicesInc/SweetBlue](https://github.com/iDevicesInc/SweetBlue/) (proprietary). May be useful if you have more dollars than time, or if you are developing stability-critical applications.
    - [iDevicesInc/SweetBlue](https://github.com/iDevicesInc/SweetBlue/) (proprietary) - May be useful if you have more dollars than time, or if you are developing stability-critical applications.
    - [douglasjunior/AndroidBluetoothLibrary](https://github.com/douglasjunior/AndroidBluetoothLibrary).
    - [Beepiz/BleGattCoroutines](https://github.com/Beepiz/BleGattCoroutines) - For using Kotlin's Coroutines with BLE.

    # Building

  3. @stkent stkent revised this gist Oct 15, 2019. 1 changed file with 2 additions and 2 deletions.
    4 changes: 2 additions & 2 deletions android-bluetooth-low-energy-resources.md
    Original file line number Diff line number Diff line change
    @@ -11,7 +11,7 @@

    # Libraries

    - [NordicSemiconductor/Android-BLE-Library](https://github.com/NordicSemiconductor/Android-BLE-Library/)
    - [NordicSemiconductor/Android-BLE-Library](https://github.com/NordicSemiconductor/Android-BLE-Library/) - Contains production-ready implementations of many of the important components (queues, managers, etc.) for working with BLE on Android. Consider using this library as-is or browsing the source code as inspiration if building your own implementation.
    - [Polidea/RxAndroidBle](https://github.com/Polidea/RxAndroidBle) - For using RxJava with BLE.
    - [Beepiz/BleGattCoroutines](https://github.com/Beepiz/BleGattCoroutines) - For using Kotlin's coroutines to sidestep BLE callback hell.
    - [iDevicesInc/SweetBlue](https://github.com/iDevicesInc/SweetBlue/) (proprietary). May be useful if you have more dollars than time, or if you are developing stability-critical applications.
    @@ -29,7 +29,7 @@ Resources relevant to building Bluetooth Low Energy Android applications from sc

    ## Implementations

    - [NordicSemiconductor/puck-central-android](https://github.com/NordicSemiconductor/puck-central-android) - Source code for an Android app associated with Nordic Semiconductor's [Puck platform](http://nordicsemiconductor.github.io/puck/). This implementation is pretty complete. In particular the serial operations logic within the [operations types](https://github.com/NordicSemiconductor/puck-central-android/tree/master/PuckCentral/app/src/main/java/no/nordicsemi/puckcentral/bluetooth/gatt/operations) and [operation manager implementation](https://github.com/NordicSemiconductor/puck-central-android/blob/master/PuckCentral/app/src/main/java/no/nordicsemi/puckcentral/bluetooth/gatt/GattManager.java) includes several optional but valuable refinements.
    - [NordicSemiconductor/Android-nRF-Blinky](https://github.com/NordicSemiconductor/Android-nRF-Blinky) - Source code for an Android app that uses Nordic Semiconductor's [Android-BLE-Library](https://github.com/NordicSemiconductor/Android-BLE-Library/).
    - [googlesamples/android-BluetoothLeGatt](https://github.com/googlesamples/android-BluetoothLeGatt) - A compact `Service` and broadcast based example.

    ## Android Source Code
  4. @stkent stkent revised this gist Oct 29, 2018. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion android-bluetooth-low-energy-resources.md
    Original file line number Diff line number Diff line change
    @@ -14,7 +14,7 @@
    - [NordicSemiconductor/Android-BLE-Library](https://github.com/NordicSemiconductor/Android-BLE-Library/)
    - [Polidea/RxAndroidBle](https://github.com/Polidea/RxAndroidBle) - For using RxJava with BLE.
    - [Beepiz/BleGattCoroutines](https://github.com/Beepiz/BleGattCoroutines) - For using Kotlin's coroutines to sidestep BLE callback hell.
    - [iDevicesInc/SweetBlue](https://github.com/iDevicesInc/SweetBlue/)(proprietary). May be useful if you have more dollars than time, or if you are developing stability-critical applications.
    - [iDevicesInc/SweetBlue](https://github.com/iDevicesInc/SweetBlue/) (proprietary). May be useful if you have more dollars than time, or if you are developing stability-critical applications.
    - [douglasjunior/AndroidBluetoothLibrary](https://github.com/douglasjunior/AndroidBluetoothLibrary).

    # Building
  5. @stkent stkent revised this gist Oct 29, 2018. 1 changed file with 5 additions and 4 deletions.
    9 changes: 5 additions & 4 deletions android-bluetooth-low-energy-resources.md
    Original file line number Diff line number Diff line change
    @@ -11,10 +11,11 @@

    # Libraries

    - [iDevicesInc/SweetBlue](https://github.com/iDevicesInc/SweetBlue/) - A proprietary library that abstracts away many of Android BLE challenges. May be useful if you have more dollars than time, or if you are developing stability-critical applications.
    - [Polidea/RxAndroidBle](https://github.com/Polidea/RxAndroidBle) - A reactive BLE wrapper, useful for one-shot connections and operations (is not set up to support persistent connections).
    - [douglasjunior/AndroidBluetoothLibrary](https://github.com/douglasjunior/AndroidBluetoothLibrary) - MIT-licensed Android BLE wrapper. I haven't personally used this, but it looks good.
    - [Beepiz/BleGattCoroutines](https://github.com/Beepiz/BleGattCoroutines) - Again, not a library I've used, but a natural application of Kotlin's coroutines to sidestep callback hell.
    - [NordicSemiconductor/Android-BLE-Library](https://github.com/NordicSemiconductor/Android-BLE-Library/)
    - [Polidea/RxAndroidBle](https://github.com/Polidea/RxAndroidBle) - For using RxJava with BLE.
    - [Beepiz/BleGattCoroutines](https://github.com/Beepiz/BleGattCoroutines) - For using Kotlin's coroutines to sidestep BLE callback hell.
    - [iDevicesInc/SweetBlue](https://github.com/iDevicesInc/SweetBlue/)(proprietary). May be useful if you have more dollars than time, or if you are developing stability-critical applications.
    - [douglasjunior/AndroidBluetoothLibrary](https://github.com/douglasjunior/AndroidBluetoothLibrary).

    # Building

  6. @stkent stkent revised this gist Oct 1, 2018. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion android-bluetooth-low-energy-resources.md
    Original file line number Diff line number Diff line change
    @@ -50,7 +50,7 @@ Useful users, questions, answers, and comments from Stack Overflow's Q&A.
    - "[How to programmatically force bluetooth low energy service discovery on Android without using cache](https://stackoverflow.com/questions/22596951)" - [This answer](https://stackoverflow.com/a/22709467/2911458) formed the basis of my refined service cache-clearing method.
    - "[Android 4.3: How to connect to multiple Bluetooth Low Energy devices](https://stackoverflow.com/questions/21237093)" - [This answer](https://stackoverflow.com/a/30455650/2911458) discusses the serial nature of the Bluetooth APIs and indicates that things work the same for web and iOS.
    - "[Android BLE API: GATT Notification not received](https://stackoverflow.com/questions/17910322)"
    - "[RxAndroidBle keeping a persistant connection + Write/Notification handling](https://stackoverflow.com/questions/38902913)" - [This answer](https://stackoverflow.com/a/38919653/2911458) confirms that RxAndroidBle was not designed to accommodate persistent connections.
    - "[RxAndroidBle keeping a persistant connection + Write/Notification handling](https://stackoverflow.com/questions/38902913)" - [This answer](https://stackoverflow.com/a/38919653/2911458) confirms that RxAndroidBle was not designed to accommodate persistent connections. UPDATE: apparently this is possible; see author's tweet [here](https://twitter.com/DSeweryn/status/946422910926950400).
    - "[Location requirement to scan for BLE devices](https://stackoverflow.com/questions/40186200)" - [This answer](https://stackoverflow.com/a/40187238/2911458) provides some context regarding the location permission requirement for scanning.
    - "[Is the native Android BLE implementation synchronous in nature?](https://stackoverflow.com/questions/18011816)" - [This answer](https://stackoverflow.com/a/18054654/2911458) confirms (from a Samsung perspective) that BLE operations should be performed serially.
    - "[clientIf field in Android BluetoothGatt class](https://stackoverflow.com/questions/34158315)" - Some information on the `clientIf` value that's logged with almost all Android BLE calls.
  7. @stkent stkent revised this gist Oct 1, 2018. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion android-bluetooth-low-energy-resources.md
    Original file line number Diff line number Diff line change
    @@ -41,7 +41,7 @@ Resources relevant to building Bluetooth Low Energy Android applications from sc

    Useful users, questions, answers, and comments from Stack Overflow's Q&A.

    - [Emil](https://stackoverflow.com/users/556495/emil) - A user who consistently provides high-quality and detailed information regarding BLE on Android. Worth browsing his answers!
    - [Emil](https://stackoverflow.com/users/556495/emil) - A user who consistently provides high-quality and detailed information regarding BLE on Android. Worth browsing their answers!
    - "[Android 4.3 Bluetooth Low Energy unstable](https://stackoverflow.com/questions/17870189/android-4-3-bluetooth-low-energy-unstable)" - In particular, [this answer](https://stackoverflow.com/a/18889509/2911458) is a great overview and includes a hint regarding Wi-Fi/BLE interactions that I haven't seen elsewhere.
    - "[How to detect Bluetooth state change using a broadcast receiver?](https://stackoverflow.com/questions/24888023/how-to-detect-bluetooth-state-change-using-a-broadcast-receiver)"
    - "[Difference between close() and disconnect() in Android Bluetooth API?](https://stackoverflow.com/questions/23110295/difference-between-close-and-disconnect-in-android-bluetooth-api)"
  8. @stkent stkent revised this gist Jan 2, 2018. 1 changed file with 1 addition and 0 deletions.
    1 change: 1 addition & 0 deletions android-bluetooth-low-energy-resources.md
    Original file line number Diff line number Diff line change
    @@ -14,6 +14,7 @@
    - [iDevicesInc/SweetBlue](https://github.com/iDevicesInc/SweetBlue/) - A proprietary library that abstracts away many of Android BLE challenges. May be useful if you have more dollars than time, or if you are developing stability-critical applications.
    - [Polidea/RxAndroidBle](https://github.com/Polidea/RxAndroidBle) - A reactive BLE wrapper, useful for one-shot connections and operations (is not set up to support persistent connections).
    - [douglasjunior/AndroidBluetoothLibrary](https://github.com/douglasjunior/AndroidBluetoothLibrary) - MIT-licensed Android BLE wrapper. I haven't personally used this, but it looks good.
    - [Beepiz/BleGattCoroutines](https://github.com/Beepiz/BleGattCoroutines) - Again, not a library I've used, but a natural application of Kotlin's coroutines to sidestep callback hell.

    # Building

  9. @stkent stkent revised this gist Oct 6, 2017. 1 changed file with 1 addition and 2 deletions.
    3 changes: 1 addition & 2 deletions android-bluetooth-low-energy-resources.md
    Original file line number Diff line number Diff line change
    @@ -49,8 +49,7 @@ Useful users, questions, answers, and comments from Stack Overflow's Q&A.
    - "[How to programmatically force bluetooth low energy service discovery on Android without using cache](https://stackoverflow.com/questions/22596951)" - [This answer](https://stackoverflow.com/a/22709467/2911458) formed the basis of my refined service cache-clearing method.
    - "[Android 4.3: How to connect to multiple Bluetooth Low Energy devices](https://stackoverflow.com/questions/21237093)" - [This answer](https://stackoverflow.com/a/30455650/2911458) discusses the serial nature of the Bluetooth APIs and indicates that things work the same for web and iOS.
    - "[Android BLE API: GATT Notification not received](https://stackoverflow.com/questions/17910322)"
    - "[RxAndroidBle keeping a persistant connection + Write/Notification handling](https://stackoverflow.com/questions/38902913)"
    - "[This answer](https://stackoverflow.com/a/38919653/2911458)" confirms that RxAndroidBle was not designed to accommodate persistent connections.
    - "[RxAndroidBle keeping a persistant connection + Write/Notification handling](https://stackoverflow.com/questions/38902913)" - [This answer](https://stackoverflow.com/a/38919653/2911458) confirms that RxAndroidBle was not designed to accommodate persistent connections.
    - "[Location requirement to scan for BLE devices](https://stackoverflow.com/questions/40186200)" - [This answer](https://stackoverflow.com/a/40187238/2911458) provides some context regarding the location permission requirement for scanning.
    - "[Is the native Android BLE implementation synchronous in nature?](https://stackoverflow.com/questions/18011816)" - [This answer](https://stackoverflow.com/a/18054654/2911458) confirms (from a Samsung perspective) that BLE operations should be performed serially.
    - "[clientIf field in Android BluetoothGatt class](https://stackoverflow.com/questions/34158315)" - Some information on the `clientIf` value that's logged with almost all Android BLE calls.
  10. @stkent stkent revised this gist Oct 6, 2017. 1 changed file with 2 additions and 1 deletion.
    3 changes: 2 additions & 1 deletion android-bluetooth-low-energy-resources.md
    Original file line number Diff line number Diff line change
    @@ -49,7 +49,8 @@ Useful users, questions, answers, and comments from Stack Overflow's Q&A.
    - "[How to programmatically force bluetooth low energy service discovery on Android without using cache](https://stackoverflow.com/questions/22596951)" - [This answer](https://stackoverflow.com/a/22709467/2911458) formed the basis of my refined service cache-clearing method.
    - "[Android 4.3: How to connect to multiple Bluetooth Low Energy devices](https://stackoverflow.com/questions/21237093)" - [This answer](https://stackoverflow.com/a/30455650/2911458) discusses the serial nature of the Bluetooth APIs and indicates that things work the same for web and iOS.
    - "[Android BLE API: GATT Notification not received](https://stackoverflow.com/questions/17910322)"
    - "[RxAndroidBle keeping a persistant connection + Write/Notification handling](https://stackoverflow.com/questions/38902913)" - "[This answer](https://stackoverflow.com/a/38919653/2911458)" confirms that RxAndroidBle was not designed to accommodate persistent connections.
    - "[RxAndroidBle keeping a persistant connection + Write/Notification handling](https://stackoverflow.com/questions/38902913)"
    - "[This answer](https://stackoverflow.com/a/38919653/2911458)" confirms that RxAndroidBle was not designed to accommodate persistent connections.
    - "[Location requirement to scan for BLE devices](https://stackoverflow.com/questions/40186200)" - [This answer](https://stackoverflow.com/a/40187238/2911458) provides some context regarding the location permission requirement for scanning.
    - "[Is the native Android BLE implementation synchronous in nature?](https://stackoverflow.com/questions/18011816)" - [This answer](https://stackoverflow.com/a/18054654/2911458) confirms (from a Samsung perspective) that BLE operations should be performed serially.
    - "[clientIf field in Android BluetoothGatt class](https://stackoverflow.com/questions/34158315)" - Some information on the `clientIf` value that's logged with almost all Android BLE calls.
  11. @stkent stkent revised this gist Sep 30, 2017. 1 changed file with 5 additions and 1 deletion.
    6 changes: 5 additions & 1 deletion android-bluetooth-low-energy-resources.md
    Original file line number Diff line number Diff line change
    @@ -1,6 +1,10 @@
    # Background

    The best resources for those new to Bluetooth Low Energy on the Android platform.
    ## Platform-Agnostic

    - "[Introduction to Bluetooth Low Energy](https://learn.adafruit.com/introduction-to-bluetooth-low-energy/introduction)" by Adafruit.

    ## Android-Specific

    - "[Android Lollipop: Bluetooth LE Matures](https://www.youtube.com/watch?v=qx55Sa8UZAQ)" - A nice overview video by [Dave Smith](https://twitter.com/devunwired). Focuses on Lollipop and newer.
    - Fragmented Episode 45: "[Bluetooth (LE) with Dave (devunwired) Smith](http://fragmentedpodcast.com/episodes/45/)" - Another great Dave Smith overview if you prefer the podcast format!
  12. @stkent stkent revised this gist Sep 18, 2017. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion android-bluetooth-low-energy-resources.md
    Original file line number Diff line number Diff line change
    @@ -3,7 +3,7 @@
    The best resources for those new to Bluetooth Low Energy on the Android platform.

    - "[Android Lollipop: Bluetooth LE Matures](https://www.youtube.com/watch?v=qx55Sa8UZAQ)" - A nice overview video by [Dave Smith](https://twitter.com/devunwired). Focuses on Lollipop and newer.
    - [Fragmented Episode 45: "Bluetooth (LE) with Dave (devunwired) Smith"](http://fragmentedpodcast.com/episodes/45/) - Another great Dave Smith overview if you prefer the podcast format!
    - Fragmented Episode 45: "[Bluetooth (LE) with Dave (devunwired) Smith](http://fragmentedpodcast.com/episodes/45/)" - Another great Dave Smith overview if you prefer the podcast format!

    # Libraries

  13. @stkent stkent revised this gist Sep 18, 2017. 1 changed file with 21 additions and 21 deletions.
    42 changes: 21 additions & 21 deletions android-bluetooth-low-energy-resources.md
    Original file line number Diff line number Diff line change
    @@ -2,7 +2,7 @@

    The best resources for those new to Bluetooth Low Energy on the Android platform.

    - ["Android Lollipop: Bluetooth LE Matures"](https://www.youtube.com/watch?v=qx55Sa8UZAQ) - A nice overview video by [Dave Smith](https://twitter.com/devunwired). Focuses on Lollipop and newer.
    - "[Android Lollipop: Bluetooth LE Matures](https://www.youtube.com/watch?v=qx55Sa8UZAQ)" - A nice overview video by [Dave Smith](https://twitter.com/devunwired). Focuses on Lollipop and newer.
    - [Fragmented Episode 45: "Bluetooth (LE) with Dave (devunwired) Smith"](http://fragmentedpodcast.com/episodes/45/) - Another great Dave Smith overview if you prefer the podcast format!

    # Libraries
    @@ -37,26 +37,26 @@ Resources relevant to building Bluetooth Low Energy Android applications from sc
    Useful users, questions, answers, and comments from Stack Overflow's Q&A.

    - [Emil](https://stackoverflow.com/users/556495/emil) - A user who consistently provides high-quality and detailed information regarding BLE on Android. Worth browsing his answers!
    - ["Android 4.3 Bluetooth Low Energy unstable"](https://stackoverflow.com/questions/17870189/android-4-3-bluetooth-low-energy-unstable) - In particular, [this answer](https://stackoverflow.com/a/18889509/2911458) is a great overview and includes a hint regarding Wi-Fi/BLE interactions that I haven't seen elsewhere.
    - [How to detect Bluetooth state change using a broadcast receiver?](https://stackoverflow.com/questions/24888023/how-to-detect-bluetooth-state-change-using-a-broadcast-receiver)
    - [Difference between close() and disconnect() in Android Bluetooth API?](https://stackoverflow.com/questions/23110295/difference-between-close-and-disconnect-in-android-bluetooth-api)
    - [Android - Could not connect to bluetooth device on Lollipop](https://stackoverflow.com/questions/28018722/android-could-not-connect-to-bluetooth-device-on-lollipop) - [This answer](https://stackoverflow.com/a/29092645/2911458) provides some tips regarding the transport type flag passed to `BluetoothDevice.connectGatt`.
    - [Android Bluetooth LE: Not discovering services after connection](https://stackoverflow.com/questions/24025486/android-bluetooth-le-not-discovering-services-after-connection) - [This comment](https://stackoverflow.com/questions/24025486/android-bluetooth-le-not-discovering-services-after-connection#comment70743389_24044509) indicates that one should delay calls to `BluetoothGatt.close` until either (1) disconnection completes, or (2) a predefined period of time elapses.
    - [How to programmatically force bluetooth low energy service discovery on Android without using cache](https://stackoverflow.com/questions/22596951) - [This answer](https://stackoverflow.com/a/22709467/2911458) formed the basis of my refined service cache-clearing method.
    - [Android 4.3: How to connect to multiple Bluetooth Low Energy devices](https://stackoverflow.com/questions/21237093) - [This answer](https://stackoverflow.com/a/30455650/2911458) discusses the serial nature of the Bluetooth APIs and indicates that things work the same for web and iOS.
    - [Android BLE API: GATT Notification not received](https://stackoverflow.com/questions/17910322)
    - [RxAndroidBle keeping a persistant connection + Write/Notification handling](https://stackoverflow.com/questions/38902913) - [This answer](https://stackoverflow.com/a/38919653/2911458) confirms that RxAndroidBle was not designed to accommodate persistent connections.
    - [Location requirement to scan for BLE devices](https://stackoverflow.com/questions/40186200) - [This answer](https://stackoverflow.com/a/40187238/2911458) provides some context regarding the location permission requirement for scanning.
    - [Is the native Android BLE implementation synchronous in nature?](https://stackoverflow.com/questions/18011816) - [This answer](https://stackoverflow.com/a/18054654/2911458) confirms (from a Samsung perspective) that BLE operations should be performed serially.
    - [clientIf field in Android BluetoothGatt class](https://stackoverflow.com/questions/34158315) - Some information on the `clientIf` value that's logged with almost all Android BLE calls.
    - [Why does setCharacteristicNotification() not actually enable notifications?](https://stackoverflow.com/questions/22817005)
    - [Android Bluetooth Low Energy Characteristic notification count limit: does this vary by device?](https://stackoverflow.com/questions/42771904) - Clarification that the stack's 15 characteristic notifications limit is a limit per peripheral/server rather than per central/client/mobile device.
    - "[Android 4.3 Bluetooth Low Energy unstable](https://stackoverflow.com/questions/17870189/android-4-3-bluetooth-low-energy-unstable)" - In particular, [this answer](https://stackoverflow.com/a/18889509/2911458) is a great overview and includes a hint regarding Wi-Fi/BLE interactions that I haven't seen elsewhere.
    - "[How to detect Bluetooth state change using a broadcast receiver?](https://stackoverflow.com/questions/24888023/how-to-detect-bluetooth-state-change-using-a-broadcast-receiver)"
    - "[Difference between close() and disconnect() in Android Bluetooth API?](https://stackoverflow.com/questions/23110295/difference-between-close-and-disconnect-in-android-bluetooth-api)"
    - "[Android - Could not connect to bluetooth device on Lollipop](https://stackoverflow.com/questions/28018722/android-could-not-connect-to-bluetooth-device-on-lollipop)" - [This answer](https://stackoverflow.com/a/29092645/2911458) provides some tips regarding the transport type flag passed to `BluetoothDevice.connectGatt`.
    - "[Android Bluetooth LE: Not discovering services after connection](https://stackoverflow.com/questions/24025486/android-bluetooth-le-not-discovering-services-after-connection)" - [This comment](https://stackoverflow.com/questions/24025486/android-bluetooth-le-not-discovering-services-after-connection#comment70743389_24044509) indicates that one should delay calls to `BluetoothGatt.close` until either (1) disconnection completes, or (2) a predefined period of time elapses.
    - "[How to programmatically force bluetooth low energy service discovery on Android without using cache](https://stackoverflow.com/questions/22596951)" - [This answer](https://stackoverflow.com/a/22709467/2911458) formed the basis of my refined service cache-clearing method.
    - "[Android 4.3: How to connect to multiple Bluetooth Low Energy devices](https://stackoverflow.com/questions/21237093)" - [This answer](https://stackoverflow.com/a/30455650/2911458) discusses the serial nature of the Bluetooth APIs and indicates that things work the same for web and iOS.
    - "[Android BLE API: GATT Notification not received](https://stackoverflow.com/questions/17910322)"
    - "[RxAndroidBle keeping a persistant connection + Write/Notification handling](https://stackoverflow.com/questions/38902913)" - "[This answer](https://stackoverflow.com/a/38919653/2911458)" confirms that RxAndroidBle was not designed to accommodate persistent connections.
    - "[Location requirement to scan for BLE devices](https://stackoverflow.com/questions/40186200)" - [This answer](https://stackoverflow.com/a/40187238/2911458) provides some context regarding the location permission requirement for scanning.
    - "[Is the native Android BLE implementation synchronous in nature?](https://stackoverflow.com/questions/18011816)" - [This answer](https://stackoverflow.com/a/18054654/2911458) confirms (from a Samsung perspective) that BLE operations should be performed serially.
    - "[clientIf field in Android BluetoothGatt class](https://stackoverflow.com/questions/34158315)" - Some information on the `clientIf` value that's logged with almost all Android BLE calls.
    - "[Why does setCharacteristicNotification() not actually enable notifications?](https://stackoverflow.com/questions/22817005)"
    - "[Android Bluetooth Low Energy Characteristic notification count limit: does this vary by device?](https://stackoverflow.com/questions/42771904)" - Clarification that the stack's 15 characteristic notifications limit is a limit per peripheral/server rather than per central/client/mobile device.

    ## Google Issues

    - [Android 4.3: Bluetooth LE pretty instable](https://issuetracker.google.com/issues/36976711)
    - [NullPointerException in BluetoothGatt.java when disconnecting and closing](https://issuetracker.google.com/issues/37057260) - Includes discussion regarding exactly when `BluetoothGatt.disconnect` and `BluetoothGatt.close` should be called.
    - [Emulator and Bluetooth](https://issuetracker.google.com/issues/36972875) - Requests the addition of Bluetooth support to Android emulators (via host device Bluetooth).
    - [Bluetooth permission request dialog](https://issuetracker.google.com/u/2/issues/36979302) - Bug report related to weird window pop-up while programmatically prompting user to enable Bluetooth.
    - [Get BLE scan result using 'BluetoothLeScanner.startScan' must open Location Service in Android 6.0](https://issuetracker.google.com/u/1/issues/37065090) - Long thread related to location permissions and services requirements.
    - [[BLE] Android does not discover services if device supports Service Changed](https://issuetracker.google.com/u/1/issues/37012916) - Thread related to service caching and how to skip the cache.
    - "[Android 4.3: Bluetooth LE pretty instable](https://issuetracker.google.com/issues/36976711)"
    - "[NullPointerException in BluetoothGatt.java when disconnecting and closing](https://issuetracker.google.com/issues/37057260)" - Includes discussion regarding exactly when `BluetoothGatt.disconnect` and `BluetoothGatt.close` should be called.
    - "[Emulator and Bluetooth](https://issuetracker.google.com/issues/36972875)" - Requests the addition of Bluetooth support to Android emulators (via host device Bluetooth).
    - "[Bluetooth permission request dialog](https://issuetracker.google.com/u/2/issues/36979302)" - Bug report related to weird window pop-up while programmatically prompting user to enable Bluetooth.
    - "[Get BLE scan result using 'BluetoothLeScanner.startScan' must open Location Service in Android 6.0](https://issuetracker.google.com/u/1/issues/37065090)" - Long thread related to location permissions and services requirements.
    - "[[BLE] Android does not discover services if device supports Service Changed](https://issuetracker.google.com/u/1/issues/37012916)" - Thread related to service caching and how to skip the cache.
  14. @stkent stkent revised this gist Sep 18, 2017. 1 changed file with 5 additions and 5 deletions.
    10 changes: 5 additions & 5 deletions android-bluetooth-low-energy-resources.md
    Original file line number Diff line number Diff line change
    @@ -2,8 +2,8 @@

    The best resources for those new to Bluetooth Low Energy on the Android platform.

    - [_Android Lollipop: Bluetooth LE Matures_](https://www.youtube.com/watch?v=qx55Sa8UZAQ) - A nice overview video by [Dave Smith](https://twitter.com/devunwired). Focuses on Lollipop and newer.
    - [Fragmented Episode 45: _Bluetooth (LE) with Dave (devunwired) Smith_](http://fragmentedpodcast.com/episodes/45/) - Another great Dave Smith overview if you prefer the podcast format!
    - ["Android Lollipop: Bluetooth LE Matures"](https://www.youtube.com/watch?v=qx55Sa8UZAQ) - A nice overview video by [Dave Smith](https://twitter.com/devunwired). Focuses on Lollipop and newer.
    - [Fragmented Episode 45: "Bluetooth (LE) with Dave (devunwired) Smith"](http://fragmentedpodcast.com/episodes/45/) - Another great Dave Smith overview if you prefer the podcast format!

    # Libraries

    @@ -17,8 +17,8 @@ Resources relevant to building Bluetooth Low Energy Android applications from sc

    ## In-Depth Guides

    - _Bluetooth Low Energy on Android: Top Tips For The Tricky Bits_ by [Stuart Kent](https://twitter.com/skentphd) ([slides](https://speakerdeck.com/stkent/bluetooth-low-energy-on-android-top-tips-for-the-tricky-bits-video), [video](https://www.youtube.com/watch?v=jDykHjn-4Ng)) - My own talk!
    - _Bluetooth Low Energy on Android_ by [Erik Hellman](https://twitter.com/ErikHellman) ([post 1](https://hellsoft.se/bluetooth-low-energy-on-android-part-1-1aa8bf60717d)) ([post 2](https://hellsoft.se/bluetooth-low-energy-on-android-part-2-8fdb8ee3bfe9)) - Comprehensive introductory articles.
    - "Bluetooth Low Energy on Android: Top Tips For The Tricky Bits" by [Stuart Kent](https://twitter.com/skentphd) ([slides](https://speakerdeck.com/stkent/bluetooth-low-energy-on-android-top-tips-for-the-tricky-bits-video), [video](https://www.youtube.com/watch?v=jDykHjn-4Ng)) - My own talk!
    - "Bluetooth Low Energy on Android" series by [Erik Hellman](https://twitter.com/ErikHellman) ([post 1](https://hellsoft.se/bluetooth-low-energy-on-android-part-1-1aa8bf60717d)) ([post 2](https://hellsoft.se/bluetooth-low-energy-on-android-part-2-8fdb8ee3bfe9)) - Comprehensive introductory articles.
    - [Android BLE Issues](https://github.com/iDevicesInc/SweetBlue/wiki/Android-BLE-Issues) - A fairly complete list of symptoms you are likely to encounter while working with Android's BLE stack. Some apply to pre-Lollipop only, but many still exist and occur.

    ## Implementations
    @@ -37,7 +37,7 @@ Resources relevant to building Bluetooth Low Energy Android applications from sc
    Useful users, questions, answers, and comments from Stack Overflow's Q&A.

    - [Emil](https://stackoverflow.com/users/556495/emil) - A user who consistently provides high-quality and detailed information regarding BLE on Android. Worth browsing his answers!
    - [Android 4.3 Bluetooth Low Energy unstable](https://stackoverflow.com/questions/17870189/android-4-3-bluetooth-low-energy-unstable) - In particular, [this answer](https://stackoverflow.com/a/18889509/2911458) is a great overview and includes a hint regarding Wi-Fi/BLE interactions that I haven't seen elsewhere.
    - ["Android 4.3 Bluetooth Low Energy unstable"](https://stackoverflow.com/questions/17870189/android-4-3-bluetooth-low-energy-unstable) - In particular, [this answer](https://stackoverflow.com/a/18889509/2911458) is a great overview and includes a hint regarding Wi-Fi/BLE interactions that I haven't seen elsewhere.
    - [How to detect Bluetooth state change using a broadcast receiver?](https://stackoverflow.com/questions/24888023/how-to-detect-bluetooth-state-change-using-a-broadcast-receiver)
    - [Difference between close() and disconnect() in Android Bluetooth API?](https://stackoverflow.com/questions/23110295/difference-between-close-and-disconnect-in-android-bluetooth-api)
    - [Android - Could not connect to bluetooth device on Lollipop](https://stackoverflow.com/questions/28018722/android-could-not-connect-to-bluetooth-device-on-lollipop) - [This answer](https://stackoverflow.com/a/29092645/2911458) provides some tips regarding the transport type flag passed to `BluetoothDevice.connectGatt`.
  15. @stkent stkent revised this gist Sep 18, 2017. 1 changed file with 4 additions and 4 deletions.
    8 changes: 4 additions & 4 deletions android-bluetooth-low-energy-resources.md
    Original file line number Diff line number Diff line change
    @@ -2,8 +2,8 @@

    The best resources for those new to Bluetooth Low Energy on the Android platform.

    - [Android Lollipop: Bluetooth LE Matures](https://www.youtube.com/watch?v=qx55Sa8UZAQ) - A nice overview video by [Dave Smith](https://twitter.com/devunwired). Focuses on Lollipop and newer.
    - [Fragmented Episode 45: Bluetooth (LE) with Dave (devunwired) Smith](http://fragmentedpodcast.com/episodes/45/) - Another great Dave Smith overview if you prefer the podcast format!
    - [_Android Lollipop: Bluetooth LE Matures_](https://www.youtube.com/watch?v=qx55Sa8UZAQ) - A nice overview video by [Dave Smith](https://twitter.com/devunwired). Focuses on Lollipop and newer.
    - [Fragmented Episode 45: _Bluetooth (LE) with Dave (devunwired) Smith_](http://fragmentedpodcast.com/episodes/45/) - Another great Dave Smith overview if you prefer the podcast format!

    # Libraries

    @@ -17,8 +17,8 @@ Resources relevant to building Bluetooth Low Energy Android applications from sc

    ## In-Depth Guides

    - Bluetooth Low Energy on Android: Top Tips For The Tricky Bits by [Stuart Kent](https://twitter.com/skentphd) ([slides](https://speakerdeck.com/stkent/bluetooth-low-energy-on-android-top-tips-for-the-tricky-bits-video), [video](https://www.youtube.com/watch?v=jDykHjn-4Ng)) - My own talk!
    - Bluetooth Low Energy on Android by [Erik Hellman](https://twitter.com/ErikHellman) ([part 1](https://hellsoft.se/bluetooth-low-energy-on-android-part-1-1aa8bf60717d)) ([part 2](https://hellsoft.se/bluetooth-low-energy-on-android-part-2-8fdb8ee3bfe9)) - Comprehensive introductory articles.
    - _Bluetooth Low Energy on Android: Top Tips For The Tricky Bits_ by [Stuart Kent](https://twitter.com/skentphd) ([slides](https://speakerdeck.com/stkent/bluetooth-low-energy-on-android-top-tips-for-the-tricky-bits-video), [video](https://www.youtube.com/watch?v=jDykHjn-4Ng)) - My own talk!
    - _Bluetooth Low Energy on Android_ by [Erik Hellman](https://twitter.com/ErikHellman) ([post 1](https://hellsoft.se/bluetooth-low-energy-on-android-part-1-1aa8bf60717d)) ([post 2](https://hellsoft.se/bluetooth-low-energy-on-android-part-2-8fdb8ee3bfe9)) - Comprehensive introductory articles.
    - [Android BLE Issues](https://github.com/iDevicesInc/SweetBlue/wiki/Android-BLE-Issues) - A fairly complete list of symptoms you are likely to encounter while working with Android's BLE stack. Some apply to pre-Lollipop only, but many still exist and occur.

    ## Implementations
  16. @stkent stkent revised this gist Sep 18, 2017. 1 changed file with 2 additions and 2 deletions.
    4 changes: 2 additions & 2 deletions android-bluetooth-low-energy-resources.md
    Original file line number Diff line number Diff line change
    @@ -17,8 +17,8 @@ Resources relevant to building Bluetooth Low Energy Android applications from sc

    ## In-Depth Guides

    - Bluetooth Low Energy on Android: Top Tips For The Tricky Bits by Stuart Kent ([slides](https://speakerdeck.com/stkent/bluetooth-low-energy-on-android-top-tips-for-the-tricky-bits-video), [video](https://www.youtube.com/watch?v=jDykHjn-4Ng)) - My own talk!
    - Bluetooth Low Energy on Android by Erik Hellman ([part 1](https://hellsoft.se/bluetooth-low-energy-on-android-part-1-1aa8bf60717d)) ([part 2](https://hellsoft.se/bluetooth-low-energy-on-android-part-2-8fdb8ee3bfe9)) - Comprehensive introductory articles.
    - Bluetooth Low Energy on Android: Top Tips For The Tricky Bits by [Stuart Kent](https://twitter.com/skentphd) ([slides](https://speakerdeck.com/stkent/bluetooth-low-energy-on-android-top-tips-for-the-tricky-bits-video), [video](https://www.youtube.com/watch?v=jDykHjn-4Ng)) - My own talk!
    - Bluetooth Low Energy on Android by [Erik Hellman](https://twitter.com/ErikHellman) ([part 1](https://hellsoft.se/bluetooth-low-energy-on-android-part-1-1aa8bf60717d)) ([part 2](https://hellsoft.se/bluetooth-low-energy-on-android-part-2-8fdb8ee3bfe9)) - Comprehensive introductory articles.
    - [Android BLE Issues](https://github.com/iDevicesInc/SweetBlue/wiki/Android-BLE-Issues) - A fairly complete list of symptoms you are likely to encounter while working with Android's BLE stack. Some apply to pre-Lollipop only, but many still exist and occur.

    ## Implementations
  17. @stkent stkent revised this gist Sep 18, 2017. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion android-bluetooth-low-energy-resources.md
    Original file line number Diff line number Diff line change
    @@ -2,7 +2,7 @@

    The best resources for those new to Bluetooth Low Energy on the Android platform.

    - [Android Lollipop: Bluetooth LE Matures](https://www.youtube.com/watch?v=qx55Sa8UZAQ) - A nice overview video by Dave Smith. Focuses on Lollipop and newer.
    - [Android Lollipop: Bluetooth LE Matures](https://www.youtube.com/watch?v=qx55Sa8UZAQ) - A nice overview video by [Dave Smith](https://twitter.com/devunwired). Focuses on Lollipop and newer.
    - [Fragmented Episode 45: Bluetooth (LE) with Dave (devunwired) Smith](http://fragmentedpodcast.com/episodes/45/) - Another great Dave Smith overview if you prefer the podcast format!

    # Libraries
  18. @stkent stkent revised this gist Sep 18, 2017. 1 changed file with 2 additions and 2 deletions.
    4 changes: 2 additions & 2 deletions android-bluetooth-low-energy-resources.md
    Original file line number Diff line number Diff line change
    @@ -17,8 +17,8 @@ Resources relevant to building Bluetooth Low Energy Android applications from sc

    ## In-Depth Guides

    - Bluetooth Low Energy on Android: Top Tips For The Tricky Bits ([slides](https://speakerdeck.com/stkent/bluetooth-low-energy-on-android-top-tips-for-the-tricky-bits-video), [video](https://www.youtube.com/watch?v=jDykHjn-4Ng)) - My own talk!
    - Erik Hellman's in-progress blog post series ([part 1](https://hellsoft.se/bluetooth-low-energy-on-android-part-1-1aa8bf60717d)) ([part 2](https://hellsoft.se/bluetooth-low-energy-on-android-part-2-8fdb8ee3bfe9)) - Comprehensive introductory articles.
    - Bluetooth Low Energy on Android: Top Tips For The Tricky Bits by Stuart Kent ([slides](https://speakerdeck.com/stkent/bluetooth-low-energy-on-android-top-tips-for-the-tricky-bits-video), [video](https://www.youtube.com/watch?v=jDykHjn-4Ng)) - My own talk!
    - Bluetooth Low Energy on Android by Erik Hellman ([part 1](https://hellsoft.se/bluetooth-low-energy-on-android-part-1-1aa8bf60717d)) ([part 2](https://hellsoft.se/bluetooth-low-energy-on-android-part-2-8fdb8ee3bfe9)) - Comprehensive introductory articles.
    - [Android BLE Issues](https://github.com/iDevicesInc/SweetBlue/wiki/Android-BLE-Issues) - A fairly complete list of symptoms you are likely to encounter while working with Android's BLE stack. Some apply to pre-Lollipop only, but many still exist and occur.

    ## Implementations
  19. @stkent stkent revised this gist Sep 18, 2017. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion android-bluetooth-low-energy-resources.md
    Original file line number Diff line number Diff line change
    @@ -17,7 +17,7 @@ Resources relevant to building Bluetooth Low Energy Android applications from sc

    ## In-Depth Guides

    - Bluetooth Low Energy on Android: Top Tips For The Tricky Bits ([slides](https://speakerdeck.com/stkent/bluetooth-low-energy-on-android-top-tips-for-the-tricky-bits-video), [video](https://www.youtube.com/watch?v=jDykHjn-4Ng)).
    - Bluetooth Low Energy on Android: Top Tips For The Tricky Bits ([slides](https://speakerdeck.com/stkent/bluetooth-low-energy-on-android-top-tips-for-the-tricky-bits-video), [video](https://www.youtube.com/watch?v=jDykHjn-4Ng)) - My own talk!
    - Erik Hellman's in-progress blog post series ([part 1](https://hellsoft.se/bluetooth-low-energy-on-android-part-1-1aa8bf60717d)) ([part 2](https://hellsoft.se/bluetooth-low-energy-on-android-part-2-8fdb8ee3bfe9)) - Comprehensive introductory articles.
    - [Android BLE Issues](https://github.com/iDevicesInc/SweetBlue/wiki/Android-BLE-Issues) - A fairly complete list of symptoms you are likely to encounter while working with Android's BLE stack. Some apply to pre-Lollipop only, but many still exist and occur.

  20. @stkent stkent revised this gist Sep 18, 2017. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion android-bluetooth-low-energy-resources.md
    Original file line number Diff line number Diff line change
    @@ -17,7 +17,7 @@ Resources relevant to building Bluetooth Low Energy Android applications from sc

    ## In-Depth Guides

    - "Bluetooth Low Energy on Android: Top Tips For The Tricky Bits ([slides](https://speakerdeck.com/stkent/bluetooth-low-energy-on-android-top-tips-for-the-tricky-bits-video), [video](https://www.youtube.com/watch?v=jDykHjn-4Ng)).
    - Bluetooth Low Energy on Android: Top Tips For The Tricky Bits ([slides](https://speakerdeck.com/stkent/bluetooth-low-energy-on-android-top-tips-for-the-tricky-bits-video), [video](https://www.youtube.com/watch?v=jDykHjn-4Ng)).
    - Erik Hellman's in-progress blog post series ([part 1](https://hellsoft.se/bluetooth-low-energy-on-android-part-1-1aa8bf60717d)) ([part 2](https://hellsoft.se/bluetooth-low-energy-on-android-part-2-8fdb8ee3bfe9)) - Comprehensive introductory articles.
    - [Android BLE Issues](https://github.com/iDevicesInc/SweetBlue/wiki/Android-BLE-Issues) - A fairly complete list of symptoms you are likely to encounter while working with Android's BLE stack. Some apply to pre-Lollipop only, but many still exist and occur.

  21. @stkent stkent revised this gist Sep 18, 2017. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion android-bluetooth-low-energy-resources.md
    Original file line number Diff line number Diff line change
    @@ -11,7 +11,7 @@ The best resources for those new to Bluetooth Low Energy on the Android platform
    - [Polidea/RxAndroidBle](https://github.com/Polidea/RxAndroidBle) - A reactive BLE wrapper, useful for one-shot connections and operations (is not set up to support persistent connections).
    - [douglasjunior/AndroidBluetoothLibrary](https://github.com/douglasjunior/AndroidBluetoothLibrary) - MIT-licensed Android BLE wrapper. I haven't personally used this, but it looks good.

    # Going It Alone
    # Building

    Resources relevant to building Bluetooth Low Energy Android applications from scratch.

  22. @stkent stkent revised this gist Sep 18, 2017. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion android-bluetooth-low-energy-resources.md
    Original file line number Diff line number Diff line change
    @@ -1,4 +1,4 @@
    # Getting Started
    # Background

    The best resources for those new to Bluetooth Low Energy on the Android platform.

  23. @stkent stkent revised this gist Sep 18, 2017. 1 changed file with 10 additions and 4 deletions.
    14 changes: 10 additions & 4 deletions android-bluetooth-low-energy-resources.md
    Original file line number Diff line number Diff line change
    @@ -11,15 +11,21 @@ The best resources for those new to Bluetooth Low Energy on the Android platform
    - [Polidea/RxAndroidBle](https://github.com/Polidea/RxAndroidBle) - A reactive BLE wrapper, useful for one-shot connections and operations (is not set up to support persistent connections).
    - [douglasjunior/AndroidBluetoothLibrary](https://github.com/douglasjunior/AndroidBluetoothLibrary) - MIT-licensed Android BLE wrapper. I haven't personally used this, but it looks good.

    # Getting Serious
    # Going It Alone

    - [Android BLE Issues](https://github.com/iDevicesInc/SweetBlue/wiki/Android-BLE-Issues) - A fairly complete list of symptoms you are likely to encounter while working with Android's BLE stack. Some apply to pre-Lollipop only, but many still exist and occur.
    Resources relevant to building Bluetooth Low Energy Android applications from scratch.

    ## In-Depth Guides

    - "Bluetooth Low Energy on Android: Top Tips For The Tricky Bits ([slides](https://speakerdeck.com/stkent/bluetooth-low-energy-on-android-top-tips-for-the-tricky-bits-video), [video](https://www.youtube.com/watch?v=jDykHjn-4Ng)).
    - Erik Hellman's in-progress blog post series ([part 1](https://hellsoft.se/bluetooth-low-energy-on-android-part-1-1aa8bf60717d)) ([part 2](https://hellsoft.se/bluetooth-low-energy-on-android-part-2-8fdb8ee3bfe9)) - Comprehensive introductory articles.
    - [Android BLE Issues](https://github.com/iDevicesInc/SweetBlue/wiki/Android-BLE-Issues) - A fairly complete list of symptoms you are likely to encounter while working with Android's BLE stack. Some apply to pre-Lollipop only, but many still exist and occur.

    ## Implementations

    - [NordicSemiconductor/puck-central-android](https://github.com/NordicSemiconductor/puck-central-android) - Source code for an Android app associated with Nordic Semiconductor's [Puck platform](http://nordicsemiconductor.github.io/puck/). This implementation is pretty complete. In particular the serial operations logic within the [operations types](https://github.com/NordicSemiconductor/puck-central-android/tree/master/PuckCentral/app/src/main/java/no/nordicsemi/puckcentral/bluetooth/gatt/operations) and [operation manager implementation](https://github.com/NordicSemiconductor/puck-central-android/blob/master/PuckCentral/app/src/main/java/no/nordicsemi/puckcentral/bluetooth/gatt/GattManager.java) includes several optional but valuable refinements.
    - [googlesamples/android-BluetoothLeGatt](https://github.com/googlesamples/android-BluetoothLeGatt) - A compact `Service` and broadcast based example.

    # Issues/Discussions/References

    ## Android Source Code

    - Locations within the AOSP source code where GATT success and error codes are defined:
  24. @stkent stkent revised this gist Sep 17, 2017. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion android-bluetooth-low-energy-resources.md
    Original file line number Diff line number Diff line change
    @@ -11,7 +11,7 @@ The best resources for those new to Bluetooth Low Energy on the Android platform
    - [Polidea/RxAndroidBle](https://github.com/Polidea/RxAndroidBle) - A reactive BLE wrapper, useful for one-shot connections and operations (is not set up to support persistent connections).
    - [douglasjunior/AndroidBluetoothLibrary](https://github.com/douglasjunior/AndroidBluetoothLibrary) - MIT-licensed Android BLE wrapper. I haven't personally used this, but it looks good.

    # Advanced Implementations
    # Getting Serious

    - [Android BLE Issues](https://github.com/iDevicesInc/SweetBlue/wiki/Android-BLE-Issues) - A fairly complete list of symptoms you are likely to encounter while working with Android's BLE stack. Some apply to pre-Lollipop only, but many still exist and occur.
    - Erik Hellman's in-progress blog post series ([part 1](https://hellsoft.se/bluetooth-low-energy-on-android-part-1-1aa8bf60717d)) ([part 2](https://hellsoft.se/bluetooth-low-energy-on-android-part-2-8fdb8ee3bfe9)) - Comprehensive introductory articles.
  25. @stkent stkent revised this gist Sep 17, 2017. 1 changed file with 4 additions and 10 deletions.
    14 changes: 4 additions & 10 deletions android-bluetooth-low-energy-resources.md
    Original file line number Diff line number Diff line change
    @@ -11,21 +11,15 @@ The best resources for those new to Bluetooth Low Energy on the Android platform
    - [Polidea/RxAndroidBle](https://github.com/Polidea/RxAndroidBle) - A reactive BLE wrapper, useful for one-shot connections and operations (is not set up to support persistent connections).
    - [douglasjunior/AndroidBluetoothLibrary](https://github.com/douglasjunior/AndroidBluetoothLibrary) - MIT-licensed Android BLE wrapper. I haven't personally used this, but it looks good.

    # Reference Material

    ## Documented Problems
    # Advanced Implementations

    - [Android BLE Issues](https://github.com/iDevicesInc/SweetBlue/wiki/Android-BLE-Issues) - A fairly complete list of symptoms you are likely to encounter while working with Android's BLE stack. Some apply to pre-Lollipop only, but many still exist and occur.

    ## Walkthroughs

    - Erik Hellman's in-progress blog post series ([part 1](https://hellsoft.se/bluetooth-low-energy-on-android-part-1-1aa8bf60717d)) ([part 2](https://hellsoft.se/bluetooth-low-energy-on-android-part-2-8fdb8ee3bfe9)) - Comprehensive introductory articles.

    ## Implementations

    - Erik Hellman's in-progress blog post series ([part 1](https://hellsoft.se/bluetooth-low-energy-on-android-part-1-1aa8bf60717d)) ([part 2](https://hellsoft.se/bluetooth-low-energy-on-android-part-2-8fdb8ee3bfe9)) - Comprehensive introductory articles.
    - [NordicSemiconductor/puck-central-android](https://github.com/NordicSemiconductor/puck-central-android) - Source code for an Android app associated with Nordic Semiconductor's [Puck platform](http://nordicsemiconductor.github.io/puck/). This implementation is pretty complete. In particular the serial operations logic within the [operations types](https://github.com/NordicSemiconductor/puck-central-android/tree/master/PuckCentral/app/src/main/java/no/nordicsemi/puckcentral/bluetooth/gatt/operations) and [operation manager implementation](https://github.com/NordicSemiconductor/puck-central-android/blob/master/PuckCentral/app/src/main/java/no/nordicsemi/puckcentral/bluetooth/gatt/GattManager.java) includes several optional but valuable refinements.
    - [googlesamples/android-BluetoothLeGatt](https://github.com/googlesamples/android-BluetoothLeGatt) - A compact `Service` and broadcast based example.

    # Issues/Discussions/References

    ## Android Source Code

    - Locations within the AOSP source code where GATT success and error codes are defined:
  26. @stkent stkent revised this gist Sep 17, 2017. 1 changed file with 8 additions and 2 deletions.
    10 changes: 8 additions & 2 deletions android-bluetooth-low-energy-resources.md
    Original file line number Diff line number Diff line change
    @@ -4,8 +4,6 @@ The best resources for those new to Bluetooth Low Energy on the Android platform

    - [Android Lollipop: Bluetooth LE Matures](https://www.youtube.com/watch?v=qx55Sa8UZAQ) - A nice overview video by Dave Smith. Focuses on Lollipop and newer.
    - [Fragmented Episode 45: Bluetooth (LE) with Dave (devunwired) Smith](http://fragmentedpodcast.com/episodes/45/) - Another great Dave Smith overview if you prefer the podcast format!
    - [Android BLE Issues](https://github.com/iDevicesInc/SweetBlue/wiki/Android-BLE-Issues) - A list of issues you are likely to encounter while working with Android's BLE stack. Some apply to pre-Lollipop only, but many still exist and occur.
    - Erik Hellman's in-progress blog post series ([part 1](https://hellsoft.se/bluetooth-low-energy-on-android-part-1-1aa8bf60717d)) ([part 2](https://hellsoft.se/bluetooth-low-energy-on-android-part-2-8fdb8ee3bfe9)) - Comprehensive introductory articles.

    # Libraries

    @@ -15,6 +13,14 @@ The best resources for those new to Bluetooth Low Energy on the Android platform

    # Reference Material

    ## Documented Problems

    - [Android BLE Issues](https://github.com/iDevicesInc/SweetBlue/wiki/Android-BLE-Issues) - A fairly complete list of symptoms you are likely to encounter while working with Android's BLE stack. Some apply to pre-Lollipop only, but many still exist and occur.

    ## Walkthroughs

    - Erik Hellman's in-progress blog post series ([part 1](https://hellsoft.se/bluetooth-low-energy-on-android-part-1-1aa8bf60717d)) ([part 2](https://hellsoft.se/bluetooth-low-energy-on-android-part-2-8fdb8ee3bfe9)) - Comprehensive introductory articles.

    ## Implementations

    - [NordicSemiconductor/puck-central-android](https://github.com/NordicSemiconductor/puck-central-android) - Source code for an Android app associated with Nordic Semiconductor's [Puck platform](http://nordicsemiconductor.github.io/puck/). This implementation is pretty complete. In particular the serial operations logic within the [operations types](https://github.com/NordicSemiconductor/puck-central-android/tree/master/PuckCentral/app/src/main/java/no/nordicsemi/puckcentral/bluetooth/gatt/operations) and [operation manager implementation](https://github.com/NordicSemiconductor/puck-central-android/blob/master/PuckCentral/app/src/main/java/no/nordicsemi/puckcentral/bluetooth/gatt/GattManager.java) includes several optional but valuable refinements.
  27. @stkent stkent revised this gist Sep 11, 2017. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion android-bluetooth-low-energy-resources.md
    Original file line number Diff line number Diff line change
    @@ -52,5 +52,5 @@ Useful users, questions, answers, and comments from Stack Overflow's Q&A.
    - [NullPointerException in BluetoothGatt.java when disconnecting and closing](https://issuetracker.google.com/issues/37057260) - Includes discussion regarding exactly when `BluetoothGatt.disconnect` and `BluetoothGatt.close` should be called.
    - [Emulator and Bluetooth](https://issuetracker.google.com/issues/36972875) - Requests the addition of Bluetooth support to Android emulators (via host device Bluetooth).
    - [Bluetooth permission request dialog](https://issuetracker.google.com/u/2/issues/36979302) - Bug report related to weird window pop-up while programmatically prompting user to enable Bluetooth.
    - [Get BLE scan result using 'BluetoothLeScanner.startScan' must open Location Service in Android 6.0](https://issuetracker.google.com/u/1/issues/37065090) - Long thread related to location permissions and services requirements
    - [Get BLE scan result using 'BluetoothLeScanner.startScan' must open Location Service in Android 6.0](https://issuetracker.google.com/u/1/issues/37065090) - Long thread related to location permissions and services requirements.
    - [[BLE] Android does not discover services if device supports Service Changed](https://issuetracker.google.com/u/1/issues/37012916) - Thread related to service caching and how to skip the cache.
  28. @stkent stkent revised this gist Sep 11, 2017. 1 changed file with 1 addition and 0 deletions.
    1 change: 1 addition & 0 deletions android-bluetooth-low-energy-resources.md
    Original file line number Diff line number Diff line change
    @@ -44,6 +44,7 @@ Useful users, questions, answers, and comments from Stack Overflow's Q&A.
    - [Is the native Android BLE implementation synchronous in nature?](https://stackoverflow.com/questions/18011816) - [This answer](https://stackoverflow.com/a/18054654/2911458) confirms (from a Samsung perspective) that BLE operations should be performed serially.
    - [clientIf field in Android BluetoothGatt class](https://stackoverflow.com/questions/34158315) - Some information on the `clientIf` value that's logged with almost all Android BLE calls.
    - [Why does setCharacteristicNotification() not actually enable notifications?](https://stackoverflow.com/questions/22817005)
    - [Android Bluetooth Low Energy Characteristic notification count limit: does this vary by device?](https://stackoverflow.com/questions/42771904) - Clarification that the stack's 15 characteristic notifications limit is a limit per peripheral/server rather than per central/client/mobile device.

    ## Google Issues

  29. @stkent stkent revised this gist Sep 11, 2017. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion android-bluetooth-low-energy-resources.md
    Original file line number Diff line number Diff line change
    @@ -3,7 +3,7 @@
    The best resources for those new to Bluetooth Low Energy on the Android platform.

    - [Android Lollipop: Bluetooth LE Matures](https://www.youtube.com/watch?v=qx55Sa8UZAQ) - A nice overview video by Dave Smith. Focuses on Lollipop and newer.
    - [Fragmented Episode 45: Bluetooth (LE) with Dave (devunwired) Smith](http://fragmentedpodcast.com/episodes/45/)
    - [Fragmented Episode 45: Bluetooth (LE) with Dave (devunwired) Smith](http://fragmentedpodcast.com/episodes/45/) - Another great Dave Smith overview if you prefer the podcast format!
    - [Android BLE Issues](https://github.com/iDevicesInc/SweetBlue/wiki/Android-BLE-Issues) - A list of issues you are likely to encounter while working with Android's BLE stack. Some apply to pre-Lollipop only, but many still exist and occur.
    - Erik Hellman's in-progress blog post series ([part 1](https://hellsoft.se/bluetooth-low-energy-on-android-part-1-1aa8bf60717d)) ([part 2](https://hellsoft.se/bluetooth-low-energy-on-android-part-2-8fdb8ee3bfe9)) - Comprehensive introductory articles.

  30. @stkent stkent revised this gist Sep 11, 2017. 1 changed file with 3 additions and 2 deletions.
    5 changes: 3 additions & 2 deletions android-bluetooth-low-energy-resources.md
    Original file line number Diff line number Diff line change
    @@ -9,8 +9,9 @@ The best resources for those new to Bluetooth Low Energy on the Android platform

    # Libraries

    - [SweetBlue](https://github.com/iDevicesInc/SweetBlue/) - A proprietary library that abstracts away many of Android BLE challenges. May be useful if you have more dollars than time, or if you are developing stability-critical applications.
    - [RxAndroidBle](https://github.com/Polidea/RxAndroidBle) - A reactive BLE wrapper, useful for one-shot connections and operations (is not set up to support persistent connections).
    - [iDevicesInc/SweetBlue](https://github.com/iDevicesInc/SweetBlue/) - A proprietary library that abstracts away many of Android BLE challenges. May be useful if you have more dollars than time, or if you are developing stability-critical applications.
    - [Polidea/RxAndroidBle](https://github.com/Polidea/RxAndroidBle) - A reactive BLE wrapper, useful for one-shot connections and operations (is not set up to support persistent connections).
    - [douglasjunior/AndroidBluetoothLibrary](https://github.com/douglasjunior/AndroidBluetoothLibrary) - MIT-licensed Android BLE wrapper. I haven't personally used this, but it looks good.

    # Reference Material