2013-07-14 5 views
1

이 질문은 전에 질문되었습니다 CMCalibratedMagneticField doesn't update 하지만 정말 대답하지 못했습니다. 나는이 하나에 아주 분실된다.0을 반환하지 않도록 CMCalibratedMagneticField 속성을 초기화하는 방법은 무엇입니까?

저는 간단한 공식을 사용하고 있지만 field.field.x, y, z는 항상 0입니다. 나는 상당히 현대 4S를 코딩하고 있습니다 :

if (motionManager.deviceMotionAvailable) 
{ 
    [motionManager startDeviceMotionUpdatesToQueue:[NSOperationQueue currentQueue] 
             withHandler: 
     ^(CMDeviceMotion *motionData, NSError *error) { 
      CMCalibratedMagneticField field = motionData.magneticField; 
      NSLog(@"x: %f y:%f z:%f", field.field.x 
            , field.field.y 
            , field.field.z); 

    }];  
} 

샘플 출력은 내가 위의 대답은 제안 문제가 전화하지 꽤 확신

2013-07-14 22:18:27.865 TestApp[6678:907] x: 0.000000 y:0.000000 z:0.000000 

2013-07-14 22:18:27.869 TestApp[6678:907] x: 0.000000 y:0.000000 z:0.000000 

2013-07-14 22:18:27.879 TestApp[6678:907] x: 0.000000 y:0.000000 z:0.000000 

입니다. CoreMotion, CoreLocation 및 CoreData 프레임 워크가 있습니다. 구현에서 가져올 필요가 있다는 것을 모르는 헤더 파일이있을 수 있습니까? 현재 나는 단지

#import <tgmath.h> 

을 필요로하는 것하지만 다른 것들입니다.

도움이 될 것입니다.

팀 레드 필드는

+0

아차, - 즉 수입 user1976727

답변

2

대신을 시도해보십시오

- (void)startDeviceMotionUpdatesUsingReferenceFrame:(CMAttitudeReferenceFrame)referenceFrame 
              toQueue:(NSOperationQueue *)queue 
             withHandler:(CMDeviceMotionHandler)handler 

을의와 :

 CMAttitudeReferenceFrameXArbitraryCorrectedZVertical 
    CMAttitudeReferenceFrameXMagneticNorthZVertical 
    CMAttitudeReferenceFrameXTrueNorthZVertical 

아니라 :

 CMAttitudeReferenceFrameXArbitraryZVertical 

(또 다른 SO 당신이 놓친 질문 :,961를 93,210

당신은 자력계 데이터에 너무 많은 정보를 원하는 경우)

,이 질문에 대한 내 대답을 참조하십시오 In iOS, what is the difference between the Magnetic Field values from the Core Location and Core Motion frameworks?

+0

감사했다! 이 작동합니다. 나는 당신의 다른 (매우 광범위하고 유익한!) 게시를 보았지만이 구문을 추출 할 수 없었다. – user1976727