Android集成百度地图开发流程和注意事项

前言

最近公司要把百度地图集成的项目中,于是我就研究了一天百度地图的SDK,当前的版本:Android SDK v3.0.0 。 虽然百度地图网上相关代码比较多,大多可能都是比较旧的版本,且百度地图API的改动感觉也比较大,所以再此跟大家分享一下实现的流程的和注意事项

一、申请密钥

重难点:获取Android签名证书的sha1值

方法一、使用keytool

进入命令提示符

获取debug的sha1值:

定位到.android文件夹下,输入keytool -list -v -keystore debug.keystore,会得到三种指纹证书,选取SHA1类型的证书(密钥口令是android)

获取release的sha1值:

定位到签名文件xxx.keystore的文件夹下,输入keytool -list -v -keystore xxx.keystore,会得到三种指纹证书,选取SHA1类型的证书(密钥口令是之前自定义的)

方法二、Eclipse中,在ADT中直接查看

点击工具栏windows -> preferance -> android -> build

二、导入库文件

最好直接复制demo里面的.so文件和jar包,别忘了locSDK.so和locSDK.jar

在build.gradle中配置SO的使用

sourceSets { main { jniLibs.srcDirs = ['libs'] } }

三、配置AndroidManifest.xml文件

(1)声明使用权限

<!-- 这个权限用于进行网络定位--> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission> <!-- 这个权限用于访问GPS定位--> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission> <!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位--> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission> <!-- 获取运营商信息,用于支持提供运营商信息相关的接口--> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> <!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位--> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission> <!-- 用于读取手机当前的状态--> <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission> <!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据--> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> <!-- 访问网络,网络定位需要上网--> <uses-permission android:name="android.permission.INTERNET" /> <!-- SD卡读取权限,用户写入离线定位数据--> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>

(2)在application标签中声明service组件,每个app拥有自己单独的定位service

<service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote"/>

(3)设置AcessKey

//key:开发者申请的key<meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="key" />

四、在Application中初始化SDK

public class MyApp extends Application { @Override public void onCreate() { super.onCreate(); SDKInitializer.initialize(this); } }

注意在AndroidMainfest.xml文件中配置application

五、定位功能封装

