0

我正在使用适用于 Android 的 Tasker 应用程序,但无法让循环正常工作。我希望有人能提供一些见解,因为循环是一个相当简单的编程概念。我猜我只是缺少了特定于 Tasker 语法的东西。

我正在尝试做的事情:

我正在尝试编写一个播放声音并循环振动 3 次的脚本。我可以让它执行一次,但它不会循环。

我试过的

到目前为止,我已经尝试了 for 和 if 循环的一些变化,但我似乎无法让循环部分工作。我正在尝试的基本想法是:

  1. 创建一个计数器并将其设置为 0
  2. 在计数器小于 3 的条件下打开一个 if 语句(我也尝试过将其作为 for 循环)。
  3. 在循环中,播放声音并执行振动动作。
  4. 将计数器加 1。
  5. 再次转到循环的开头。

我是如何尝试的

正如我所提到的,我已经尝试了几种不同的方法,但这是最近的尝试:

1.  Variable Set
%Counter, 0

2.  If
%Counter < 3

    3. Notify Sound
    Sound

    4. Vibrate
    500

    5. Variable Add
    %Counter, 1

    6. Goto
    Action Number, 2

7.  End If

当我把 Flash 放在那里时,我可以看到计数器确实增加了,但它忽略了 Goto 部分。任何想法或想法将不胜感激。

更新和解决方案

根据 Anthony Atkinson 的建议,我在声音/振动片段运行后添加了等待,这使循环正常工作。经过更多研究,我似乎需要在循环结束附近添加一个通知取消来清除事情。当它这样做时,我可以看到从通知区域中删除的图标。

看起来 Tasker 看到了一些已经在运行的东西,并在它循环时跳过了它。如果有人对此有更好的解释,我将不胜感激。

如果其他人遇到与我相同的问题,更新(和工作)脚本如下:

1.  Variable Set
%Counter, 0

2.  If
%Counter < 3

    3. Notify Sound
    Sound

    4. Vibrate
    500

    5. Variable Add
    %Counter, 1

    6. Wait
    0, 3, 0 ,0

    7.  Notify Cancel

    8. Goto
    Action Number, 2

9.  End If
4

1 回答 1

0

我刚开始使用 tasker,但我已经做了一段时间的 Android 开发人员。大多数情况下,这些操作是异步的,您实际上可能同时执行所有这些操作,没有给第一轮足够的时间来完成。换句话说,如果这个过程是阻塞的,它可能会工作,但它可能是异步的。也许尝试在每轮比赛后增加睡眠时间?比如说,750 毫秒或类似的时间,看看会发生什么?

于 2013-07-04T01:05:58.103 回答