相关疑难解决方法(0)

在Android上获取用户当前位置的最简单,最强大的方法是什么?

LocationManagerAndroid上的API似乎对于仅需要偶尔粗略估计用户位置的应用程序来说有点痛苦.

我正在处理的应用程序本身并不是一个位置应用程序,但它确实需要获取用户的位置才能显示附近的商家列表.它不需要担心用户是否在移动或类似的东西.

这是我想做的事情:

  1. 向用户显示附近位置的列表.
  2. 预加载用户的位置,以便在ActivityX中需要它时,它将可用.
  3. 我并不特别关心更新的准确性或频率.只要没有办法,抓住一个位置就足够了.也许如果我想要花哨,我会每隔几分钟更新一次位置,但这不是一个重要的优先事项.
  4. 只要有GPS或网络位置提供商,就可以使用任何设备.

看起来它应该不那么难,但在我看来,我必须启动两个不同的位置提供商(GPS和NETWORK)并管理每个生命周期.不仅如此,我还必须在多个活动中复制相同的代码以满足#2.我曾尝试过使用getBestProvider()过去将解决方案缩减为只使用一个位置提供商,但这似乎只能为您提供最好的"理论"提供商,而不是实际上会给您带来最佳结果的提供商.

有没有更简单的方法来实现这一目标?

android location geolocation latitude-longitude

788
推荐指数
12
解决办法
31万
查看次数

LocationCallback没有被调用

我正在使用FusedLocationProviderClient进行位置请求.我保留了一个计时器30秒,以检查在该时间范围内是否收到位置.代码如下:

 public void requestLocationUpdates() {
    initializeLocationRequest();
    mFusedLocationProviderClient.requestLocationUpdates(mLocationRequest, mLocationCallback, null);
    startTimer();
}

 private void initializeLocationRequest() {
    mFusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(mContext);
    mLocationRequest = new LocationRequest();
    mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
    mLocationRequest.setInterval(5000);
    mLocationRequest.setFastestInterval(5000);

    mLocationCallback = new LocationCallback() {

        @Override
        public void onLocationResult(LocationResult locationResult) {
            synchronized (SilentCurrentLocationProvider.this) {
                super.onLocationResult(locationResult);
                Location location = locationResult.getLastLocation();
        }
    };
}

  private void startTimer() {
    if (mTimeout < 1) {
        mTimeout = mDefaultTimeout;
    }
    mTimer = new Timer();   
    mTimer.schedule(new LocationTimer(), mTimeout * 1000);
}
Run Code Online (Sandbox Code Playgroud)

在少数设备上,位置不会到来.在进一步调试时,我发现正在创建LocationRequestLocationCallback,但它没有进入onLocationResult()方法.

由于这是实时产品的一部分,因此很难在每台设备上进行调试.即使我尝试重新启动手机,但它无法正常工作.用户尝试了其他应用程序,如Ola和位置即将到来. …

android google-location-services fusedlocationproviderclient

15
推荐指数
2
解决办法
2174
查看次数

LocationAvailability无可用位置

Google FusedLocationProviderApifor Android最近在过去几个月内被弃用,FusedLocationProviderClient作为其继任者,因此我最近更新了客户端应用中使用的位置API以使用新的API.

每次onLocationAvailability被触发时LocationCallback我都会在locationAvailability.isLocationAvailable()返回时通知用户false,但看起来这种情况比我在某些设备上预期的更频繁.我在前台内运行这些位置更新Service,这些位置更新保持一致至关重要.有没有办法确定这种失败的原因

  1. 我们不会向最终用户表明任何误报
  2. 我们可以尝试解决问题,或者至少向最终用户报告他们应该做些什么?

在我看来,被弃用的API提供了对这些问题的更多洞察,因为它与它一起使用GoogleApiClient或者我可能缺少一些较小的细节.

android google-api

7
推荐指数
2
解决办法
1579
查看次数