나는 센서에 대한 모든 정보를 얻는 앱을 코딩하고있었습니다. 회전 벡터에 문제가 있습니다.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)). . 여기
로그 고양이 : 회전 벡터 ((COS (θ/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); } }
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] 불가능하다는 뜻?
감사합니다.