|
|
1 tydzień temu | |
|---|---|---|
| android | 1 tydzień temu | |
| assets | 1 tydzień temu | |
| docs | 1 tydzień temu | |
| lib | 1 tydzień temu | |
| test | 1 tydzień temu | |
| tool | 1 tydzień temu | |
| .gitignore | 1 tydzień temu | |
| .metadata | 1 tydzień temu | |
| AGENTS.md | 1 tydzień temu | |
| README.md | 1 tydzień temu | |
| analysis_options.yaml | 1 tydzień temu | |
| pubspec.lock | 1 tydzień temu | |
| pubspec.yaml | 1 tydzień temu |
A calm, configurable Android car dashboard launcher, built with Flutter.
CarDash replaces the tablet home screen with one landscape page: a large clock, battery and Wi-Fi status, the main media-volume control, and five shortcuts — Navigation, Music, Radio, Settings and All apps. The first three are configurable; a long press picks a different installed app. External apps open full-screen using the normal Android launcher mechanism. No overlays, no root, no kiosk setup.
Verified on Android 15 and Android 10 tablet emulators at 1280×800. Landscape only.
| Light | Dark |
|---|---|
![]() |
![]() |
Also: All apps · app picker · Settings · PIN lock · 1024×600 layout
A landscape tablet or an emulator; the app locks itself to landscape
export JAVA_HOME=/usr/lib/jvm/java-21-openjdk
export ANDROID_HOME=/opt/android-sdk
export PATH="$ANDROID_HOME/platform-tools:$PATH"
flutter pub get
./tool/check.sh
# Boot the prepared 10.1" 1280×800 Android 15 tablet (headless)
./tool/emulator.sh 35
# Build, install, and make CarDash the HOME app
./tool/install.sh debug
If the emulator does not yet exist on another machine, create it with:
sdkmanager "system-images;android-35;google_apis;x86_64"
avdmanager create avd -n cardash_tablet_api35 \
-k "system-images;android-35;google_apis;x86_64" \
-d "10.1in WXGA (Tablet)"
The repository also has an Android 10 AVD (cardash_tablet_api29) for
minimum-version checks.
flutter build apk --release
adb install -r build/app/outputs/flutter-apk/app-release.apk
adb shell cmd role add-role-holder android.app.role.HOME com.wasp.cardash_launcher
adb shell am start -a android.intent.action.MAIN -c android.intent.category.HOME
On a real tablet, use Settings → General → Home app → Set as default and accept the system prompt. The in-app "Make CarDash your home app" card does the same thing. Android will not let an app force itself into the home role silently.
| Action | Result |
|---|---|
| Tap Navigation / Music / Radio | Open the assigned app full-screen |
| Long-press Navigation / Music / Radio | Pick a different installed app |
| Tap an unassigned shortcut | Open the app picker |
| Settings | Theme, home shortcuts, default-home role, PIN |
| All apps | Search every launchable app; tap to open |
| Volume ring / mute | Toggle media mute |
| Slider or − / + | Set media volume |
| Hardware volume keys | Adjust the dashboard's media volume; the ring follows |
The app hides the Android status and navigation bars while CarDash is in the foreground. Swipe from an edge to reveal them temporarily; they hide again when the app resumes.
General
Security
lib/
core/ design tokens, theme controller, icons, shared widgets
data/ models, platform services, SettingsRepository (single source of truth)
features/
home/ home page, shortcut grid, volume card, controllers
apps/ All Apps, app-picker sheet
settings/ General + Security
lock/ PIN pad, cold-start lock screen
android/... MainActivity, LauncherBridge, SystemBridge (Kotlin)
tool/ emulator, install, check scripts
docs/ implementation plan, design notes
MethodChannels.SettingsRepository is the only persistence path. Controllers are
ChangeNotifiers injected with provider.flutter analyze
flutter test
./tool/check.sh
Current tests cover PIN hashing/persistence, settings persistence, theme resolution and the shortcut tile widget. Native package enumeration, the HOME role, volume, app launching and PIN flows were verified on both API 35 and API 29 tablet emulators, including the release APK.
sensorLandscape). The home page is designed for
1280×800 and remains usable at 1024×600.QUERY_ALL_PACKAGES is used to list all launchable apps. It is reasonable
for a launcher but requires a Play policy declaration if the app is ever
distributed; this is a local/sideload build for now.The visual language is inspired by the TrailCurrent Godwit head unit (MIT): warm neutral surfaces, a single deep-green instrument accent, large numerals and quiet line icons. It is not a copy of that UI.
lib/core/theme/app_colors.dart.This repository is currently local-only; a project license has not been chosen. Third-party asset licenses: Manrope (OFL) and Lucide (ISC). The design is inspired by TrailCurrent Godwit (MIT).