Skip to main content
The Wear OS companion app is currently under development. Features and functionality may change.

Introduction

The Aero Wear OS companion app brings real-time flight tracking to your wrist. Built with Jetpack Compose for Wear OS, it provides quick access to your tracked flights directly from your smartwatch.

Features

Recently tracked flights

View your recently tracked flights in a scrollable list optimized for round watch faces. Each flight card displays:
  • Airline logo with automatic fallback to FlightAware images
  • Departure and arrival airport IATA codes
  • Departure and arrival cities
  • Flight identifiers (IATA, ICAO, or flight number)

Data synchronization

The Wear OS app receives flight data from the main mobile app through the Wearable Data Layer API. When you track a flight in the mobile app, it automatically syncs to your watch. Flight data includes:
  • Flight numbers and identifiers
  • Airline information (name, IATA, ICAO codes)
  • Departure and arrival airports
  • Flight dates and times

Local storage

All flight data is stored locally on your watch using Room database, ensuring you can access your tracked flights even when disconnected from your phone.

Watch tiles

Aero provides a Wear OS tile for quick access to flight information directly from your watch face. The tile displays a “Hello World!” preview and is built using the Horologist library for optimal performance.

Complications

Add Aero complications to your watch face for at-a-glance flight information. Currently supports short text complications.

Technical architecture

Built with modern Android technologies

The Wear OS app leverages the latest Android and Jetpack libraries:
  • Jetpack Compose for Wear OS - Modern declarative UI framework
  • Kotlin 2.0.21 - Latest Kotlin language features
  • Room Database 2.8.4 - Local data persistence
  • Wearable Data Layer - Communication with companion phone app
  • Horologist - Google’s Wear OS toolkit for tiles and composables
  • Coil - Asynchronous image loading for airline logos
  • Coroutines - Asynchronous programming with Flow

Minimum requirements

  • Wear OS version: 3.0 or higher (API level 30+)
  • Target SDK: 35
  • Compile SDK: 36

App architecture

The app follows modern Android architecture patterns:
app/
├── presentation/           # UI layer
│   ├── screens/
│   │   └── home/          # Home screen with flight list
│   ├── theme/             # Material Theme customization
│   └── MainActivity.kt    # Main entry point
├── database/              # Data layer
│   ├── entity/            # Room entities
│   │   ├── Flight.kt     # Tracked flight data
│   │   └── Airline.kt    # Airline information
│   └── dao/              # Data access objects
├── services/              # Background services
│   ├── MessageListenerService.kt  # Wearable messaging
│   └── MessageSenderService.kt    # Send data to phone
├── tile/                  # Wear OS tiles
│   └── MainTileService.kt
└── complication/          # Watch face complications
    └── MainComplicationService.kt

App permissions

The Wear OS app requires the following permissions:
  • WAKE_LOCK - Keep the watch awake during data sync
  • BIND_WEARABLE_LISTENER - Receive messages from companion phone app
  • INTERNET - Load airline logos and flight data

Design

Material Design for Wear OS

The app uses Material Design components specifically designed for Wear OS, including:
  • Scaling lazy columns that center content as you scroll
  • Cards optimized for round watch faces
  • Typography sized appropriately for small screens
  • Custom Geist font family via Google Fonts

Splash screen

The app implements the Wear OS splash screen API with a custom icon for a polished launch experience.

Data model

The app stores two main entities in the local Room database:

Tracked flight

  • Flight ID (auto-generated)
  • Airline reference
  • Flight number
  • IATA and ICAO identifiers
  • Flight date (epoch seconds)
  • Departure airport IATA code
  • Departure city
  • Arrival airport IATA code
  • Arrival city

Airline

  • Unique ID
  • Airline name
  • ICAO code
  • IATA code
  • Logo image URL
Flights are linked to airlines with foreign key constraints, ensuring data consistency.

Build docs developers (and LLMs) love