首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >availability,requestLocationUpdates()不返回结果和可用性奇怪的行为

availability,requestLocationUpdates()不返回结果和可用性奇怪的行为
EN

Stack Overflow用户
提问于 2019-01-30 10:02:48
回答 1查看 2.1K关注 0票数 6

经过大量的阅读和与它的斗争,我不得不问我的好同事。

我有一种行为,我无法向FusedLocationClient解释。

我想得到的位置(只有一个实例),以显示一些信息给用户。为此,我调用:mFusedLocationClient.getLastLocation().addOnSuccessListener(...)

如果getLastLocation()的位置为null。我想“跳开始”客户端给我一个位置。

代码语言:javascript
复制
LocationRequest locationRequest = new LocationRequest();
locationRequest.setFastestInterval(5000);
locationRequest.setInterval(10000);
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);

mLocationCallback = new LocationCallback() {
   @Override
   public void onLocationResult(LocationResult locationResult) {
       Timber.d("OnLocationResult entered");
       if (locationResult != null && !locationResult.getLocations().isEmpty())
           findCurrentArea();
   }

   @Override
   public void onLocationAvailability(LocationAvailability locationAvailability) {
      Timber.d("OnLocationAvailability entered");
      super.onLocationAvailability(locationAvailability);
   }
};
mFusedLocationClient.requestLocationUpdates(locationRequest, mLocationCallback, null);

让我在前面说,我也使用了LocationSettingsRequest来检查设置,并且总是成功的。

奇怪的是:

  1. onLocationAvailability()被叫了两次。第一次响应是真的,但是没有调用onLocationResult(),然后我得到了false的可用性!我有过几次让它被叫不止一次的场合。
  2. 在使用Android6-8的多个设备中都可以观察到上述行为。带有Android 9的Pixel 3的行为与预期的一样,提供了一个位置。
  3. 如果我在有问题的设备上启动Google,在这种情况下,地图也不能显示位置。如果然后关闭该位置,则会得到带有"?“的”地图位置“按钮。在里面。按下地图中的按钮,我会看到一个弹出窗口,我应该打开位置。好的,那就恢复我的应用程序中的定位服务!
  4. 如果我使用LocationSettingsRequest的失败案例并进行自动解析(与Google一样弹出式),那么这个位置就会正确触发!

问题基本上是..。为什么?

在打开位置服务时,自动解析弹出与按快速访问按钮有什么不同。在检查设置时,快速访问按钮也会返回成功的结果。是否有另一种万无一失的方式来请求requestLocationUpdates()

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2022-11-06 18:19:27

我遇到了同样的问题,我用LocationRequest.Builder创建了我的locationRequest,然后,GPS信号变得稳定了:

代码语言:javascript
复制
locationRequest = new LocationRequest.Builder(Priority.PRIORITY_HIGH_ACCURACY, 1000)
                .setWaitForAccurateLocation(false)
                .setMinUpdateIntervalMillis(500)
                .setMaxUpdateDelayMillis(1000)
                .build();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54437865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档