尝试使用传感器值检测设备方向,借助每个智能手机加速度计和陀螺仪中可用的两个常见传感器。
在我的应用程序中,我使用博览会侦听器从传感器读取 x,y,z 形式的值。
Expo.Accelerometer.addListener((results) => {
console.log(results)
})
输出
Object {
"x": 0.005248264875262976,
"y": -0.10594243556261063,
"z": 1.004819393157959,
}
现在我的问题是我如何以方向角的形式准确地转换这些 x,y,z 值。是否可以或不弹出我的应用程序?
陀螺仪
加速度计
DeviceMotion
PS:我不想旋转我的应用程序布局来检查手机方向。在我的场景中,我将其锁定在纵向模式下。只需要设备角度 0,90,-90 还要注意我的应用程序仅取决于博览会。
当设备处于静止状态时,加速度计数据基本上会显示设备参考系中的重力方向。您的示例输出等效于水平放置在桌子上的设备(z 轴方向的重力)。
如果您只想要 0,90,-90 角度,您可以使用以下公式(假设用户垂直握住设备):
alpha = atan(x/y)/pi*360
有关加速计的更多上下文:https://www.digikey.com/en/articles/techzone/2011/may/using-an-accelerometer-for-inclination-sensing