【问题标题】:How to check if GPS is connected and the position updated如何检查 GPS 是否已连接并更新位置
【发布时间】:2015-03-28 13:58:23
【问题描述】:

GPS 需要连接到 GPS 卫星才能实时跟踪位置。 问题是有时它可能会失去连接,如果我调用

    locationManager.getLastKnownLocation(provider);

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

【问题讨论】:

    标签: android gps android-location


    【解决方案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】:

      您需要为此实现 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;
                }
             }
      }
      

      【讨论】:

        【解决方案3】:

        先生, 我也知道这也是一个很大的问题。 位置是否更新,无法检查状态。

        但是,您可以使用GpsStatus.Listener

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-08-05
          • 2015-06-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-12-05
          相关资源
          最近更新 更多