-
Notifications
You must be signed in to change notification settings - Fork 0
Advanced interface
The Advanced Interface consists of the following:

AlSet software supports e-mail and a password as the proper means for logging in. These credentials and their saved settings are stored in Firebase Authentication and Firebase Realtime Database.
- The system shall have a screen that allows the user to log in to their AlSet.
- The system shall allow input for a username and password.
- The user must have all settings (driving sensitivity, active login sessions) saved to a database when logging out. Upon logging back in, these settings must be exactly how it was when they left it.
- No more than one active session should be permitted into the app if the correct credentials are inputted.
- The user should be logged in instantly, and taken to the driving screen, as soon as correct credentials are inputted.
- The system should be easy to use.
- The characters of the user's password should be hidden shortly after it is input into the password field.
- The screen should use a modern design language.
- The screen will not be ugly.
- The system should give a sort of verification when the user has logged in successfully or unsuccessfully (e.g. toast, notification, audible feedback, anything).
This mode allows for faster debugging and should not be used for any other purpose but development.
- The system should allow for faster debugging for the development team.
- The system should allow the user to be able to log in without a username and password.
- The system should save the settings of the debugging user locally.

This is where the user can see the car's battery, in order to operate the car safely.
- Up-to-date knowledge of the phone's battery, in order to ensure that the user's phone is charged during their operation of this vehicle.
This is where the user selects the desired turning sensitivity of the joystick.
- The user should be able to select from several driving sensitivities, upon driving their car.
- The user should be able to have visual feedback when the specific driving sensitivity is registered into the app.
- The user must have all settings saved to a database when logging out. Upon logging back in, these settings must be exactly how it was when they left it.
Takes the user to the Drive Screen.

- As a user, I would like to interact with a refined and modern-looking user interface, so that I can enjoy the luxury of an AlSet even on the mobile app.
- The UI should provide a similar experience with the design mockup.
- The screen should follow modern design language (e.g. Material Design).
- The screen should be intuitive and easy to use.
In park mode, the user is permitted to leave the driving screen.
In drive mode, the user is prohibited to leave the driving screen.
- In park mode, the app should disconnect from active communication with the car.
- In park mode, the car should immediately stop and be at a standstill.
- In drive mode, the app should connect to the car, and actively communicate to the car's integrated functionalities (SmartCar Shield) via MQTT.
- There should be smooth and clear defined transitions when switching in between both modes.
- A switch to change from P/D should be implemented.
- Launch your AVD.
- Go to Extended controls.
- Select Microphone.
- Toggle the option "Virtual microphone uses host audio input."
- Recompile the application without closing the virtual device.
- You should now hear a sound when you press the microphone button from the drive-screen.
Any problems can usually be solved by doing the following steps:
- Go to AVD Manager, and select "Wipe Data" on your AVD.
- Follow the "Running on an Android Virtual Device" steps.
- The car should be able to be controlled from the user's voice, through the commands listed below:
- Saying "forward."
- Saying "reverse."
- Saying "stop."
- Saying "speed X," where X is the speed setting.
- Saying "turn left/turn right."
- There must be a button that can be toggled to recognize the user's voice.
- The voice control should allow for padding to be added around keywords to allow for flexibility, e.g. instead of saying "forward", the program should recognize when the user says "AlSet, I'd like you to go forward".
- There should be a visible indication when the user's voice is being transmitted to the car.
The joystick controls the AlSet vehicle's power and steering directions. Up represents forward, and likewise, down for backward.
The radial bounds of the joystick are controlled by the variable joystickRadiusMax present in DrivingActivity.java:
private final float joystickRadiusMax = 180;- The car should be able to move when the joystick is actuated.
- When the joystick is moved to the left, the car should turn left.
- When the joystick is moved to the right, the car should turn right.
- When the joystick is moved upwards, the car should go forward.
- When the joystick is moved downwards, the car should go in reverse.
- The joystick should aesthetically match the driving screen.