Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient, this); Tries to cast as com.google.android.gms.location.LocationListener)

I have set up a Location based map on Android however when I try and call: LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient, this);

Android studio tries to have me cast it as

LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient, (com.google.android.gms.location.LocationListener) this);

This however causes the app to crash when it is called.

I have the following Location code for my app:

import android.content.IntentSender;
import android.location.Location;
import android.location.LocationListener;
import android.support.v4.app.FragmentActivity;
import android.os.Bundle;
import android.util.Log;

import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.location.LocationRequest;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import com.google.android.gms.location.LocationServices;

import java.util.List;

import model.SiteModel;
import model.SqlHelper;

public class FindNearestLocationMap extends FragmentActivity implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener, LocationListener {

    private GoogleMap mMap; // Might be null if Google Play services APK is not available.

    private GoogleApiClient mGoogleApiClient;

    public static final String TAG = FindNearestLocationMap.class.getSimpleName();

    private final static int CONNECTION_FAILURE_RESOLUTION_REQUEST = 9000;

    private LocationRequest mLocationRequest;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_find_nearest_location_map);

        mGoogleApiClient = new GoogleApiClient.Builder(this)
                .addConnectionCallbacks(this)
                .addOnConnectionFailedListener(this)
                .addApi(LocationServices.API)
                .build();

        mLocationRequest = LocationRequest.create()
                .setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)
                .setInterval(10 * 1000)        // 10 seconds, in milliseconds
                .setFastestInterval(1 * 1000); // 1 second, in milliseconds

        setUpMapIfNeeded();
    }

    @Override
    protected void onResume() {
        super.onResume();
        setUpMapIfNeeded();
        mGoogleApiClient.connect();
    }

    @Override
    protected void onPause() { //////ERROR IS HERE////////
        super.onPause();
        if (mGoogleApiClient.isConnected()) {
            LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient, (com.google.android.gms.location.LocationListener) this);
            mGoogleApiClient.disconnect();
        }
    }
....

I have all the implemented methods that the Classes require and I'm able to run the program. It only breaks when onPause is called any ideas on what I should do?

Thank you.

like image 886
Dfranc3373 Avatar asked Feb 13 '15 20:02

Dfranc3373


1 Answers

You're using the wrong import for LocationListener. You have:

import android.location.LocationListener;

which is the legacy LocationListener and not the Fused Location Provider's listener:

import com.google.android.gms.location.LocationListener;
like image 78
ianhanniballake Avatar answered Oct 24 '22 21:10

ianhanniballake