/WalkWalkRevolution

An Android app using Google Fitness Services and Firebase that allows for the creation of routes, with the ability to create teams and share/go on walks together. Developed using Android Studio.

Primary LanguageJava

WalkWalkRevolution

Created for CSE 110: Software Engineering README taken from here: https://github.com/UCSD-CSE-110-2020/team-project-team24

References

Note: If not specified, the access date for each of the above references is between February 2, 2020 and February 16, 2020.

Major Functionalities

  • Record daily steps and distance using Google Fit API
  • Start a walking session that records your steps and distance separate from daily steps
  • Save a walking session as a new route
  • Create a new route without walking it first so the user can start recording a walk directly from this route later
  • Form a walking team with other users so any user in the team can schedule and propose a walk to the team (implemented with Cloud Firestore storage with a few uses of JS Cloud functions)
  • If the user is part of a walking team, the user can also see their teammate's personal routes to get ideas for exploring new routes

Design Patterns in Practice

  1. Adapter
  • This pattern is the most used. Every GoogleFit or Firebase api is masked through an Adapter which implements an interface
  • examples include GoogleFitAdapter implements FitnessService which adapts Google's Fit API and FirebaseAuthAdapter implements AuthService which adapts Google's FirebaseAuth.
  1. Builder
  • Many of our data models have multiple optional member variables. The interface Builder and interfaces that extend this interface help facilitate this.
  • Examples include RouteBuilder implements IRouteBuilder and RouteEnvironmentBuilder implements IRouteEnvironmentBuilder
  1. Observer
  • Though not used as extensively, this helps solve a lot of the issues that occur with Google APIs' async network calls. By implementing Subject and observers, classes that adapt these kinds of methods can notify our application when calls are complete.
  • An example of this is interface AuthService extends Subject<AuthServiceObserver>