Я экспериментировал с CMDeviceMotion, и особенно с startDeviceMotionUpdatesUsingReferenceFrame. Значения магнитного поля в этом не кажутся мне верными.Свойство MagneticField CMDeviceMotion некорректно?
Например, если я делаю:
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, но почти совпадает с действием силы тяжести. То есть, когда устройство лежит на столе, x и y близки к нулю, а z близко к -50, независимо от того, как я поворачиваю устройство.
50 будет правильным по размеру для магнитного поля Земли (согласно Wikipedia должно быть между 25 и 65 микро Тесла), но направление вектора кажется неправильным. Мне было интересно ли:
- Это что-то особенное в моем месте только (Стокгольм, Швеция), или
- Свойства магнитного поля показывает оставшееся магнитное поле без поля Земли, или
- Это ошибка
У вас есть похожие впечатления от свойства magnetField?
По крайней мере, для части вашего вопроса, [docs] (http://developer.apple.com/library/ios/DOCUMENTATION/CoreMotion/Reference/CMDeviceMotion_Class/Reference/Reference.html#//apple_ref/occ/ instp/CMDeviceMotion/magnetField) - ваш друг: «... дает вам полное магнитное поле в окрестности устройства без смещения устройства ... эти значения отражают магнитное поле Земли и окружающие поля, минус смещение устройства». – rickster
Правда, но реальное поведение, похоже, не соответствует документам ... – fishinear
Ваш вопрос заставлял меня поиграть с магнитометром себе ... Я пробовал этот код (не используя опорный кадр из вашего ответа, так как я 'm интересуется относительным направлением поля устройства), но все, что я вижу, - <0,0,0>. Мне что-то не хватает в вашей отрывке? – rickster