我想设置设备更喜欢选择通过GPS而不是网络提供商获取位置,但设备仍然始终使用网络提供商来获取位置。如何修改条件部分并通过GPS自动获取位置?
我使用的标准:
public void getLocationProvider()
{
try
{
Criteria mCriteria01 = new Criteria();
mCriteria01.setAccuracy(Criteria.ACCURACY_FINE);
mCriteria01.setAltitudeRequired(false);
mCriteria01.setBearingRequired(false);
mCriteria01.setCostAllowed(true);
mCriteria01.setPowerRequirement(Criteria.POWER_LOW);
strLocationProvider =
mLocationManager01.getBestProvider(mCriteria01, true);
mLocation01 = mLocationManager01.getLastKnownLocation
(strLocationProvider);
}
catch(Exception e)
{
mTextView01.setText(e.toString());
e.printStackTrace();
}
}
您可以使用条件返回所有匹配的提供程序,遍历它们以查找基于 GPS 的兼容服务,并使用您找到的服务,而不是使用条件来getBestProvider()
并希望它将是基于 GPS 的服务:
首先,获取符合您条件的所有匹配提供程序:
List<String> allMatchingProviders =
mLocationManager01.getProviders(mCriteria01, true);
然后循环访问列表并测试每个提供商的卫星服务:
foreach provider (allMatchingProviders)
{
...
if( provider->requiresSatellite() == true )
strLocationProvider = provider
...
}