Android - 在短时间内(最多 10 秒)获取网络 GPS 位置

标签 android gps location criteria

我正在尝试通过 LocationManager 设置一个快速而肮脏的 GPS 查找,它每半秒获取一个网络位置(500 米以内),持续十秒。换句话说,我只是想找到正确的粗略条件设置和正确的逻辑,以便在我的处理程序线程中没有更好的位置 10 秒后停止检查。

我认为我的主循环应该看起来像这样:

/**
 * Iteration step time.
 */
private static final int ITERATION_TIMEOUT_STEP = 500; //half-sec intervals
public void run(){
    boolean stop = false;
    counts++;
    if(DEBUG){
        Log.d(TAG, "counts=" + counts);
    }

    //if timeout (10 secs) exceeded, stop tying
    if(counts > 20){ 
        stop = true;
    }

    //location from my listener
    if(bestLocation != null){
       //remove all network and handler callbacks
    } else {
       if(!stop){
          handler.postDelayed(this, ITERATION_TIMEOUT_STEP);
       } else {
          //remove callbacks
       }
    }
}

我想知道的是,在我获取最后一个已知位置作为我的初始最佳位置并开始我的线程后,我如何设置粗略标准以便我收到比初始位置更准确的标准(按顺序比较两者的新鲜度),这通常与我当前的位置截然不同?

最佳答案

好吧,您正在寻找的是向设备询问获取粗略位置的最佳标准。

Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_COARSE);  // Faster, no GPS fix.
String provider = locationManager.getBestProvider(criteria, true); // only retrieve enabled providers.

然后注册一个监听器就可以了

locationManager.requestLocationUpdates(provider, ITERATION_TIMEOUT_STEP, MIN_LOCATION_UPDATE_DISTANCE, listener); //listener just implements android.location.LocationListener

在监听器中你会收到这样的更新

 void onLocationChanged(Location location) {
     accuracy = location.getAccuracy(); //accuracy of the fix in meters
     timestamp = location.getTime(); //basically what you get from System.currentTimeMillis()
 }

在这一点上,我的建议是完全根据准确性进行排序,因为您不能在 10 秒内改变您的位置,但粗略的位置更新在准确性上差异很大。

希望对您有所帮助。

关于Android - 在短时间内(最多 10 秒)获取网络 GPS 位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8598910/

相关文章:

android - UI线程和其他线程的区别

python - 如何跟踪与gpsd python库连接的GPS设备的ConnectionRefusedError原因

android - 无法获取经纬度

android - 使用布局参数限制 AlertDialog 中 EditText 的宽度?

java - Observable.create() subscribeOn 和 observeOn 不工作

android - 如何检查/确认用户是否开启了GPS?

database - 我在哪里可以找到城市/社区数据库?

android如何以7位或更多位精度获取当前位置

java - 未知变量或字段 imageURL

java - GeoTools:在 map 上绘制多边形