【问题标题】:(Tizen studio, wearable, web app) How to detect long press on back-hardware button?(Tizen 工作室、可穿戴设备、网络应用程序)如何检测长按后硬件按钮?
【发布时间】:2021-05-27 20:05:16
【问题描述】:

我正在为三星可穿戴设备开发一个网络应用程序,我想检测用户何时长按后退硬件按钮。

到目前为止,我发现的唯一信息是:

document.addEventListener('tizenhwkey', function(e) {...});

问题?此事件仅在后退按钮被释放时触发,但不幸的是,当后退按钮被按下时它不会触发 - 并且在按下后退按钮和释放时需要信息时检测长按。

任何想法如何检测长按后硬件按钮?

【问题讨论】:

    标签: tizen-web-app tizen-native-app tizen-studio


    【解决方案1】:

    我检查了文件。 但是 Tizen 平台并没有提供区分硬件键的按下和释放的方法。

    https://docs.tizen.org/application/web/guides/tau/event-handling/

    【讨论】:

      【解决方案2】:

      确实没有办法使用 Tizen Web 检测长按。另一种方法是检测快速双击,而不是长按。这可以使用计时器来完成。

      例如

      const doubleClickWaitTime = 400;
      let doubleClickTimeout = -1;
      
      window.addEventListener('tizenhwkey', function(ev) {
          if (ev.keyName === 'back') {
            if (doubleClickTimeout === -1) {
              // First click of back button
              doubleClickTimeout = setTimeout(() => {
                doubleClickTimeout = -1;
                backButtonSinglePress();
              }, doubleClickWaitTime);
            } else {
              // Second click of back button
              clearTimeout(doubleClickTimeout);
              doubleClickTimeout = -1;
              backButtonDoublePress();
            }
          }
      });
      
      function backButtonSinglePress() {
        // Single press
      }
      
      function backButtonDoublePress() {
        // Double press
      }
      

      执行以下操作:

      • 当用户单击硬件键时,会启动一个计时器,在doubleClickWaitTime 毫秒后触发一个函数。
      • 如果用户在此期间再次按下硬件按钮,定时器将被取消,并调用backButtonDoublePress()
      • 如果用户没有再次按下硬件按钮,计时器将触发并在重置计时器后执行backButtonSinglePress()

      可以修改doubleClickWaitTime 变量,让用户有更多时间双击。但是,此延迟越长,触发单击事件所需的时间就越长。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-01-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多