A Watch Face Format (WFF) v1 watch face featuring a fire-service aerial ladder truck as an analog clock.
- Fire engine seen from above = hour hand
- Turntable = center
- Extended aerial ladder + rescue basket = minute hand
- The dial fades between a night and a daylight background, crossfading over an hour at dawn and dusk. At night the head lamps, their beams and the tail lamps are lit.
- The water tank on the truck doubles as the battery gauge: the fill level is the charge level, and below 15 % the remaining water and the empty volume turn red.
- A call-sign plate on the roof carries the date as
DD/MM. It rides on the truck, so it turns with the hour hand. - The two blue emergency lights flash alternately; when they do is configurable: "Off", "On the hour" (default, active during minute 00), "On notifications" (while unread notifications are pending) or "Always on"
- The blue lights, the driving lights and the day background are disabled in ambient / always-on display mode
- The subtle dial reacts slightly to the watch's tilt; the actual hands stay geometrically fixed to the center so the time remains accurate
Water tank and call-sign plate can each be switched off in the watch face editor on the watch (long-press the watch face → edit), along with the blue-light mode.
Mock-ups rendered from the watch face geometry, not photographs of a device.
The watch face is implemented declaratively in watchface/src/main/res/raw/watchface.xml. It intentionally contains no app code; the manifest uses android:hasCode="false".
Every commit to main publishes a signed APK under Releases.
Preparation on the watch (needed for either route — Wear OS only allows sideloading through wireless debugging):
- Enable developer options: Settings → System → About → tap "Build number" seven times.
- Enable Settings → Developer options → Wireless debugging. The watch must be on the same Wi-Fi network as the phone or computer.
Updates install the same way as a first install; since all releases are signed with the same key, no uninstall is needed. After installing, long-press the current watch face on the watch and select Aerial Ladder (German: Drehleiter) from the picker.
- Install Wear Installer 2 from the Play Store on the phone.
- Download the
FireLadderWatchFace-*.apkfrom the latest release onto the phone. - In Wear Installer 2, enter the watch's IP address (shown under Wireless debugging) and pair using the code from "Pair new device" on the watch.
- On the "Custom APK" tab, select the downloaded APK and install it.
- Download the
FireLadderWatchFace-*.apkfrom the latest release. - In Wireless debugging on the watch, choose "Pair new device" and pair from the computer:
adb pair <ip>:<pairing-port> # enter the code shown on the watch adb connect <ip>:<port> # port shown on the Wireless debugging main screen - Install the APK:
adb install FireLadderWatchFace-<version>.apk
- Open the project folder in Android Studio.
- If Android Studio asks for Android SDK 35, let it install.
- If no Gradle wrapper is available yet, run once from an existing Gradle installation:
gradle wrapper --gradle-version 9.2.1 - Connect the Pixel Watch to Android Studio via wireless debugging / ADB.
- Launch the run configuration for the
watchfacemodule. - Select the
Aerial Ladder(German:Drehleiter) watch face on the watch.
- The project targets Wear OS API 33+, which makes it suitable for the Pixel Watch 1.
- The blue lights flash intentionally instead of staying lit. The logic lives directly in
watchface.xml; the behavior is a WFFListConfigurationuser setting. Note that "Always on" costs noticeably more battery while the display is active. - Day and night are derived from the local time (
SECONDS_IN_DAY), not from sunrise data, so no weather provider or extra permission is involved. - The geometry is built entirely from WFF vector primitives; the watch face itself has no bitmap dependency.


