Documentation or example for on-watch screen menus

Is there any good documentation for how to implement on-watch screen menus? Or an example?  The info on how to do this seems very sparse and incomplete.

  • What about on a real device, Fenix series with a Menu button, and Vivoactive, lower right button?  Should a long press on thos buttons for a watchface show the watchface settings menu?

    No. Watch face settings menu appears when you go into the watch settings, select your watch face and select the settings from there. This menu cannot be displayed by pressing any buttons when the watch face itself is visible

  • It sounds like on Fenix, one can use a long press on the Menu button to bring up a watchface settings menu.  Just exactly how I can't seem to follow yet.

    No. You can only bring up the watch face settings as I described in my other posts.

    If you long press the menu button on a fenix when you have a watch app or widget running (not a watch face) then you will bring up a menu as long as you have coded a menu and pushed this in the onMenu() function of a delegate.

    The Analog SDK sample is an example of a watch face with watch face settings.

    The Menu2Sample is an example of a watch app (similar to a widget) with a menu displayed when the menu button is pressed.

    These are completely different mechanisms you seem to be mixing up.

  • But what about the Trigger App Settings menu selection in the simulator being greyed out for devices with no left hand side buttons?

    This menu wll be greyed out if you are not on a watch face or data field or if your watch face or data field does not provide a getSettingsView()

  • OK. Thanks for all the responses.  That is clear now, and what I had working seems to be agreeing the behavior that you have described.

  • On more question on this.  When I first start up the watchface in the simulator, I can select Trigger App Settings.  Then I dismiss the menu, and now Trigger App Settings is greyed out and I can't select it again.  This is on the Fenix 7 and Vivoactive 4.  Why is this?

  • If you see it grayed out, right below it you see "Timeout app settings" which isn't grayed out.  Select that and you can again do "trigger App Settings" and "Timeout App Settings will then be grayed out.

    Not sure why this happens, but on a real device, you can only do on device settings once without applying those settings.

  • >Select that and you can again do "trigger App Settings" and "Timeout App Settings will then be grayed out.

    Sometimes that works.  Eventually it doesn't and I have no choice but to restart the app to re-enable the the Trigger app settings selection.  Sometimes when the simulator starts, the menu item is greyed out right from the start.

  • I have it working in the simulator as I intend, but on a real watch (Vivoactive with 2 physical buttons), some MenuItem presses are unresponsive, in fact some of the MenuItems never respond to presses.  I detect the MenuItem press in onSelect(item) and just change a variable.  But it seems like onSelect(item) is never triggered.  Is this a Garmin bug?   

    ToggleMenuItem() presses are always responsive.
  • I've never seen an issue like that on real devices. Have you put print statements in the onSelect() function to check to see if it is being run?

  • There seem to be 2 issues. The first is that I discovered that the instance of the app running during the menu is different from the instance that normally runs and you can't use normal variables to change state.  You have to use persistant storage.  (This is not obvious or documented for the simulator)  The second is quite sluggish response to touch screen presses in the watchface selection menu and on screen menu.  It seems like there is a lot of background processing, because the watchface is running and it depends on what it is doing. (or maybe there are actually 2 instances running concurrently??)