Android에서 카메라 방향을 찾으려고합니다. 나는 초상화에서 완벽하게 작동하는 코드를 가지고있다. (천천히 원을 그리며 1 초 간격으로 업데이트를 시도하여 테스트한다.) 그러나 프리 랜드에서 전혀 작동하지 않는다. 숫자는 무작위로 변하는 것처럼 보인다. 또한 초상화에서 풍경으로 전환 한 후에도 완전히 파멸합니다. 여기 내 코드가가로 모드 또는 방향 반전 후 센서에서 방향을 얻지 못합니다.
public void onSensorChanged(SensorEvent event) {
switch (event.sensor.getType()) {
case Sensor.TYPE_ACCELEROMETER:
accelerometerValues = event.values.clone();
break;
case Sensor.TYPE_MAGNETIC_FIELD:
geomagneticMatrix = event.values.clone();
break;
default:
break;
}
if (geomagneticMatrix != null && accelerometerValues != null) {
float[] R = new float[16];
float[] I = new float[16];
float[] outR = new float[16];
//Get the rotation matrix, then remap it from camera surface to world coordinates
SensorManager.getRotationMatrix(R, I, accelerometerValues, geomagneticMatrix);
SensorManager.remapCoordinateSystem(R, SensorManager.AXIS_X, SensorManager.AXIS_Z, outR);
float values[] = new float[4];
SensorManager.getOrientation(outR,values);
float direction = normalizeDegrees((float) Math.toDegrees(values[0]));
float pitch = normalizeDegrees((float) Math.toDegrees(values[1]));
float roll = normalizeDegrees((float) Math.toDegrees(values[2]));
if((int)direction != (int)lastDirection){
lastDirection = direction;
for(CompassListener listener: listeners){
listener.onDirectionChanged(lastDirection, pitch, roll);
}
}
}
}
내가 뭘 잘못하고있어? 나는 이것을 100 % 이해하지 못한다고 나는 자유롭게 인정한다. 나는 또한 Google이 오리엔테이션 센서를 더 이상 사용하지 않는 이유를 알지 못합니다. 이는 일반적인 욕망처럼 보입니다.
나는 그것을 생각해 보았습니다. 여기에는 y 축과 x 축 전환이 있습니다 (z는 항상 화면을 통해 나옵니다). 그러나 그것은 정확하게 움직이는 것처럼 보이지 않습니다. 나는 3을 모두 화면에 버렸고 그 중 아무도 제대로 움직이지 않았습니다. 선회 후 1 초 간격으로 미친듯한 샘플을 점프하는 경우에도 방향은 180도, 320도, 280도, 220도, 180도, 300도, 200 시가 될 때 읽을 수 있습니다. –