Android GPS 需要一段时间才能准确

Posted

技术标签:

【中文标题】Android GPS 需要一段时间才能准确【英文标题】:Android GPS takes a while to be accurate 【发布时间】:2012-01-16 16:32:32 【问题描述】:

我制作了一个 android 应用程序,通过单击按钮获取经度和纬度位置。

起初我得到最后一个已知的位置读数,为了论证,当我第一次加载应用程序/打开 gps 时,它是不准确的。

我想知道的是如何等待它准确无误,就像在 Google 地图中当您收到 toast 消息“等待位置”时一样。

如果您看到任何可以改进代码的方法,那也会很有帮助。

参考代码:

public class Clue extends Activity 

    public static double latitude;
    public static double longitude;
    Criteria criteria;
    LocationManager lm;
    LocationListener ll;
    Location location;

  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) 
      super.onCreate(savedInstanceState);
      setContentView(R.layout.questions);

      criteria = new Criteria();
      criteria.setAccuracy(Criteria.ACCURACY_FINE);
      lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
      ll = new MyLocationListener();
      lm.requestLocationUpdates(lm.getBestProvider(criteria, true), 0, 0, ll);          




private boolean weAreThere() 
    location = getLocation(); 
    longitude = location.getLongitude();
    latitude = location.getLatitude();

    return inCorrectPlace(param);


private Location getLocation() 
     lm.requestLocationUpdates(lm.getBestProvider(criteria, true), 0, 0, ll); 
      return lm.getLastKnownLocation(lm.getBestProvider(criteria, true));



    public class MyLocationListener implements LocationListener
    
        public void onLocationChanged(Location loc)
                
             Clue.longitude = loc.getLongitude();
             Clue.latitude = loc.getLatitude();
        

感谢您的阅读,我们将不胜感激。

【问题讨论】:

是否考虑过使用所有提供者而不是最好的提供者?它不必非常准确。 【参考方案1】:

如果 Location.hasAccuracy() 返回 true,您可以调用 Location.getAccuracy() 以获取以米为单位的精度,然后过滤您认为不够准确的那些。

请注意,您没有使用LocationManager.GPS_PROVIDER,因此您的修复也可以通过其他方式(如 WiFi)获得。

在获取 GPS 修复(户外)之前,通常预计 GPS 芯片会“变热”* 大约一分钟。

*我所说的热点是指有卫星覆盖。一些芯片组在一段时间后断开连接(“冷”)以保存电池。芯片冷时,首次修复时间 (TTFF) 会更长。

【讨论】:

【参考方案2】:

这里有一个很好的解释,

http://android-developers.blogspot.com/2011/06/deep-dive-into-location.html

帮助您准确了解如何实现它。

【讨论】:

【参考方案3】:

最初,你应该使用getlastknownLocation ()来修复

此外,您可以使用后台服务,使用 NETWORK.PROVIDER 更新位置...如果使用得当,不会耗尽您的电池...并且在 GPS 关闭时也可以工作

如果没有网络提供商,那么你应该尝试让用户打开 GPS。

如果你使用 2.2 试试PASSIVE PROVIDER

【讨论】:

以上是关于Android GPS 需要一段时间才能准确的主要内容,如果未能解决你的问题,请参考以下文章

需要 android 活动才能等到获得 GPS 位置

一旦 GPS 更新开始,Android GPSListener 就会收到通知

在 GPS 芯片长时间处于活动状态后,Android 设备需要重启/重启才能获取 GPS 位置

是否需要 Google Play 服务才能在 Android 手机上查找当前 gps 位置?

GPS位置在本机反应中波动

如何通过点击在 Android 中获得准确的 GPS 位置