0

我的服务中有以下代码:

    LocationManager locationManager = 
         (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    String provider = 
          locationManager.getProvider(LocationManager.GPS_PROVIDER).getName();
    Location location = locationManager.getLastKnownLocation(provider);
    while(true)
     {
       if(...)//every 5 seconds it gets into
         {
                ....//control if the location is not null
            lat = location.getLatitude();
            lon = location.getLongitude();
            alt = location.getAltitude();
            Log.i(TAG, "Latitude: "+lat+"\nLongitude: "+lon+"\nAltitude: "+alt);

         }
        else {
            Log.i(TAG, "Error!");
            }
    }

这种代码在我的模拟器中有效(GPS 被插入到Log),但在我的移动设备中,这段代码会到达else分支。有人能告诉我问题出在哪里吗?在我的代码中还是在我的移动设备中?提前致谢。

PS:GPS已开启,在其他应用程序中它可以工作。

4

1 回答 1

1

getLastKnownLocation()不会从 GPS 提供商处获取后续位置。它将返回(顾名思义)某些代码请求的最后一个已知位置。我假设您检查位置不在null条件中,这未在您的代码中显示。如果设备通过其他方式“确定”最后一个已知位置太旧或不可靠,则该位置为空。您需要请求位置更新并提供位置侦听器以重复获取位置。

有很多教程可用。是一个。其中。

于 2013-03-01T13:33:07.737 回答