2012-03-22 4 views
0

사용자가 화면을 터치하면 진동이 시작되고 3000ms 동안 계속되는이 안드로이드 코드를 사용했습니다. 나는 항상 그 사용자가 화면을 터치하는 것을 원하지 않는다. 진동의 지속 시간은 이전 시간 (3000ms)과 동일하게된다. 진동이 무작위로 지속될 때마다 무작위로 사용하고 싶습니다. 내 코드에 따라 무작위로 어떻게 사용해야합니까?무작위 진동 기간

도와주세요.

public boolean dispatchTouchEvent(MotionEvent ev) 
{  
    if (ev.getAction() == MotionEvent.ACTION_UP) 
    {  
     Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);  
     v.vibrate(3000);  
    }  
    return super.dispatchTouchEvent(ev); 
}  

답변

3

Random class를 사용합니다.

private Random rnd = new Random(); 

private int randRange(int min, int max) { 
    return min + rnd.nextInt(max - min); 
} 

public boolean dispatchTouchEvent(MotionEvent ev) { 
    if (ev.getAction() == MotionEvent.ACTION_UP) { 
     Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); 
     v.vibrate(randRange(min, max)); // integer variables of your choice 
    } 
    return super.dispatchTouchEvent(ev); 
} 

내가 randRange 방법에게 내가했던 방법을 썼다 왜 당신을 혼동하는 경우 Random.nextInt(int)의 문서, 이해를 참조하십시오.

+0

감사합니다. 하지만 randRage 기능이 작동하지 않습니다. 앱을 실행하고 화면을 터치하면 '강제 종료'오류로 닫힙니다. – androidGirl

+1

'randRange' 함수에 반환 유형이 없어졌습니다 ('int', 수정 됨). 괄호. 그것 이외에, 그것은 잘 작동합니다. 이미 이러한 실수를 눈치 채고 고쳐 봤습니까? 그렇지 않은 경우 지금 시도하십시오. 그래도 작동하지 않는다면,'randRange' 호출을 제거하고 문제가 여전히 나타나는지 확인하십시오. – Irfy