【问题标题】:Logging location address to LogCat将位置地址记录到 LogCat
【发布时间】:2013-04-23 18:50:04
【问题描述】:

我的应用程序的一部分正在尝试更新位置(在 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 中,但它似乎并没有实际显示任何内容。

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

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

【问题讨论】:

  • 首先确认一下,你得到纬度和经度了吗?
  • LogCat 也不打印这些,它在该行给出“System.Err”:addresses = GCoder.getFromLocation(latitude, longitude, 10);

标签: android eclipse location logcat


【解决方案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();
  }

}

【讨论】:

  • 新代码似乎没问题,但是我仍然无法在 LogCat 中看到任何内容。我在 onLocationChanged 函数中放置了一条日志语句,但也没有显示。我猜我的听众没有被接听?
  • PROGRESS onUpdateLocation 和我的 updateLocation() 函数至少正在输入。 LogCat 在“List
    listAddresses = geocoder.getFromLocation(latitude, longitude, 1);”这一行带回了一个“System.err”
  • 更新:我能够在输入 try catch 之前获取纬度和经度的值。它似乎没有将值纳入其中,并且如前所述,在“List
    listAddresses = geocoder.getFromLocation(latitude, longitude, 1);”这一行带来了一个“System.err”
  • 我刚刚被告知这是因为我在模拟器上运行它。稍后会告诉你它是否可以在我的实际手机上运行,​​它应该。
猜你喜欢
  • 1970-01-01
  • 2017-01-13
  • 1970-01-01
  • 2020-03-09
  • 1970-01-01
  • 2023-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多