【发布时间】:2014-04-14 19:43:56
【问题描述】:
请告诉我一件事
这里有两种请求位置更新的变体
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 不起作用。
编辑
请说明,如果 requesLocationUpdates 是相同标准的最佳可用提供商,为什么它不使用 GPS
【问题讨论】:
-
我没看懂问题,你想知道融合位置提供者和旧位置API的区别吗?
-
那你怎么知道它没有使用 GPS?
-
1) LocationListener 回调中的每个位置都有一个提供者——我记录了它。 2) 导航栏中的地理定位图标(从 KitKat 开始)
-
是的,但是融合的位置并没有说明正在使用哪个提供商,所以你怎么知道它没有使用 GPS。如果您只想更新 GPS 位置,则只需设置 GPS。如果您想要所有内容,请使用融合位置 API
-
好吧,我会重申我的问题。为什么订阅一个标准会导致使用 FUSED,而订阅一个具有相同标准的最佳提供商会导致 GPS?