我正在编写一个应用程序,它获取有关传感器的所有信息。我在旋转矢量之一有问题。我看到了官方Android网站,你有4个值获得此传感器上:RotationVector传感器ArrayIndexOutOfBounds异常
TYPE_ROTATION_VECTOR:
SensorEvent.values [0]沿x轴(X * 罪旋转矢量分量(θ/2))。
SensorEvent.values [1]沿y轴的旋转矢量分量(y * sin(θ/ 2))。
SensorEvent.values [2]沿z轴的旋转矢量分量(z * sin(θ/ 2))。 。旋转矢量 ((cos(θ/ 2))的
SensorEvent.values [3]标量分量1
这是我的代码:
@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);
}
}
这里的日志猫:
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]是不可能的?
谢谢你们。