我正在使用 Criteria 对象来获得像这样的最佳提供者
final boolean isGpsEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
if(isGpsEnabled) {
Criteria crit = new Criteria();
crit.setAccuracy(Criteria.ACCURACY_FINE);
crit.setCostAllowed(true);
crit.setPowerRequirement(Criteria.NO_REQUIREMENT);
crit.setSpeedRequirement(false);
String provider = locationManager.getBestProvider(criteria, true);
locationManager.requestLocationUpdates(provider, 600000, 0, new myLocationListener());
}
在我的手机(Android 4.1)上,我同时启用了“使用 GPS 卫星”和“使用无线网络”选项。现在,当我在户外时,上面的代码效果很好,它给了我 GPS 位置。
但是,当我在室内时,它不会恢复为“网络”提供商。它只是不断尝试通过 GPS 获取位置,但从未得到它(我等了 1 分钟左右)
当我将 Criteria 的代码更改为使用 Criteria.ACCURACY_COARSE 时,它使用“网络”提供程序。
我如何让它首先尝试 GPS(因为它已启用),并且因为我们在室内,所以它将无法连接到卫星然后回退到使用“网络”。我不能轻易地让它工作。我再次声明,GPS 已启用,但无法访问卫星,因此希望它获取网络位置。
谢谢。