Carga de imágenes multiparte de Android con HttpConnectionParams en desuso en una nueva api

Estoy usando la clase MultiPartRequester para cargar imágenes de varias partes al servidor, pero descubrí que alguna parte está en desuso en esto. por ejemplo, HttpConnectionParams, getConnectionManager (), etc., ¿alguien tiene una nueva solución que no esté en desuso con un nuevo nivel de API para cargar archivos?

Estoy usando este código.

public class MultiPartRequester {
	private Map<String, String> map;
	private AsyncTaskCompleteListener mAsynclistener;
	private int serviceCode;
	private HttpClient httpclient;
	private Activity activity;
	private AsyncHttpRequest request;
	private static final String TAG = "MultiPartRequester";

	public MultiPartRequester(Activity activity, Map<String, String> map,
		int serviceCode, AsyncTaskCompleteListener asyncTaskCompleteListener) {
		this.map = map;
		this.serviceCode = serviceCode;
		this.activity = activity;
	}

	class AsyncHttpRequest extends AsyncTask<String, Void, String> {
		@Override
		protected String doInBackground(String... urls) {
			map.remove("url");
			try {
				HttpPost httppost = new HttpPost(urls[0]);
				httpclient = new DefaultHttpClient();
				HttpConnectionParams.setConnectionTimeout(
						httpclient.getParams(), 600000);
				MultipartEntityBuilder builder = MultipartEntityBuilder
						.create();
				for (String key : map.keySet()) {
					if (key.equalsIgnoreCase(AndyConstants.Params.PICTURE)) {
						File f = new File(map.get(key));
						builder.addBinaryBody(key, f,
								ContentType.MULTIPART_FORM_DATA, f.getName());
					} else {
						builder.addTextBody(key, map.get(key), ContentType
								.create("text/plain", MIME.UTF8_CHARSET));
					}
					AppLog.Log(TAG, key + "---->" + map.get(key));
				}
				httppost.setEntity(builder.build());
				ActivityManager manager = (ActivityManager) activity
						.getSystemService(Context.ACTIVITY_SERVICE);
				if (manager.getMemoryClass() < 25) {
					System.gc();
				}
				HttpResponse response = httpclient.execute(httppost);
				String responseBody = EntityUtils.toString(
						response.getEntity(), "UTF-8");
				reurn responseBody;
			} catch (Exception e) {
				e.printStackTrace();
			} catch (OutOfMemoryError oume) {
				System.gc();	
			} finally {
				if (httpclient != null)
					httpclient.getConnectionManager().shutdown();
			}
			return null;
		}

		@Override
		protected void onPostExecute(String response) {
			if (mAsynclistener != null) {
				mAsynclistener.onTaskCompleted(response, serviceCode);
			}
		}
	}
	public void cancelTask() {
		request.cancel(true);
		AppLog.Log(TAG, "task is canelled");
	}
}

Respuestas a la pregunta(4)

Su respuesta a la pregunta