无法导入com.google.android.gms.location.LocationServices

时间:2014-08-18 19:24:58

标签: android

我试图获得最准确的位置。

到目前为止,我已成功使用GoogleCloc中的LocationClient: http://developer.android.com/training/location/retrieve-current.html

但是现在我发现这个课程已经老了: http://developer.android.com/reference/com/google/android/gms/location/package-summary.html

"不推荐使用此类。使用LocationServices"。

但是在LocationServices的例子中,即使在这个站点中: Android LocationClient class is deprecated but used in documentation

似乎我们应该使用导入:com.google.android.gms.location.LocationServices 但是我无法导入这个课程。

任何想法?

编辑:

我在此页面中找到: h2ttps://github.com/M66B/XPrivacy/issues/1774

看似相似的问题,有人猜测: "似乎是Play服务5.0的一部分。"
我想知道是不是这样 - 有人试过这个吗?

8 个答案:

答案 0 :(得分:42)

确保您的gradle依赖项中包含以下项目:

dependencies {
    compile 'com.google.android.gms:play-services-location:7.+'
}

答案 1 :(得分:19)

请不要使用compile 'com.google.android.gms:play-services:9.0.1'

在6.5之前的Google Play服务版本中,您必须将整个API包编译到您的应用中。在某些情况下,这样做会使您的应用程序中的方法数量(包括框架API,库方法和您自己的代码)更难以保持65,536的限制。

从版本6.5开始,您可以选择性地将Google Play服务API编译到您的应用中。例如,在您的情况下,您只需要这个。

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

要使用融合api获取最后一个位置,您必须拥有compile 'com.google.android.gms:play-services-location:9.0.1'

For more Information

希望有所帮助

答案 2 :(得分:3)

以下可能有帮助,

  1. 您应该已下载游戏服务最新版本22。
  2. 在依赖项中添加此行 编译'com.google.android.gms:play-services:+'
  3. 它应该导入项目中的相应包。

答案 3 :(得分:2)

我遇到了同样的问题,并通过在Android SDK管理器中将Google Play服务从17更新为最新(目前为22个)来解决,如评论中所述。

在Eclipse中执行此操作:

  • 从Eclipse
  • 删除google-play-services_lib项目
  • 按照Adding SDK Packages的第3步。当您启动Android SDK Manager时,它应该说"更新可用:Rev 22"适用于Google Play服务。检查并单击"安装N个包"更新它。
  • 关注Setting Up Google Play Services再次导入google-play-services_lib项目。

答案 4 :(得分:2)

不推荐使用LocationClient。您必须使用GoogleApiclient,如下所示:

1:声明GoogleApiClient变量

private GoogleApiClient mGoogleApiClient;

2:实例化

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

3:实施回调

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:开始获取位置更新:

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

5:删除位置更新:

LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient, this);

6:获取最后一个位置:

private Location mCurrentLocation;

mCurrentLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);

答案 5 :(得分:0)

如果您正在使用eclipse,请执行以下步骤: -

  1. 从SDK Manger更新Google Play库。
  2. 从工作区删除旧的google-play-services_lib并删除所有依赖项。
  3. 导入更新google-play-services_lib并确保选中复制到工作区选项
  4. copy to work space

    1. 添加google-play-services_lib以构建应显示相对路径的项目路径 enter image description here

    2. 如果步骤不起作用重启eclipse。

答案 6 :(得分:0)

给出here给出的类似问题:

在Android Studio中:

  1. 右键点击您的项目" app"文件夹并单击 - >模块设置

  2. 点击"依赖关系"标签

  3. 点击+号添加新的依赖项并选择" Library Dependency" 寻找您需要的库并添加它

答案 7 :(得分:0)

截至2019年或更高版本,最佳答案已经过时,将无法正常工作。

相反,添加:

implementation 'com.google.android.gms:play-services-location:17.0.0'

dependencies中的build.gradle