我有此代码可以获取最佳的提供商

lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

locationListener = new MyLocationListener();
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
String provider = lm.getBestProvider(criteria, true);
Location mostRecentLocation = lm.getLastKnownLocation(provider);
if(mostRecentLocation != null) {
    latid=mostRecentLocation.getLatitude();
    longid=mostRecentLocation.getLongitude();
}
lm.requestLocationUpdates(provider, 1, 0, locationListener);

然后听众

private class MyLocationListener implements LocationListener {

@Override
public void onLocationChanged(Location loc) {
  if (loc != null) {
    latid = loc.getLatitude();
    longid = loc.getLongitude();
    // if(loc.hasAccuracy()==true){
    accuracyd = loc.getAccuracy();
    String providershown = loc.getProvider();    
    accuracy.setText("Location Acquired. Accuracy:"
      + Double.toString(accuracyd) + "m\nProvider: "+providershown);
    accuracy.setBackgroundColor(Color.GREEN);
    // }
    userinfo=usernamevalue+"&"+Double.toString(latid)+"&"+Double.toString(longid);
    submituserlocation(userinfo);
   }
}

当我将其测试到设备(HTC魔术)时,我发现当禁用GPS时,它立即从网络上锁定。当我启用GPS时,它不会从网络中获取任何数据并等到它从GPS锁定为止。
我想锁定像Google地图一样锁定位置,直到他们拥有良好的GPS信号,他们使用网络来确定我的位置。
尽管最好的标准会做到这一点,但是他们要做的就是挑选一个提供商。
我的代码有问题,还是我必须执行线程和超时等才能实现它?

有帮助吗?

解决方案

也许您可以尝试在一定时间内聆听网络提供商和GPS提供商,然后检查两者的结果。如果您没有GPS的结果,请改用网络结果。我就是这样做的。

其他提示

也许你可以使用 getBestProvider (Criteria criteria, boolean enabledOnly)LocationManager 标准如 另一个线程。看到 官方文件.

希望能帮助到你

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top