关闭

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

标签: android应用
299人阅读 评论(0) 收藏 举报
分类:

移动应用的一个独特的特点是定位功能。 移动用户会在任何地方都使用他们的设备,这样在你的应用程序添加定位功能会给用户提供了更多的情境体验。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的对象,从中可以获取地理位置的经纬度坐标。 当位置不可返回的位置的对象可以是在极少数情况下为空。

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

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:3839次
    • 积分:160
    • 等级:
    • 排名:千里之外
    • 原创:7篇
    • 转载:1篇
    • 译文:6篇
    • 评论:0条
    文章分类