2012-04-04 2 views
0

나는 최근 Androids 4.0 API-Demos에서 Compass를 사용해 보았습니다. 휴대 전화를 세로 모드로 유지하는 한 작동하지만 가로 모드에 놓으면 바로 "북쪽"이 이전보다 다른 방향을 가리 킵니다. 나는 그것이 분명하게 진술되었다고 생각했다.에는 Compass in Android API가 있습니다. 데모에서 버그가 발생합니까?

좌표계는 기본 화면에서 전화기의 화면을 기준으로 정의된다. 장치의 화면 방향이 바뀌면 축이 바뀌지 않습니다.

하지만 정확히 무슨 일이 일어 났습니까!

왜 나침반이 잘못된 방향을 가리키고 있습니까? 위의 진술이 사실이 아니거나 API 샘플에 의한 데이터 계산 내부의 버그일까요?

답변

3

나침반 데모는 실제로 불완전합니다. 나침반을 화면에 그릴 때 장치 방향을 고려해야합니다. 자세한 내용은 question을보십시오.

This 또한 주제에 대한 좋은 토론입니다.

나는 또한 내 github에 대한 작업 예제를 사용할 수 있습니다. (여기에 붙여 넣기에 너무 많은 코드) 관련 클래스는 CompassSensorListener.java 및 CompassHelper.java입니다.

건배

+0

안녕하세요, github에서 프로젝트를 확인했습니다. 그래서 그것을 디버깅하는 동안 나는 네가 나를 밝힐 수 있기를 희망하는 몇 가지 신비를 보았다. 당신은 1.XX에서 3.XX까지의 값을 가진'onDirectionChanged (bearing)'을 가지고 있습니다 ??? RadaView 내부에서'Location.getDeclination()'을 사용하여이 값을 수정합니다. 제가 갖고 싶은 것은 RotationMatrices를 다루기 전에 Orientation_Sensor가 제공 한 '방위각 (azimuth)'입니다. 명확한 내용은 http://stackoverflow.com/questions/10026575/how-to-handle-sensoreventvalues-to-get-correct-azimuth를 참조하십시오. 저에게 raffn1에게 메일을 보내주십시오. Gmail의 DOT 닷컴 –

+1

예 onDirectionChanged는 방위각을 제공합니다. 단순히 Math.toDegrees (mAzimuth)를 사용하여 학위 (0-359)를 얻으십시오. 적위는 자기 북쪽과는 반대로 실제 북을 얻기 위해 사용하는 아주 작은 값입니다. 코드의 해당 부분은 무시해도됩니다. – Renard

+0

이것은 사실이 아닙니다. 나는'onDirectionChanged'을'Math.toDegrees (bearing) '로,'rotateAngle'을'RadarView.draw()'에 http://pastebin.com/NYrTXwdR 결과로 기록했습니다. 그래서 저는 180을 더해야한다고 생각합니다. ??? 그게 도대체 어디에서 기록 되었습니까? 또한 올바른 '롤'과 '피치'값을 얻는 방법은 완전히 불분명합니다 –

관련 문제