package com.duy.compass.location; import android.content.Context; import android.location.Address; import android.location.Geocoder; import android.location.Location; import android.os.AsyncTask; import com.duy.compass.location.model.LocationData; import java.util.List; import java.util.Locale; /** * Created by Duy on 10/16/2017. */ public class GetDataTask extends AsyncTask<Location, Object, LocationData> { private static final String TAG = "LoadLocationDataTask"; private LocationHelper.LocationDataChangeListener mLocationValueListener; private Context mContext; public GetDataTask(LocationHelper.LocationDataChangeListener listener, Context context) { this.mLocationValueListener = listener; this.mContext = context; } @Override protected LocationData doInBackground(Location... params) { Location location = params[0]; double longitude = location.getLongitude(); double latitude = location.getLatitude(); LocationData weatherData = new LocationData(); weatherData.setLongitude((float) longitude); weatherData.setLatitude((float) latitude); weatherData.setAltitude(location.getAltitude()); try { Geocoder geocoder = new Geocoder(mContext, Locale.getDefault()); List<Address> addresses = geocoder.getFromLocation(location.getLatitude(), location.getLongitude(), 1); if (addresses.size() > 0) { Address address = addresses.get(0); weatherData.setAddressLine(address.getAddressLine(0)); } WeatherManager.getWeatherData(location, weatherData); } catch (Exception e) { return null; } return weatherData; } @Override protected void onPostExecute(LocationData locationData) { super.onPostExecute(locationData); mLocationValueListener.onUpdateLocationData(locationData); } }