휴대 전화의 자이로에서 데이터를 가져 오려고합니다. 지금까지 각도가 계속 변경되는 것은 휴대 전화를 움직이는 각도에 따라 다릅니다. 그러나android에서 방향 센서를 보정하는 방법
, 예를 들어, 방위각, 나는 내가 시작하지 북쪽 방향에서의 위치에서 계산을 시작하려면 -> 내가이 0
내 질문에서 시작 할 수 있습니다 : 어떻게 나는 자이로에서 얻은 첫 번째 데이터를 저장하므로 휴대 전화를 움직일 때 나머지 데이터에서 "마이너스"를 할 수 있습니까? 코드는 다음과 같습니다
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sm=(SensorManager)getSystemService(Context.SENSOR_SERVICE);
rotationvector=sm.getDefaultSensor(Sensor.TYPE_ORIENTATION);
sm.registerListener(this,rotationvector,SensorManager.SENSOR_DELAY_NORMAL);
rotationx=(TextView)findViewById(R.id.rotationx);
rotationy=(TextView)findViewById(R.id.rotationy);
rotationz=(TextView)findViewById(R.id.rotationz);
}
@Override
public void onSensorChanged(SensorEvent event) {
rotationx.setText(" " +event.values[0]);
rotationy.setText(" " +event.values[1]);
rotationz.setText(" " +event.values[2]);
}
내가하고 싶은 것을하는 것은 같은 것입니다 :
rotationx.setText(" " +event.values[0]-FirstAzimuthValue);
감사합니다!
새로운 코드 :
private boolean isFirstMeasure = true;
private float FirstAzimuthValue = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sm=(SensorManager)getSystemService(Context.SENSOR_SERVICE);
rotationvector=sm.getDefaultSensor(Sensor.TYPE_ORIENTATION);
sm.registerListener(this,rotationvector,SensorManager.SENSOR_DELAY_NORMAL);
rotationx=(TextView)findViewById(R.id.rotationx);
rotationy=(TextView)findViewById(R.id.rotationy);
rotationz=(TextView)findViewById(R.id.rotationz);
}
@Override
public void onSensorChanged(SensorEvent event) {
if (isFirstMeasure){
FirstAzimuthValue - event.values[0]; //error this line
isFirstMeasure = false;
}
rotationx.setText(" " +(event.values[0] - FirstAzimuthValue));
rotationy.setText(" " +event.values[1]);
rotationz.setText(" " +event.values[2]);
}
가에서 onCreate 함수에서 각도를 확인하고 firstazimuthvalue라는 변수에 저장하지, 다음 이봐 .. – DAVIDBALAS1