Cordova 地理定位插件无法从 Android 的 GPS 获取位置

Posted

技术标签:

【中文标题】Cordova 地理定位插件无法从 Android 的 GPS 获取位置【英文标题】:Cordova geolocation plugin not getting location from GPS for Android 【发布时间】:2015-04-15 09:35:06 【问题描述】:

在我的 Cordova 应用程序中,我试图从 GPS 获取用户的位置。为此,我使用Geolocation plugin。我需要每 10 秒后获取一次位置。我正在做类似的事情:

navigator.geolocation.getCurrentPosition(
                      $rootScope.onSuccessForLocation,
                      $rootScope.onErrorForLocation_High,
                      maximumAge:600000, timeout:7000, enableHighAccuracy: true
                      );

现在,当此代码运行时,它在回调方法中为我提供了位置,但它不是来自 GPS,因为当应用程序启动时,GPS 图标应该出现并开始在状态栏中闪烁。但它没有发生。 我有一个使用相同插件的旧应用程序。当我启动该应用程序时,GPS 图标开始闪烁。到目前为止我注意到的一件事是,在旧应用程序中,我可以在 android 项目中看到 Geolocation.java 文件,但即使我尝试在 Github 源文件夹中搜索它,最新插件中也没有这样的文件。现在,我不知道我身边缺少什么。有人知道发生了什么吗?

【问题讨论】:

【参考方案1】:

他们使用 html5 地理定位实现而不是本机代码。 他们在 0.3.7 版插件中删除了 android java 代码

### 0.3.7 (Apr 17, 2014)
* CB-6422: [windows8] use cordova/exec/proxy
* CB-6212: [ios] fix warnings compiled under arm64 64-bit
* CB-5977: [android] Removing the Android Geolocation Code.  Mission Accomplished.
* CB-6460: Update license headers
* Add NOTICE file

如果您想使用使用本机代码的旧版本插件,您可以像这样安装它

cordova plugin add org.apache.cordova.geolocation@0.3.6

【讨论】:

还有一个问题:在没有可用互联网的情况下,如果更新的插件没有本机代码会发生什么?我的意思是当我尝试使用 enableHighAccuracy: true 获取位置时,HTML5 将如何响应? 我想onErrorForLocation_High会在超时后被调用,因为它没有找到准确的位置,但没有尝试

以上是关于Cordova 地理定位插件无法从 Android 的 GPS 获取位置的主要内容,如果未能解决你的问题,请参考以下文章

cordova android 6.3.0 的相机和地理定位插件问题

Cordova 地理定位插件有时不工作

Cordova 地理定位无法在 Android 上运行

如果 gps 暂时不可用,Cordova 地理定位插件无法正常工作

Phonegap 地理定位插件未为 android 添加

无法在 Cordova.x Android 上使用导航器地理定位最小示例