如何检查GPS是否已连接且位置是否已更新

时间:2015-03-28 13:58:24

标签: android gps android-location

GPS需要连接到GPS卫星以实时跟踪位置。 问题是,如果我调用

,有时可能会丢失连接
    locationManager.getLastKnownLocation(provider);

我得到的最后一个已知位置可能与实际位置不同。 如何在调用/使用getLastKnownLocation之前检查GPS是否已连接且位置是否已更新?

3 个答案:

答案 0 :(得分:1)

您需要为此实施 GpsStatus.Listener

例如,

public class MyActivity extends Activity implements GpsStatus.Listener
{
         ...
         ...
         ...
         // add listener into locationManager
        locationManager.addGpsStatusListener(this);

       @Override
       public void onGpsStatusChanged(int) 
       {

          switch (event) 
         {
            case GpsStatus.GPS_EVENT_SATELLITE_STATUS:
            break;
            case GpsStatus.GPS_EVENT_FIRST_FIX:   // this means you  found GPS Co-ordinates                          
            break;
            case GpsStatus.GPS_EVENT_STARTED:
            break;
            case GpsStatus.GPS_EVENT_STOPPED:
            break;
          }
       }
}

答案 1 :(得分:1)

ActivityService

上实施GpsStatus.Listener界面
public class LocationActivity extends Activity implements GpsStatus.Listener
{

   private LocationManager locationManager;

   @Override
   public void onCreate(Bundle savdedInstanceState)
       ....
       ....
       locationManager = (LocationManager)getSystemService(LOCATION_SERVICE);
       locationManager.addGpsStatusListener(this);
   }

   @Override
   public void onGpsStatusChanged(int event) 
   {

      switch (event) 
      {
        case GpsStatus.GPS_EVENT_SATELLITE_STATUS:
        break;
        case GpsStatus.GPS_EVENT_FIRST_FIX:  
        /* This is when GPS is activated; add code here for how you want the application to react. */                        
        break;
        case GpsStatus.GPS_EVENT_STARTED:
        break;
        case GpsStatus.GPS_EVENT_STOPPED:
        break;
      }
   }
}

答案 2 :(得分:1)

爵士 我也知道这也是一个很大的问题。 如果位置更新,则无法检查状态。

但是,您可以使用GpsStatus.Listener

它返回getLastKnownLocation之前的缓存数据。 最好的方法是不使用getLastKnownLocation,只需获取实时GPS位置。