public void onResult(@NonNull Status status) {
   Log.d("GEO", "Geofences onResult" + status.toString());
   if (status.isSuccess()) {
     mGoogleApiClient.disconnect();
     stopSelf();
   } else {
     String text = "Error while geofence: " + status.getStatusMessage();
     Log.e("GEO", text);
     Toast.makeText(GeofencingService.this, text, Toast.LENGTH_SHORT).show();
   }
 }
  private ArrayList<PlaceAutocomplete> getAutocomplete(CharSequence constraint) {
    if (mGoogleApiClient.isConnected()) {
      Log.i(TAG, "Starting autocomplete query for: " + constraint);

      // Submit the query to the autocomplete API and retrieve a PendingResult that will
      // contain the results when the query completes.
      PendingResult<AutocompletePredictionBuffer> results =
          Places.GeoDataApi.getAutocompletePredictions(
              mGoogleApiClient, constraint.toString(), null, mPlaceFilter);

      // This method should have been called off the main UI thread. Block and wait for at most 60s
      // for a result from the API.
      AutocompletePredictionBuffer autocompletePredictions = results.await(60, TimeUnit.SECONDS);

      // Confirm that the query completed successfully, otherwise return null
      final Status status = autocompletePredictions.getStatus();
      if (!status.isSuccess()) {
        Toast.makeText(
                getContext(),
                "Error contacting Google Places: " + status.toString(),
                Toast.LENGTH_SHORT)
            .show();
        Log.e(
            TAG,
            "Error getting autocomplete prediction API call: "
                + status.getStatusMessage()
                + status.getStatus().getStatusMessage());
        autocompletePredictions.release();
        return null;
      }

      Log.i(
          TAG, "Query completed. Received " + autocompletePredictions.getCount() + " predictions.");

      // Copy the results into our own data structure, because we can't hold onto the buffer.
      // AutocompletePrediction objects encapsulate the API response (place ID and description).

      Iterator<AutocompletePrediction> iterator = autocompletePredictions.iterator();
      ArrayList resultList = new ArrayList<>(autocompletePredictions.getCount());
      while (iterator.hasNext()) {
        AutocompletePrediction prediction = iterator.next();
        // Get the details of this prediction and copy it into a new PlaceAutocomplete object.
        resultList.add(new PlaceAutocomplete(prediction.getPlaceId(), prediction.getDescription()));
      }

      // Release the buffer now that all data has been copied.
      autocompletePredictions.release();

      return resultList;
    }
    Log.e(TAG, "Google API client is not connected for autocomplete query.");
    return null;
  }