在科尔多瓦检测设备方向
Detecting device orientation in cordova
有没有办法通过访问加速度计、指南针或其他来检测 Cordova 中的物理设备方向?
我想检测设备是侧向(即横向)还是直立(即纵向)。除了:cordova detecting orientation change 我将无法通过 window.orientation
使用方向,因为如果用户锁定了他们的方向,它就会失败。
我不需要知道用户所处的模式。只需要知道设备是横着还是竖着。
我找到了描述 how device orientation can be read from accelerometer despite a locked device orientation 的博客条目。
相关代码片段在 Objective-C 中提供,但自然适用于 Phonegap,因为它可以通过 Cordova's Device Motion Plugin 翻译和使用。
原文如下:
float x = -[acceleration x];
float y = [acceleration y];
float angle = atan2(y, x);
if(angle >= −2.25 && angle <= −0.75) {
//OrientationPortrait
} else if(angle >= −0.75 && angle <= 0.75){
//OrientationLandscapeRight
} else if(angle >= 0.75 && angle <= 2.25) {
//OrientationPortraitUpsideDown
} else if(angle <= −2.25 || angle >= 2.25) {
//OrientationLandscapeLeft];
}
解释:对于任何不等于零的实数 x 和 y,atan2(y, x) 是正 x 轴之间的弧度角一个平面及其上指定坐标给出的点。逆时针角度为正,顺时针角度为负。
有没有办法通过访问加速度计、指南针或其他来检测 Cordova 中的物理设备方向?
我想检测设备是侧向(即横向)还是直立(即纵向)。除了:cordova detecting orientation change 我将无法通过 window.orientation
使用方向,因为如果用户锁定了他们的方向,它就会失败。
我不需要知道用户所处的模式。只需要知道设备是横着还是竖着。
我找到了描述 how device orientation can be read from accelerometer despite a locked device orientation 的博客条目。
相关代码片段在 Objective-C 中提供,但自然适用于 Phonegap,因为它可以通过 Cordova's Device Motion Plugin 翻译和使用。
原文如下:
float x = -[acceleration x];
float y = [acceleration y];
float angle = atan2(y, x);
if(angle >= −2.25 && angle <= −0.75) {
//OrientationPortrait
} else if(angle >= −0.75 && angle <= 0.75){
//OrientationLandscapeRight
} else if(angle >= 0.75 && angle <= 2.25) {
//OrientationPortraitUpsideDown
} else if(angle <= −2.25 || angle >= 2.25) {
//OrientationLandscapeLeft];
}
解释:对于任何不等于零的实数 x 和 y,atan2(y, x) 是正 x 轴之间的弧度角一个平面及其上指定坐标给出的点。逆时针角度为正,顺时针角度为负。