【问题标题】:android getLastKnownLocation() return always return nullandroid getLastKnownLocation() 返回总是返回 null
【发布时间】:2014-02-19 16:03:41
【问题描述】:

我正在创建一个仅在用户单击按钮时检查位置的应用。

这是我的代码,当我调用 getLastKnownLocation 时它返回 null,即使在我调用 requestLocationUpdates 之后也是如此:

public void main(String[] args, int iteration, Context context){
    Criteria criteria = new Criteria();
    LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);

    LocationListener loc_listener = new LocationListener() {
        public void onLocationChanged(Location l) {
        }
        public void onProviderEnabled(String p) {}
        public void onProviderDisabled(String p) {}
        public void onStatusChanged(String p, int status, Bundle extras) {}

        };

    String bestProvider = locationManager.getBestProvider(criteria, false);
    locationManager.requestLocationUpdates(bestProvider, 0, 0, loc_listener);
    Location location = locationManager.getLastKnownLocation(bestProvider);
    location = locationManager.getLastKnownLocation(bestProvider);
    double lat;
    double lon;
    try {
        lat = location.getLatitude();
        lon = location.getLongitude();

    } catch (NullPointerException e) {
        lat = -1.0;
        lon = -1.0;

    }
    Log.i("results:",  String.valueOf(lat) + " " + String.valueOf(lon) + " 10NN");}}

设备上的定位服务已启用。 非常感谢!

【问题讨论】:

  • LastKnownLocation 返回最后一个已知修复。所以它有可能是空的。试试看这里stackoverflow.com/questions/7423624/…
  • 我尝试请求LocationUpdates,但它实际上并没有为我更新最后一个已知位置。
  • 找到解决办法了吗

标签: java android geolocation google-play-services


【解决方案1】:

getLastKnownLocation 将返回 null,直到触发回调 onLocationChanged()。即使天空清晰可见,GPS 也可能需要几分钟时间。如果你在室内,它可能永远不会运行。您必须等待它运行。

【讨论】:

  • 我的谷歌地图会立即获取我的位置。它是怎么做到的?我还尝试使用 requestLocationUpdates 来获取位置更新。但它似乎没有用。
【解决方案2】:

请试试这个

  mGoogleMap.setOnMyLocationButtonClickListener(new OnMyLocationButtonClickListener() {

                    @Override
                    public boolean onMyLocationButtonClick()
                        {

                            Location myLocation = mGoogleMap.getMyLocation();
                            onLocationChanged(myLocation);
                            return false;
                        }
                });

【讨论】:

    猜你喜欢
    • 2012-05-28
    • 1970-01-01
    • 2013-11-06
    • 2013-12-24
    • 1970-01-01
    • 2015-08-20
    相关资源
    最近更新 更多