第二行代码学习笔记——第十一章:Android特色开发——基于位置的服务

本章要点

只有在移动设备上才能够实现的技术——基于位置的服务(Location Based Service)。


11.1 基于位置服务的简介

基于位置的服务简称LBS。主要的工作原理就是利用无线电通讯网络或GPS等定位方式来确定出移动设备所在的位置。

有了Android系统作为载体,我们可以利用定位出的位置进行更多的丰富的操作。比如:天气预报程序可根据用户所在的位置自动选择城市,发微博朋友圈可以晒自己在哪里,不认识的路可以打开地图就可查看路线等等。

基于位置的服务所围绕的核心就是要先确定自己所在的位置。两种方式确定自己所在的位置:

  • GPS,工作原理是基于手机内置的GPS硬件直接和卫星交互来获取当前的经纬度信息,精确度非常高,只能在室外使用。
  • 网络定位,工作原理是根据手机当前网络的三个基站进行测量,以此计算出手机和每个基站之间的距离,在通过三角定位确定出一个大概的位置,精确度一般,室内外都可以使用。

Android对定位方式提供了相应的API的支持,但是由于Google的网络服务在中国不可访问,从而导致网络定位的方式API失效,GPS不需要网络,所以可以使用。

为了使我们的开发都可以获取到定位信息,目前国内在这一领域做的比较好的就是百度,高德。我们来学习一下百度在LBS方面提供的丰富多彩的功能。


11.2 申请 API Key

在自己的程序中使用百度的LBS功能,首先必须申请一个API Key。

登陆百度账号,并打开http://developer.baidu.com/user/reg。填写注册信息即可(只需填写带“*”的部分内容足够)。如图:

reg

接下来点击提交,根据步骤来,点击“去我的邮箱”,就会收到百度发给我们邮件,点击邮件中的链接,完成注册。

成为百度开发者以后,接着访问http://lbsyun.baidu.com/apiconsole/key 。同意百度开发者协议,会看到如图:

key

点击创建应用申请API Key,应用名称随便写,应用类型选择Android SDK,启动服务保持默认即可,如图:

lbtest

发布版SHA1和开发板SHA1是我们申请API Key所必须填写的一个字段,指的是打包程序时所用签名文件的SHA1指纹,可通过Android Studio查看。打开Android Studio的任意项目,点击右侧工具栏的Gradle—>项目名称—>:app—>Tasks—>android,如图:

gp

展示了Android Studio项目所有内置的Gradle Tasks,其中signingReport用来查看签名文件信息,如下:

singing

这里我们可以看到SHA1,这是Android自动生成的一个用于测试的签名文件。当我们的应用程序发布的时候需要创建一个正式的签名文件,得到它的指纹,在cmd中输入命令(签名文件路径):

keytool - list -v -keystore

然后输入正确的密码就可以了。创建签名我们将在第15章学习。

现在得到的这个SHA1指纹是一个开发版,我们暂时还没有发布版的SHA1指纹,因此两个值都填成一样就可以了。定义我们的包名(与应用程序的报名一致)。如下:

sha1

点击提交,创建完成。如图:

lb

8EqUIKRK6AqqrFBOtqoZ7a8SuQ6st9GZ就是我们申请的API Key。


11.3 使用百度定位

新建LBSTest项目,包名自然就是com.example.hjw.lbstest了。
建议真机测试,获取真实的数据。

11.3.1 准备LBS SDK

百度LBS SDK,下载地址:http://lbsyun.baidu.com/sdk/download
勾选基础地图和基础定位的SDK(我们要使用的),然后点击“开发包”下载按钮即可。如图:

sdk

下载完成解压并打开,你会发现lib目录,如图:

lib

包含两部分:BaiduLBS_Android.jar这个文件是Java层要使用的,其他子目录下的so文件(C/C++编写,再用NDK编译出来的)是Native层用到的。放置文件到争取的位置。

将BaiduLBS_Android.jar放置libs目录下,如图:

jar

将so文件放置,新创建(src-main)的jniLibs的目录中,如图:

so

我们每个创建的项目中app/build.gradle都会默认配置这段声明:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    ...
}

这表示将所有libs目录下.jar结尾的文件都会添加到当前项目中。手动点击Android Studio 顶部的工具栏中的Sysc按钮,如图:

sync

点击Sync按钮后,我们会发现libs下的.jar文件会多出箭头,表示已经引用到了Jar包了。如图:

syncz

这样就准备好了LBS的SDK.。

11.3.2 确定自己位置的经纬度

修改activity_main.xml中的代码,用于显示经纬度(TextView),如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:id="@+id/tv_position"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</LinearLayout>

修改AndroidManifest.xml中的代码如下:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.hjw.lbstest">

    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值