GeoDataApi.getAutocompletePredictions não está funcionando

Estou criando um aplicativo para Android que mostra o recurso de preenchimento automático e busca previsões de preenchimento automático no google maps usando - GeoDataApi.getAutocompletePredictions. Eu segui este tutorial -https://github.com/googlesamples/android-play-places/blob/master/PlaceComplete/Application/src/main/java/com/example/google/playservices/placecomplete/PlaceAutocompleteAdapter.java

Mas de alguma forma isso não está funcionando bem para mim.

Minha turma é essa -

public class GooglePlacesAutoCompleteAdapter extends ArrayAdapter implements Filterable {

    private ArrayList<PlaceAutocomplete> mResultList;
    GoogleApiClient mGoogleApiClient;
    private LatLngBounds mBounds;
    private AutocompleteFilter mPlaceFilter;
    int radius = 500;

    public GooglePlacesAutoCompleteAdapter(Context context, int textViewResourceId, GoogleApiClient googleApiClient,
                                           Location lastLocation, AutocompleteFilter filter) {
        super(context, textViewResourceId);
        LatLng currentLatLng = new LatLng(lastLocation.getLatitude(), lastLocation.getLongitude());
        mBounds = Utility.boundsWithCenterAndLatLngDistance(currentLatLng, 500, 500);
        mGoogleApiClient = googleApiClient;
        mPlaceFilter = filter;
    }

    @Override
    public int getCount() {
        return mResultList.size();
    }

    @Override
    public PlaceAutocomplete getItem(int index) {
        return mResultList.get(index);
    }

    @Override
    public android.widget.Filter getFilter() {
        Filter filter = new Filter() {
            @Override
            public FilterResults performFiltering(CharSequence constraint) {
                FilterResults filterResults = new FilterResults();
                if (constraint != null && constraint.length() > 3 && constraint.length()%3 == 1) {
                    // Retrieve the autocomplete results.
                    mResultList = autocomplete(constraint.toString());

                    // Assign the data to the FilterResults
                    filterResults.values = mResultList;
                    filterResults.count = mResultList.size();
                }
                return filterResults;
            }

            @Override
            public void publishResults(CharSequence constraint, FilterResults results) {
                if (results != null && results.count > 0) {
                    notifyDataSetChanged();
                } else {
                    notifyDataSetInvalidated();
                }
            }
        };
        return filter;
    }


    public ArrayList<PlaceAutocomplete> autocomplete(String input) {

        if (mGoogleApiClient.isConnected()) {

            // Submit the query to the autocomplete API and retrieve a PendingResult that will
            // contain the results when the query completes.
            PendingResult results = Places.GeoDataApi.getAutocompletePredictions(mGoogleApiClient, input.toString(),
                    mBounds, 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 = (AutocompletePredictionBuffer)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 API: " + status.toString(),Toast.LENGTH_SHORT).show();
                //Log.e(TAG, "Error getting autocomplete prediction API call: " + status.toString());
                autocompletePredictions.release();
                return null;
            }

            // 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;

    }

    class PlaceAutocomplete {
        public CharSequence placeId;
        public CharSequence description;

        PlaceAutocomplete(CharSequence placeId, CharSequence description) {
            this.placeId = placeId;
            this.description = description;
        }

        @Override
        public String toString() {
            return description.toString();
        }
    }
}

A linha na qual GeoDataApi.getAutocompletePredictions é chamada, entra em uma classe interna chamada - Filter.java, Log.java, handler.java e Looper.java e, em seguida, Looper.java e faz um loop indefinidamente na linha 121 de Looper.java (tenho certeza que o studio sdk irá mostrar o código para Looper.java).

Não está nem lançando um erro, ou indo para a próxima linha, simplesmente não funciona. Além disso, não consigo ver o rastreamento da pilha de um erro.

Este é o trecho de código que está chamando isso -

if (mLastLocation != null) {
           GooglePlacesAutoCompleteAdapter placesAdapter = new GooglePlacesAutoCompleteAdapter(this, R.layout.item_list, mGoogleApiClient, mLastLocation, null);
            autoCompView.setAdapter(placesAdapter);
            autoCompView.setOnItemClickListener(this);
        }

Alguém pode me dizer o que estou fazendo de errado aqui? Por favor, qualquer ajuda será muito apreciada. Eu preciso fazer isso funcionar o mais rápido possível.

PS - Estou passando o mPlaceFilter como nulo aqui.

questionAnswers(0)

yourAnswerToTheQuestion