【问题标题】:Android: how to singleUpdate location & can't get location after rebootAndroid:如何单更新位置&重启后无法获取位置
【发布时间】:2011-04-05 00:41:30
【问题描述】:

我正在开发应用程序,该应用程序必须获取纬度和经度。就我而言,requestLocationUpdates (String provider, long minTime, float minDistance, LocationListener listener) 不在选项中。为什么?因为我必须在用户执行需要该位置的操作时才获得位置(假设他按下按钮)。当按下按钮时,我需要准确的时间位置。在requestLocationUpdates 中,我们可以设置 minTime-如果我设置了这个让我们说在 30000 上,“按钮点击时间”的位置不会像我想要的那样好。同样的原因 minDistance 也没有我想要的那么好。如果我理解函数 requestLocationUpdates 正确 - 当 minTime 和 minDistance 设置为 0 时,位置一直在更新。如果我错了,请纠正我。应用程序适用于我正在工作的公司,该应用程序将在白天和晚上使用。所以如果应用程序会一直检查位置更新,电池通常会是空的。这就是为什么我当时需要位置,那个按钮被按下了。用户无法访问互联网和 gps。所以我必须使用NETWORK_PROVIDER

重启设备后我也遇到了定位问题。在我运行谷歌地图之前它不起作用。用户也不会使用这个,那么android上的谷歌地图在重启后使用什么功能来获取位置?

目前我使用此代码:

LocationManager mlocManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
      LocationListener mlocListener = new MyLocationListener();
      mlocManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, mlocListener);
      mlocManager.removeUpdates(mlocListener);



public class MyLocationListener implements LocationListener{
    @Override
  public void onLocationChanged(Location loc){
  latitude=loc.getLatitude();
  longitude=loc.getLongitude();
  Text = "My current location is: \n" + "Latitud = " + loc.getLatitude() + "\nLongitud = " + loc.getLongitude();
  Toast.makeText( getApplicationContext(),Text,Toast.LENGTH_SHORT).show();
  }
    @Override
  public void onProviderDisabled(String provider){}
    @Override
  public void onProviderEnabled(String provider){}
    @Override
    public void onStatusChanged(String provider, int status, Bundle extras){}
}

代码来自here

但此代码无法正常工作。如果我按下“获取位置按钮”,则会显示 Toast 并且位置正确。但是如果我按下按钮几次,它什么也不做。 - 但是 5 分钟后,吐司显示了数百次……这是为什么呢?

【问题讨论】:

  • 我测试并注意到设备需要 45s-90s 才能与网络提供商连接并获取纬度和经度。所以我解决了第二个问题......

标签: android geolocation


【解决方案1】:

您在 requestLocationUpdates 之后立即调用 removeUpdates。因此,侦听器永远不会注册。在 onLocationChanged 方法中调用 removeUpdates。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 2016-08-16
    • 1970-01-01
    • 2015-03-26
    相关资源
    最近更新 更多