Google Play Services Location:获得最近的已知位置

翻译 2016年08月30日 11:08:09

移动应用的一个独特的特点是定位功能。 移动用户会在任何地方都使用他们的设备,这样在你的应用程序添加定位功能会给用户提供了更多的情境体验。Google play services location置API可以很方便将位置感知与自动定位追踪,地理围栏和行为识别添加到您的应用程序中。

现在Google play services location API优于Android框架位置API( android.location )如添加位置感知到你的应用程序的方式。 如果你正在使用Android框架位置API,强烈建议您尽快切换到Google play services location API。

本课程向您展示了如何使用Google play services location API在你的应用程序来获取当前位置,获得周期性位置更新和查找地址。 该类包含示例应用程序和代码片段,可以作为一个起点用于添加位置感知到你的应用程序。

注:由于本类是Google play services location的客户端库,请确保您使用示例应用程序或代码段之前安装最新版本。 要了解如何设置客户机库的最新版本,请参阅安装在谷歌Play服务指南。

相关课程

获得最近的已知位置
了解如何检索Android设备,它通常等同于用户的当前位置的最后一个已知位置。

更改位置设置
了解如何检测和定位功能应用的系统设置。

接收位置更新
了解如何请求和接收周期性位置更新。

显示位置的地址
了解如何到一个位置的经纬度转换成一个地址(反向地理编码)。

创建和监测地理围栏
学习如何限定一个或多个地理区域的称为地理围栏的相关位置,并且当用户接近或地理栅栏内检测。

获得最近的已知位置

使用Google play services location API,应用程序可以请求设备的最后已知​​位置。 在大多数情况下,感兴趣的用户的当前位置,这通常是等效的设备的最后已知​​位置。

具体而言,使用混合位置提供方式检索设备的最后已知位置。 混合位置提供是Google play services location API之一。 它管理基本定位技术,并提供了一​​个简单的API,让你可以指定高级别的要求,如高准确度和低功耗。 它还优化设备的使用电池供电。

本课向您展示如何使用设备的位置,一个请求getLastLocation()的融合位置提供方法。

设置谷歌播放服务
要访问混合位置服务,您的应用程序的开发项目必须包括谷歌播放服务。 下载并通过安装谷歌播放服务组件SDK管理器和库添加到您的项目。 有关详细信息,请参阅该向导设置谷歌播放服务 。

指定应用权限
使用位置服务必须请求位置信息访问权限的应用程序。 Android提供了两个定位权限: ACCESS_COARSE_LOCATION和ACCESS_FINE_LOCATION 。 您选择的权限决定了API返回的位置的精确度。 如果指定ACCESS_COARSE_LOCATION ,API返回,其精确度大约相当于一个街区的位置。

这节课只需要粗略的位置。 请求与此权限uses-permission在你的应用程序清单元素,如下面的代码片段显示:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.google.android.gms.location.sample.basiclocationsample" >

  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
</manifest>

连接到谷歌播放服务
要连接到API,你需要创建谷歌Play服务API客户端的一个实例。 有关使用客户端的详细信息,请参阅指南访问谷歌的API 。

在您的活动的onCreate()方法中,创建谷歌API客户端的一个实例,使用GoogleApiClient.Builder类以添加LocationServices API,如下面的代码片段所示。

// Create an instance of GoogleAPIClient.
if (mGoogleApiClient == null) {
    mGoogleApiClient = new GoogleApiClient.Builder(this)
        .addConnectionCallbacks(this)
        .addOnConnectionFailedListener(this)
        .addApi(LocationServices.API)
        .build();
}

要连接,调用connect()从活动的onStart()方法。 要断开连接,通话disconnect()从活动的onStop()方法。 下面的代码片段展示了如何使用这两种方法的例子。

protected void onStart() {
    mGoogleApiClient.connect();
    super.onStart();
}

protected void onStop() {
    mGoogleApiClient.disconnect();
    super.onStop();
}

获得最后的已知位置
一旦你连接到谷歌播放服务和位置服务API,你可以得到一个用户的设备的最后已知​​位置。 当您的应用程序连接到这些,你可以使用融合位置服务提供商的getLastLocation()方法来检索设备位置。 此调用返回的位置的精度由权限设置你把你的应用程序清单,如描述确定指定的应用权限。本文件的部分。

要请求最后已知的位置,调用getLastLocation()方法,向它传递的您的实例GoogleApiClient对象。 在执行此操作onConnected()由谷歌API客户端,当客户准备好这就是所谓提供的回调。 下面的代码片段说明了该请求,并简单处理的响应:

