当前位置: 首页 > 知识库问答 >
问题:

LocationRequest和LocationClient。请求位置更新

寇景明
2023-03-14

我有一个应用程序,使用谷歌地图和新的Fuse定位API。我使用此代码在位置更改时获取更新:

locationClient.requestLocationUpdates(new LocationRequest(),
    new LocationListener() {

    @Override
    public void onLocationChanged(Location location) {
        //Some code
    }
});

我的Galaxy Nexus和Android4.3没有问题。然而,在我朋友的手机(Xperia ST21i)上,我无法收到Android 4.0.4的更新。

我在Android文档和许多(如果不是全部的话)关于使用LocationRequest的问题上看到过。创建()而不是新位置请求()。这个新代码在我的手机上仍然可以正常工作;我还没有在我朋友的手机上试过。

阅读文档,我猜是LocationRequest。create()类似于:

public static LocationRequest create() { 
    LocationRequest locationRequest= new LocationRequest();
    locationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY);
    locationRequest.setFastestInterval(aNumber);
    locationRequest.setInterval(anotherNumber);
    return locationRequest;
}

这两段代码有什么区别,为什么它在我的手机上工作,但在我朋友的手机上不工作。我朋友的手机换了之后还能用吗?

如果没有,我还需要做什么才能让它工作?

共有2个答案

阎雪峰
2023-03-14

我设法解决了我的问题。我忘记了连接并不意味着位置是已知的。然而,在告诉我的朋友打开谷歌地图应用程序并等待它开始显示当前位置后,我仍然不知道为什么我的代码不起作用,然后才打开我的应用程序。也许谷歌地图应用程序没有直接或间接地使用或更新谷歌融合API的位置。

如果您想知道我是如何实现它的,这里有一个链接:

更新:MapActivity

淳于健
2023-03-14

实际上,在许多4.0. x设备中存在一个问题,如果您依赖网络级位置,OnLocationChanged将无法正确调用。

AOSP Issue Tracker上的问题报告很可能就是您看到的

如上所述,基本上网络级位置永远不会刷新,因为您使用的是LocationRequest。PRIORITY_BALANCED_POWER_ACCURACY它将尝试使用最不引人注目的方法在可能的情况下给你更新。我确实觉得有点奇怪,如果全球定位系统和无线网络在该设备上也可用,你仍然从来没有得到更新。

解决此问题的一种可能方法是将优先级更改为LocationRequest。优先级高精度。如果您认为该解决方案会给您的用户带来麻烦,您可以做一些事情,比如创建一个新的LocationRequest,具有PRIORITY\u HIGH\u准确性,并且只有在第一种方法失败时才使用它。

特别是,我会在您第一次启动位置请求时设置一个计时器,并在LocationListener中使用一个标志来指示是否在该时间范围内收到任何结果。如有必要,可提供代码示例。

 类似资料:
  • 现在,我的应用程序的其他功能,我需要与Geofence工作。这个想法是在手机用户靠近商店时显示一个通知,我的第一个方法是编写另一个名为LocationHelperGeofence的LocationHelperGeofence的LocationHelperGeofence的LocationHelper。使用oficial教程,我制作了这门课。工作正常 这两个类都可以工作,但我在每个类中有2个Loca

  • 在我的项目中,我使用GoogleApiClient和locationRequest获取当前位置并在一定时间间隔后定期更新,我知道setInterval和setFastestInterval和 间隔是变量,我从我的应用程序设置中更改,其值为 所以我称之为: 例如,如果我将间隔设置为30分钟,我会在5分钟后更新,这不是固定时间,但我会随机更新,为什么?

  • 我正在开发一个android应用程序,我需要在后台使用GPS提供商获得更长时间的位置更新,所以当用户不再与它交互时,我需要位置更新。我自己做了一些测试,比较LocationManager的requestSingleUpdate(provider,pendingIntent版本)和requestLocationUpdates(provider,minTime,minDistance,intent版本

  • 检查这个的步骤 添加相关信息如下,我正在设置show_mature和newsletter_subscribedtrue 预期:将show_mature和newsletter_subscribed值设置为true实际:show_mature和newswetter_sSubscribed的值为false 如果有人能让我知道为什么会发生这种情况,我会非常感激吗?谢谢

  • 附注。Link1和link2是我第二个问题的相关答案。不过,他们并没有回答我的问题。

  • 我做错了什么?