2012-04-24 170 views
3

`私人无效的getLocation(){获取GPS定位精确

 String context = Context.LOCATION_SERVICE; 
     LocationManager locationManager = (LocationManager)getSystemService(context); 
     Criteria criteria = new Criteria(); 
     criteria.setAccuracy(Criteria.ACCURACY_COARSE); 
     criteria.setAltitudeRequired(false); 
     criteria.setBearingRequired(false); 
     criteria.setCostAllowed(true); 
     criteria.setPowerRequirement(Criteria.POWER_LOW); 

     String provider = locationManager.getBestProvider(criteria, true); 
     Location location = locationManager.getLastKnownLocation(provider); 
     updateWithNewLocation(location); 

     locationManager.requestLocationUpdates(provider, 2000, 5, locationListener); 

    } 

    private final LocationListener locationListener=new LocationListener() 
    { 
     public void onLocationChanged(Location location) 
     { 
      updateWithNewLocation(location); 
     } 
     public void onProviderDisabled(String provider) 
     { 
      updateWithNewLocation(null); 
     } 
     public void onProviderEnabled(String provider) 
     { 

     } 
     public void onStatusChanged(String provider,int status,Bundle extras) 
     { 

     } 
    }` 

我为获得上述地点的代码。但我的申请结果并不准确。我想确切地知道我的位置。有没有其他方法?

回答

4

准确定位取决于信号是否可用。例如。如果gps信号存在或不存在。如果GPS不存在,电话使用wifi或服务提供商跟踪,这是不准确的。因此,请尝试使用Google地图并查看您的位置,如果您使用Google地图获得更准确的位置修正,那么您在代码中缺少某些内容。

我看到的一个错误是您正在使用ACCURACY_COARSE,请尝试使用ACCURACY_FINE。如果你还没有,你也必须在清单中添加这些权限。

+0

如果我使用ACCURACY_FINE,我不能得到我的位置:( – thanhtv 2012-04-24 07:28:23

+0

是的,最有可能的地方,你正在测试它,并没有很好地捕捉到GPS信号。谷歌地图能够提供一个更好的位置在那个地方比 – 2012-04-24 23:13:41

+0

COURSE设置使用wifi或位置提供商,这可能会给你的位置更快,将使用较少的电池,因为你没有使用GPS设备,但它会更不准确,但如果你需要准确您希望使用通过FINE的GPS设备的位置。 – 2012-04-24 23:21:47