2012-04-23 2 views
3

진동기를 진동시킬 수있는 기능을 앱에 구현하려고합니다. 사용자는 슬라이더를 사용하여 세 가지, 진동 강도, 펄스 길이 및 펄스 간 시간을 변경할 수 있습니다. 이 코드를 (그 제대로 완료되면, 그냥 빨리 예를 먹으 렴)는 응용 프로그램을 충돌 사용할 때, 그러나진동기가 진동하는 데 문제가 있습니다.

for(i=0; i<(pulse length * whatever)+(pulse gap * whatever); i+=1){ 
pattern[i]=pulse length*i; 
patern[i+1]=pulse gap; 

:

내가 좋아하는 몇 가지 코드의 생각했다. 또한 진동 강도 (작동하는 진동 강도)를 변경하면 강도 변경을 위해 서비스를 다시 시작해야합니다. 내가 힘을 바꾸는 방법은 바이브레이터가 켜지는 시간을 바꾸는 것입니다.

내가 전화가 진동하는 방법을 검출하기 위해 사용하는 코드입니다 (여기의 코드 내가 선호하는 것과 약간 다릅니다) : 사람의 방향으로 날 지점 수의

if (rb == 3){ 
    z.vibrate(constant, 0); 
} else if (rb == 2){ 
    smooth[0]=0; 
    for (int i=1; i<100; i+=2){ 
      double angle = (2.0 * Math.PI * i)/100; 
      smooth[i] = (long) (Math.sin(angle)*127); 
      smooth[i+1]=10; 
    } 
    z.vibrate(smooth, 0); 
} else if (rb == 1){ 
    sharp[0]=0; 
    for(int i=0; i<10; i+=2){ 
      sharp[i] = s*pl; 
      sharp[i+1] = s+pg; 
    } 
    z.vibrate(sharp, 0); 
} 
} else { 
     z.cancel(); 
} 

경우 이것을 할 수있는 몇 가지 코드 또는 어떻게 작동하게 할 수 있는지, 나는 그것을 매우 고맙게 생각할 것이다.

+0

오류 추적을 게시하십시오. – Sam

답변

0

내가 가진 유일한 추측은 ArrayIndexOutOfBounds 오류입니다.

그렇다면 long 어레이 길이를 입력해야합니다.

long[] OutOfBounds = new long[]; 
OutOfBounds[0] = 100; 
// this is an error, it's trying to access something that does not exist. 

long[] legit = new long[3]; 
legit[0] = 0; 
legit[1] = 500; 
legit[2] = 1000; 
// legit[3] = 0; Again, this will give you an error. 

vibrate()은 스마트 기능입니다. 다음 예에서도 오류가 발생하지 않습니다.

v.vibrate(legit, 0); 
// vibrate() combines both legit[0] + legit[2] for the 'off' time 

long tooLegit = new long[100]; 
tooLegit[0] = 1000; 
tooLegit[1] = 500; 
tooLegit[10] = 100; 
tooLegit[11] = 2000; 
v.vibrate(tooLegit, 0); 
// vibrate() skips over the values you didn't define, ie long[2] = 0, long[3] = 0, etc 

희망이 있습니다.

관련 문제