TrapTap

TrapTap

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.

TrapTap App - Your profile

It’s incredibly easy to use:

  • Download the app

  • Pair with your TrapTap via Bluetooth

  • Configure your settings

  • Set the device on your dashboard

TrapTap - flow

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:

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.

dev_image_1

Master’s comment

One of the development challenges was to detect a driving path in a real-time and minimize a distance deviation.A real-time path prediction can passively monitor the driver’s behavior. A driver only gets alerts if the information is highly relevant to the current location. The heading and distance deviation are based on the Gaussian distribution. That enables us to consider the correlated heading and distance uncertainties in a prediction. As the predictive distribution of the multi-output estimates, we generate only one output.

To validate that approach, we learned the prediction models by using the collected data, and testing it. The prediction utilizes the individual travel patterns to determine the user’s future travel path. If a user does not have a sufficient path history, the algorithm can transit between individual user path history and all path records that are stored in the database. This principle allows us to individualize the route prediction approach based on the user’s specific travel patterns.

Vlad Yarovyi — Android Developer

However, path prediction appeared a tricky thing.

dev_image_2

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.

Alex Isaenko — Android Developer
  • Duration

    12 month
  • Team size

    10 people
  • Platform

    Android
  • Industry

    IoT

Technology stack

  • technology technology

    Networking

    • Retrofit2
    • OkHttp3
  • technology

    DB

    • Realm
  • technology

    DI

    • Dagger2
  • technology

    test tools

    • JUnit4
  • technology

    communication

    • RxAndroidBle
  • technology

    accounting

    • AWS Congnito
  • technology

    threading

    • RxJava
  • technology

    crash analytics

    • Crashlytics
  • technology

    customer support

    • Intercom
  • technology technology technology

    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
dev_image_1

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).

Nataliia Chausova — QA Engineer

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

  • launch_hero

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:

Your Business Vision Meets Technology Mastery Now

Want to discuss your project or digital solution?
Fill out the form below and we’ll be in touch within 24 hours.


















    By continuing, you're agreeing to the Master of Code
    Terms of Use and
    Privacy Policy and Google’s
    Terms and
    Privacy Policy