import android.content.Context; import com.baidu.location.BDLocationListener; import com.baidu.location.LocationClient; import com.baidu.location.LocationClientOption; /** * 百度定位封装 */ public class BaiduLocationUtil { private LocationClient locationClient; private static BaiduLocationUtil locationUtil; public static BaiduLocationUtil getInstance(){ if(locationUtil == null) { synchronized (BaiduLocationUtil.class){ if (locationUtil==null){ locationUtil = new BaiduLocationUtil(); } } } return locationUtil; } public void getLocation(Context context, BDLocationListener listener) { locationClient = new LocationClient(context); // 设置定位条件 LocationClientOption option = new LocationClientOption(); option.setOpenGps(true); // 是否打开GPS option.setCoorType("bd09ll"); // 设置返回值的坐标类型。 option.setPriority(LocationClientOption.NetWorkFirst); // 设置定位优先级 option.setScanSpan(5000); // 设置发起定位请求的间隔时间为5000ms option.setIsNeedAddress(true);// 设置是否需要地址信息,默认不需要 locationClient.setLocOption(option); locationClient.registerLocationListener(listener); locationClient.start(); } public void Unregister(BDLocationListener listener) { locationClient.stop(); locationClient.unRegisterLocationListener(listener); } }

使用

(1)、声明定位结果回调

//定位结果回调,重写onReceiveLocation方法 private BDLocationListener mListener = new BDLocationListener() { @Override public void onReceiveLocation(BDLocation location) { String address=location.getAddrStr(); tvLocation.setText(address); } };

(2)、在onCreate()中绑定服务

BaiduLocationUtil.getInstance().getLocation(getApplicationContext(),mListener);

(3)、在onDestroy()中取消服务

BaiduLocationUtil.getInstance().Unregister(mListener);

总结

以上就是这篇文章的全部内容了,希望能对各位Android开发者有所帮助,如有疑问大家也可以留言交流。

时间: 2024-11-05 12:34:16

Android集成百度地图开发流程和注意事项的相关文章

[android] 百度地图开发 (三).定位当前位置及getLastKnownLocation获取location总为空问题

       前一篇百度地图开发讲述"(二).定位城市位置和城市POI搜索",主要通过监听对象MKSearchListener类实现城市兴趣点POI(Point of Interest)搜索.该篇讲述定位当前自己的位置及使用getLastKnownLocation获取location总时为空值的问题. 一. 定位当前位置的原理及实现       定位当前位置可以通过LBS(Location Based Service,基于位置的服务),主要工作原理是利用无线网络Network或GPS定

[android] 百度地图开发 (二).定位城市位置和城市POI搜索

一. 百度地图城市定位和POI搜索知识       上一篇文章"百度地图开发(一)"中讲述了如何申请百度APIKey及解决显示空白网格的问题.该篇文章主要讲述如何定位城市位置.定位自己的位置和进行城市兴趣点POI(Point of Interest)搜索.那么如何在百度地图上定位某一个位置呢?      通过类GeoPoint可以定义经纬度,它存放着纬度值和经度值,通过getLastKnownLocation()方法可以获取Location对象,再定位经纬度设置其为地图中心即可显示当前

iOS 百度地图开发集成使用

项目需要集成百度地图,那么关于如何集成百度地图的事,就自己去百度开放平台查看文档吧,这是非常简单的事,在这里就不多说了. 那么下面我就说说我在这个demo里所做的事. 首先,项目需要具备定位及计算两地的距离 其次,项目需要根据两个地点来拿到所有路线,并且可根据不同的策略拿到对应的最佳路线. 最后,需要拿到打车相关信息 那么这里我就自己写了一个单例类,这是在内部处理所有的代理,外部可以非常方便地调用,如果有好的建议,请在评论中赐教,谢谢! // // HYBBaiduMapHelper.h //

Android SDK 百度地图通过poi城市内检索简介接口的使用_Android

百度地图 SDK 不仅为广大开发者提供了炫酷的地图展示效果.丰富的覆盖物图层,更为广大开发者提供了多种 LBS 检索的能力.通过这些接口,开发者可以轻松的访问百度的 LBS 数据,丰富自己的移动端地图应用. 目前百度地图 SDK 为开发者提供的检索服务有: POI 检索:可以检索百度 POI 数据信息: 线路规划:利用百度的引擎帮助开发者规划线路: 在线建议检索.短链接分享.地理编码等等.... 本文将以一个很简单的 POI 城市内检索为例,像广大开发者介绍接口的使用. 第一步,选择并下载 SD

android-跪求Android集成谷歌地图demo

问题描述 跪求Android集成谷歌地图demo 需要eclipse版本的能能运行,官方demo我下过,没报错,但是一运行我的eclipse就崩溃了.唉....都不知道什么错弄蹦的 解决方案 用百度地图吧,我今天刚好弄了一个demo大集合,运行完全木有问题,很好用... 解决方案二: 人家发给你也不一定有用啊.还是设置环境啊.具体你那里出了问题可以说出来. 解决方案三: http://stackoverflow.com/questions/16305685/java-lang-noclassde

java调用百度地图-百度地图开发问题出现错误

问题描述 百度地图开发问题出现错误 我想开发POI搜索和定位结合,但是网上给的代码都不能用,不能安装到手机上,谁有代码,可以给我一下. 解决方案 http://blog.csdn.net/ksr12333/article/details/17676543 解决方案二: swift 百度地图开发问题android studio 开发百度地图问题错误记录集:使用百度地图出现的问题

android 使用百度地图 缩放比例会自己变化,why?

问题描述 android 使用百度地图 缩放比例会自己变化,why? 当我在android程序上集成百度地图是,设置好了缩放比例,然后打开程序的时候,有时候它自己会改变缩放比例,变得很小(比如说我设置的是15,结果有时候可以看到整个中国的缩影),而且定位到当前位置,是从很远的地方移动过来的,指的是其他的洲,欧洲或者其他地方,这是为什么呢 解决方案 你初始化好地图之后就设置缩放比例啊! 参考:http://blog.csdn.net/column/details/android-jacksen-m

Android 调用百度地图API示例

Android 调用百度地图API 一.到 百度地图开发平台下载SDK http://lbsyun.baidu.com/index.php?title=androidsdk/sdkandev-download 1.点击自定义下载 2.下载自己想要的功能包我这里选了三个 3.获取密钥 获取密钥之前我们要新建一个应用 填写好相关的信息 二. 新建一个项目工程 1. 把下载好的百度sdk中的jar包拷贝到项目的libs目录下 2.在application中添加开发密钥 3.添加所需的权限 <uses-

求大师解答?百度地图开发无法定位到我的位置

问题描述 求大师解答?百度地图开发无法定位到我的位置 这是我的代码: public class MainActivity extends ActionBarActivity { private MapView mMapView; private BaiduMap mBaiduMap; private LocationClient mLocationClient;private MyLocatonListener mLocatonListener;private boolean isFirstIn