EDITO: Perdón, acabo de volver a releer tu pregunta y esta función hace justo lo contrario. Ahora después te pongo un código que hace justo lo que quieres, que también lo tengo hecho en mi App.
Código:
Geocoder geocoder = new Geocoder(mContext);
double latitude = latlng.latitude;
double longitude = latlng.longitude;
List<Address> addresses = null;
String addressText="";
try {
addresses = geocoder.getFromLocation(latitude, longitude,1);
if(addresses != null && addresses.size() > 0 ){
Address address = addresses.get(0);
addressText = String.format("%s, %s, %s",
address.getMaxAddressLineIndex() > 0 ? address.getAddressLine(0) : "",
address.getLocality(),
address.getCountryName());
}
}
catch (IOException e) {
e.printStackTrace();
}
return addressText;
Como estás usando API V2 el punto que va a hacer el GeoCoding es un punto LatLng, te viene al pelo. Recuerda usar la función fuera del UI Thread o no te funcionará en Android 4.0+
EDITO 2: Este si es el código que hace lo que quieres
Código:
Geocoder geocoder = new Geocoder(mContext);
List<Address> addresses = null;
try {
addresses = geocoder.getFromLocationName(locationName[0], 3);
} catch (IOException e) {
e.printStackTrace();
}
return addresses;
Al igual que el anterior necesitas que se ejecute fuera del UI Thread, te devolverá un Array de como máximo 3 direcciones aproximadas (lo puedes aumentar o disminuir). Para convertir cada una de las direcciones en un punto LatLng se hace así:
Código:
for(int i=0;i<addresses.size();i++){
Address address = (Address) addresses.get(i);
LatLng latLng = new LatLng(address.getLatitude(), address.getLongitude());
}