Stationsklok - Railway Clock for Wear OS

Stationsklok - Railway Clock for Wear OS

Many years ago, I built a watch face for Wear OS that mimicked the iconic Dutch railway station clocks. An inaccurate watch face, on purpose, because it behaves just like the real station clocks: the second hand moves a little too fast, completing its round in about 58 seconds, then pauses to “synchronize with the mother clock” before continuing. The minute hand jumps every minute, and the second hand glides smoothly rather than ticking. This makes it an inaccurate clock for precise timing, because each second (except the last of each minute) takes ~970 milliseconds.

This is what it originally looked like:

It was a fun project, the app was around for years, and gained some attention from news websites. Then, Google updated its policies and stopped supporting code-based watch faces. All watch faces, to be allowed in the Play Store, are now created using the Watch Face Format (WFF) which does not support running any code. Much faster, much more battery friendly, much more secure – and much more limited. So, I rebuilt it.

Get it now

Stationsklok

Dutch railway clock for Wear OS

Get it on Google Play

Open Source

I’m releasing the source code now as open source because the project uses manually edited Watch Face Format XML (WFF), not just a standard Watch Face Studio (WFS) export. WFS alone wasn’t enough to achieve the precise movements of the hands, so I dug into the XML and tweaked the math. The build process is not trivial, so I hope this helps anyone facing a similar task.

Code available here:

stationsklok
The Dutch railway clock, as a Wear OS watch face

FAQ

Why not just use a normal clock?
Because normal clocks are boring. The Dutch railway clock has character.

Why WFF?
Google’s policies forced my hand. Literally.

Why not a normal Gradle build?
Gradle did not produce ‘no-code’ APKs or App Bundles, a requirement for watch faces to be publishable in the Play Store. For debugging or distribution outside the Play Store, Gradle is perfectly fine. For production builds, I used AAPT2, bundletool and jarsigner. Since mid 2025, Android Studio supports WFF and this trickery is no longer needed to build projects like this!

Can I build it myself?
Yes! Check the repo for build instructions. Script included (for *nix).


Building projects like this is my passion. The prime reason I started this project was because I'd been making watch faces for clients for years, but hadn't made one that was mine. Plus, I liked the challenge.

If you’d like to learn more about what I build, shoot a message to mat@droptablecompanies.eu or check out the contact page.

Contact me