Urban Football is a Garmin Connect IQ watch app for football sessions. It combines match tracking (score + game timer), activity recording, and a configurable goalie timer with overtime vibration alerts.
- Monkey C (Toybox APIs)
- Garmin Connect IQ SDK (
monkeybrains.jar, optionalmonkeydo) - Garmin wearable targets defined in
manifest.xml(min API level3.4.0)
- Indoor/Outdoor mode selection before session start
- GPS mode toggle based on selected environment
- Live score tracking for both teams
- Game timer display tied to recording state
- Goalie timer: enable/disable, custom duration (1-99 min), quick reset
- Overtime pulse vibration alerts when goalie time is exceeded
- Pre-start screen and start transition overlay
- Install prerequisites: Java, Garmin Connect IQ SDK, developer key.
- Set SDK path:
export CIQ_SDK="$HOME/Library/Application Support/Garmin/ConnectIQ/Sdks/connectiq-sdk-mac-<version>"
- Build and run in simulator:
java -jar "$CIQ_SDK/bin/monkeybrains.jar" \ -o bin/UrbanFootball.prg -f monkey.jungle -y <path-to-dev-key> \ -d fenix7pro_sim -w
- Optional simulator run command:
monkeydo bin/UrbanFootball.prg fenix7pro
- Tap left/right half: increment left/right score (after activity start)
UPshort press: +1 left scoreUPlong press: -1 left scoreDOWNshort press: +1 right scoreDOWNlong press: -1 right scoreSTARTorENTER: start/stop activity recordingESCshort press: reset goalie timerESClong press: open goalie timer configuration
source/: app logic (UrbanFootballApp, views, delegates, renderers)resources/: strings, layouts, menus, and drawablesmanifest.xml: app metadata, products, permissionsmonkey.jungle: project manifest referencebin/,build/: generated artifacts
- Do not edit generated outputs in
bin/orbuild/. - Keep naming consistent with existing files:
UrbanFootball<Feature><Role>.mc. - Validate behavior in Connect IQ Simulator before opening a PR.
- Use focused, imperative commit messages (for example,
Add pre-start transition overlay). - Include simulator/device and manual test notes in pull requests.
- Add screenshots when changing visuals or interaction flows.