Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can't Import com.google.android.gms.location.LocationServices

Tags:

android

I'm trying to get the most accurate location.

till now I'v used successfully LocationClient as in Google docs: http://developer.android.com/training/location/retrieve-current.html

But now I have discovered that this class is old: http://developer.android.com/reference/com/google/android/gms/location/package-summary.html

"This class is deprecated. Use LocationServices".

However in the examples of LocationServices even in this site: Android LocationClient class is deprecated but used in documentation

It seem we should use an import: com.google.android.gms.location.LocationServices However I can't import this class..

Any Ideas ?

Edit:

I have found in this page: h2ttps://github.com/M66B/XPrivacy/issues/1774

with seemingly similar problem, a speculation that: "Seems to be part of Play services 5.0."
I wonder if that is the case -- has anybody tried this ?

like image 638
d_e Avatar asked Aug 18 '14 19:08

d_e


5 Answers

Make sure you have the following item in your gradle dependency:

dependencies {
    implementation 'com.google.android.gms:play-services-location:7.+'
}
like image 124
k.chao.0424 Avatar answered Dec 13 '22 15:12

k.chao.0424


Please Don't use compile 'com.google.android.gms:play-services:9.0.1'

In versions of Google Play services prior to 6.5, you had to compile the entire package of APIs into your app. In some cases, doing so made it more difficult to keep the number of methods in your app (including framework APIs, library methods, and your own code) under the 65,536 limit.

From version 6.5, you can instead selectively compile Google Play service APIs into your app. For example, in your case you just needed this.

compile 'com.google.android.gms:play-services-maps:9.0.1'
compile 'com.google.android.gms:play-services-location:9.0.1'

To use fused api to get last location you must have compile 'com.google.android.gms:play-services-location:9.0.1'.

For more Information

Hope it helps

like image 29
Karue Benson Karue Avatar answered Dec 13 '22 16:12

Karue Benson Karue


Below might help,

  1. You should have play service latest revision 22 downloaded.
  2. Add this line in dependencies compile 'com.google.android.gms:play-services:+'

It should import the respective package in project.

like image 33
Vinayak Avatar answered Dec 13 '22 16:12

Vinayak


I encountered the same issue, and solved it by updating Google Play Services from 17 to the latest (currently 22) in Android SDK Manager, as mentioned in the comments.

To do that in Eclipse:

  • Delete google-play-services_lib project from your Eclipse
  • Follow Step 3 of Adding SDK Packages. When you launch Android SDK Manager, it should say "Update available: Rev 22" for Google Play Services. Check it and click "Install N packages" to update it.
  • Follow Setting Up Google Play Services to import google-play-services_lib project again.
like image 20
Hiroshi Ichikawa Avatar answered Dec 13 '22 14:12

Hiroshi Ichikawa


LocationClient is deprecated. You have to use GoogleApiclient, like this:

1: Declare a GoogleApiClient variable

private GoogleApiClient mGoogleApiClient;

2: Instantiate

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

3: Implement Callback

public class YourClass extends BaseFragment implements
    GoogleApiClient.ConnectionCallbacks,
    GoogleApiClient.OnConnectionFailedListener, LocationListener {

    @Override
    public void onConnectionFailed(ConnectionResult result) {
        // your code goes here
    }

    @Override
    public void onConnected(Bundle connectionHint) {
        //your code goes here
    }

    @Override
    public void onConnectionSuspended(int cause) {
        //your code goes here       
    }
}

4: Start to get Location Updates:

LocationServices.FusedLocationApi.requestLocationUpdates(
            mGoogleApiClient, mLocationRequest, this);

5: Remove Location Updates:

LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient, this);

6: Get Last Known Location:

private Location mCurrentLocation;

mCurrentLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
like image 27
Naveen Kumar M Avatar answered Dec 13 '22 15:12

Naveen Kumar M