TrapTap
Idea
The project happened because of the unique problem that all four TrapTap creators had: there was no simple, cheap and legal way to avoid the speeding tickets. So, they created a distraction-free device that sits on a vehicle's dash. It maps areas with speed traps, school zones and red light cameras by using GPS and warns you of potential driving hazards.
TrapTap uses Bluetooth Low-energy (BLE) to connect with the free app on your smartphone and its mapping software.
Project Overview
To customize the alerts settings and check the statistics users should synchronize TrapTap with our Android app. The app collects and shows the average speed, travel distance and a number of hazards passed.
It’s incredibly easy to use:
-
Download the app
-
Pair with your TrapTap via Bluetooth
-
Configure your settings
-
Set the device on your dashboard
The Master of Code team worked on the Android app development by using a feature-by-feature approach in a short phases. Each sprint lasted for 2-3 weeks. They comprised new feature development, location, database and battery usage optimization and provided workarounds for issues caused by different Bluetooth behaviours of various Android devices.
The project activity included:
-
Android app development
-
Quality Assurance
-
Customer and product support
What We Created
The app and the device work simultaneously with the Bluetooth, location and networking, which influence a phone battery a lot. Also, we had some Bluetooth issues caused by different vendors' smartphone peculiarities. We solved those issues by fixing the RxAndroidBle library.
However, path prediction appeared a tricky thing.
Master’s comment
We store the mapping tile related data in a Realm database. The location data takes up much space, and, as it turned out, Realm doesn’t work well when data size grows huge. The solution was to divide a huge base into a bunch of small ones. Since map comprises 1’*1’ squares called tiles, we created individual bases for each tile to avoid having huge Realm instances. We need to keep only a current and every surrounding tile at any given moment. This method helps us save a device’s RAM as well . Compressed data for a single tile occupies up to several megabytes. To consume less battery we load the tiles in advance: initially, the driver’s current tile and then all surrounding tiles.
-
Duration
12 month -
Team size
10 people -
Platform
Android -
Industry
IoT
Technology stack
-
Networking
- Retrofit2
- OkHttp3
-
DB
- Realm
-
DI
- Dagger2
-
test tools
- JUnit4
-
communication
- RxAndroidBle
-
accounting
- AWS Congnito
-
threading
- RxJava
-
crash analytics
- Crashlytics
-
customer support
- Intercom
-
debugging tools
- Stetho
- Stetho-Realm
- Ok2Curl
Quality Assurance
We performed a test documentation writing (test plan, test cases, checklists), functional and non-functional testing, and user feedback investigation.
Non-functional testing included:
-
Performance testing to decrease a launch time and the app size
-
Compatibility testing on various Android devices with different Android and Bluetooth versions
-
Usability testing to add notifications and buttons to make interface even more self-obvious than it was. Testing was based on customers’ feedback
-
Interoperability testing
-
Recovery testing
-
Power consumption testing to find out the “greedy” processes, and save the battery
-
Stress testing
-
Endurance testing to guarantee the stability and reliability of the app. It was needed as our Android application works an extended period of time in the background
Master’s comment
TrapTap app is being used on a daily basis to help users avoid speeding tickets and emergency situations, so we needed to make its operation as much trouble-free as it is possible. Tests included many experiments in different locations, with the various internet, Bluetooth and battery conditions. Among others, we found out the most and less battery consuming processes. For example, we were concerned that constantly reconnecting consumes the battery a lot. After running experiments, we found out that it takes only 1% of battery in 10 hours (we assume it isn’t really much for the feature that lets users forget that they have to connect to TrapTap every time they enter a vehicle as it is done automatically every time).
Launch
We released the Android app on October 15, 2016. The stats we got five month later:
-
-
1,500 installs from the
Google Store -
4,054 user alert contributions
-
19,629 h traveled with a TrapTap on
-
-
-
1,221,554 km traveled with a TrapTap on
-
98,320 red light camera
notifications -
80,312 school zone
notifications
-
-
Customer and product support
By using the 'Help and support' button in the app, the user can connect to a customer support specialist to get online consultation via Intercom. We continue with hazard mapping, develop new locations, make bug fixes and usage optimizations.
Check out our app in the Google Store:
Master’s comment
Vlad Yarovyi — Android Developer