Android iTag

iTag is Bluetooth gadget that helps users track their belongings. The iTag Android application has 2 modes:

Besides the main features, the application has scan mode to find all the iTag gadgets in the area, and a settings to configure up to 4 iTag gadgets with the name and color of each one.

GitHub

Play Store

Technical Details

The BLE layer is implemented using the Android BLE API, but for consistency it is wrapped in iOS CoreBluetooth-like API. The wrapper is implemented in its own module and is used in the main application.

For the sake of the performance and battery life, the application is written in Java and do not use heavy libraries like RxJava, instead for this application were developed lightweight reactive frameworks porting iOS pub/sub library

Sample usage:

   disposableBag.add(connection.observableRSSI().subscribe(rssi -> updateRSSI(id, rssi)));

The BLE signal strength is very noisy and raw reading is not very useful. The application uses a 1-dimensional Kalman filter to report the smoothed signal strength.