During Google Summer of Code 2020, I will be working on an enviroCar Android app, which is one of the 52° North GSoC projects. The project is based on sustainable mobility. The main goal of the enviroCar app is to collect track data and analyze data to reduce the costs of running a car and to advance effective traffic planning.
The question is, is this data dependent on the car type? Of course yes! The data is fully dependent on the car type because of different engine displacement and power, which in term lead to different CO2 emissions. Currently, enviroCar app is flexible for creating artificial types of cars with user-defined attribute values, like adding engine displacement and power value to any undefined or nonexistent value.
How does the current car selection process work in the enviroCar app?
The existing car selection process fetches the data from the REST API. Users can select car attributes values either from the data fetched or simply type in their own set of values. This allows the user too much flexibility to create artificial types of cars with arbitrary attributes. This in turn leads to the collection and processing of invalid data. As a result, I will be working to improve the car selection process as my first goal during GSoC 2020.
What is the idea behind the new car selection process in the enviroCar app?
The new car selection process is based on previously defined datasets of vehicles. This integration will be implemented in the app. The datasets contain vehicle attributes based on the type and HSN/TSN which uniquely identify the type of vehicles. The user can easily find their own vehicle type using HSN/TSN or selecting different car attributes based on manufactures and model.
Until now, we have been familiar with the issue and it’s solution, but how are we going to implement that? We will be using Room ORM to provide an abstraction layer on top of the inbuilt SQLite database. It decreases the amount of boilerplate code and verification of SQL queries at compile time. All the database operations were performed using RxJava and, most importantly, following TDD.
Accordingly, we have to redesign the UI – fully enhanced with Google material design – to provide a perfect UX for the improved car selection process.
New UI for Car Selection
As the user has two options to select car type, I would use a segmented group which is consistent and fits more to the current app and fulfills the need.
UI Specification for new Car Selection Process
We see the possibility to switch between the HSN/TSN and Attributes mode as already defined in the implementation part.
Segmented group 1 – (HSN/TSN)
This entails a card with two edit text options. Users can directly select the vehicle type based on HSN/TSN. The results based on the vehicle’s HSN/TSN overview page are displayed.
In case the user is not aware of the HSN/TSN or where to find it, I would add a HSN/TSN help button at the bottom of the screen. It will provide information about this.
Segmented group 2 – (Attributes)
It also consists of a card with three edit text options to select a vehicle type based on the manufacturer, model and construction year. This is helpful in case the user didn’t find the HSN/TSN value of the car. After entering the appropriate information, the user sees a list of card views of vehicles. There are also filters based on fuel type, etc. available. I strongly believe this new car selection process design is a solid step in the right direction.
Reimplementing existing database layer currently based on Sqlbrite
Currently, the track-based database is based on SqlBrite. This has to be fundamentally revised according to the modern architecture component. Since the square has deprecated and archived the SqlBrite repository, there will be no more support. We will shift our database to ensure support and to be flexible for the modern components. We will use a SQlite database with Room ORM. This will definitely improve the app performance and support.
Sometimes, it is difficult for the users to understand how the application works, how to use the app. To answer these questions, we have a new goal.
Add a help option and a walkthrough screen for activities so users know about all controls
As a new app user, I find it difficult to know what/where the OBD is and how to pair it with the app. I need to search the car (?) or look on the enviroCar website before using the app because there is no help explaining this. This is very crucial for user retention.
Section 1 (OBD Help)
Adding an OBD help UI will helps users connect the OBD to the car and then pair it with the enviroCar android app. The OBD help will be implemented as material dialog which is consistent with the other dialogs in the app.
ODB Help Screen UI
Section 2 (Walkthrough screen to highlight controls)
Have you ever been confused by seeing different buttons in the app? Don’t know the function of buttons? I will make it a little easier to use the app by highlighting and explaining the controls. For first time users, an animation will highlight and explain the different controls one after another. This can be done for all activities in the app.
I will use the open source Spotlight library for this implementation. The library itself consists of beautiful animation with the name of highlighted controls and a small description about the control. For all the UI specifications I will stick to material guidelines.
Track Recording Spotlight UI
The track recording spotlight UI entails a hover type effect in buttons with line animation. The specific button is highlighted and the background is darken to focus the user attention on the highlighted control. Highlighting the controls with animation serves a functional purpose to first time users and improves the UX and user retention.
My name is Arvind Negi. I am a 3rd year undergraduate student pursuing B.Tech from NIT Hamirpur in Computer Science. I am always passionate about computer programming and love developing android apps. I also love reading tech forums and doing competitive programming in my free time. This is my first time in GSoC and I am very excited to work under the guidance of mentor Mr. Arne de Wall and meet all the goals. If you have any suggestions/queries, please ping me at firstname.lastname@example.org.