在 Flutter 中获取设备方向(偏航、滚动和俯仰)
Getting device orientation (yaw, roll and pitch) in Flutter
在 Android 中,我可以使用 GAME_ROTATION_VECTOR
传感器获取设备偏航、滚动和俯仰。
我需要在 Flutter 中做同样的事情,但除了 sensors 包之外我找不到任何东西,它只能访问加速度计和陀螺仪传感器。
我能做什么?我需要自己根据加速度计和陀螺仪计算方向吗?
不知道这是否仍然相关,因为问题尚未解决,但对于那些寻求答案的人...现在有一个 Flutter Sensors package 可以为您提供所有的魔法。
当然,您必须订阅流才能获取加速度计和陀螺仪的当前值。
例如:
@override
void initState() {
super.initState();
_streamSubscriptions
.add(accelerometerEvents.listen((AccelerometerEvent event) {
setState(() {
_accelerometerValues = <double>[event.x, event.y, event.z];
});
}));
_streamSubscriptions.add(gyroscopeEvents.listen((GyroscopeEvent event) {
setState(() {
_gyroscopeValues = <double>[event.x, event.y, event.z];
});
}));
_streamSubscriptions
.add(userAccelerometerEvents.listen((UserAccelerometerEvent event) {
setState(() {
_userAccelerometerValues = <double>[event.x, event.y, event.z];
});
}));
}
在 Android 中,我可以使用 GAME_ROTATION_VECTOR
传感器获取设备偏航、滚动和俯仰。
我需要在 Flutter 中做同样的事情,但除了 sensors 包之外我找不到任何东西,它只能访问加速度计和陀螺仪传感器。
我能做什么?我需要自己根据加速度计和陀螺仪计算方向吗?
不知道这是否仍然相关,因为问题尚未解决,但对于那些寻求答案的人...现在有一个 Flutter Sensors package 可以为您提供所有的魔法。
当然,您必须订阅流才能获取加速度计和陀螺仪的当前值。
例如:
@override
void initState() {
super.initState();
_streamSubscriptions
.add(accelerometerEvents.listen((AccelerometerEvent event) {
setState(() {
_accelerometerValues = <double>[event.x, event.y, event.z];
});
}));
_streamSubscriptions.add(gyroscopeEvents.listen((GyroscopeEvent event) {
setState(() {
_gyroscopeValues = <double>[event.x, event.y, event.z];
});
}));
_streamSubscriptions
.add(userAccelerometerEvents.listen((UserAccelerometerEvent event) {
setState(() {
_userAccelerometerValues = <double>[event.x, event.y, event.z];
});
}));
}