私はCMDeviceMotion、特にstartDeviceMotionUpdatesUsingReferenceFrameを試してきました。その中のmagnetFieldの値は私には正しくないようです。
たとえば、私がそうする場合:
CMDeviceMotion *manager = [[CMDeviceMotion alloc] init];
manager.deviceMotionUpdateInterval = 0.1;
[manager startDeviceMotionUpdatesUsingReferenceFrame:CMAttitudeReferenceFrameXArbitraryCorrectedZVertical toQueue:queue withHandler:^(CMDeviceMotion *motion, NSError *error) {
CMMagneticField fld = motion.magneticField.field;
NSLog( @"%5.1f %5.1f %5.1f", fld.x, fld.y, fld.z );
[self handleDeviceMotion:manager.deviceMotion];
}];
サイズは約50のmagnetFieldベクトルを示していますが、重力とほぼ一致しています。つまり、デバイスがテーブル上に平らに置かれている場合、デバイスの回転方法に関係なく、xとyはゼロに近く、zは-50に近くなります。
50は地球の磁場のサイズとしては正しいでしょう(ウィキペディアによると25から65マイクロテスラの間でなければなりません)が、ベクトルの方向はすべて間違っているようです。私は疑問に思っていました:
- それは私の場所だけ(ストックホルム、スウェーデン)で独特なものです、または
- MagneticFieldプロパティは、地球の磁場なしで残っている磁場を示します。
- これはバグです
MagneticFieldプロパティについて同様の経験がありますか?