CIQ v3.0.7
(In this bug report, I will use "apps" to generically refer to either "device apps" or "widgets".)
In the process of creating a stopwatch device app and widget for every single Garmin CIQ watch except Epix (lol), I learned the following facts the hard way:
- VAHR: Apps cannot detect long press of either button
- Vivoactive 3 (Music): Apps cannot detect long press of KEY. Device apps can detect short press of KEY, but widgets cannot.
Of course, most other devices cannot detect a long press of UP, but that is very well known since most Garmin watches are 5-button watches, and all the 5-button watches behave that way.
Unless I have missed something, there is no way I can discover this information except:
- To own the device in question
- To ask someone
- To read the manual
I don't see anything in the UX guide that tells me. The simulator certainly doesn't emulate this behaviour. It happily allows the dev to short or long press any button they want, and gladly passes that input along to the app.
Sure, in most cases I can read the manual. In the case of VA3, here's the description of KEY:
Key
Hold to turn on the device.
Hold to view the controls menu, including device power.
Press to return to the watch face from any screen, except during an activity.
During an activity, press to pause the activity.
Okay, so now I realize that for the purposes of CIQ, this translates to: "Device apps can use KEY and widgets cannot." Well, how would I know for sure that for VA3, "CIQ device app" is treated the same as "activity" but CIQ widgets are not? I guess if I owned a VA3, this would be very obvious to me, but I don't.
I don't know of a single other Garmin watch where the START/ENTER button is available for apps but not widgets. It was strange enough to me that I refused to believe it, even when people kept telling me otherwise.
I'm wondering if there's any way Garmin can level the playing field for those of us who can't / won't buy every single device they want to target.
Answering a simple question like "Will pressing KEY work in my widget?" shouldn't require a dev to go out and buy a $300 watch or to ask users after you've already released a broken widget to the store.
I don't need the sim to actually perform the device-specific action for the button that is unavailable to apps. It would be great if the associated behaviour/keypress was just suppressed, and a message was displayed in the console or on the sim:
"Imagine that the controls menu just opened!"
That way devs wouldn't think their app can receive certain input that they can't.
Is there any reason at all that the sim should ever send KEY_ENTER to a VA3 widget? Seems to me the only reason is to fool the dev into thinking that their widget can use KEY, when it can't.
Furthermore, why does the sim accurately model the Back behaviour in every case (when not overridden by the app) by either popping the view or closing the app, but in the case of the VA3 KEY and a widget, the sim does not close the widget.
Is there a technical or design reason that a behaviour which is overridable by the app is modelled by the sim but a behaviour which is not overrideable by the app is not modelled? Again I cannot think of a good reason.