【问题标题】:How to continuously fetch location of user in android?如何在android中不断获取用户的位置?
【发布时间】:2015-10-12 16:51:20
【问题描述】:

我想获取用户的当前位置(纬度,经度对),并仅在用户距离先前获取的位置 100 公里远时将其发送到服务器。如果有的话,最好的方法是什么?

我的目的是在获取位置时尽可能少地使用用户资源。

【问题讨论】:

    标签: android android-location


    【解决方案1】:

    有一个接口叫LocationListener:

    http://developer.android.com/reference/android/location/LocationListener.html

    您可以像这样使用 LocationManager:

    public void startLocationUpdates() {
        Criteria criteria = new Criteria();
        String bestProvider = locationManager.getBestProvider(criteria, false);
        locationManager.requestLocationUpdates(bestProvider, 60000, 10, new LocationListener() {
    
            @Override
            public void onStatusChanged(String provider, int status, Bundle extras) {}
    
            @Override
            public void onProviderEnabled(String provider) {}
    
            @Override
            public void onProviderDisabled(String provider) {}
    
            @Override
            public void onLocationChanged(Location location) {
                System.out.println("LOCATION CHANGED: "+location);
            }
        });
    }
    
    public void stopLocationUpdates() {
        locationManager.removeUpdates(this);
    }
    

    10 是最小距离,本例中的 60000 是请求之间的最短时间。

    【讨论】:

    • 它会永远继续工作吗? (除非用户强制停止应用)?
    • 是的,除非位置提供商(GPS 或 WIFI 等)停止工作。但是您可以在提供该信息的 onStatusChanged 方法中注意这一点。
    • 那么我应该在onProviderEnabled 中调用startLocationUpdates 以使其永远工作吗?
    猜你喜欢
    • 2023-01-06
    • 2017-01-12
    • 2012-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多