0

我的应用程序的一部分正在尝试更新位置(在 Eclipse 中使用带有模拟器的 DDMS),然后获取要打印到 LogCat 的地址。

我的代码:

LocationManager locationManager;
String providerName = LocationManager.GPS_PROVIDER;
LocationProvider gpsProvider;

public void enable()
{
locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); //Need to ask for this system service

    Criteria criteria = new Criteria(); //Setting the criteria for the location provider
    criteria.setAccuracy(Criteria.ACCURACY_FINE);
    criteria.setPowerRequirement(Criteria.POWER_HIGH);
    criteria.setAltitudeRequired(true);
    criteria.setBearingRequired(true);
    criteria.setSpeedRequired(true);
    criteria.setCostAllowed(true);

    String provider = LocationManager.GPS_PROVIDER;
    int time = 5000; //Time in ms
    int distance = 5; //Distance in meters

    LocationListener myLocationListener = new LocationListener()
    {
        public void onLocationChanged(Location locations)
        {
            updateLocation(locations);

        }

        public void onProviderDisabled(String arg0) 
        {
            // TODO Auto-generated method stub
        }

        public void onProviderEnabled(String arg0) 
        {
            // TODO Auto-generated method stub
        }

        public void onStatusChanged(String arg0, int arg1, Bundle arg2) 
        {
            // TODO Auto-generated method stub
        }
    };

    locationManager.requestLocationUpdates(provider, time, distance, myLocationListener);

}
/////////////////////////////////////////////////////////////////////////////////

public void findLocation()
{
    gpsProvider = locationManager.getProvider(providerName);

   //String bestProvider = locationManager.getBestProvider(criteria, true);

    Location locations = locationManager.getLastKnownLocation(providerName);

    updateLocation(locations);

}

public void updateLocation(Location locations)
{
    if (locations != null)
    {
        Geocoder geocoder = new Geocoder(getApplicationContext(), Locale.getDefault());

        double latitude = locations.getLatitude();
        double longitude = locations.getLongitude();

        List<Address> addresses = null;
        Geocoder GCoder = new Geocoder(this, Locale.getDefault());
        try
        {
            addresses = GCoder.getFromLocation(latitude, longitude, 10);

            Address first = addresses.get(0);

            Log.d("ADDRESS", first.toString());
        }
        catch (IOException e) 
        {
            e.printStackTrace();
        }            
    }
} 

对我来说,这应该将值“first”打印到 LogCat 中,但它似乎实际上并没有显示任何内容。

我在清单中有所需的权限,所以这不是问题。

可以提供的任何帮助都很棒,谢谢。

4

1 回答 1

1

使用此代码

请参阅更新的代码

 LocationManager locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
 String provider = locationManager.getBestProvider(new Criteria(), true);
 Location locations = locationManager.getLastKnownLocation(provider);
 List<String>  providerList = locationManager.getAllProviders();
 if(null!=locations && null!=providerList && providerList.size()>0){                 
    double longitude = locations.getLongitude();
    double latitude = locations.getLatitude();
 Geocoder geocoder = new Geocoder(getApplicationContext(), Locale.getDefault());                 
try {
  List<Address> listAddresses = geocoder.getFromLocation(latitude, longitude, 1);
  if(null!=listAddresses&&listAddresses.size()>0){
     String _Location = listAddresses.get(0).getAddressLine(1);
  }
  } catch (IOException e) {
    e.printStackTrace();
  }

}

于 2013-04-23T19:14:24.030 回答