我想问一下gps提供商的标准
看看我的代码:
private void initLocationManager() {
locManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
String bestProvider;
locListener = new LocationListener() {
@Override
public void onLocationChanged(Location newLocation) {
tampilkanPosisikeMap(newLocation);
}
public void onProviderDisabled(String arg0) {
Functions.MakeToast(getApplicationContext(), "GPS tidak tersedia");
}
public void onProviderEnabled(String arg0) {
Functions.MakeToast(getApplicationContext(), "GPS tersedia");
}
public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
}
};
// look here
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setCostAllowed(true);
criteria.setPowerRequirement(Criteria.POWER_LOW);
bestProvider = locManager.getBestProvider(criteria, true);
locManager.getLastKnownLocation(bestProvider);
locManager.requestLocationUpdates(bestProvider, 5000, 1, locListener);
}
查看标准部分,
它是这样的吗?
如果不符合获取GPS_PROVIDER的标准, 然后它将选择NETWORK_PROVIDER作为提供者
是正确还是错?
感谢 抱歉我的英语不好:(
答案 0 :(得分:0)
确实应该那样工作。似乎是正确的。
我已经经历过,如果没有已知的最后已知位置,则可能认为“getLastKnonwLocation()”将返回null。但是,既然你不是以任何价值存储它 - 为什么不从你的代码中删除它?你不需要它......
答案 1 :(得分:0)
我只是删除了这一行
criteria.setAccuracy(Criteria.ACCURACY_FINE);
所以它会从任何准确度中获得价值(来自网络和gps提供商) 当我测试它时,它总是从network_provider获得值
也许如果设备锁定了gps卫星位置,它将从gps_provider获取值