"컴퍼스"에 약간 문제가 있습니다.올바른 "컴퍼스 데이터"를 얻기 위해 왜 휴대폰을 흔들어야합니까?
내가 카메라로보고있는 방향의 화면에 표시하고 싶습니다. 가로 모드에서 실행 중일 때 CameraView
및 Activity
이 있습니다.
이제 센서로 방향을 잡으려고하지만 잘못된 것이 있습니다. 앱을 시작하면 이상한 데이터가 표시되지만 휴대 전화를 흔들면 올바른 데이터가 표시됩니다.
어쩌면 나를 도울 수 있습니다.
public void onSensorChanged(SensorEvent event) {
int type = event.sensor.getType();
if (type == Sensor.TYPE_ACCELEROMETER) {
mGrav = event.values.clone();
} else if (type == Sensor.TYPE_MAGNETIC_FIELD) {
mMag = event.values.clone();
}
if (SensorManager.getRotationMatrix(mRinn, null, mGrav, mMag)) {
SensorManager.remapCoordinateSystem(mRinn, SensorManager.AXIS_X, SensorManager.AXIS_Z, mRout);
SensorManager.getOrientation(mRout, mOrient);
//Logger.d("direction?: " + Math.toDegrees(mOrient[0]));
setOrientationText(Math.toDegrees(mOrient[0]));
}
}
나는 두 개의 센서 (자석과 바로 연결) 다음 RotationMatrix을 (문서 나에게처럼) 생성하는 데이터를 얻고있다 : 이것은 내 onSensorChanged 방법이다. 프리젠 테이션의 경우 RotationMatrix에 X -> X Axis 및 Y -> Z Axis를 넣습니다.
이 활동의 screenOrientation은 가로 방향입니다.
하지만 실제로 휴대 전화를 흔들면 정확한 데이터를 가져 오는 이유를 이해하지 못합니다.
아주 좋은 질문. 도움이되지 않는 대답은 '나침의가 필요합니다'입니다. 내 전화기에는 테스트 모드에있는 전화 키패드 시퀀스가 있으며 나침반 보정이 필요하다는 것을 알 수 있습니다. 어떤 근거로이 결정을 내릴 지, 나도 알고 싶어한다. – NickT
나는 아이폰 사용자가 작은 장난감 자동차처럼 그의 전화기를 흔들고있는 사람이라고 생각했다. 그것은 정말로 보정이 필요합니까? 그것은 "자기"가 아니야? 내 생각에, 내가 전화를 흔들면 화면의 방향이 가로에서 세로로 바뀌었다. 그러나 나는 풍경 모드에 아무것도 넣지 않았기 때문에 확신이 없다. ... – Informatic0re
나는 G 센서를 보정하기 위해 propperty 항목을 발견했다. ,하지만 그것은 도움이되지 않습니다. 나침반은 항상 북쪽에 나타납니다. – Informatic0re