我发现了很多关于如何处理设备旋转,运动方向和位置传感器的线索。 我想创建一个应用程序,我将在我的车中使用,首先我想测量汽车的旋转度。 所以我把我的手机放在手机壳里,例如当我左转车时,我想看看汽车在电话上的转弯程度。使用Android手机测量汽车的旋转度
磁性和加速度计可以吗?
我发表了一个代码,首先我认为没关系。 (比方说,我认为我的手机“波泰特”模式,因此不会对景观第一)
private static SensorManager sensorService;
//magnetic
private Sensor mSensor;
//accelerometer
private Sensor gSensor;
private float[] mValuesMagnet = new float[3];
private float[] mValuesAccel = new float[3];
private float[] mValuesOrientation = new float[3];
private float[] mRotationMatrix = new float[9];
@Override
public void onCreate(Bundle savedInstanceState) {
nf.setMaximumFractionDigits(2);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sensorService = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
this.mSensor = sensorService.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
this.gSensor = sensorService.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
sensorService.registerListener(this, gSensor, SensorManager.SENSOR_DELAY_NORMAL);
sensorService.registerListener(this, mSensor, SensorManager.SENSOR_DELAY_NORMAL);
}
@Override
public void onAccuracyChanged(Sensor arg0, int arg1) {
}
@Override
public void onSensorChanged(SensorEvent event) {
switch (event.sensor.getType()) {
case Sensor.TYPE_ACCELEROMETER:
System.arraycopy(event.values, 0, mValuesAccel, 0, 3);
break;
case Sensor.TYPE_MAGNETIC_FIELD:
System.arraycopy(event.values, 0, mValuesMagnet, 0, 3);
break;
}
SensorManager.getRotationMatrix(mRotationMatrix, null, mValuesAccel, mValuesMagnet);
SensorManager.getOrientation(mRotationMatrix, mValuesOrientation);
// double azimuth = Math.toDegrees(mValuesOrientation[0]); //azimuth, rotation around the Z axis.
// double pitch = Math.toDegrees(mValuesOrientation[1]); // pitch, rotation around the X axis.
double roll = Math.toDegrees(mValuesOrientation[2]); //roll, rotation around the Y axis.
//normalize
// azimuth = azimuth>0?azimuth:azimuth+360;
roll = roll>0?roll:roll+360;
String txt = "roll= "+Math.round(roll);
((EditText)findViewById(R.id.szog)).setText(txt);
}
问题: - 如何准确将这个应用在汽车? (我能做些什么才能更准确?) - 当我将手机放在“横向”模式下时应该怎么做? 从方位角度还是可以的?
请注意,这是第一次尝试,所以有很多事情要做! 但首先我想看看如何实现,
谢谢!
所以看起来像重力/磁场是一个更好的组合,我会试试看。这个组合可以用于非常慢的速度测量吗? (3-5公里/小时) – user1552747 2013-04-06 11:32:50
我认为这与测量速度无关 – Stochastically 2013-04-06 12:28:52
谢谢,我认为对于我的问题,您的回答是OK(现在我的应用程序更好!)。如果你有时间请告诉我,什么传感器适合低速测量?谢谢! – user1552747 2013-04-06 13:38:38