Giter VIP home page Giter VIP logo

android-beacon-scanner's Introduction

๐ŸŒ€ 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 5.0+ 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.

๐Ÿ”ง Installation setup

  1. This project uses Firebase Analytics and Firebase Crash reporting, therefore it needs a google-services.json files in the app directory. To get it you need to create a Firebase project in the Firebase console and go to the project settings and download the google-services.json file from there.
  2. You'll see there is a signingConfigs.release in the app/build.gradle that contains variable that you didn't declare beacon_scanner_key_password, beacon_scanner_store_file, beacon_scanner_store_password. Either you create those 3 keys in your ~/.gradle/gradle.properties files or you can simply remove this configuration if you're not interested in having a release signing configuration. Make sure to remove it in the release and preRelease buildTypes as well.
  3. That's it, the app should now compile!

๐Ÿ“˜ 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...)
  • Room
    • Local database wrapper
  • Retrofit
    • Network calls for POSTing to an endpoint
  • RxJava (& RxAndroid)
    • Easy threading and network calls abstraction
  • Dagger 2
    • Dependency injections into activities
  • FlexBox Layout
    • Easily display a list of size-varying fields
  • TapTargetView
    • Material design discovery feature made easy
  • Timber
    • A logger with a small, extensible API which provides utility on top of Android's normal Log class
  • Material dialog
    • Dialog API in Kotlin

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

android-beacon-scanner's People

Contributors

bridouille avatar doubleo2 avatar juhojokelainenvincitfi avatar rudloff avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

android-beacon-scanner's Issues

Editing Major & Minors ?

I managed to get this running quite easy !

Now i'm wondering how to write the major and minor numbers and edit the tx power.

Also is there a way to see all the fields for the beacons i have as i'm unsure what fields they actually have and may need to exit these additional fields.

Crashlytics, RuuviParser and Counthelper issue in building the app

Hi
I am trying to build the app but getting below issue. Kindly guide me how to resolve it.

e: C:\Android\1android-beacon-scanner-master\app\src\main\java\com\bridou_n\beaconscanner\AppSingleton.kt: (9, 12): Unresolved reference: crashlytics
e: C:\Android\1android-beacon-scanner-master\app\src\main\java\com\bridou_n\beaconscanner\AppSingleton.kt: (48, 3): Unresolved reference: Crashlytics
e: C:\Android\1android-beacon-scanner-master\app\src\main\java\com\bridou_n\beaconscanner\AppSingleton.kt: (52, 5): Unresolved reference: Crashlytics

e: C:\Android\1android-beacon-scanner-master\app\src\main\java\com\bridou_n\beaconscanner\models\BeaconSaved.kt: (9, 36): Unresolved reference: RuuviParser

e: C:\Android\1android-beacon-scanner-master\app\src\main\java\com\bridou_n\beaconscanner\utils\extensionFunctions\IntArrays.kt: (4, 36): Unresolved reference: CountHelper
e: C:\Android\1android-beacon-scanner-master\app\src\main\java\com\bridou_n\beaconscanner\utils\extensionFunctions\IntArrays.kt: (27, 12): Unresolved reference: CountHelper

Inclusion in F-Droid

Hi,

Since this app is Apache v2 licensed, are you considering the fact to add it to F-Droid? There is a strong community behind, that do not use Google Play nor anything else, except F-Droid.

You can find some documentation here.

Otherwise, if you don't want to work on the inclusion of this app by yourself, would it be ok for you if someone else do it for you?

Bluetooth address not shown

I actually have multiple beacon with the same UUID, major and minor for some reason, but at the end and only 1 ibeacon was scanned (I can scan the other beacon using some other apps). I also found that the bluetooth address is missing, maybe that's the source of the error.

Below is the screen shot of the app
IMG_3144

