Java 在旧模式的基础上开始新的振动模式

Java 在旧模式的基础上开始新的振动模式,java,android,android-vibration,Java,Android,Android Vibration,我创建了一个简单的应用程序,用户点击一个按钮,就会执行一个振动模式 Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); v.vibrate(pattern, -1); 然而,当用户按下该按钮时,它会再次启动模式,从而导致重叠的振动模式。我希望用户能够按下按钮,这将导致模式重新开始,而不会与旧模式混合 在v.vibrate()之前,我尝试过使用v.cancel()。这根本没有帮助。根据我的基本理解,我猜v.can

我创建了一个简单的应用程序,用户点击一个按钮,就会执行一个振动模式

Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
v.vibrate(pattern, -1);
然而,当用户按下该按钮时,它会再次启动模式,从而导致重叠的振动模式。我希望用户能够按下按钮,这将导致模式重新开始,而不会与旧模式混合

在v.vibrate()之前,我尝试过使用v.cancel()。这根本没有帮助。根据我的基本理解,我猜v.cancel()是异步启动的,这意味着取消不会立即发生。我曾想过修改设置,但我发现,这不会有帮助(我认为)。我甚至想过在一个单独的线程中添加振动代码或者其他什么东西,然后完全终止线程(这会有帮助)。我必须学会如何处理线程。由于项目的最后期限,我正在努力快速完成这项工作。如果线程的想法是为某人工作,请让我知道,所以我学习线程


我只是不明白为什么SDK很难重置振动或完全停止振动。

在按钮上单击set yourBtn.setEnabled(false);当模式完成时。setEnabled(true)@MilosLulic没有回调来知道振动何时完成,因此这实际上是不可能的。但您知道模式的持续时间(毫秒)?我遇到的问题是我希望用户能够以任何方式单击按钮。所以,我想为用户提供一种方法来重置已经振动的模式。我的模式很长,有很多停顿。是的,我知道长度。谢谢。我已经探索了线程和权限选项,但失败了。中断振动模式是不可能的吗?