title: Check if geo location(lat,lon) inside a circular geo fence
body: <p>I have a saved geo location(latitude,longitude).when a user presses a action button in app, the current location is recorded.</p>
  
  <blockquote>
    <p>I want to check if the current latitude,longitude(which I have) falls
    in a circular geofence (who's center geo point I have ).</p>
  </blockquote>
  
  <p>I don't want to create a geofence on Google map. I just want to check if a geolocation falls in a geofence.</p>
  
  <p>The <strong>code</strong> I use to get current geolocation when the accuracy  is less than 20 :</p>
  
  <pre><code>public class CreatePlaceActivity extends Fragment implements
          OnClickListener,
          GoogleApiClient.ConnectionCallbacks,
          GoogleApiClient.OnConnectionFailedListener, LocationListener {
      private Button cancelBtn, submitBtn;
  
      public boolean geoLocationCheck = false;
      private String TAG = "CreatePlaceActivity";
  
      public CreatePlaceActivity() {
      }
  
      @Override
      public View onCreateView(LayoutInflater inflater, ViewGroup container,
              Bundle savedInstanceState) {
  
          View rootView = inflater.inflate(R.layout.create_place_screen,
                  container, false);
          submitBtn = (Button) rootView.findViewById(R.id.submit_btn_id);
          submitBtn.setTypeface(typeface);
          submitBtn.setOnClickListener(this);
          cancelBtn = (Button) rootView.findViewById(R.id.cancel_btn_id);
          cancelBtn.setOnClickListener(this);
  
          setlocationClient();
          return rootView;
      }
  
      private void setlocationClient() {
          int resp = GooglePlayServicesUtil
                  .isGooglePlayServicesAvailable(getActivity());
          if (resp == ConnectionResult.SUCCESS) {
  
              locationclient = new GoogleApiClient.Builder(getActivity())
                      .addApi(LocationServices.API).addConnectionCallbacks(this)
                      .addOnConnectionFailedListener(this)
                      .build();
              locationclient.connect();
          } else {
              GooglePalyErrorDialogIsShowing = true;
  
              Toast.makeText(getActivity(),// CreatePlaceActivity.this,
                      "Google Play Service Error " + resp, Toast.LENGTH_LONG)
                      .show();
  
              if (alert == null) {
                  onLocationChangedbuilder = new AlertDialog.Builder(
                          getActivity(), AlertDialog.THEME_DEVICE_DEFAULT_LIGHT);
              } else if (alert.isShowing()) {
                  alert.dismiss();
  
                  onLocationChangedbuilder = new AlertDialog.Builder(
                          getActivity(), AlertDialog.THEME_DEVICE_DEFAULT_LIGHT);
  
              }
              onLocationChangedbuilder
                      .setTitle("Alert!")
                      .setMessage("Google Play Service Error " + resp)
                      .setPositiveButton("OK",
                              new DialogInterface.OnClickListener() {
  
                                  @Override
                                  public void onClick(DialogInterface dialog,
                                          int which) {
  
                                      locationLockDialogIsShowing = false;
                                      GooglePalyErrorDialogIsShowing = false;
  
                                      ((MenuActivity) getActivity())
                                              .removeFragment(CreatePlaceActivity.this);
  
                                  }
                              });
  
              alert = onLocationChangedbuilder.create();
              alert.setCancelable(false);
              try {
                  alert.show();
              } catch (Exception e) {
  
              }
  
          }
  
      }
  
      @Override
      public void onClick(View v) {
          switch (v.getId()) {
          case R.id.submit_btn_id:
              Log.i(TAG, "lat=" + currentGeoLocation.getLatitude() + "lon="
                      + currentGeoLocation.getLongitude() + "acc="
                      + currentGeoLocation.getAccuracy() + "alt="
                      + currentGeoLocation.getAltitude());
              validatePlace();
  
              break;
          case R.id.cancel_btn_id:
              // finish();
              ((MenuActivity) getActivity())
                      .removeFragment(CreatePlaceActivity.this);
  
              break;
  
          default:
              break;
          }
      }
  
  
      @Override
      public void onLocationChanged(Location location) {
  
          float accuracy = 50;
  
          // DateTime dt1 = new DateTime();
          // DateTimeFormatter fmt1 = ISODateTimeFormat.dateTime();
  
          Time time = new Time();
          time.setToNow();
          String strdt = String.valueOf(time.toMillis(false));
  
          if (location != null) {
  
              accuracy = location.getAccuracy();
  
              locationLockDialogIsShowing = true;
  
              if (globalAccuracy - location.getAccuracy() &gt;= 20
                      || globalAccuracy - location.getAccuracy() &gt;= -20) {
  
                  globalAccuracy = location.getAccuracy();
              }
          }
  
  
  
          if (alert == null) {
              onLocationChangedbuilder = new AlertDialog.Builder(getActivity(),
                      AlertDialog.THEME_DEVICE_DEFAULT_LIGHT);
          } else if (alert.isShowing()) {
              alert.dismiss();
  
              onLocationChangedbuilder = new AlertDialog.Builder(getActivity(),
                      AlertDialog.THEME_DEVICE_DEFAULT_LIGHT);
  
          }
          final float accr = accuracy;
          onLocationChangedbuilder
                  .setTitle("Alert!")
                  .setMessage(
                          "Getting the best possible location..Please wait.\nCurrent Accuracy is "
                                  + accuracy)
                  .setPositiveButton("Cancel",
                          new DialogInterface.OnClickListener() {
  
                              @Override
                              public void onClick(DialogInterface dialog,
                                      int which) {
                                  // TODO Auto-generated method stub
  
                                  locationLockDialogIsShowing = false;
  
                                  if (locationclient != null) {
  
                                      locationclient.disconnect();
                                  }
  
                                  Time time = new Time();
                                  time.setToNow();
                                  String strdt = String.valueOf(time
                                          .toMillis(false));
  
  
  
                                  if (alert == null) {
  
                                  } else if (alert.isShowing()) {
                                      alert.dismiss();
                                  }
                                  if (locationLockAlert == null) {
  
                                  } else if (locationLockAlert.isShowing()) {
                                      locationLockAlert.dismiss();
                                  }
                                  // setResult(RESULT_OK);
                                  // finish();
                                  ((MenuActivity) getActivity())
                                          .removeFragment(CreatePlaceActivity.this);
                              }
                          });
  
          alert = onLocationChangedbuilder.create();
          alert.setCancelable(false);
          try {
              alert.show();
          } catch (Exception e) {
  
          }
          if (location.getAccuracy() &lt;= 16) {
  
              DateTime dt = new DateTime();
              DateTimeFormatter fmt = ISODateTimeFormat.dateTime();
              String str1 = fmt.print(dt);
  
              locationLockDialogIsShowing = false;
  
              Time timeNow = new Time();
              timeNow.setToNow();
  
              String str = String.valueOf(timeNow.toMillis(false));
  
              // locationLockTimestamp = str1;
              // TODO
              currentGeoLocation = location;
  
              if (locationclient != null) {
                  if (locationclient.isConnected()) {
  
                      LocationServices.FusedLocationApi.removeLocationUpdates(
                              locationclient, this);
                      locationclient.disconnect();
                  }
              }
  
              if (alert.isShowing()) {
                  alert.dismiss();
              }
              if (locationLockAlert != null) {
  
                  if (locationLockAlert.isShowing()) {
                      locationLockAlert.dismiss();
                  }
              }
              showDialog("Alert!",
                      "GPS Location locked.. You can now continue to create place");
  
          }
  
  
      }
  
      @Override
      public void onConnectionFailed(ConnectionResult result) {
          // TODO Auto-generated method stub
  
      }
  
      @Override
      public void onConnected(Bundle connectionHint) {
          // TODO Auto-generated method stub
  
          final float accuracy = 250;
  
          if (locationclient != null &amp;&amp; locationclient.isConnected()) {
  
              if (geoLocationCheck == false) {
  
                  locationrequest = LocationRequest.create();
                  locationrequest
                          .setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
  
                  locationrequest.setInterval(100);
                  // locationclient.requestLocationUpdates(locationrequest, this);
                  LocationServices.FusedLocationApi.requestLocationUpdates(
                          locationclient, locationrequest, this); 
  
                  locationLockDialogIsShowing = true;
  
                  if (alert == null) {
                      onLocationChangedbuilder = new AlertDialog.Builder(
                              getActivity(),
                              AlertDialog.THEME_DEVICE_DEFAULT_LIGHT);
                  } else if (alert.isShowing()) {
                      alert.dismiss();
  
                      onLocationChangedbuilder = new AlertDialog.Builder(
                              getActivity(),
                              AlertDialog.THEME_DEVICE_DEFAULT_LIGHT);
  
                  }
                  onLocationChangedbuilder
                          .setTitle("Alert!")
                          .setMessage(
                                  "Getting the best possible location..Please wait.\nCurrent Accuracy is "
                                          + accuracy)
                          .setPositiveButton("Cancel",
                                  new DialogInterface.OnClickListener() {
  
                                      @Override
                                      public void onClick(DialogInterface dialog,
                                              int which) {
                                          // TODO Auto-generated method stub
  
                                          locationLockDialogIsShowing = false;
  
                                          if (locationclient != null) {
                                              locationclient.disconnect();
                                          }
  
                                          Time time = new Time();
                                          time.setToNow();
                                          String strdt = String.valueOf(time
                                                  .toMillis(false));
  
  
                                          if (alert == null) {
                                          } else if (alert.isShowing()) {
                                              alert.dismiss();
                                          }
                                          if (locationLockAlert == null) {
  
                                          } else if (locationLockAlert
                                                  .isShowing()) {
                                              locationLockAlert.dismiss();
                                          }
                                          // setResult(RESULT_OK);
                                          // finish();
                                          ((MenuActivity) getActivity())
                                                  .removeFragment(CreatePlaceActivity.this);
                                      }
                                  });
  
                  alert = onLocationChangedbuilder.create();
                  alert.setCancelable(false);
                  try {
                      alert.show();
                  } catch (Exception e) {
  
                  }
  
              }
          }
  
      }
  
  
      @Override
      public void onConnectionSuspended(int arg0) {
          Log.i("fused", "loc client onConnectionSuspended");
      }
  
      public Dialog showDialog(String title, String msg) {
  
          locationLockAlert = new AlertDialog.Builder(getActivity(),
                  AlertDialog.THEME_DEVICE_DEFAULT_LIGHT).create();
          locationLockAlert.setTitle(title);
          locationLockAlert.setMessage(msg);
          locationLockAlert.setButton("OK",
                  new DialogInterface.OnClickListener() {
                      public void onClick(DialogInterface dialog, int which) {
                          locationLockAlert.dismiss();
  
                      }
                  });
          try {
              locationLockAlert.show();
          } catch (Exception e) {
  
          }
          return locationLockAlert;
  
      }
  
      @Override
      public void onNothingSelected(AdapterView&lt;?&gt; parent) {
          // TODO Auto-generated method stub
  
      }
  }
  </code></pre>
  
  <p>Link I have referred is <a href="https://stackoverflow.com/questions/18486284/android-geofencing-polygon">Android Geofencing (Polygon)</a></p>
  
  <p>Thanks!</p>