This README is a high level overview of the mobile app. For a more in-depth technical introduction, please see this document: https://docs.google.com/document/d/1W_scMhpFDm7tW4pXxeFg1GmnmTtC6k02_7rlP6oJ3j0/edit?usp=sharing
In today's aging global population, mobility scooters are not just a convenience but a necessity for maintaining the independence and quality of life of the elderly and those with mobility challenges. Although insurance often covers these mobility aids, their usage rate remains surprisingly low. One of the primary reasons for this underutilization is the fear and apprehension users have when it comes to operating these vehicles, primarily due to safety concerns.
The core objective of this project is to bridge the existing safety assessment gap for mobility scooter users. Mobility scooters, indispensable for maintaining a good quality of life, come with their own set of risks. These risks are multi-faceted, arising from the users' driving skills, the environment in which these scooters are operated, and the specific safety features of different scooter models. This project aims to offer a comprehensive evaluation system that assesses all these factors, thereby alleviating safety concerns and encouraging more widespread use of mobility scooters.
- Utilizes Firebase Authentication for secure login and signup processes.
- Allows for password recovery and account management.
- Provides a user-friendly interface to record driving sessions.
- Records high-quality video that can be later analyzed for safety assessments.
- Automatically saves the videos in a secure cloud storage.
- Implemented using Kotlin and the MVVM architecture for optimal performance and scalability.
- Allows users to view a history of their driving sessions, complete with metadata like date, start time, and session length.
- Uses Firebase Firestore to fetch and display session histories, ordered by the latest sessions for easy access.
- Employs advanced machine learning algorithms for post-analysis of recorded driving sessions.
- Provides pose estimation to assess the user's posture and alignment during the drive, which can be critical for safety.
- Integrated Firebase Authentication to handle user signup, login, and password recovery processes.
- Supports multiple authentication methods, including email/password and social media accounts.
- Leveraged CameraX API for improved video recording performance and user experience.
- Employed AES256-GCM HKDF 4KB encryption to ensure the secure storage of recorded videos.
- Videos are stored on Firestore, facilitating easy retrieval for subsequent use and analysis.
- Utilized Kotlin and the Model-View-ViewModel (MVVM) architecture for efficient management of data and UI.
- Real-time session history retrieval and display are achieved through Firebase Firestore.
- Sorting of sessions by recency is made possible by Firestore's query capabilities.
- Developed a secure server environment on a Jetstream2 VM instance using Flask.
- Communication is encrypted via HTTPS and authenticated through SSL certificates.
- Data classification is carried out using a pre-trained TensorFlow model on the server side.
- Developed with a focus on accessibility to make the app usable for people with varying abilities.
- Elements like easily readable fonts, contrasting color schemes, and intuitive navigation enhance accessibility.
- App is designed to be fully compatible with Android Talkback feature.
[]
[]
[]
- Enhance user-to-doctor communication for more personalized safety recommendations.
- Collect more data to improve the machine learning models for better driving analysis.
| Task | Description | Assigned To | Completed? | Tested? | ||
|---|---|---|---|---|---|---|
| Add Delete Video Feature | Allow users to delete previous sessions. | Andrew | No | No | ||
| Verify User's Position Before Recording | Create a screen before a user records that asks them to send a screenshot of their body to the server. | Justin | No | No | ||
| Add Dark Mode | Implement a Dark Mode Feature. | Alvan | No | No | ||
| Make Screens Scale | Make each screen scale with different screen sizes rather than stay a fixed size. | Kenia | No | No | ||
| Restyle Login & Register Screens | Restyle the login and reigster screens to be more visually appealing. | Justin & Alvan | No | No | ||
| Thumbnail Bug | Fix the bug where some thumbnails are not created properly. | Andrew | Yes | Yes | ||
| Hamburger Menu & Logout Feature | Implement a hamburger menu that appears from the side and add a feature for the users to log out. | Justin | Yes | Yes | ||
| Fix Bottom Nav Bar | Make nav bar persistent rather than hard coded in each screen. | Justin | Yes | Yes | ||
| Migrate Server | Migrate Flask server from GCP to Jetstream2. | Melvin | Yes | Yes | ||
| Implement Talkback Compatibility | Add content descriptions to each UI element for the screen reader. | Andrew | Yes | Yes | ||
| Fix Permissions | Refactor the way the app is asking for user's permissions. | Alvan | Yes | Yes | ||
| Fix Crashing & Freezing Issues | Stop the app from freezing and crashing when the drive menu is opened. | Alvan + Melvin | Yes | Yes | ||