BCarControl is an Android application designed to remotely control a robotic car. It features a virtual joystick interface for directional control and provides additional toggles for vehicle systems like lights and fans.
This application serves as the client for the BCarControl Server. It is designed to work in tandem with the server implementation available at https://github.com/futesat/bcarcontrol.
- Virtual Joystick: Intuitive touch interface for steering and speed control (Forward, Backward, Left, Right).
- System Controls:
- Lights: Toggle car headlights.
- Fans: Control motor cooling fans.
- Mobile Control: Enable/Disable remote mobile control.
- Status Monitoring: Real-time connection status and feedback.
- Power Management: Options to reboot or shutdown the vehicle remotely.
- Language: Java
- UI: Android XML Layouts, Virtual Joystick Library
- Architecture: MVC
- Networking: Retrofit, OkHttp
- Reactive Programming: RxJava 2, RxAndroid
- Build System: Gradle 8.5
- CI/CD: GitHub Actions
- JDK 21: Ensure Java 21 is installed.
- Android SDK: API Level 34 (Android 14) is targeted.
-
Clone the repository:
git clone https://github.com/futesat/bcarcontrol.git cd bcarcontrol -
Open in Android Studio:
- Select "Open an existing Android Studio project" and navigate to the cloned directory.
-
Sync Gradle:
- Allow Android Studio to download dependencies and sync the project.
To build the application from the command line:
# Build Debug APK
./gradlew assembleDebugThe output APK will be located at: app/build/outputs/apk/debug/app-debug.apk
To run the unit tests:
./gradlew testDebugUnitTestThis project uses GitHub Actions for CI. Every push and pull request to the main branch triggers a workflow that:
- Sets up the build environment (JDK 21).
- Runs all unit tests.
- Assembles the Debug APK.
- Uploads the APK as a build artifact.
Check the Actions tab for build history.
app/: Main application module.virtualjoystick/: Local module for the joystick UI component.
This project is licensed under the MIT License - see the LICENSE file for details.