Archie.bpgc Archie.bpgc -4 years ago 120
Android Question

Service not available while calling geoCoder.getFromLocation()

I know sometimes google back-end service might not be available.

Hence a solution might be to loop until i get the data.

private class getLocationDetails extends AsyncTask<String, Void, String> {

@Override
protected String doInBackground(String... params) {

Log.d("looping", "" + count + "");
count++;
double lat = Double.parseDouble(params[0]);
double lng = Double.parseDouble(params[1]);
List<Address> addresses = null;
try {

Geocoder gCoder = new Geocoder(ImageAndLocationActivity.this,
Locale.getDefault());
addresses = gCoder.getFromLocation(lat, lng, 1);
Address addr = addresses.get(0);
user_country = addr.getCountryName();
user_city = addr.getLocality();
user_district = addr.getSubAdminArea();

if (user_city == null) {

user_city = user_district;
}
} catch (Exception e) {

Log.e("Exception in getLocationDetails - ", e.getMessage());
return null;
}

return "";
}

@Override
protected void onPostExecute(String result) {

if (result != null) {

Log.d("user_city = ", "" + user_city);
} else {

new getLocationDetails().execute(CurrentLat + "", CurrentLng
+ "");
}
}

@Override
protected void onPreExecute() {

}

@Override
protected void onProgressUpdate(Void... values) {

}
}


But i am not able to get the location at all:

LogCat:

02-27 16:29:49.568: D/looping(10966): 110355
02-27 16:29:49.568: E/Exception in getLocationDetails -(10966): Service not Available
02-27 16:29:49.573: D/looping(10966): 110356
02-27 16:29:49.573: E/Exception in getLocationDetails -(10966): Service not Available
02-27 16:29:49.573: D/looping(10966): 110357
02-27 16:29:49.573: E/Exception in getLocationDetails -(10966): Service not Available


and ofcourse i have added all the needed permissions:

<uses-permission android:name="android.permission.INTERNET" />


I am trying this on Samsung Galaxy Note GT-N7000 (4.0.4 version)

Am i missing any settings? related to device or application ? Or this usually happens? If so any better solution to resolve this??

Thank You

Answer Source

The actual reason why Geocoder was not working is because the NetworkLocator was killed in action. Probably due to less memory or maybe you used the Task Manager to kill all services?

I'm not sure but this is a guess. I've seen this before. Last year I wrote a reconnect mechanism to load the NetworkLocator.apk and bind to the GeocoderService. I think this change has not merged into JellyBean so this problem persists.

It can be only solved by reboot. (The NetworkLocationService is loaded at boot)

Edit: You won't see this problem in JBP or KK, this service is moved into the playstore app .

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download