This is my final blog post regarding my work on Google Summer Of Code 2014 for the enviroCar Android app.
A short introduction
EnviroCar connects to your car with the help of an OBD II adapter and records important data, such as CO2 emission, fuel consumption, engine load, etc. It helps a user record, learn about and potentially improve his or her driving characteristics. Additionally, the data from all enviroCar users is published as open data. Therefore the data for a particular city or area can be analyzed with respect to CO2 hot spots, traffic flow, and other driving statistics. More details about the app can be found in my first and mid-term blog posts. Here are other resources which track my development in the project:
Previous work done
As mentioned in my mid-term blog, I worked on modifying the app dashboard and localization of the app during the first phase of GSoC. Screenshots are shown in the respective blog posts. It shows both the original and the modified dashboard. Regarding localization, the app now presents a series of languages that a user can select, as well as, an array of units for displaying the parameters (like fuel consumption and CO2 emissions) from which the user can choose.
After mid-term, the main focus of the project was building a profile page where the users can see:
- their tracks,
- their sustainability rank in the city,
- their driving statistics on a graph and
- a comparison of their data with their friends.
Here is the screenshot of the profile page I developed.
The username and the tracks are displayed as shown along with the user avatar. The sustainability rank indicates the user’s rank in terms of his fuel consumption and CO2 emission. Currently, we have calculated two leaderboards based on two parameters (CO2 emission and fuel consumption). The leaderboards can be swiped through from left to right. In the future we may be able to create alternative leaderboards (or a single leaderboard in which a cumulative rank of the user is calculated based on the two parameters). The leaderboard is shown below:
The user’s statistics are shown in a graph, in which his or her CO2 emissions and fuel consumption values are plotted against time. This will give the user a nice visualization of his or her car’s performance over time. These are two important parameters that can be tracked and displayed to the user. Here is the screenshot for displaying a user’s statistics:
A user can also compare his or her data (most of the relevant car’s parameters measured by the the app) with that of his or her friends. The graphs shows the user’s car’s parameters which are plotted against the corresponding values of his or her friend’s car. Values of a parameter are displayed on the top of each graph. This data is the result of all the tracks of a user and his or her friend.
A user can select his or her friend through the following interface.
We had also planned to create a high contrasting design for the app. It is suppossed to work as a ‘night mode’ so that it consumes less of the battery (unlike the existing white background). But such a development involves more research into user preferences regarding where the user places the phone in the car and a thorough evaluation of color, icon size, etc. We put this plan on hold for the time being.
In addition to this, I did a bit of research on creating different types of themes for this app and how it can be customized with minimal effort to produce a different build for a specific organization or group of people. The theme change and modifications are aimed at compile time rather than run time. The discussion can be followed here.
Regarding some major design modification, I created a more user-friendly Help Page. Please compare the new version
and the old version.
Demo for Testing the app
You can read the instructions for running the app on your phone and test it by downloading it from the development server.
There is a wide scope of features that can be added to the current enviroCar version to make it more interesting and provide a very fine user experience. I mentioned a few of them below.
- A service for calculating the leaderboard at the server side has to be written so that it just gives the result to the client when needed.
- Contrasting designs
- More Languages and units of measures can be included
It was my first GSoc and it was an awesome experience overall. It helped tremendously to increase my knowledge of Android and specially coding guidelines – the code that was already written for the app was awesome in every terms. I dug into the code and for the first three days I had no idea what was going on. But after a week, I was able to start solving problems and I really enjoyed doing that. Although a major part of the code had been written previously, I made sure I knew what was going on in every file. And that was the best part of my learning! I was helped equally in this journey by Carson Farmer (Hunter College), Matthes Rieke and Daniel Nust (both 52°North). Thanks again to Carson for being such a supportive mentor.
The app has great potential. It will be used by a large number of people everyday to help solve one of the crucial problems of our environment. There are lots of features which can still be incorporated and I will be happy to contribute more.