Skip to content

GaitPilot Wear OS Companion App Guide

The GaitPilot Wear OS companion app turns your Pixel Watch or other Wear OS device into a wrist-mounted sensor node, haptic coach, and hands-free control panel. The watch never operates standalone — it works alongside the GaitPilot phone app, which remains the central compute engine for all gait calculations, session storage, and audio coaching.


Requirements

  • Phone app installed: The GaitPilot app must be installed and running on your Android phone.
  • Watch app installed: The GaitPilot app must also be installed on your Wear OS watch. Both apps must share the same Google account and must be paired at the Android OS level before installation.
  • Subscription tier: The watch companion is available to all users (Free, Advanced, and Pro). For Free tier users, it serves as a seamless fallback for live heart-rate monitoring and basic step counting. For Pro tier users, the watch IMU data additionally unlocks the full kinematic chain and arm-swing analysis.

Setup & Google Play Installation

GaitPilot uses the Android Wearable Data Layer to communicate with your watch. There is no Bluetooth scan, no MAC address entry, and no pairing code. Because your watch is already paired to your phone at the Android OS level, Google Play Services maintains a persistent background connection that GaitPilot uses automatically.

Installing the Companion App onto Your Watch

  1. Join the Test on Your Phone: Open the Google Play Store internal testing invite link on your phone and tap "Accept invite", then install or update GaitPilot from the Play Store.
  2. Open Play Store on Your Watch: On your Wear OS watch, open the Google Play Store app while wearing it.
  3. Navigate to Apps on Your Phone: Scroll down to the section titled "Apps on your phone" (or search for "GaitPilot").
  4. One-Tap Install: You will see GaitPilot listed with a cloud download or "Install" icon. Tap Install. The watch companion will install directly onto your watch under your shared Google account (com.gaitpilot.gait_pilot).

Automatic Watch Activation & Phone Sensor Hub Status

When you open the GaitPilot phone app, it automatically sends a wake message to your watch over the Wearable Data Layer. A background service on the watch called WearListenerService receives this message and launches the watch app without any action from you.

Monitoring Watch Status in the Phone's External Sensors Hub

On the phone, open the External Sensors Hub to verify live watch health and streaming state: * Live Streaming Indicator: The watch card displays a luminous neon-green streaming dot. TalkBack explicitly announces this indicator as "Live streaming" when data is actively communicating, and "Not streaming" when disconnected. * Placement Readout: The card header displays ${PLACEMENT} (WEAR OS) (e.g. LEFT WRIST (WEAR OS) or RIGHT WRIST (WEAR OS)), matching your selection in the placement dropdown. * Battery & Runtime: The subtitle displays CONNECTED (BATTERY: X% (~Y.Yh left)) during active connection. If the app is awaiting the initial watch ping, it displays WAITING FOR PING... in amber lettering.


The Watch Display

The watch face shows a minimalist, high-contrast ambient dashboard optimized for outdoor sunlight readability. It displays the metrics configured from the phone dashboard settings. Typical metrics include:

  • Current cadence in steps per minute
  • Session elapsed time
  • Current heart rate in beats per minute
  • Active sensor status indicators
  • Validity Sentinels: Any unmeasured, missing, or disconnected metrics display *** rather than misleading $0$ values. TalkBack reads *** or "No data".

Haptic Vibration Patterns — Wrist Coaching

The watch delivers distinct vibration patterns so you can receive coaching without looking at a screen or wearing earphones.

Vibration Pattern Meaning
Single short pulse On-target cadence — pace keeper beat
Double burst Cadence has dropped below target range
Long ramped vibration Ground contact lost or significant asymmetry detected
Single long vibration Hazard successfully logged
Double short vibration Hazard logging failed — GPS location unavailable

Logging Hazards from Your Wrist

You can place a geo-tagged spatial hazard marker without touching your phone.

Screen Button

Tap the Log Hazard button on the watch display. The watch sends the current GPS coordinates and a timestamp to the session log. You will feel a single long vibration and hear the phone announce "Hazard marked" if successful. If GPS is unavailable, you will feel a double short vibration and hear "Cannot mark hazard, GPS location unavailable."

Wrist Voice Command

Tap the microphone icon (or double-tap the crown, depending on your watch model). Speak a short hazard description such as "icy patch" or "pothole near curb." The Wear OS speech recognizer transcribes your voice and sends both the text description and GPS coordinates to the phone. You receive the same vibration and audio confirmation as the button method. Wear OS speech recognition has an 8-second timeout.


