我從我的設備(針對android編程)獲取各種傳感器讀數,並且我希望將卷(它似乎是數字1-100)轉換爲角度度數並轉換磁航向爲度..我如何將傳感器數據轉換爲度數
任何簡單的公式,將不勝感激。我的幾何形狀是一個稍縱即逝的記憶..
public void onSensorChanged(SensorEvent evt) {
int type=evt.sensor.getType();
if(type == Sensor.TYPE_ORIENTATION){
azimuth = evt.values[0]; // azimuth rotation around the z-axis
pitch = evt.values[1]; // pitch rotation around the x-axis
roll = evt.values[2]; // roll rotation around the y-axis
}
//Smoothing the sensor data a bit seems like a good idea.
if (type == Sensor.TYPE_MAGNETIC_FIELD) {
orientation[0]=(orientation[0]*1+evt.values[0])*0.5f;
orientation[1]=(orientation[1]*1+evt.values[1])*0.5f;
orientation[2]=(orientation[2]*1+evt.values[2])*0.5f;
} else if (type == Sensor.TYPE_ACCELEROMETER) {
acceleration[0]=(acceleration[0]*2+evt.values[0])*0.33334f;
acceleration[1]=(acceleration[1]*2+evt.values[1])*0.33334f;
acceleration[2]=(acceleration[2]*2+evt.values[2])*0.33334f;
}
if ((type==Sensor.TYPE_MAGNETIC_FIELD) || (type==Sensor.TYPE_ACCELEROMETER)) {
float newMat[]=new float[16];
//Toast toast = Toast.makeText(ctx.getApplicationContext(), "accel", Toast.LENGTH_SHORT);
//toast.show();
SensorManager.getRotationMatrix(newMat, null, acceleration, orientation);
if(displayOri==0||displayOri==2){
SensorManager.remapCoordinateSystem(newMat,SensorManager.AXIS_X*-1, SensorManager.AXIS_MINUS_Y*-1,newMat);
}else{
SensorManager.remapCoordinateSystem(newMat,SensorManager.AXIS_Y, SensorManager.AXIS_MINUS_X,newMat);
}
matrix=newMat;
}
}
我要補充一點,我不知道我只是想卷。 。我的應用程序鎖定在橫向模式,但顯然用戶可以把他們的手機在任何訪問的任何角度..所以我可能需要所有三個以上獲得角im即時通訊ng for。
問題的角度是,如果用戶希望通過自己的手機,不管他們是如何保持它在現實世界中,我想他們正在尋找離開地平線的角度..
例如如果他們看着我想要90度迴歸的地平線,如果他們直視天空,我應該得到180,直線-180 ..然後,我也想要從他們正在尋找的磁北極度..使用磁力
你看過這裏的例子:http://developer.android.com/reference/android/hardware/SensorEvent.html – Falcon165o 2012-07-12 14:59:03