/android-beacon-scanner

A simple android iBeacon, AltBeacon, Eddystone and RuuviTag beacon scanner

Primary LanguageKotlin

🌀 Android Beacon Scanner

A simple android beacon scanner that can recognize iBeacons, AltBeacons, Eddystone beacons (UID and URL, with or without TLM) and RuuviTags available on Google Play.

Available for android 4.3+ and smartphones with Bluetooth LE.

🔑 Features

This app will scan for beacons near you! ✌️

For all Beacons:

  • The type of beacon (iBeacon, AltBeacon, Eddystone or RuuviTag)
  • The approximation of the distance with the beacon (this is based on the RSSI value received and is NOT accurate)
  • The beacon address and manufacturer code
  • The RSSI and TX values
  • The last time the beacon has been seen

For iBeacons and AltBeacons:

  • UUID
  • Major
  • Minor

For Eddystone-UID beacons:

  • NamespaceID
  • InstanceID
  • TLM data sent if any

For Eddystone-URL and RuuviTag

  • Clickable URL
  • TLM data sent if any

For RuuviTag:

  • Air Pressure
  • Temperature
  • Humidity

It can display several frames emitted by a single beacon, allowing you to see if a beacon emits multiple frames types (for example radius network beacons can emit iBeacon and AltBeacon at the same time)!

  • You can also log the scans of the beacons to an endpoint via a HTTP POST request.

📘 Main libraries used

  • AltBeacon
    • Scanning for beacons nearby
    • Making the difference between iBeacons, AltBeacons and Eddystone beacons
    • Easily getting data emitted by the beacons (UUID, major, minor, namespaceID...)
  • Realm & Realm adapters
    • Storing and retrieving data on the phone
  • Retrofit
    • Network calls for POSTing to an endpoint
  • RxJava (& RxAndroid)
    • Easily threading and network calls abstraction
  • Dagger 2
    • Inject dependencies such as Realm, BeaconManager, API services, Preferences into the app
  • ButterKnife
    • Bind Android views to fields.
  • TapTargetView
    • Material design discovery feature made easy

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