【问题标题】:How to read location only once with locationManager (GPS and NETWORK PROVIDER) and not any more looking for updates of location?如何使用 locationManager(GPS 和 NETWORK PROVIDER)只读取一次位置,而不再寻找位置更新?
【发布时间】:2011-11-02 11:00:39
【问题描述】:

如何使用 locationManager(GPS 和 NETWORK PROVIDER)只读取一次位置,而不再寻找位置更新以节省电池?

【问题讨论】:

    标签: android


    【解决方案1】:

    虽然requestSingleUpdate() 是技术上正确的答案,但您应该使用

    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 1, mLocationListener);
    

    获得第一个位置后稍等片刻。该位置往往会摇晃几秒钟。要确定修复是否稳定使用,location.getAccuracy()。一旦准确率稳定,请致电locationManager.removeUpdates(mLocationListener);

    【讨论】:

    • 您能否进一步详细说明为什么应该使用上述内容而不是requestSingleUpdate() - 有什么优势?谢谢
    • @fuzzy GPS 位置需要几秒钟才能稳定下来。第一个位置的准确性通常很差。
    • 我们怎么能等几秒钟呢?我们应该使用睡眠吗?
    • 当我实现这个方法时,我必须在它识别出位置已经改变之前实际移动。我基本上希望能够获得我当前的 GPS 坐标,而不必先移动。
    • 如果位置足够稳定,如何检查位置的准确性?
    【解决方案2】:
    public LocationManager locationManager;
    
    try { 
     locationManager.requestSingleUpdate( LocationManager.GPS_PROVIDER, new MyLocationListenerGPS(), null );  
    } catch ( SecurityException e ) { e.printStackTrace(); }
    
    public class MyLocationListenerGPS implements LocationListener {
     @Override
     public void onLocationChanged(Location location) {
     // your code and required methods go here...
    }
    

    在“requestSingleUpdate”中使用“null”可将更新检查保持在同一线程上(用于服务中)。如果您从活动中运行它,该方法允许您将其放入 Looper 中。我认为使用异步任务会是更好的方法。

    【讨论】:

    【解决方案3】:

    只需从位置管理器中删除更新。

    locationManager.removeUpdates(this);
    

    【讨论】:

      【解决方案4】:

      请阅读获取用户位置开发者指南: http://developer.android.com/guide/topics/location/obtaining-user-location.html

      This link for best Performance

      不要忘记在 Android 清单中指定 android.permission.ACCESS_FINE_LOCATION

      【讨论】:

        【解决方案5】:

        要获取位置,您可以参考此link 并搜索 requestSingleUpdate

        【讨论】:

          【解决方案6】:

          只要阅读位置更新就很容易了

          locationManager.requestLocationUpdates(provider, 400, 1, this);

          并在读取位置后调用一次

          locationManager.removeUpdates(this);

          因此系统不会在此之后要求更新位置,您可以节省电池电量。

          【讨论】:

            【解决方案7】:

            requestSingleUpdate 与您的LocationManager 一起使用。 有关更多信息,官方指南很有趣: INFO

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2014-04-03
              • 1970-01-01
              • 2016-12-10
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多