zifferblatt/ ist ein vollständiges, lauffähiges Beispiel: eine eigene
Zeichnung als Hintergrund, Uhrzeit und Datum darüber, dazu ein sparsamer
Ruhemodus. Es zeigt den kompletten Weg — zeichnen, bauen, aufspielen, aktiv
setzen — ohne Gradle und ohne Konto.
Es gibt zwei Wege:
klassisch (CanvasWatchFaceService) |
Watch Face Format (WFF) | |
|---|---|---|
| Zeichnen | freier Canvas, voller Code | XML, feste Bausteine |
| Bibliothek | Wear-Support-JAR nötig | keine |
| Wear OS | läuft als Sideload auch auf 4/5/6 | ab Wear OS 4 |
| Freiheit | volle | begrenzt |
Dieses Beispiel nimmt den klassischen Weg: Er ist zwar veraltet, läuft als
Sideload aber zuverlässig und erlaubt beliebiges Zeichnen. Wichtig ist dabei
--target-sdk-version 29, sonst behandelt Wear OS es nicht als Legacy-Face und
es taucht nicht in der Auswahl auf.
zifferblatt/
├── AndroidManifest.xml WallpaperService + WATCH_FACE-Kategorie + Vorschau
├── build.sh
├── res/
│ ├── drawable-nodpi/hund.png Hintergrundbild (eigene Zeichnung)
│ ├── drawable-nodpi/preview.png Vorschau für die Auswahl
│ ├── values/strings.xml
│ └── xml/watch_face.xml <wallpaper/>
└── src/de/doncalvin/zifferblatt/HundFace.java
Das Manifest ist der Teil, den man leicht falsch macht:
<uses-feature android:name="android.hardware.type.watch" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-library android:name="com.google.android.wearable" android:required="false" />
<service android:name=".HundFace"
android:permission="android.permission.BIND_WALLPAPER"
android:exported="true">
<meta-data android:name="android.service.wallpaper" android:resource="@xml/watch_face" />
<meta-data android:name="com.google.android.wearable.watchface.preview"
android:resource="@drawable/preview" />
<intent-filter>
<action android:name="android.service.wallpaper.WallpaperService" />
<category android:name="com.google.android.wearable.watchface.category.WATCH_FACE" />
</intent-filter>
</service>
HundFace.onDraw() malt im Betrieb das Bild bildschirmfüllend und schreibt
Uhrzeit und Datum in den freien oberen Bereich. Im Ruhemodus nur schwarzer
Grund mit weißer Uhrzeit — das spart Akku und ist auf OLED richtig.
Die Grafik entstand als SVG und wurde mit rsvg-convert zu PNG gerechnet:
rsvg-convert -w 450 -h 450 bild.svg -o res/drawable-nodpi/hund.png
Für die Vorschau lohnt es sich, eine Beispielzeit fest einzuzeichnen — dann sieht die Auswahl auf der Uhr nach echtem Ziffernblatt aus.
cd zifferblatt && ./build.sh
adb -t <id> install -r build/zifferblatt.apk
Und dann — der Griff, den man nirgends dokumentiert findet — das Ziffernblatt per adb aktiv setzen:
adb -t <id> shell am broadcast \
-a com.google.android.wearable.app.DEBUG_SURFACE \
--es operation set-watchface \
--ecn component de.doncalvin.zifferblatt/.HundFace
Antwortet die Uhr mit Favorite Id=[..] Runtime=[..], sitzt es.
Wichtig:
--ecn(ComponentName-Extra), nicht--es component. Mit--esantwortet die Uhr stur „Either component name or watchface id are required.”
Die mitgelieferte Zeichnung ist eine eigene, generische Hundefigur. Wer ein Ziffernblatt mit einer geschützten Figur bauen will: Das ist Sache der Rechteinhaber — lade dir solche Blätter über die lizenzierten Anbieter (z. B. Facer) statt sie nachzuzeichnen.