Unresponsive Bangle.js 2 prompts

Posted on
  • I'm having intermittent unresponsive prompt behavior regardless of source (Messages, Alarms, custom prompts triggered from the IDE). The rightmost option is usually the worst and it can take several seconds of screen poking to finally trigger it. There is usually a buzz, which presumably indicates that the touch was registered.

    The touchscreen seems to work perfectly fine with, for example, the touch timer app.

    Any help or tips would be appreciated.

  • I experience this as well. Hitting the 'beep' ok button in the message app is a pain.
    I'm trying to avaoid these kind of dialogues in my apps as I dont feel they work well.

    on('tap') requires you to practically stab the screen to get it to work.
    Personally I think on('touch') with additional tolerance outside the button area would work better.

    The touch timer app and the stopwatch touch both use on('touch') for handling buttons.
    Timer Clock also uses on('touch') but for some reason I did not find the buttons were as responsive as what I implemented in stopwatch touch.

    Would be useful for you to try these apps out and report your experience.

    The rightmost option is usually the worst

    I would agree. If you try my lazybones app - it has a dismiss button that takes up the entire width of the screen but is best touched in the left half to get a response. I think there was a sperate thread about this but cant remember if there a was any conclusion.

    UPDATE: just found the thread.
    http://forum.espruino.com/conversations/­371867/#comment16392805

    I think in stopwatch touch I may check in my ontouch handler and anything greater than the width returned by g.getWidth() will clip back to g.getWidth() etc.

  • on('tap') requires you to practically stab the screen to get it to work.

    It appears to me that 'tap' is based on the physical movement of the watch. If that's the case Stabbing the screen is just a roundabout way to tap the front.

  • on('tap') requires you to practically stab the screen to get it to work.

    Yes, as @Subtlewolf mentioned that's not using the touchscreen which is why you're finding it difficult :)

    There is usually a buzz, which presumably indicates that the touch was registered.

    Do you mean you get the buzz immediately the first time? Are you on latest firmware, and have you done Storage compact recently? It might just be something is happening that is taking a long time to complete

  • Do you mean you get the buzz immediately the first time?

    Most of the time at least.

    Are you on latest firmware, and have you done Storage compact recently?

    Yes and yes.

    It might just be something is happening that is taking a long time to complete

    Possibly. However everything else has been responsive while prompts are reliably problematic, so at the very least they appear to be affected more.

  • Ok, very odd - please can you give me some exact steps for something you do that makes it happen (or even a video?) and I'll see if I can reproduce here

  • It happens very consistently at the very least with alarm app timer prompts and prompts triggered from the web IDE.

    Video of uploading the prompt example code and having to settle for two fish: https://youtu.be/O4mDtftum5U

  • Thanks - but it looks like you uploaded the example code:

    E.showPrompt("Do you like fish?").then(function(v) {
      if (v) print("'Yes' chosen");
      else print("'No' chosen");
    });
    // Or
    E.showPrompt("How many fish\ndo you like?",{
      title:"Fish",
      buttons : {"One":1,"Two":2,"Three":3}
    }).then(function(v) {
      print("You like "+v+" fish");
    });
    

    onto the watch. There's a // Or comment in there - those are two separate commands for two separate menus - so I wouldn't be super surprised if that's causing you some kind of issue.

    Can you reproduce the problem with just a single menu shown? Or does this only happen when it's one menu and then another overwriting it right away?

  • I should have noticed that, sorry.

    Good thing I do actually like fish

    .

  • Well that is strange - here that works fine. Please can you try:

    E.showPrompt("Do you like fish?").then(function(v) {
      if (v) print("'Yes' chosen");
      else print("'No' chosen");
    });
    Bangle.on('touch',(n,e)=>{
      print("Touch", e);
      g.reset().fillRect(e.x-1, e.y-10,e.x+1,e.y+10).fillRect(e.x-10, e.y-1,e.x+10,e.y+1);
    });
    

    It should print out xy coordinates and draw a crosshair where it thinks you pressed on the screen. Maybe for some reason the XY coordinates are wrong?

  • Well, looks like most of the issue is me my dry fingers plus some touch screen imprecision. Tapping in place can produce a minor, but distinct spread which is enough to miss repeatedly given the size of the buttons.

    That said, occasionally the touch event does not fire, in which case the prompt tends to not respond. Very rarely the prompt works but the touch event does not or the crosshair is drawn over a button with no response from the prompt.

    EDIT: notably I have not had any trouble reliably hitting, e.g., buttons in the calculator app. I don't know if there's a UX difference with full screen applications prompting me to be more precise or something else.

  • Thanks! I've just checked on this and there was a decent size dead-zone between buttons (24px). I've just updated the firmware to remove this and also to extend the pressable area vertically a bit (it was already a little higher and lower than the buttons, but adds a little more).

    Hopefully that'll make things a bit more usable for you!

  • Post a reply
    • Bold
    • Italics
    • Link
    • Image
    • List
    • Quote
    • code
    • Preview
About

Unresponsive Bangle.js 2 prompts

Posted by Avatar for Subtlewolf @Subtlewolf

Actions