Android iTag
iTag is Bluetooth gadget that helps users track their belongings. The iTag Android application has 2 modes:
- Find: The user can ring the iTag gadget to find their belongings.
- Lost: The user can watch if the gadget is in range or not. If the gadget is out of range, the user will receive a notification and the location where the connection was lost is shown on the map.
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.
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
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.