转载请注明出处,谢谢!http://blog.csdn.net/alantang1990
本文记录了我在学习百度地图时的经历,供自己以后复习时参考,其中自己遇到的一些问题希望对大家有一个借鉴的作用。其中(一)主要根据官网的Demo步骤写的,内容是加载一个简单的百度地图,(二)是实现了百度地图定位的功能。
关于Demo的上传:由于(一)较为简单,所以Demo就不上传了,在(二)中添加定位功能后一起上传
关于调试:请使用真机调试,不要用模拟器
开发之初我们首先得进入百度开发者网站的LBS开放平台,进入AndroidSDK地址:
http://developer.baidu.com/map/sdk-android.htm
这里有百度开发的关键步骤,可以先看看,其中我遇到的一些问题我会在下文描述。
(1)首先需要申请Key,才可以使用Android SDK
Key申请地址:http://lbsyun.baidu.com/apiconsole/key
点击创建应用,出现
首先在1处填写应用名称,此处注意需要使用一部分汉字才可以,不然无法创建
在2处选择for mobile,
3处需要注意的是Android安全码格式为:数字签名(即SHA1值);包名
SHA1值的获取:Window——>Android——>Build
包名的获取:在你创建应用是Manifest中的Package内
在完成以上步骤后会生成一个Key值
备注:此处有一个需要注意的地方,就是在我使用Key时发现当时申请的Key无法使用,需要过一段时间才能用,不知道是个案还是通例,如果使用我在(二)中Demo的话,自己申请的Key替换我的Key时出现加载不了地图时请先检查手机网络是否开通,如果还是加载不出来的话请稍等几分钟
代码的编写
工程结构
(一)自己新建工程后首先是添加百度地图的开发包,可以将我的工程中的开发包里的baidumapapi_vX_X_X.jar拷贝到libs根目录下,将libBaiduMapSDK_vX_X_X.so拷贝到libs\armeabi目录下,liblocSDK4.so和locSDK_4.0.jar为百度定位SDK所使用资源,一并拷起。
工程右击properties->Java Build Path->Libraries中选择“Add External JARs”,选定baidumapapi_vX_X_X.jar,确定后返回。(其实还有一张方法就是右击jar包,点击Build Path中的Configure Build Path 也可)
通过以上两步操作后,您就可以正常使用百度地图SDK为您提供的全部功能了。
这里官网上给出了注意事项:
注意:由于adt插件升级,若您使用Eclipse adt 22的话,需要对开发环境进行相应的设置,方法如下:
1. 在Eclipse 中选中工程,右键选 Properties->Java Build Path->Order and Export 使 Android Private Libraries处于勾选状态;
2. Project -> clean-> clean all .
(二) application中添加Key和相关权限在Manifest的application中添加
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="FxWETAHvo8YP2i6OPMwrh8np" />
在Manifest中添加百度地图使用的权限
<!-- 这个权限用于进行网络定位 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- 这个权限用于访问GPS定位 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- 获取运营商信息,用于支持提供运营商信息相关的接口 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位 -->
<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" />
<!-- SD卡读取权限,用户写入离线定位数据 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<!-- 允许应用读取低级别的系统日志文件 -->
<uses-permission android:name="android.permission.READ_LOGS" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_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.BROADCAST_STICKY" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
此处我要着重说明的是:一定要在application中添加<service></service>,不然就算全部写好了也不会加载地图出来的,这是血的教训!
<service
android:name="com.baidu.location.f"
android:enabled="true"
android:process=":remote"
> </service>
(三)关于主Activity的编写