-
-
Notifications
You must be signed in to change notification settings - Fork 996
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Question]: sensors_plus reports different magnetic values in Android and iOS platforms #2655
Comments
There was already a similar problem, they apparently never fixed it #781 you can try using https://pub.dev/packages/motion_sensors or dchs_motion_sensors, |
Without follow-up, I was unsure if the issue was ever resolved until now. It seems still the discrepancy is caused by the source of the magnetometer data.
I do not have an iOS device to test, but perhaps you could try modifying the local package's code to use |
@Zabadam can you roll out an update so that I don’t have to rewrite the implementation in the project using motion_sensors? ))))
I don't know Swift took sample code from https://github.com/zesage/motion_sensors/blob/6dafc3639b3e96460fabc639768a60b431b53610/ios/Classes/SwiftMotionSensorsPlugin.swift#L146 It turned out like this and now the data looks correct `class FPPMagnetometerStreamHandlerPlus: NSObject, MotionStreamHandler {
}` I am attaching a screen recording with the values
IMG_0059.MP4 |
Me neither, ha! It looks like you were able to accomplish just what I was looking for anyway, because...
in the final portion of the video, you are using our If yes, then a PR could be made where the function call is simply swapped out. (Or is the final part of the video a demonstration of your app with the package replaced entirely be Edit: For that fix, I never did receive confirmation of corrected behavior, but it was merged anyway (as some other sensor functions were already utilizing device motion and it seemed appropriate to implement). When this package was updated to Swift, the revised usage of the device motion sensor was somehow reverted back to utilizing the raw magnetometer sensor. |
Hi Zabadam, if you want to resubmit those changes in a PR, I can give some assistance reviewing and merging the fixes. |
yes I posted what code I entered manually I didn’t use motion_sensors, I took a look at how it was implemented and modified it to fit your code |
@Zabadam Haven't you updated yet? |
Is there an update regarding this? Thanks! |
Hello, all, sorry for delay. A PR with this fix should be made shortly. |
@franz-velasco @Silverviql @Hung-Hsun It would be very helpful if someone could confirm proper functionality now that dependencies
# Testing calibrated magnetometer on iOS (https://github.com/fluttercommunity/plus_plugins/pull/3019)
sensors_plus:
git:
url: https://github.com/Zabadam/plus_plugins.git
ref: 1e2248d # Branch mag-sensor-ios
path: packages/sensors_plus/sensors_plus |
@Zabadam yes it works correctly, the same line needs to be changed there, I dropped a couple above |
This issue is stale because it has been open 60 days with no activity. Remove stale label or comment or this will be closed in 15 days |
What is your question?
I listen magnetometerEventStream to get magnetic values of the device in x, y, z directions. However, when I executed in Android and iOS devices which are oriented in almost same attitude, they reported very different values of MagnetometerEvent as shown below.
Android:
I/flutter (30017): [MagnetometerEvent (x: 7.65749979019165, y: 17.76624870300293, z: 17.66499900817871)]
iOS:
flutter: [MagnetometerEvent (x: 192.7864227294922, y: 8.718887329101562, z: -91.60765075683594)]
My code snippet is:
void listenMagnetometerEvent() {
_magnetometerEventStream ??= magnetometerEventStream().listen(
(MagnetometerEvent event) {
_magnetometerEventNotifier.value = event;
print(event);
},
onError: (error) {
_magnetometerEventStream = null;
throw Exception('Listen magnetometer event error: $error');
},
cancelOnError: true,
);
}
Checklist before submitting a question
flutter pub upgrade
flutter clean
The text was updated successfully, but these errors were encountered: