苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper万能框架(V2.3-含.netcore) HttpHelper官方出品,无敌框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 最牛的爬虫类,没有爬不到只有想不到 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 677|回复: 5

[新手开发之旅] Android新手开发之旅-集成百度地图

[复制链接]
发表于 2019-1-8 16:32:26 | 显示全部楼层 |阅读模式
本帖最后由 liu 于 2019-1-8 16:31 编辑



Android新手开发之旅目录




      百度地图 Android SDK是一套基于Android 4.0及以上版本设备的应用程序接口。 我们可以使用该套 SDK开发适用于Android系统移动设备的地图应用,通过调用地图SDK接口,可以轻松访问百度地图服务和数据,构建功能丰富、交互性强的地图类应用程序。


步骤:

一、注册百度账号,申请AK(API Key),申请地址   http://lbsyun.baidu.com/apiconsole/key

         QQ截图20190108144856.png

点击创建应用后进入如下界面:


         QQ截图20190108144935.png


然后去创建一个Android项目,复制包名


          QQ截图20190108151101.png


然后回到网页填写应用名称、应用类型注意选择“Android SDK”、正确填写安全码,点击确认,系统将会自动帮您生成相应的开发密钥:


          QQ截图20190108151239.png


获取SHA1值的方法请看http://www.sufeinet.com/thread-24743-1-1.html


点击提交后:


             QQ截图20190108151336.png


这样AK已经准备好了


二、下载SDK开发包


下载地址:http://lbsyun.baidu.com/index.phptitle=sdk/download&action#selected=mapsdk_basicmap,mapsdk_searchfunction,mapsdk_lbscloudsearch,mapsdk_calculationtool,mapsdk_radar

选择并下载

                  QQ截图20190108151940.png


三、在项目中引用百度SDK


将开发包拷贝至工程
1、添加jar文件
    打开解压后的开发包文件夹,找到BaiduLBS_Android.jar文件将其拷贝至工程的app/libs目录下,如图:


                   QQ截图20190108153135.png

2、选中jar包,右键→Add As Library
  
                QQ截图20190108153237.png

3、添加so文件
    在下载的开发包中拷贝需要的CPU架构对应的so文件文件夹到app/libs目录下,如图:

               QQ截图20190108153611.png

4、在app目录下的build.gradle文件中android块中配置sourceSets标签,如果没有使用该标签则新增,详细配置代码如下:
[Java] 纯文本查看 复制代码
sourceSets {
           main {
               jniLibs.srcDir 'libs'
           }
    }

注意:Jar文件和so文件的版本号必须一致,并且保证Jar文件与so文件是同一版本包取出的。

完整配置:

                  QQ截图20190108161439.png

5、应用混淆

现在我们的应用中已经集成了百度地图SDK,当我们在打包混淆的时候需要注意于BaiduMap SDK 相关的内容不应该被混淆,所以我们需要配置混淆文件。

首先打开app目录下的build.gradle文件,在release代码块中添加如下内容(若已经由Android Studio自动生成,则不用手动配置)proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

如在上面我们创建的MapActivity项目中:


             QQ截图20190108154113.png

然后编写混淆文件,打开app目录下的proguard-rules.pro文件,添加如下代码

[Java] 纯文本查看 复制代码
-keep class com.baidu.** {*;}
-keep class mapsdkvi.com.** {*;}    
-dontwarn com.baidu.**



四、添加代码


1、在AndroidManifest中添加开发密钥、所需权限等信息
[Java] 纯文本查看 复制代码
<application>  
    <meta-data  
        android:name="com.baidu.lbsapi.API_KEY"  
        android:value="开发者 key" />  
</application>

2、添加所需权限
[C#] 纯文本查看 复制代码
 //获取设备网络状态,禁用后无法获取网络状态
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    //网络权限,当禁用后,无法进行检索等相关业务
    <uses-permission android:name="android.permission.INTERNET" />
    //读取设备硬件信息,统计数据
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    //读取系统信息,包含系统版本等信息,用作统计
    <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
    //获取设备的网络状态,鉴权所需网络代理
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    //允许sd卡写权限,需写入地图数据,禁用后无法显示地图
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    //获取统计数据
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
    //使用步行AR导航,配置Camera权限
    <uses-permission android:name="android.permission.CAMERA" />


注意: 权限应添加在 appliction 之外,如添加到appliction 内部,会导致无法访问网络,不显示地图


             QQ截图20190108155245.png


3、在布局xml文件中添加地图控件
[XML] 纯文本查看 复制代码
<com.baidu.mapapi.map.MapView
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:clickable="true" />

        
4、在应用程序创建时初始化 SDK引用的Context 是全局变量
[Java] 纯文本查看 复制代码
import android.app.Application;

import com.baidu.mapapi.CoordType;
import com.baidu.mapapi.SDKInitializer;

/**
 * Created by Administrator on 2019/1/8.
 */

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        //在使用SDK各组件之前初始化context信息,传入ApplicationContext
        SDKInitializer.initialize(this);
        //自4.3.0起,百度地图SDK所有接口均支持百度坐标和国测局坐标,用此方法设置您使用的坐标类型.
        //包括BD09LL和GCJ02两种坐标,默认是BD09LL坐标。
        SDKInitializer.setCoordType(CoordType.BD09LL);
    }
}

注意:initialize方法中必须传入的是ApplicationContext,不然会报运行时异常,所以建议把该方法放到Application的初始化方法中

AndroidManifest中修改


             QQ截图20190108155830.png




所有工作都已完成,我们来看下运行效果:


                      QQ截图20190108162016.png



之后的帖子会说一说怎么搜索周边、定位等功能如何实现
Android新手开发之旅目录






发表于 2019-1-8 16:39:57 | 显示全部楼层
强烈支持楼主ing……
发表于 2019-1-8 16:42:58 | 显示全部楼层
强烈支持楼主ing……
发表于 2019-1-8 18:02:43 | 显示全部楼层
我只是路过打酱油的。
发表于 2019-1-8 21:05:07 | 显示全部楼层
无回帖,不论坛,这才是人道。
发表于 2019-1-9 10:57:16 | 显示全部楼层
真是难得给力的帖子啊。
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备17001017号-1)

GMT+8, 2019-11-19 21:09

© 2017-2018

快速回复 返回顶部 返回列表