2013-05-14 2 views
0

나는 센서에 대한 모든 정보를 얻는 앱을 코딩하고있었습니다. 회전 벡터에 문제가 있습니다.RotationVector 센서 ArrayIndexOutOfBounds 예외

TYPE_ROTATION_VECTOR :

x 축 (X * 죄를 따라

SensorEvent.values ​​[0] 회전 벡터 구성 요소 (θ 난 당신이 센서 얻을 수있는 4 개 개의 값이 공식 안드로이드 웹 사이트에서 본/2)).

SensorEvent.values ​​[1] y 축을 따라 회전하는 벡터 구성 요소입니다 (y * sin (θ/2)).

SensorEvent.values ​​[2] z 축을 따라 회전하는 벡터 구성 요소입니다 (z * sin (θ/2)). . 여기

@Override 
public void onSensorChanged(SensorEvent event) { 
    // TODO Auto-generated method stub 
    //Get sensors values 
    float x, y, z, s; 
    String s1 = "stringX", s2 = "stringY", s3 = "stringZ", s4 = "stringS"; 

    if (event.sensor.getType() == Sensor.TYPE_ROTATION_VECTOR) { 


      x = event.values[0]; 
      y = event.values[1]; 
      z = event.values[2]; 
      s = event.values[3]; // <============== The error indicate this line 

      s1 = "" + x; 
      s2 = "" + y;   
      s3 = "" + z; 
      s4 = "" + s; 

      tvx.setText(s1); 
      tvy.setText(s2); 
      tvz.setText(s3); 
      tvs.setText(s4); 

    } 
} 

로그 고양이 : 회전 벡터 ((COS (θ/2))의

SensorEvent.values ​​[3] 스칼라 구성 요소 여기에 1

내 코드입니다 :

FATAL EXCEPTION: main 
java.lang.ArrayIndexOutOfBoundsException: length=3; index=3 
at com.example.sensortnewtest.RotationVectorInfos.onSensorChanged(RotationVectorInfos.java:128) 
at android.hardware.SystemSensorManager$ListenerDelegate$1.handleMessage(SystemSensorManager.java:204) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:137) 
at android.app.ActivityThread.main(ActivityThread.java:5041) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:511) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
at dalvik.system.NativeStart.main(Native Method) 

그것은 event.values ​​[3] 불가능하다는 뜻?

감사합니다.

답변

1

the Android documentation on SensorEvent에 따르면 네 번째 값 (즉, event.values ​​[3])은 선택 사항이며, values.length = 4 일 때만 존재합니다 (해당 웹 페이지에서 TYPE_ROTATION_VECTOR 검색). 따라서 제공되지 않는 경우가 발생합니다.

0

이것은 3 D 방식입니다. x, y 및 z 축에서만 회전이 있습니다. 여기서 S의 의미는 무엇입니까? 이것을 사용하지 마십시오. 당신이 이해하기를 바랍니다

관련 문제