请告诉我一件事
以下是请求位置更新的两种变体
Criteria mFineCriteria = new Criteria();
mFineCriteria.setAccuracy(Criteria.ACCURACY_FINE);
mFineCriteria.setHorizontalAccuracy(Criteria.ACCURACY_HIGH);
mFineCriteria.setBearingAccuracy(Criteria.ACCURACY_HIGH);
mFineCriteria.setBearingRequired(true);
如果我这样做
String provider = mLocationManager.getBestProvider(mFineCriteria, true);
mLocationManager.requestLocationUpdates(provider, 1000, 1, mLocationListener, null);
然后我的GPS启动,一切正常。 但如果我只是按照这个标准要求更新,
mLocationManager.requestLocationUpdates(1000, 1, mFineCriteria, mLocationListener, null);
然后我从融合位置提供者那里得到结果,而gps不起作用。
修改
请告诉我们,如果requestLocationUpdates是同等标准的最佳提供商,那么为什么requesLocationUpdates不使用GPS
答案 0 :(得分:1)
只是稍微查看同一个问题,this可能会为您解释:
public String LocationManager.getBestProvider (Criteria criteria, boolean enabledOnly)
在API级别1中添加 返回最符合给定条件的提供程序的名称。只返回允许被调用活动访问的提供程序。如果多个提供者符合标准,则返回具有最佳准确度的提供者。如果没有提供者符合标准,则按以下顺序放宽标准:
请注意,此过程中不会删除货币成本要求。
答案 1 :(得分:0)
我认为您可以获取有关选择了哪个提供商的信息
String provider = locationManager.getBestProvider(criteria, false);
Log.i(TAG, "AllProviders = " + locationManager.getAllProviders().toString());
Log.i(TAG, "Provider [" + provider + "] best criteria.");
显示器:
AllProviders = [passive, gps, network]
Provider [gps] best criteria.