GymMate Application
- Group Members Klisard Muca Erbi Bejkolli Marsel Vojka
- Project Description
GymMate is an Android application designed to help fitness enthusiasts track their workouts, view inspirational quotes, and monitor their progress over time. The app features a secure login/registration flow, a list of workouts, detailed workout pages with interactive controls, and a progress tracker that saves data locally using SQLite. Additionally, GymMate fetches motivational quotes from an external API and displays them in a dedicated "Tips" section.
Key features include:
-User Authentication:
A simple login and registration system using SharedPreferences.
-Workout List:
A multi-activity structure with a RecyclerView displaying a list of workouts.
-Workout Detail:
Individual workout pages where users can adjust reps, select difficulty (via RadioGroup), mark favorites (CheckBox), save progress to an SQLite database, share workout details via an implicit ACTION_SEND intent, and open a YouTube video tutorial using an implicit ACTION_VIEW intent.
-Fragments and Navigation:
A BottomNavigationView with three tabs—Workouts, Tips, and Progress—each hosted in its own fragment.
-Local Database:
An SQLite database managed via a DatabaseHelper that stores workout progress (date, workout name, reps).
-Network Communication:
Integration with the API Ninjas Quotes endpoint (https://api.api-ninjas.com/v1/quotes) to fetch and display random motivational quotes.
-User Interface Design:
Use of EditText, Button, TextView, SeekBar, RadioGroup, CheckBox, and other UI components following Android design guidelines.
GymMate aims to demonstrate proficiency in Android application development, including UI design, local data persistence, and external API integration.
- Implemented Tasks (Requirements)
The application addresses the following tasks as specified in the project guidelines. It will be tested and graded according to completion and correctness of these tasks.
-
Multi-Activity App Implemented separate activities for Login, Register, Main (with Bottom Navigation), and Workout Detail.
-
Implicit Intents Sharing workout details via
Intent.ACTION_SEND. Opening YouTube tutorial videos viaIntent.ACTION_VIEWwith a YouTube search URL. -
Application User Interface Design Utilized UI components such as
EditText,Button,TextView,SeekBar,RadioGroup, andCheckBox. Used aScrollViewfor the login and registration screens to handle keyboard overlap. AppliedfitsSystemWindowsto avoid status bar overlap and proper padding to accommodate theBottomNavigationView. -
Fragments Created three fragments:
WorkoutFragment,TipsFragment, andProgressFragment, each hosted byMainActivity. -
Lists
WorkoutFragmentuses aRecyclerViewto display a list of predefined workouts. -
Database (SQLite) Implemented a
DatabaseHelperclass to create and manage an SQLite database for storing progress entries (date, workout name, reps).ProgressFragmentreads from the database and displays entries in aListVieworRecyclerView. -
Login Activity
LoginActivityandRegisterActivitymanage user credentials viaSharedPreferences(username and password stored securely). Redirect logic ensures that users must register before logging in. -
Network Communication
TipsFragmentuses Retrofit with Gson converter to fetch random quotes from the API Ninjas Quotes endpoint. Display logic shows aProgressBarwhile loading and handles errors (e.g., invalid API key, no network).
- References to External Sources Used
-Retrofit (Square): For network calls and JSON parsing. Documentation: https://square.github.io/retrofit/
-API Ninjas Quotes API: Random quote endpoint. Documentation: https://api-ninjas.com/
-Android Developers Guides: Official documentation for Android UI components, RecyclerView, SQLiteOpenHelper, Intents, and SharedPreferences: https://developer.android.com/
-Material Icons (Google): For vector asset icons added to res/drawable (e.g., ic_fitness_center, ic_lightbulb, ic_history).
-Stack Overflow: Troubleshooting common Android build errors (e.g., android:exported, constant expression required).