Improve enviroCar Android User Interface & User Experience


Introduction

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.

Content

Weekly Status Reports

Week 1

Status

  • 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 CHANGELOG.md 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.

Problems

  • 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

Status

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

Problems

  • 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

Status

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

Problems

  • 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

Status

  • 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 CHANGELOG.md file

Problems

  • Nothing major.

Next Week

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

Week 5

Status

  • Modified the User interface and the Serialisation layers to obtain the first / last name from the API
  • Implemented the new layout of the Dashboard fragment
    • Used Constraint Layouts wherever possible in this layout
    • Added the TransistionsEverywhere library in the project
    • Improved the animations used in the layout , i.e. when hiding or creating views, using the TransitionManager
    • Added onClick listeners to the containers in order to make the process more intutive by opening the repective activities when they were clicked instead of just opening a dialog
    • Improved the spacing of the text

Problems

  • User's First name returns null at times, to defaults to the username instead. Need to find a work around for that

Next Week

  • Start the TrackList layout changes, i.e. change the CardView, include sorting and filtering options

Week 6

Status

  • Work done on the TrackList improvements
    • Added spinner for sorting the tracklist and a button for filtering in the TrackListPagerFragment
    • Created FilterDialog class to preset filtering options to the user
    • Currently presents two options for filtering: By date range and by the cars present in SharedPreferences
    • Added the FilterViewModel class that extends ViewModel inorder to notify the TracklistRemoteCardFragment of changes in the filtering conditions through an obserable
    • Once notified the mTrackList field of the fragment is modified to remove tracks that don't satisfy the criteria

Problems

  • NA

Next Week

  • Complete the sorting functions: just need to write a Comparator when calling Collections.sort()
  • Start changes to the TrackView layouts

Week 7

Status

  • Fixed errors in the Filtering dialog
  • Completed implementation of the Sorting functions
    • Four sorting options are present: By Date, By Duration, By Length and By Car. Uses the same ViewModel method to notify changes.
  • Work done on the TrackView layout
    • Created API calls and associated DAO functions to obtain the enviroCar community statistics from the /statistics endpoint
    • Created a ViewPager for switching between two fragments. The first being the current data already present and second being the Track Statistics Page
    • The Track Statistics Page displays the following data ( when available ) : Speed, Fuel Consumption, CO2 produced, Engine Load and RPM
    • Relayouting of the Activity, including changing the top card to display more information and change the header.

Problems

  • NA

Next Week

  • MapView changes in the TrackView Activity.
  • Revision of the previous changes, i.e. Statistics and Dashboard. This is to add the new TransitionsEverywhere library to handle transistions

Week 8

Status

  • Work done on the TrackList activity
    • Created a new layout for the CardView
    • Made changes to the TrackViewHolder as well as the bindViewHolder method to get new data to populate the fields
    • Added transistions to the tracklist so when cards are removed or added during filtering they are animated
    • Refactored the filtering code so that the number of API calls is reduced
  • Merged the Dashboard changes with the main repository.
    • Had to make changes to fix errors that I had not tested.
    • Made a few changes to the User Card too.

Problems

  • There were crashes in the Dashboard activity that needed to be fixed. This was due to incorrect saving of data using PreferenceHandler
  • The parsing of data from the JSON has to be changed to check if the field exists before parsing.

Next Week

  • Update MapBox to the latest version and experiment with different visualisation of data in the MapView
  • Remove the williamcharts library and use hello-charts in Graph Fragment

Week 9

Status

  • Update the MapBox SDK from 0.7.4 to 8.1.0
    • Removed old imports and layout MapViews
    • A few classes such as PathOverlay ( replaced by Styles with Source and Layer objects ) and BoundingBox ( replaced by LatLngsBounds ) no longer exist in the latest version. Removed and modified the code to make use of the new classes
  • Changes to the Statistics Page
    • Removed the william charts dependecy and used the hello charts library which is already being used in the application for making graphs
    • Modified the code to include a persistent tracklist that could be used to provide data from drawing the graphs. Reduced the number of times the API was called from once each time the user selected a time range to three times in total.

Problems

  • There was no documentation of the legacy version of the Mapbox SDK and there were breaking changes in the upgrade, missing classes and methods being one of them. So it took longer than expected to make the upgrade and fix all the bugs and errors

Next Week

  • Now that Mapbox has been updated, make the proposed changes to MapView, namely the visualisation of phenomena during the track, similar to what is available in the web app
  • The changes to the others menu

Week 10

Status

  • Made proposed changes to the MapViews in TrackDetails and created a PR
    • Include visulisation of track data in the ExpandedMapView with a Map legend
    • Added start stop markers to the Maps
  • Changes made to the Others Menu
    • Layout changes to make the menus more visually consistent
    • Changed the layout of the Logbook Add fueling card as well as the Fueling list
    • The FAB auto hides now when the list is being scrolled. It used to obstruct the last item
  • Changes to onboarding
    • Added an activity to show how to connect and pair the adapter with the phone

Problems

  • NA

Next Week

  • Complete any pending changes to the branches and prepare them to be merged
  • Code clean up and documentation

Week 11

Status

  • Changes to Others menu
  • Refactored code in the mapbox branch and created PR
  • Layout changes to Dashboard
    • Added a dimens.xml file to enable proper scaling on smaller screens
    • Removed unnecessary nesting of layouts to improve performance
    • Created a PR for the same
  • Changes to tracklist
    • Merged latest changes from develop
    • Bug fixes and then created a PR
  • Changes to TrackDetails
    • Completed changes to the branch, merged latest changes and created a PR

Problems

  • NA

Next Week

  • Complete changes to Statistics page and Onboarding and create the PRs

This topic: Projects > GSoC > GSoC2019Projects > GSoC2019ImproveenviroCarAndroidUserInterfaceAndUserExperience
Topic revision: 12 Aug 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