사용자 정의 위치를 가리키는 나침반을 만들고 있습니다. 회전 니 메이션을 사용하여 바늘을 회전 시켰습니다. 바늘이 전화 방향으로 향할 때 전화가 내가 원하는 방향을 가리키고 있다는 것을 압니다. 그러나 바늘이 전화기의 방위각과 관계없이 정확한 방향을 가리 키기를 바랬습니다.android compass rotateanimation
문제는 rotationanimation이 실제 좌표에 따라 바늘을 회전시키지 않고 대신 휴대 전화 화면과 관련이있는 것입니다. 그래서 바늘의 58도 회전은 실제 세계에서 58도 회전과 일치하지 않습니다. 이것이 사실입니까, 아니면 제 코드에서 실수를 저지르고 있습니까?
나침반은 휴대 전화를 평평하게 뒤집어서 사용하기위한 것입니다. 또한 방위를 출력 시도하고 그것은 다음과 같이 읽습니다
direction = 360 - azimuth + rotate;
RotateAnimation animate = new RotateAnimation(rotateLast, direction, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
animate.setFillAfter(true);
animate.setInterpolator(new LinearInterpolator());
animate.setDuration(10);
needle.startAnimation(animate);
rotateLast = direction;
:
Azimuth Actual Phone angle
0 0
45 90
90 180
그것이 여기에 코드입니다
(120) 사이에 340 반사 다시 완전한 원에 근접하는
방위각은 센서의 휴대 전화 방위각이며 회전은 사용자 지정 방향 (북쪽도)이며 방향은 바늘의 필요한 회전입니다.
rotateLast는 바늘이 있던 마지막 위치입니다. 바늘이 없으면 바늘이 0 도로 돌아가고 깜박이기 때문에 이것을 사용하고 있습니다.
감사합니다. P. 이것은 나를 미치게했다.
흠 왜 같은 값으로 fromDegree, toDegree를 사용합니까? 그것은 그 위치로 향하는가? –