public class MainActivity extends AppCompatActivity implements View.OnClickListener { @BindView(R.id.et_address) EditText mETAddress; @BindView(R.id.bt_search) Button mBTSearch; @BindView(R.id.tv_result) TextView mTVResult; @BindView(R.id.pb_status) ProgressBar mPBStatus; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); mBTSearch.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.bt_search: onSearchButtonClick(mETAddress.getText().toString()); break; } } private void onSearchButtonClick(String address) { mPBStatus.setVisibility(View.VISIBLE); mTVResult.setText(""); Utility.getAddressResponseModel(this, address, new IGetAddressInfo() { @Override public void onResponse(double latitude, double longitude) { mPBStatus.setVisibility(View.GONE); //mTVResult.setText("Latitude and longitude is "+latitude+", "+longitude); mTVResult.setText("Latitude and longitude is "+"17.23"+", 78.27 "); } }); }}public interface IGetAddressInfo { void onResponse(double latitude, double longitude);}public class Utility { public static ServiceOperations getService(Context ctx, String url){ return RetroHelper.getAdapter(ctx,url).create(ServiceOperations.class); } public static void getAddressResponseModel(final Context context, String address, final IGetAddressInfo getAddressInfo){ final Call<AddressResponseModel> responseModelCall = getService(context, "") .getAddressResponse(address, true, IAppConstants.API_KEY); responseModelCall.enqueue(new Callback<AddressResponseModel>() { @Override public void onResponse(Call<AddressResponseModel> call, Response<AddressResponseModel> response) { if (response.isSuccessful()) { AddressResponseModel addressResponseModel = response.body(); if (addressResponseModel != null && addressResponseModel.getResults() != null) { if (addressResponseModel.getResults().size() > 0) { double latitude = addressResponseModel.getResults().get(0).getGeometry().getLocation().getLat(); double longitude = addressResponseModel.getResults().get(0).getGeometry().getLocation().getLng(); getAddressInfo.onResponse(latitude, longitude); } else { getAddressInfo.onResponse(0, 0); } } } } @Override public void onFailure(Call<AddressResponseModel> call, Throwable t) { Toast.makeText(context, "Error "+t.getMessage(), Toast.LENGTH_SHORT).show(); getAddressInfo.onResponse(0, 0); } }); }}public class RetroHelper { public static Retrofit getAdapter(Context ctx, String serverUrl) { Gson gson = new Gson(); return new Retrofit.Builder() .baseUrl(BASE_URL + serverUrl) .addConverterFactory(GsonConverterFactory.create(gson)) .build(); }}public interface ServiceOperations { @GET("json") Call<AddressResponseModel> getAddressResponse(@Query("address") String address, @Query("sensor") boolean sensor, @Query("key") String key);}public class IAppConstants { public static String BASE_URL = "https://maps.googleapis.com/maps/api/geocode/"; public static String API_KEY = "AIzaSyDc-T8nWAUAeR4v*Yb30n3SZXriG4DHXGk";}GitHub