Improve enviroCar Android User Interface & User Experience


The project deals with the Android client of the enviroCar project. This project has been undertaken to improve the user interface of the application as well as introduce new functionality to it so as to make it more useful.


Weekly Status Reports

Week 1


  • Updated libraries used in the Project.

    • Update Retrofit and associated dependencies

      • Retrofit from 2.0.0-beta2 to 2.5.0

      • Retrofit Gson Convertor from 2.0.0-beta2 to 2.5.0

      • Retrofit Adapters from 2.0.0-beta2 to 2.5.0

      • Retrofit RxJava Adapter from 2.0.0-beta2 to 2.5.0

    • Update Acra from 4.6.2 to 5.1.3

    • Update Android Dependencies

      • Constraint Layouts from 1.1.2 to 1.1.3

      • Play Services Location from 15.0.1 to 16.0.0

    • Update SQLBrite from 0.4.1 to 1.1.2

    • Update findbugs from 3.0.0 to 3.0.2

    • Update Apache Commons from 1.12 to 1.18

  • Add a file to keep track of changes between versions.

  • Design Mockups for Statistics Page as well as for the Onboarding UI.

  • Started work on the code for the Statistics Page.


  • RxJava 2.x is a massive update with several breaking changes. I had several problems with updating the code base. I have made this an optional change that I shall work on later.

Next Steps

  • Continue with the integration of the new Statistics Page.

  • Refine Mockups to conform to the overall theme of the application.

Week 2


  • Added Retrofit code inorder to get appropriate data from API.

  • Added helper functions to sort and filter data for visualisation.

  • Included the graphing library and created the graphs for visualisation of the number of tracks as well as the distance travelled by the user on a weekly, monthly and yearly basis.

  • Added GUI elements to select date range to display the graph for, i.e a DatePicker to choose the particular week, month of year you want to see the statistics for as well as buttons to quickly move forward and back in time ranges.


  • Instability in the graph, causing it to not load. The graph would not be drawn if the Fragment was paused and started again.

  • Switching between fragments present in the BottomAcitivityBar would cause the app to crash.

  • The graph would sometimes get clipped by the ScrollView.
  • Touch events between the ViewPager present in the ScrollView and the ScrollView would not be registered, thereby causing the ScrollView to not scroll.
  • The graphs present in the three tabs of the ViewPager would not get drawn.
  • Lag in the switching between tabs of the ViewPager due to the above problem with graphs.

Next Steps

  • Complete the implementation of the Statistics Page.

  • Start work on the next task, i.e. Conversion of Relative Layouts to Constraint Layouts.

Week 3


  • Completed implementation of the Statistics Page.
    • Created new Serialisation, DAO classes and Retrofit functions for obtaining Track Statistics. Created Models for the same.
    • Modify TrackService, RemoteTrackDAO to obtain the Average Speed for each track as well as the user average
    • Created the option to visualise Track average speeds on a Weekly, Monthly and Yearly basis.
    • Modified and used the UserStatistics class in order to obtain the User's overall fuel and speed statistics.
    • Completed the CardView that compared the User's Last Track to his average.
    • The issues with the graphs were fixed. The solution was found on the issues page of the William Charts repository.
    • The issues with Fragment switching were fixed using the getChildFragmentManager method.
  • Worked on the Report Issue page
    • Changed the layout of the page.
    • Added ListView to help add tags that developers can use in order to filter issues.
    • Implemented code to add the enviroCar app version as well as the details of the User's phone such as manufacturer and Android version.
    • Added the details of current car selected as well the Bluetooth adapter used for the tracks.


  • Initialisation of the listener for the Spinner used in the Statistics Page. Need to find a way to bind the listener.

Next Week

  • Complete the implementation of the Report Issue page. Most of the work is done. Only need to add relevant tags to the ListView.
  • Start working on the Onboarding UI for the application.
  • Changing the layout of the Sign In / Sign Up pages

Week 4


  • Completed implementation of the Report Issue Page. Created a PR for the same.
  • Completed first version of Onboarding UI
    • Created the layouts for four screens, including details about what how data is collected and processed by enviroCar as well as the uses for the collected data.
    • Implemented the ViewPager for managing the fragments as well as a library for the bottom TabLayout
    • Implemented the user Register/Sign In process at the end of the Onboarding. In case of a logged in user, it continues to the Dashboard.
    • All the functionality is present. Need to make revisions to the data displayed.
  • Improved the layout of the Sign In / Sign Up pages and connected them to the Onboarding UI
  • Fixed the listener for the Statistics Page in order to change the data being displayed.
    • Instead of using an interface connecting the two fragments, used a LiveData holder class that contained the choice of which data to be displayed
    • An observable was used to listen for changes in the choice and update the graphs
  • Fixed the issue where the ScrollView would not scroll sometimes in the Statistics Page
  • Added documentation on the code that I have written thus far as well as to the file


  • Nothing major.

New Week

  • The changes to the Dashboard Layout
  • Make revisions to the information shown in the Onboarding UI
  • Start working on the TrackList layouts

This topic: Projects > GSoC > GSoC2019Projects > GSoC2019ImproveenviroCarAndroidUserInterfaceAndUserExperience
Topic revision: 24 Jun 2019, ShivaKanthSujit
Legal Notice | Privacy Statement

This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Wiki? Send feedback