Android GPS跟踪问题

时间:2014-05-12 16:28:33

标签: java android gps

我尝试为我的Android应用获取位置,但getLastKnownLocation始终返回null并且永远不会调用onLocationChanged。我对我的应用使用以下权限:

ACCESS_NETWORK_STATE, 
ACCESS_FINE_LOCATION ACCESS_COARSE_LOCATION. 

我的设备上打开了GPS和互联网。我还为requestLocationUpdates尝试了不同的值。

        locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
        locationManager.removeUpdates(this);

        isGPSEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);

        // getting network status
        isNetworkEnabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);

        if (!isGPSEnabled && !isNetworkEnabled) 
        {
            // no network provider is enabled
        } 
        else 
        {
            hasGPS      = true;
            location    = null;
            if (isGPSEnabled) 
            {
                if (location == null) 
                {
                    locationManager.requestLocationUpdates( LocationManager.GPS_PROVIDER,
                            MIN_TIME_BW_UPDATES,
                            MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
                    if (locationManager != null) 
                    {
                        location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
                        if (location != null) 
                        {
                            lat = location.getLatitude();
                            lng = location.getLongitude();
                        }
                    }
                }
            }

            if (isNetworkEnabled && location == null) 
            {
                locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,
                        MIN_TIME_BW_UPDATES,
                        MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
                if (locationManager != null) 
                {
                    location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
                    if (location != null) 
                    {
                        lat = location.getLatitude();
                        lng = location.getLongitude();
                    }
                }
            }
        }

2 个答案:

答案 0 :(得分:0)

如果GetLastKnownLocation从未通过该提供程序获得位置或者位置太旧,则返回null。所以这并不意外。很可能你没有得到GPS信号,这可能需要几秒钟 - 几分钟(或许多建筑物完全失败)。仔细检查GPS在设置中是否已打开,并查看通知区域中的闪烁圆圈 - 如果它从未变为稳定,则表示您没有收到信号。

答案 1 :(得分:0)

GPS信号无法穿透墙壁,因此通常无法在建筑物内部工作。

出于开发和测试目的,您可以使用Android模拟位置: http://developer.android.com/training/location/location-testing.html