如何在Android中修改条件部分并通过GPS自动获取位置



我想设置设备更喜欢选择通过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
    ...
}

最新更新