KOTLIN ANDROID OFFLINE NAV CAR HEAD UNIT

VELDASH

A Batman-themed GPS navigator built for the cheapest Android car head units: 1 GB of RAM, Android 5.0, no Google Play Services. Native Kotlin, offline vector maps, offline routing, and a batmobile that drives along the route.

TO BATCAVE
↱350 mEgnatia
12 min6.4 km · 21:47
48km/h

1 GB

RAM TARGET

~80 MB

MEASURED MEMORY WHILE DRIVING

24

SPRITE FRAMES, NO 3D ENGINE

0

PLAY SERVICES

WHAT_IT_DOES

OFFLINE_FIRST

The APK ships a vector map of Thessaloniki and Central Macedonia plus the routing data for it, so it navigates from the first start with no connection. Any OpenMapTiles .mbtiles file dropped on the SD card loads too.

  • MapLibre Native renders .mbtiles straight from the filesystem
  • Map style generated in code: near-black base, yellow kept for motorways and the route
  • Hybrid routing: Mapbox or OSRM online, embedded BRouter offline, automatic fallback
  • Maps built from OpenStreetMap with a one-line Planetiler script

THE_DASHBOARD

An edge-to-edge map with flat ink-glass islands laid out like Google Maps, but every panel is a plain XML shape and every label is the system font. No font files, no icon packs, no gradients.

  • Destination pill, next-turn card, trip island with ETA and distance
  • Search with Home and Work shortcuts, saved places and recent history
  • Saved places wear a badge: Batcave, Wayne Enterprises, Catwoman, Joker, Riddler
  • 2D / 3D chase camera, and a bat button that recenters on the car
  • Other apps can hand over a destination with a geo: intent

UNDER_THE_HOOD

THE_BATMOBILE

The car is a real 3D model, but the head unit never runs a 3D engine. It is pre-rendered once in Blender into 24 small WebP frames, about 620 KB in total. Every frame the app picks the render that matches the camera tilt and the car's heading, and cross-fades the neighbouring frame so the car morphs through corners instead of popping.

SMOOTH_MOTION

GPS gives one fix per second. A pure-Kotlin motion model turns that into a frame-rate position: on a route the car travels along the polyline at a display speed that absorbs GPS error over the next second, so it never leaves the road and never stutters when a fix is late. The camera heading lags the car by 0.35 s to show the flank in a bend.

MEMORY_BUDGET

Measured with dumpsys on a dense city centre: the tile cache was the biggest cost and buys nothing with local tiles, so it is off. Roads are two fill layers and one casing, buildings only at navigation zoom, no extrusions, no hillshade. Result: roughly 80 to 90 MB PSS during a 3D drive.

Personal build, not for store distribution: Batman and the Batmobile are trademarks of DC Comics. Car model "Batmobile Jet Car (1989)" by kulonee, CC BY 4.0, rendered to sprites.