0

我试图让我的设备每两秒振动 16 次。我使用 Thread.sleep() 尝试在方法调用之间让线程休眠。在 vibrate 方法中,它应该调用 pattern1 和 pattern2 并且那些已经有 sleep 作为它的一部分,但它永远不会工作。

public void vibratorDAYONE()
{
    Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);

    if(!v.hasVibrator())
    {
        Toast.makeText(daybuzzer.this,
                "You need to have a vibrator on your phone for this app to work.",      Toast.LENGTH_LONG).show();
    }


    long[] startpattern = {1000, 500, 3000};
    long[] pattern1 = {0, 1000, 1000};//sleep one minute
    long[] pattern2 = {0, 2000, 3000}; //sleep 1.5

    v.vibrate(pattern1, -1); //1 min, 1.5 min, x8
    SystemClock.sleep(2000);
    v.vibrate(pattern2, -1);
    SystemClock.sleep(2000);
    v.vibrate(pattern1, -1);
    SystemClock.sleep(2000);
    v.vibrate(pattern2, -1);
    SystemClock.sleep(2000);
    v.vibrate(pattern1, -1);
    SystemClock.sleep(2000);
    v.vibrate(pattern2, -1);
    SystemClock.sleep(2000);
    v.vibrate(pattern1, -1);
    SystemClock.sleep(2000);
    v.vibrate(pattern2, -1);
    SystemClock.sleep(2000);
    v.vibrate(pattern1, -1);
    SystemClock.sleep(2000);
    v.vibrate(pattern2, -1);
    SystemClock.sleep(2000);
    v.vibrate(pattern1, -1);
    SystemClock.sleep(2000);
    v.vibrate(pattern2, -1);
    SystemClock.sleep(2000);
    v.vibrate(pattern1, -1);
    SystemClock.sleep(2000);
    v.vibrate(pattern2, -1);
    SystemClock.sleep(2000);
    v.vibrate(pattern1, -1);
    SystemClock.sleep(2000);
    v.vibrate(pattern2, -1);
    SystemClock.sleep(2000);
}
4

1 回答 1

1

公共抽象无效振动(long []模式,int重复)

在 API 级别 1 中添加了给定模式的振动。

传入一个整数数组,它们是打开或关闭振动器的持续时间(以毫秒为单位)。第一个值表示打开振动器之前要等待的毫秒数。下一个值表示在关闭振动器之前保持振动器开启的毫秒数。随后的值在持续时间(以毫秒为单位)之间交替,以关闭振动器或打开振动器。

要使模式重复,请将索引传递到开始重复的模式数组中,或 -1 以禁用重复。

此方法要求调用者持有VIBRATE权限。

参数模式一组长时间打开或关闭振动器的时间。将索引重复为要重复的模式,如果不想重复,则为 -1。

您的清单中有权限吗?

于 2014-07-22T03:44:08.707 回答