android - geolocation.watchposition 不适用于基于网络的位置关闭

标签 android html cordova geolocation gps

我正在使用 sencha 2.3.1 + phonegap 3.3.0 为 Android 构建一个位置感知应用程序,并使用地理定位显示按与用户位置的接近程度排序的目的地列表。 如果基于网络的位置设置打开,一切正常。但是,如果我将其关闭并仅保留基于 gps 的位置,那么它就永远不会被检测到。 代码非常基础,我尝试了两种 Sencha 路径:

Ext.device.Geolocation.watchPosition({
    frequency: 10000, 
    callback: function(position) {
      AppHelper.setCurrentLocation(position);//yeah!!

    },
    failure: function() {
        AppHelper.setLocationModeOff();//oouch!
    }
});

和 phonegap 路径:

var success = function(position) {
        AppHelper.setCurrentLocation(position);
    };
 var fail = function() {
            AppHelper.setLocationModeOff();
    };
   navigator.geolocation.watchPosition(success, fail,{ timeout: 30000 });

结果是一样的,我试着等待几分钟让地理锁定发生,但没有位置服务的迹象。

phonegap 定位插件已安装,权限正确,如果启用网络定位,一切正常。

我正在 Sony Tablet S 上进行测试。

我知道这个错误: How to get user position by GPS in Sencha 但我检查了代码,它在 sencha 2.3.1 中明确修复了

我会尝试使用其他设备,但我想知道是否有人有过同样的经历。

TIA。

编辑: 我使用系统默认浏览器(基于 webkit)在我的 android 设备上使用标准 html5 代码进行了实验。 我会在每次运行时访问我的设置页面并更改设置。

正在访问 http://html5demos.com/geo我得到以下信息:

我启动设备时启用了网络地理定位并关闭了基于 gps 的位置: 我收到一条消息,询问我是否要分享我的位置,我说是,只是这次一切正常。

关闭基于网络的地理定位,gps 仍然关闭: 位置检测失败。 (如预期的那样)

打开 GPS,关闭网络地理定位: 地理定位无提示地失败,我没有收到使用我的位置的请求以及随后激活基于 GPS 的地理定位。

所以我的结论是:这与我在 phonegap 中注意到的类似。如果启用了基于网络的地理定位,一切都会按预期进行。但是,如果我没有网络连接并且 gps 打开,那在我的 html5 应用程序中就毫无用处了。

至少这是我的设备(索尼平板电脑)上发生的事情

最佳答案

根据我对 HTML5 地理定位 API 的理解,这是预期的行为,您无法控制它是否在后台使用 gps 或网络位置。

可能发生的情况是 watchPosition() 在被调用时首先尝试使用网络进行原始、快速定位,然后使用 gps 定位给你一个更好的结果(假设你调用它带有 enableHighAccuracy 参数)。

如果您禁用网络定位,它可能会卡在第一点:如 cordova/phonegap 文档中所述,访问粗略位置的权限是地理定位工作的必要条件。

(in app/AndroidManifest.xml)

     <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

我猜测从设备设置中撤销对粗略位置的访问会以某种方式“覆盖”安装应用程序时给予的用户权限。

关于android - geolocation.watchposition 不适用于基于网络的位置关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20874674/

相关文章:

java - 无法在 Java 中访问 View 对象的公共(public)方法(Android)

java - Roadblock 在 Windows 上为 Android 设置我的 Phonegap 环境

java - 删除xml中的标题栏

javascript - jquery单击时更改图像src,并在第二次单击时恢复为原始图像

ios - 成功构建后应用程序未在 Xcode 中执行

android - Rx Android 我如何在改造 2 中检查 204 代码

html - 当某些元素存在时向下插入元素

javascript - 在 HTML 中的正确位置动态添加标签

android - 如何在cordova android App中使用proguard

android - 在 PhoneGap Build 中禁用 Android 菜单按钮