Arm Swing and Heart Rate Telemetry

While a session is active, the watch continuously streams two types of data to the phone at 100 Hz.

Arm Swing (Upper-Body Kinematics)

The watch 6-axis IMU captures arm swing speed, wrist rotation angle, and cross-body symmetry. This feeds directly into the Gait DSP engine alongside shoe and sacrum sensors.

Automatic Left Wrist Fallback: If you do not have an external WT901 wrist sensor connected on the left side, the phone automatically uses the watch IMU as the Left Wrist sensor. No configuration is needed.

Heart Rate

The watch samples heart rate and Heart Rate Variability using the Android Health Services API. This appears in your session summary and cloud sync.

Battery-Efficient 100Hz Protobuf Streaming

The IMU samples at full speed (100Hz) and serializes the sensor events directly into our shared TelemetryChunk Protobuf format. Instead of expensive Bluetooth LE JSON payloads, it transmits these raw bytes efficiently over Android's ChannelClient to the phone, which are fed natively into the Rust DSP engine.


Assigning the Watch to Left or Right Wrist

By default the watch is treated as the Left Wrist sensor. If you wear your watch on your right wrist, open the External Sensors Hub on the phone and reassign the watch to Right Wrist. The change takes effect immediately at the start of the next processing frame.


Battery Level Monitoring

The watch uses zero CPU polling. A background Android BroadcastReceiver wakes only when the OS detects a 1 percent battery drop, then sends a lightweight update to the phone. The External Sensors Hub on the phone reflects the level immediately. A yellow warning banner appears when the watch battery drops below 30 percent.


Troubleshooting

Watch app does not open automatically Confirm both apps are installed with the same Google account. Confirm the watch is powered on and within range. If needed, open GaitPilot manually on the watch from the app drawer.

Watch shows disconnected in the Sensor Hub Toggle Bluetooth off and on again on the phone to force a Data Layer reconnect. If the problem persists, restart both devices and open GaitPilot on the phone first.

Wrist voice commands are not working Confirm the watch has microphone permission for GaitPilot in Wear OS settings. Speak within 8 seconds of the listening prompt — the session closes after the timeout.

Hazard confirmation vibration does not fire Confirm Do Not Disturb is off on the watch and that GaitPilot has vibration permissions in Wear OS settings.

Arm swing metrics appear on the wrong side Check the External Sensors Hub on the phone and confirm the watch is assigned to the correct wrist.


What the Watch Does Not Handle

These are handled exclusively by the phone to conserve watch battery:

  • All real-time audio coaching and text-to-speech
  • GPS tracking and hazard radar distance calculations
  • Session start and stop controls
  • DSP rules engine calculations
  • Session data storage and cloud sync

🛡️ Wear OS Guardian & Walker Safety Features

The Wear OS companion app serves as an immediate wrist fail-safe for the GaitPilot Guardian & Walker Safety Suite:

1. One-Tap Wrist Pre-Alarm Dismissal

  • When the phone detects prolonged inactivity or potential distress, the 30-second pre-alarm countdown begins.
  • The watch immediately vibrates with an urgent repeating pulse pattern and renders a full-screen high-contrast card: "I'M OKAY (CANCEL)".
  • Zero Phone Handling: Simply tap your watch screen once. The pre-alarm on the phone is cancelled immediately and the watchdog timers reset.

2. Wrist Emergency SOS Beacon

  • A dedicated emergency SOS button on the watch face allows you to trigger an emergency SMS alert directly from your wrist without reaching for your phone.

3. Automatic Optical PPG Heart Rate Fallback

  • If you are not wearing an external Whoop band or chest strap, the watch's built-in optical heart rate sensor automatically streams your pulse to the phone.
  • This ensures that cardiac distress monitoring ($>165\text{ BPM}$ under immobility) and metabolic calorie calculations continue seamlessly during your walk.

4. Off-Wrist Sensor Protection & Battery Conservation

  • Hardware Contact Detection: When you remove the watch from your wrist, the optical sensor reports SENSOR_STATUS_NO_CONTACT (-1) over the Wearable Data Layer.
  • Auto-Dimming & Watchdog Disarm: The watch automatically turns off the green optical PPG LEDs to conserve battery, and the phone displays *** (Off Wrist) while immediately disarming the cardiac safety watchdog. Setting the watch on a charging dock or nightstand will never trigger an emergency alarm.