Instinct Crossover AMOLED – Why is setClockHandPosition() not working in DataFields?

Hello,

I'm working on a small Connect IQ DataField for the Instinct Crossover AMOLED using SDK 6.0.2.

I'd like to use the physical analogue hands as a live activity metric display (e.g. speed and distance).

The setClockHandPosition() API is documented on WatchUi.View, and WatchUi.DataField inherits from WatchUi.View.

The API documentation also lists Instinct Crossover AMOLED as a supported device.

However, calling the method from a DataField in the simulator returns false and produces:

Clock hand position cannot be set for this app/view type.

I got the same result when calling setClockHandPosition() from both initialize() and onUpdate().

The same API call works in a Watch Face project in the simulator.

Questions:

  1. Is physical hand positioning intentionally restricted from being called in DataFields?
  2. If so, where is this restriction documented?
  3. Is there any supported way for a DataField to control the physical hands?

The intended use case is a speed/distance gauge using the physical hands while a Garmin activity is running.

Thanks!

  • I suspect it's because a DF doesn't really own the whole screen, even with a 1 field layout.  But that's why this works for things like watch face and device apps

  • Having a datafield co-opt the watch hands seems like not such a great idea.

    Users are not generally going to expect a datafield to mess with stuff outside of its “box”.

    There is no “natural” way of figuring out which datafield would have control if there were multiple ones doing this.

    Garmin seems to not want IQ things to change the primary behavior of the watch (in inconsistent or confusing ways). IQ has never been “anything goes” (like what is sometimes allowed with programming other computers).

  • I experimented a bit and it seems the hands are stuck at 3 and 9 on both crossovers with a DF.  If any DF could set the position, you could have competing DF's on the same screen, and odd movements moving between screens.

    With them locked, there's no chance of the hands overlaying data the user wants to see.  That's the same reason I keep them locked in widgets and device apps, but on a watch face where they show the time it's hard to avoid it.