2013-05-14 30 views
0

我正在編寫一個應用程序,它獲取有關傳感器的所有信息。我在旋轉矢量之一有問題。我看到了官方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]是不可能的?

謝謝你們。

回答

0

這是3D方式。只有x,y和z軸有旋轉這裏S的含義是什麼。請不要使用這個。我希望你明白

相關問題