(idk why I can't rotate that)

"Copy to clipboard" generates not well formatted JSON

Hello!

I just downloaded the app from Play Store (current version: 2.1.0) into my Motorola G4 running Android 7.0.
While I was testing it, i noticed the "press and hold" to copy information from a card to my clipboard, such as this one:

2435723516812825707

And to my surprise it actually copied all of the cards information into a JSON, which is amazing. The issue is, though, that the JSON seens to be inappropriate:

{
"beaconAddress": "D3:7B:ED:3D:59:CF",
"beaconType": "eddystone_uid",
"distance": 1.0083072011759482,
"hashcode": -430272489,
"isBlocked": false,
"lastMinuteSeen": 25221370,
"lastSeen": 1513282215216,
"manufacturer": 65194,
"rssi": -82,
"txPower": -81 "eddystoneUidData": {
"namespaceId": "0xf5ee50f5b45e7d9b0cb6"
"instanceId": 0x000091eb78ff,
},
}

This one, for example, will break because of the commas. It also happened to iBeacons frame.

Thanks for the great app.

Best regards

google-services.json

I am getting this error message
File google-services.json is missing. The Google Services Plugin cannot function without it.

Not sure where to place the google-services.json file in the project.

Here is a screenshot from my Andriod studio

image

Update empty state handling

  • Tweak the BeaconsRecyclerViewAdapter to hold multiple view types and handle empty state that way.
  • Add a "Loading" viewType for the initial loading

logging the data

Hi,

I am trying to understand the nature of beacon signals for my research and wanted to log the data for research purpose.

I created an HTTP logging endpoint using flask and started sending my data! Worked!

However, when I look at my terminal, it seems that the structure of the data is really messed up.

I am attaching an image of what I received:
image

Can someone please elaborate on how do I parse it into a proper JSON file?

Thanks!

PS: I am new to all this, and it may be trivial, but I have been struggling a lot with it :(

Redo the readme

  • Update the readme with current libraries
  • Take screenshot of the app
  • Create a release and upload it to the store

AAR module

I want to use this in my app for indoor navigation, so is there a AAR plugin for me to use?

Use FlexboxLayout to display all beacon infos dynamically

  • Remove all the different types of layouts only use a generic one with a flexbox RV to display the different fields.

  • Keep the title + distance, date scanned and primary IDS + variable fields.

  • Use a viewType for the empty state

Error while running the project "unknown property "

Hello,

I got this error when I import the project:
"Error:(11, 0) Could not get unknown property 'beacon_scanner_key_password' for SigningConfig_Decorated{name=release, storeFile=null, storePassword=null, keyAlias=BeaconScannerKey, keyPassword=null, storeType=null, v1SigningEnabled=true, v2SigningEnabled=true} of type com.android.build.gradle.internal.dsl.SigningConfig.
Open File"

my android Gradle is up to date even I reimport the project twice but I got at the end the same error?

Thanks

Building project

Hi,thks for yr lib :)
after clonnig your library, i got this issus (building the project build.gradle)

Error:Failed to resolve: annotationProcessor
<a href="openFile:C:/Users/Soufian/Desktop/project04/android-beacon-scanner/app/build.gradle">Open File</a>
Error:(85, 13) Failed to resolve: com.google.firebase:firebase-core:10.2.6
<a href="openFile:C:/Users/Soufian/Desktop/project04/android-beacon-scanner/app/build.gradle">Show in File</a><br><a href="open.dependency.in.project.structure">Show in Project Structure dialog</a>

Can't sync without beacon_scanner_key_password - also no debug variant

Hi mate,

I'm trying to build the scanner but it just doesn't sync beause of the "Could not get unknown property 'beacon_scanner_key_password'" error. I have tried commenting out and removing signingConfigs and keyPassword beacon_scanner_key_password like you said in the instructions but I get the same error.

I went to use the debug variant but there is none (probably because the sync failed). Can you possibly tell me what to edit out to see if it builds?

Thank you

Distance Calculation

The distance calculation appears to be way off, can you point me in the right direction where the calculation code is located ?

Code base

Hi,

Have you android-beacon-scanner's code is java based. if yes, please give me a link or source code.
Because I don't want to use kotlin.

Thanks
Banti kumar

Access to the data recorded

Hi,

The readme suggested that it was using realm for storing and retrieving the data on phone. So I extracted all the realm packages using adb:

#!/bin/bash
ADB_PATH="/Users/harshaga/Library/Android/sdk/platform-tools"
PACKAGE_NAME="com.bridou_n.beaconscanner"
DB_NAME="default.realm"
DESTINATION_PATH="/Users/harshaga/Downloads/${DB_NAME}"
NOT_PRESENT="List of devices attached"
ADB_FOUND=`${ADB_PATH}/adb devices | tail -2 | head -1 | cut -f 1 | sed 's/ *$//g'`
if [[ ${ADB_FOUND} == ${NOT_PRESENT} ]]; then
    echo "Make sure a device is connected"
else
    ${ADB_PATH}/adb exec-out run-as ${PACKAGE_NAME} cat files/${DB_NAME} > ${DESTINATION_PATH}
    echo "Database exported to ${DESTINATION_PATH}"
fi

Once done I am trying to use a realm browser, for getting a look at the data. I tried two softwares, Realm Studio and Realm Browser on Mac.

Realm Studio gives me the following error:

Realm file has a bad size (59) Path:.

Screen Shot 2019-06-05 at 6 48 33 PM

For Realm Browser it asks me for an encryption key:

Screen Shot 2019-06-05 at 6 51 56 PM

Any help would be appreciated. I am new to all this, so I might be doing something silly, but I badly need to get this to work :(

Thank you so much for the app!

Cheers!
Harsh

Redo the settings.

  • Make sure disabled items are not clickable
  • Add ripple on switches
  • Tweak dialogs with inputs to have better styling.
  • Add layout animation on show

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.