GPS不适用于IntentService

时间:2013-03-01 11:01:04

标签: android gps android-location

我的服务中有以下代码:

    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分支。有人能告诉我问题出在哪里?在我的代码或移动设备中?提前谢谢。

P.S。:GPS已打开,在其他应用程序中运行。

1 个答案:

答案 0 :(得分:1)

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

有很多教程可供使用。 Here是一个。他们。