iPhone의 방향을 45도 단위로 감지하고 싶습니다. 이상적으로 모든 축을 따라 방향 각도를 얻을 수 있기를 바랍니다.iPhone 화면 방향 감지
내가해야 할 일은 방향 변경시 iPhone의 Trism이 화면의 현재 하단 위치로 화살표를 깜박이는 것과 유사합니다.
내가 코딩 한 것이 있지만 실제로 가속도계 수치가 작동하는 방식을 이해하지 못하고 올바른 방향으로 찌르는 동작을 사용할 수 있습니다. 현재 코드는 현재 각도를 기록하지만 휴대 전화가 평평한 경우에도 초당 수 차례 격렬하게 변화하는 판독 값을 얻습니다. 로그에서
- (void) checkOrientation:(UIAccelerometer*)accelerometer didAccelerate:(UIAcceleration*)acceleration
{
int accelerationX = acceleration.x * kfilteringFactor + accelerationX * (1.0 - kfilteringFactor);
int accelerationY = acceleration.y * kfilteringFactor + accelerationY * (1.0 - kfilteringFactor);
float currentRawReading = (atan2(accelerationY, accelerationX)) * 180/M_PI;
NSLog(@"Angle: %f",currentRawReading);
}
샘플 전화가 평평한 상태에서 :
2009-06-16 17:29:07.987 [373:207] Angle: 0.162292
2009-06-16 17:29:07.994 [373:207] Angle: 179.838547
2009-06-16 17:29:08.014 [373:207] Angle: 179.836182
2009-06-16 17:29:08.032 [373:207] Angle: -90.000000
2009-06-16 17:29:08.046 [373:207] Angle: 179.890900
2009-06-16 17:29:08.059 [373:207] Angle: -90.000000
2009-06-16 17:29:08.074 [373:207] Angle: 179.917908
2009-06-16 17:29:08.088 [373:207] Angle: -179.950424
2009-06-16 17:29:08.106 [373:207] Angle: 90.000000
2009-06-16 17:29:08.119 [373:207] Angle: 90.000000
2009-06-16 17:29:08.134 [373:207] Angle: -179.720245
답장을 보내 주셔서 감사합니다. int 대신 float를 사용하도록 코드를 변경했지만 기기가 평평하지 않은 경우 값이 급격하게 변동하는 결과를 얻고 있습니다. – Simon
로그의 일부 줄을 질문에 추가했습니다. – Simon
아, 인스턴스 변수에 관한 처음 코멘트를 놓쳤습니다. 해결책 일 수 있습니다. 다시 알려 드리겠습니다. – Simon