# lordnordic-debug/stradaos architecture

> Architecture diagram of the GitHub repository lordnordic-debug/stradaos, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-13). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/lordnordic-debug/stradaos
- Repository: https://github.com/lordnordic-debug/stradaos

## Overview

StradaOS is an Android car-head-unit launcher. The main user workflow is launching its home screen, where drivers can use navigation, media, vehicle information, and customizable controls; supporting features include map downloads and update notices. README capabilities are included, but some underlying modules were not sampled, so those relationships are shown only where documented or are omitted. The graph reflects the available excerpts and source-index references rather than claiming a complete inspection of runtime wiring.

Main entry points: [`app/src/main/java/com/stradaos/launcher/Main.java`](https://github.com/lordnordic-debug/stradaos/blob/main/app/src/main/java/com/stradaos/launcher/Main.java) (Launcher Home), [`app/src/main/java/io/nayuki/qrcodegen/QrCode.java`](https://github.com/lordnordic-debug/stradaos/blob/main/app/src/main/java/io/nayuki/qrcodegen/QrCode.java) (QR Encoder), [`app/src/main/java/com/stradaos/launcher/NowPlaying.java`](https://github.com/lordnordic-debug/stradaos/blob/main/app/src/main/java/com/stradaos/launcher/NowPlaying.java) (Now Playing), [`app/src/main/java/com/stradaos/launcher/Updates.java`](https://github.com/lordnordic-debug/stradaos/blob/main/app/src/main/java/com/stradaos/launcher/Updates.java) (Update Notices)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_home["Launcher and Home"]
  node_main["Launcher Home<br/>[Main.java]"]
  node_boot["Boot Start<br/>[BootReceiver.java]"]
  node_fakehome["Fallback Home<br/>[FakeHome.java]"]
  node_gauge["Speedometer<br/>[Gauge.java]"]
  node_i18n["Translations<br/>[I18n.java]"]
end

subgraph group_maps["Navigation and Maps"]
  node_live_map["Live Map<br/>[LiveMapView.java]"]
  node_offline_map["Offline Map Reader<br/>[OfflineMap.java]"]
  node_map_download["Map Download<br/>[MapDownload.java]"]
  node_map_net["Map Tile Network<br/>[Net.java]"]
  node_weather["Weather<br/>[Weather.java]"]
end

subgraph group_media["Media and Vehicle"]
  node_now_playing["Now Playing<br/>[NowPlaying.java]"]
  node_bt_bridge["Bluetooth Bridge<br/>[BtBridge.java]"]
  node_media_watch["Media Watcher<br/>[MediaWatcher.java]"]
  node_media_listener["Media Listener<br/>[MediaListener.java]"]
  node_rc_display["Legacy Media Display<br/>[RcDisplay.java]"]
  node_rc_api["Hidden Media API"]
  node_rc_callback["Media Callback<br/>[RcCallback.java]"]
  node_car_photo["Vehicle Photo<br/>[CarPhoto.java]"]
  node_player_art["Player Artwork<br/>[PlayerArt.java]"]
end

subgraph group_services["Supporting Services"]
  node_guard["Health Monitor<br/>[Guard.java]"]
  node_updates["Update Notices<br/>[Updates.java]"]
  node_qr_code["QR Encoder<br/>[QrCode.java]"]
  node_qr_segment["QR Segments<br/>[QrSegment.java]"]
  node_bit_buffer["Bit Buffer<br/>[BitBuffer.java]"]
  node_qr_requirements["QR Checks<br/>[Req.java]"]
  node_qr_error["QR Length Error"]
  node_net_service["Network Transport<br/>[Net.java]"]
end

node_driver(("Driver"))
node_osm(("Map Providers"))
node_update_service(("Update Service"))
node_weather_service(("Weather Service"))

node_driver -->|"opens launcher"| node_main
node_boot -->|"starts on boot"| node_main
node_main -->|"uses gauge"| node_gauge
node_main -->|"renders forecast"| node_weather
node_main -->|"shows map"| node_live_map
node_main -->|"shows media"| node_now_playing
node_main -->|"tracks media"| node_media_watch
node_main -->|"displays artwork"| node_player_art
node_main -->|"uses Bluetooth"| node_bt_bridge
node_main -->|"starts monitoring"| node_guard
node_main -->|"offers downloads"| node_map_download
node_main -.->|"offers vehicle photo"| node_car_photo
node_main -.->|"localizes interface"| node_i18n
node_live_map -->|"opens map file"| node_offline_map
node_live_map -->|"fetches tiles"| node_map_net
node_map_download -->|"downloads map data"| node_map_net
node_map_download -->|"prepares offline map"| node_offline_map
node_map_net -.->|"requests map tiles"| node_osm
node_weather -.->|"requests forecast"| node_weather_service
node_now_playing -->|"registers legacy display"| node_rc_display
node_rc_display -->|"extends API"| node_rc_api
node_rc_display -->|"forwards events"| node_rc_callback
node_media_listener -->|"receives updates"| node_media_watch
node_media_watch -->|"updates track"| node_now_playing
node_bt_bridge -.->|"forwards Bluetooth"| node_now_playing
node_updates -->|"checks releases"| node_net_service
node_updates -.->|"creates QR notice"| node_qr_code
node_updates -.->|"checks update feed"| node_update_service
node_qr_code -->|"encodes segments"| node_qr_segment
node_qr_code -->|"builds bit stream"| node_bit_buffer
node_qr_code -->|"validates inputs"| node_qr_requirements
node_qr_segment -->|"appends encoded bits"| node_bit_buffer
node_qr_code -->|"rejects oversized data"| node_qr_error

click node_main "https://github.com/lordnordic-debug/stradaos/blob/main/app/src/main/java/com/stradaos/launcher/Main.java"
click node_boot "https://github.com/lordnordic-debug/stradaos/blob/main/app/src/main/java/com/stradaos/launcher/BootReceiver.java"
click node_fakehome "https://github.com/lordnordic-debug/stradaos/blob/main/app/src/main/java/com/stradaos/launcher/FakeHome.java"
click node_gauge "https://github.com/lordnordic-debug/stradaos/blob/main/app/src/main/java/com/stradaos/launcher/Gauge.java"
click node_i18n "https://github.com/lordnordic-debug/stradaos/blob/main/app/src/main/java/com/stradaos/launcher/I18n.java"
click node_live_map "https://github.com/lordnordic-debug/stradaos/blob/main/app/src/main/java/com/stradaos/launcher/LiveMapView.java"
click node_offline_map "https://github.com/lordnordic-debug/stradaos/blob/main/app/src/main/java/com/stradaos/launcher/OfflineMap.java"
click node_map_download "https://github.com/lordnordic-debug/stradaos/blob/main/app/src/main/java/com/stradaos/launcher/MapDownload.java"
click node_map_net "https://github.com/lordnordic-debug/stradaos/blob/main/app/src/main/java/com/stradaos/launcher/Net.java"
click node_weather "https://github.com/lordnordic-debug/stradaos/blob/main/app/src/main/java/com/stradaos/launcher/Weather.java"
click node_now_playing "https://github.com/lordnordic-debug/stradaos/blob/main/app/src/main/java/com/stradaos/launcher/NowPlaying.java"
click node_bt_bridge "https://github.com/lordnordic-debug/stradaos/blob/main/app/src/main/java/com/stradaos/launcher/BtBridge.java"
click node_media_watch "https://github.com/lordnordic-debug/stradaos/blob/main/app/src/main/java/com/stradaos/launcher/MediaWatcher.java"
click node_media_listener "https://github.com/lordnordic-debug/stradaos/blob/main/app/src/main/java/com/stradaos/launcher/MediaListener.java"
click node_rc_display "https://github.com/lordnordic-debug/stradaos/blob/main/app/src/legacy/java/com/stradaos/launcher/RcDisplay.java"
click node_rc_api "https://github.com/lordnordic-debug/stradaos/blob/main/app/src/hiddenapi/java/android/media/IRemoteControlDisplay.java"
click node_rc_callback "https://github.com/lordnordic-debug/stradaos/blob/main/app/src/main/java/com/stradaos/launcher/RcCallback.java"
click node_car_photo "https://github.com/lordnordic-debug/stradaos/blob/main/app/src/main/java/com/stradaos/launcher/CarPhoto.java"
click node_player_art "https://github.com/lordnordic-debug/stradaos/blob/main/app/src/main/java/com/stradaos/launcher/PlayerArt.java"
click node_guard "https://github.com/lordnordic-debug/stradaos/blob/main/app/src/main/java/com/stradaos/launcher/Guard.java"
click node_updates "https://github.com/lordnordic-debug/stradaos/blob/main/app/src/main/java/com/stradaos/launcher/Updates.java"
click node_qr_code "https://github.com/lordnordic-debug/stradaos/blob/main/app/src/main/java/io/nayuki/qrcodegen/QrCode.java"
click node_qr_segment "https://github.com/lordnordic-debug/stradaos/blob/main/app/src/main/java/io/nayuki/qrcodegen/QrSegment.java"
click node_bit_buffer "https://github.com/lordnordic-debug/stradaos/blob/main/app/src/main/java/io/nayuki/qrcodegen/BitBuffer.java"
click node_qr_requirements "https://github.com/lordnordic-debug/stradaos/blob/main/app/src/main/java/io/nayuki/qrcodegen/Req.java"
click node_qr_error "https://github.com/lordnordic-debug/stradaos/blob/main/app/src/main/java/io/nayuki/qrcodegen/DataTooLongException.java"
click node_net_service "https://github.com/lordnordic-debug/stradaos/blob/main/app/src/main/java/com/stradaos/launcher/Net.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_main,node_boot,node_fakehome,node_gauge,node_i18n toneBlue
class node_live_map,node_offline_map,node_map_download,node_map_net,node_weather toneAmber
class node_now_playing,node_bt_bridge,node_media_watch,node_media_listener,node_rc_display,node_rc_api,node_rc_callback,node_car_photo,node_player_art toneMint
class node_guard,node_updates,node_qr_code,node_qr_segment,node_bit_buffer,node_qr_requirements,node_qr_error,node_net_service toneRose
class node_driver,node_osm,node_update_service,node_weather_service toneIndigo
```

## Components

### Launcher and Home

- [Launcher Home](https://github.com/lordnordic-debug/stradaos/blob/main/app/src/main/java/com/stradaos/launcher/Main.java): `app/src/main/java/com/stradaos/launcher/Main.java`
- [Boot Start](https://github.com/lordnordic-debug/stradaos/blob/main/app/src/main/java/com/stradaos/launcher/BootReceiver.java): `app/src/main/java/com/stradaos/launcher/BootReceiver.java`
- [Fallback Home](https://github.com/lordnordic-debug/stradaos/blob/main/app/src/main/java/com/stradaos/launcher/FakeHome.java): `app/src/main/java/com/stradaos/launcher/FakeHome.java`
- [Speedometer](https://github.com/lordnordic-debug/stradaos/blob/main/app/src/main/java/com/stradaos/launcher/Gauge.java): `app/src/main/java/com/stradaos/launcher/Gauge.java`
- [Translations](https://github.com/lordnordic-debug/stradaos/blob/main/app/src/main/java/com/stradaos/launcher/I18n.java): `app/src/main/java/com/stradaos/launcher/I18n.java`

### Navigation and Maps

- [Live Map](https://github.com/lordnordic-debug/stradaos/blob/main/app/src/main/java/com/stradaos/launcher/LiveMapView.java): `app/src/main/java/com/stradaos/launcher/LiveMapView.java`
- [Offline Map Reader](https://github.com/lordnordic-debug/stradaos/blob/main/app/src/main/java/com/stradaos/launcher/OfflineMap.java): `app/src/main/java/com/stradaos/launcher/OfflineMap.java`
- [Map Download](https://github.com/lordnordic-debug/stradaos/blob/main/app/src/main/java/com/stradaos/launcher/MapDownload.java): `app/src/main/java/com/stradaos/launcher/MapDownload.java`
- [Map Tile Network](https://github.com/lordnordic-debug/stradaos/blob/main/app/src/main/java/com/stradaos/launcher/Net.java): `app/src/main/java/com/stradaos/launcher/Net.java`
- [Weather](https://github.com/lordnordic-debug/stradaos/blob/main/app/src/main/java/com/stradaos/launcher/Weather.java): `app/src/main/java/com/stradaos/launcher/Weather.java`

### Media and Vehicle

- [Now Playing](https://github.com/lordnordic-debug/stradaos/blob/main/app/src/main/java/com/stradaos/launcher/NowPlaying.java): `app/src/main/java/com/stradaos/launcher/NowPlaying.java`
- [Bluetooth Bridge](https://github.com/lordnordic-debug/stradaos/blob/main/app/src/main/java/com/stradaos/launcher/BtBridge.java): `app/src/main/java/com/stradaos/launcher/BtBridge.java`
- [Media Watcher](https://github.com/lordnordic-debug/stradaos/blob/main/app/src/main/java/com/stradaos/launcher/MediaWatcher.java): `app/src/main/java/com/stradaos/launcher/MediaWatcher.java`
- [Media Listener](https://github.com/lordnordic-debug/stradaos/blob/main/app/src/main/java/com/stradaos/launcher/MediaListener.java): `app/src/main/java/com/stradaos/launcher/MediaListener.java`
- [Legacy Media Display](https://github.com/lordnordic-debug/stradaos/blob/main/app/src/legacy/java/com/stradaos/launcher/RcDisplay.java): `app/src/legacy/java/com/stradaos/launcher/RcDisplay.java`
- [Hidden Media API](https://github.com/lordnordic-debug/stradaos/blob/main/app/src/hiddenapi/java/android/media/IRemoteControlDisplay.java): `app/src/hiddenapi/java/android/media/IRemoteControlDisplay.java`
- [Media Callback](https://github.com/lordnordic-debug/stradaos/blob/main/app/src/main/java/com/stradaos/launcher/RcCallback.java): `app/src/main/java/com/stradaos/launcher/RcCallback.java`
- [Vehicle Photo](https://github.com/lordnordic-debug/stradaos/blob/main/app/src/main/java/com/stradaos/launcher/CarPhoto.java): `app/src/main/java/com/stradaos/launcher/CarPhoto.java`
- [Player Artwork](https://github.com/lordnordic-debug/stradaos/blob/main/app/src/main/java/com/stradaos/launcher/PlayerArt.java): `app/src/main/java/com/stradaos/launcher/PlayerArt.java`

### Supporting Services

- [Health Monitor](https://github.com/lordnordic-debug/stradaos/blob/main/app/src/main/java/com/stradaos/launcher/Guard.java): `app/src/main/java/com/stradaos/launcher/Guard.java`
- [Update Notices](https://github.com/lordnordic-debug/stradaos/blob/main/app/src/main/java/com/stradaos/launcher/Updates.java): `app/src/main/java/com/stradaos/launcher/Updates.java`
- [QR Encoder](https://github.com/lordnordic-debug/stradaos/blob/main/app/src/main/java/io/nayuki/qrcodegen/QrCode.java): `app/src/main/java/io/nayuki/qrcodegen/QrCode.java`
- [QR Segments](https://github.com/lordnordic-debug/stradaos/blob/main/app/src/main/java/io/nayuki/qrcodegen/QrSegment.java): `app/src/main/java/io/nayuki/qrcodegen/QrSegment.java`
- [Bit Buffer](https://github.com/lordnordic-debug/stradaos/blob/main/app/src/main/java/io/nayuki/qrcodegen/BitBuffer.java): `app/src/main/java/io/nayuki/qrcodegen/BitBuffer.java`
- [QR Checks](https://github.com/lordnordic-debug/stradaos/blob/main/app/src/main/java/io/nayuki/qrcodegen/Req.java): `app/src/main/java/io/nayuki/qrcodegen/Req.java`
- [QR Length Error](https://github.com/lordnordic-debug/stradaos/blob/main/app/src/main/java/io/nayuki/qrcodegen/DataTooLongException.java): `app/src/main/java/io/nayuki/qrcodegen/DataTooLongException.java`
- [Network Transport](https://github.com/lordnordic-debug/stradaos/blob/main/app/src/main/java/com/stradaos/launcher/Net.java): `app/src/main/java/com/stradaos/launcher/Net.java`

### Other components

- **Driver**
- **Map Providers**
- **Update Service**
- **Weather Service**

## Connections

- Driver → Launcher Home: opens launcher (evidence: `README.md`)
- Boot Start → Launcher Home: starts on boot (evidence: `app/src/main/java/com/stradaos/launcher/BootReceiver.java`)
- Launcher Home → Speedometer: uses gauge (evidence: `app/src/main/java/com/stradaos/launcher/Main.java`)
- Launcher Home → Weather: renders forecast (evidence: `app/src/main/java/com/stradaos/launcher/Main.java`)
- Launcher Home → Live Map: shows map (evidence: `app/src/main/java/com/stradaos/launcher/Main.java`)
- Launcher Home → Now Playing: shows media (evidence: `app/src/main/java/com/stradaos/launcher/Main.java`)
- Launcher Home → Media Watcher: tracks media (evidence: `app/src/main/java/com/stradaos/launcher/Main.java`)
- Launcher Home → Player Artwork: displays artwork (evidence: `app/src/main/java/com/stradaos/launcher/Main.java`)
- Launcher Home → Bluetooth Bridge: uses Bluetooth (evidence: `app/src/main/java/com/stradaos/launcher/Main.java`)
- Launcher Home → Health Monitor: starts monitoring (evidence: `app/src/main/java/com/stradaos/launcher/Main.java`)
- Launcher Home → Map Download: offers downloads (evidence: `app/src/main/java/com/stradaos/launcher/Main.java`)
- Launcher Home → Vehicle Photo: offers vehicle photo (evidence: `app/src/main/java/com/stradaos/launcher/Main.java`)
- Launcher Home → Translations: localizes interface
- Live Map → Offline Map Reader: opens map file (evidence: `app/src/main/java/com/stradaos/launcher/LiveMapView.java`)
- Live Map → Map Tile Network: fetches tiles (evidence: `app/src/main/java/com/stradaos/launcher/LiveMapView.java`)
- Map Download → Map Tile Network: downloads map data (evidence: `app/src/main/java/com/stradaos/launcher/MapDownload.java`)
- Map Download → Offline Map Reader: prepares offline map (evidence: `app/src/main/java/com/stradaos/launcher/MapDownload.java`)
- Map Tile Network → Map Providers: requests map tiles
- Weather → Weather Service: requests forecast
- Now Playing → Legacy Media Display: registers legacy display (evidence: `app/src/main/java/com/stradaos/launcher/NowPlaying.java`)
- Legacy Media Display → Hidden Media API: extends API (evidence: `app/src/legacy/java/com/stradaos/launcher/RcDisplay.java`)
- Legacy Media Display → Media Callback: forwards events (evidence: `app/src/legacy/java/com/stradaos/launcher/RcDisplay.java`)
- Media Listener → Media Watcher: receives updates (evidence: `app/src/main/java/com/stradaos/launcher/MediaListener.java`)
- Media Watcher → Now Playing: updates track (evidence: `app/src/main/java/com/stradaos/launcher/MediaWatcher.java`)
- Bluetooth Bridge → Now Playing: forwards Bluetooth (evidence: `app/src/main/java/com/stradaos/launcher/BtBridge.java`)
- Update Notices → Network Transport: checks releases (evidence: `app/src/main/java/com/stradaos/launcher/Updates.java`)
- Update Notices → QR Encoder: creates QR notice
- Update Notices → Update Service: checks update feed
- QR Encoder → QR Segments: encodes segments (evidence: `app/src/main/java/io/nayuki/qrcodegen/QrCode.java`)
- QR Encoder → Bit Buffer: builds bit stream (evidence: `app/src/main/java/io/nayuki/qrcodegen/QrCode.java`)
- QR Encoder → QR Checks: validates inputs (evidence: `app/src/main/java/io/nayuki/qrcodegen/QrCode.java`)
- QR Segments → Bit Buffer: appends encoded bits (evidence: `app/src/main/java/io/nayuki/qrcodegen/QrSegment.java`)
- QR Encoder → QR Length Error: rejects oversized data (evidence: `app/src/main/java/io/nayuki/qrcodegen/QrCode.java`)
