2013-06-20 7 views
2

Я прошел шаблон для вибрации и -1 для повтора. Но я хочу передать 10 вместо -1 (теперь он должен повторять 10 раз), то это модели не повторять 10 times.how, чтобы сделать это? в настоящее время я использую этот кодКак вибрировать Android-устройство в течение длительного времени (например, 2,5,10 минуты)

Vibrator mVibrate = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); 
long pattern[]={0,800,200,1200,300,2000,400,4000}; 
// 2nd argument is for repetition pass -1 if you do not want to repeat the Vibrate 
mVibrate.vibrate(pattern,-1); 

, но я хочу сделать это mVibrate.vibrate(pattern,10);, который не работает.

ответ

3

, который работает, как ожидалось, см 2-ой документации параметров:

повторить индекса в шаблон в котором повторить, или -1, если вы не хотите повторить.

и так как ваша модель не имеет индекс 10, это просто игнорируется

+0

Теперь я прошел 300, который доступен в моем шаблоне, но его не вибрирующий ... –

+0

мы говорим об индексе , поэтому int [4] arr имеет индекс: 0.1 2 3 – pskink

+0

теперь я передал индекс как 7 и его вибрацию за один раз (от 20 до 25 секунд), пока образец не будет работать, но мой вопрос был ... как вибрировать его на 5 или 10 минут? –

1

Там нет возможности в Вибратор API, чтобы сделать что-то вроде этого. Возможное решение может состоять в том, чтобы сделать свой собственный слушатель и подсчитать, как часто он вибрирует, например, шаблон [] прошел. Но я понятия не имею, как это сделать ... возможно, с таймером это возможно точно так же, как и ваш шаблон [] sum * 10

1

Ваш вопрос: «Как долго вибрировать Android-устройство (например, 2,5,10 минут)? Никто не ответил на ваш вопрос, поэтому я попробую. Я написал следующий код, чтобы вибрировать телефон на неопределенное время:

// get a handle on the device's vibrator 
// should check if device has vibrator (omitted here) 
Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); 

// create our pattern for vibrations 
// note that the documentation states that the pattern is as follows: 
// [time_to_wait_before_start_vibrate, time_to_vibrate, time_to_wait_before_start_vibrate, time_to_vibrate, ...] 

// the following pattern waits 0 seconds to start vibrating and 
// vibrates for one second 
long vibratePattern[] = {0, 1000}; 

// the documentation states that the second parameter to the 
// vibrate() method is the index of your pattern at which you 
// would like to restart **AS IF IT WERE THE FIRST INDEX** 

// note that these vibration patterns will index into my array, 
// iterate through, and repeat until they are cancelled 

// this will tell the vibrator to vibrate the device after 
// waiting for vibratePattern[0] milliseconds and then 
// vibrate the device for vibratePattern[1] milliseconds, 
// then, since I have told the vibrate method to repeat starting 
// at the 0th index, it will start over and wait vibratePattern[0] ms 
// and then vibrate for vibratePattern[1] ms, and start over. It will 
// continue doing this until Vibrate#cancel is called on your vibrator. 
v.vibrate(pattern, 0); 

Если вы хотите, чтобы вибрировать устройство для 2, 5 или 10 минут, вы можете использовать этот код:

// 2 minutes 
v.vibrate(2 * 60 * 1000); 

// 5 minutes 
v.vibrate(5 * 60 * 1000); 

// 10 minutes 
v.vibrate(10 * 60 * 1000); 

И, наконец, , если вы просто хотите написать один способ сделать это (как следует), вы можете написать следующее:

public void vibrateForNMinutes(Vibrator v, int numMinutesToVibrate) { 
    // variable constants explicitly set for clarity 
    // milliseconds per second 
    long millisPerSecond = 1000; 

    // seconds per minute 
    long secondsPerMinute = 60; 

    v.vibrate(numMinutesToVibrate * secondsPerMinute * millisPerSecond); 
}