1.基于位置服务的简介
基于位置的服务简称 LBS:Location Based Service
2.申请API Key
1.登录你的百度账号,并打开http://developer.baidu.com/user/reg 这个网址,在这里填写一些注册信息即可
2.接着访问http://lbsyun.baidu.com/apiconsole/key 这个地址,然后同意百度开发者协议
3.填写 发布版SHA1和开发版SHA1:我们申请API Key所必须填写的一个字段,它指的是打包程序时所用签名文件的SHA1指纹,可以通过Android Studio查看到。打开Android Studio中的任意一个项目,点击右侧工具栏的Gradle→项目名→:app→Tasks→android;其中signingReport这个Task就可以用来查看签名文件信息。双击signingReport: SHA1就是指纹签名。
30:DF:7E:57:2F:BE:87:D9:3A:74:B1:F6:E3:C2:17:94:A5:7C:0D:EC
这是Android自动生成的一个用于测试的签名文件。而当你的应用程序发布时还需要创建一个正式的签名文件,如果要得到它的指纹,可以在cmd中输入如下命令,然后输入正确的密码就可以了。创建签名文件的方法我们将在第15章中学习
keytool -list -v –keystore <签名文件路径>
4.现在得到的这个SHA1指纹实际上是一个开发版的SHA1指纹,不过因为暂时我们还没有一个发布版的SHA1指纹,因此这两个值都填成一样的就可以了。最后还剩下一个包名选项,虽然目前我们的应用程序还不存在,但可以先将包名预定下来,比如就叫com.example.lbstest,这样所有的内容就都填写完整了
5.提交之后,就会生成一个API Key.
wf6in1iOSXsbgypdfvD5tQDxqOIiL23G
3.使用百度定位
1.准备LBS SDK
1.下载地址:https://lbs.baidu.com/index.php?title=sdk/download&action#selected=mapsdk_basicmap,mapsdk_searchfunction,mapsdk_lbscloudsearch,mapsdk_calculationtool,mapsdk_radar
2.libs目录下的内容又分为两部分,BaiduLBS_Android.jar这个文件是Java层要使用到的,其他子目录下的so文件是Native层要用到的
3.将BaiduLBS_Android.jar复制libs目录
4.在main文件夹下面新建一个jniLibs目录,将剩余的文件夹复制到里面去
5.jar文件还没有引入,需要点击右上角按钮进行同步
2.确定自己位置的经纬度
1.首先修改activity_main.xml中的代码
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/position_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
2.修改AndroidManifest.xml文件中的代码
?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.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"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="wf6in1iOSXsbgypdfvD5tQDxqOIiL23G" />
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote">
</service>
</application>
</manifest>
3.接下来修改MainActivity中的代码
package com.example.lbstest;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android