public class MainActivity extends ActionBarActivity implements
        ConnectionCallbacks, OnConnectionFailedListener {
    ...
    @Override
    public void onConnected(Bundle connectionHint) {
        mLastLocation = LocationServices.FusedLocationApi.getLastLocation(
                mGoogleApiClient);
        if (mLastLocation != null) {
            mLatitudeText.setText(String.valueOf(mLastLocation.getLatitude()));
            mLongitudeText.setText(String.valueOf(mLastLocation.getLongitude()));
        }
    }
}

该getLastLocation()方法返回一个Location的对象,从中可以获取地理位置的经纬度坐标。 当位置不可返回的位置的对象可以是在极少数情况下为空。

下一课, 更改位置设置 ,告诉您如何检测当前的位置设置,并提示用户改变设置以适合您的应用程序的需求。

Google Play服务中的人脸检测

资料来源:Face Detection in Google Play services 从Google Play服务版本7.8开始,提供一套更快更优秀的人脸检测的接口。这套接口在各种角度及各表情的脸...
  • yide55
  • yide55
  • 2016年04月15日 18:53
  • 1400

Genymotion 模拟器安装谷歌服务Google Apps (Google Play 市场) 和ARM库的方法教程

如果你是从 Genymotion 里直接下载虚拟机的话,你会发现它们系统里缺少了 Google Play 市场等各种谷歌服务应用,其实是因为版权问题,从 2.0 版本开始 Genymotion  提供...
  • kenon2000
  • kenon2000
  • 2014年05月09日 14:53
  • 2985

官方推荐:精简google-play-services.jar的方法(解决65536问题的应急方案)

之前写过关于精简google_play_services.jar的方法,是参考自github的,详见: http://blog.csdn.net/liuweiballack/article/deta...
  • liuweiballack
  • liuweiballack
  • 2015年11月11日 20:40
  • 12454

<2> unity3d 分包与上google play 之具体实战

上一篇已经把准备工作已经做好了。现在开始实战了。激动么么哒有没有! 第一步: 下载插件包 (这里收了1分,如果实在没有资源分的可以@我)http://download.csdn.net/detail...
  • pdw_jsp
  • pdw_jsp
  • 2015年04月20日 14:32
  • 5712

关于在Android游戏中集成Google Play游戏服务

这个是几个月前就完成的,刚好今天要重新在Google Play上建一个包,于是要在Android Develop Console上重新填写一遍相关的内容,但是有些地方还是忘记了,所以还是简单记一下吧。...
  • LuckilyYu
  • LuckilyYu
  • 2014年12月02日 00:55
  • 10019

踩坑:App上传GooglePlay后Google登录和FaceBook登录异常

这段时间开启新项目需要集成Google和FaceBook登录到项目中,经过一个多月的埋头加班终于搞定了,打包测试都OK,于是开心的上传到GooglePlay,然后第二天发现,我靠Google登录和Fa...
  • Yzw_92_4_11
  • Yzw_92_4_11
  • 2017年10月19日 10:50
  • 202

android中使用GoogleMap的地理位置服务

写在前面:android中使用地理位置功能,可以借助Google给我们提供的框架,要是有地理位置功能,你需要引用Google Play Services,请在sdk manager中下载。 如果你还要...
  • baidu_26994091
  • baidu_26994091
  • 2016年06月16日 00:34
  • 5192

精简google-play-services.jar的方法(解决65536问题的应急方案)

因为项目功能的需求,需要引入较多的第三方的jar包,但在打包过程中,发生如下错误:Conversion to Dalvik format failed:Unable to execute dex: m...
  • liuweiballack
  • liuweiballack
  • 2015年10月22日 16:41
  • 6476

在Genymotion虚拟机上安装Google Apps

Genymotion 来自于 AndroVM 这个开源项目,基于 x86 和 VirtualBox,支持 OpenGL 加速,可以用于 Mac / Win / Linux 。然而最近发布的新版,新增...
  • shao941122
  • shao941122
  • 2016年05月11日 16:06
  • 3615

Google Play Store无法搜索应用或提示应用不兼容,此类问题该如何定位及分析

Google Play Store无法搜索应用或提示应用不兼容,此类问题该如何定位及分析 [DESCRIPTION] Google Play Store无法搜索应用或提示应用不兼容 ,此类问题...
  • sandform
  • sandform
  • 2016年07月04日 16:51
  • 806
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Google Play Services Location:获得最近的已知位置
举报原因:
原因补充:

(最多只允许输入30个字)