赞
踩
下载地址: http://lbsyun.baidu.com/index.php?title=androidsdk/sdkandev-download
选择产品下载中的自定义下载。 再根据需求下载需要的开发资源,如果不知道选啥,可以把能选的选了,也可以按照我勾选的来
有的时候下载完成后可能存在无法解压的情况,这算是百度地图开发的一大坑,之前我连续几次遇到这种情况。这里附上我用的包。
百度云链接:链接:https://pan.baidu.com/s/1qkrnwGtKmg9A69fDv4Ygyw
提取码:rvij
下载完后文件如图,直接解压至当前文件夹
解压后:
打开readme.txt文件可以查看当前下载开发包包含的内容。
然后也将BaiduNavi_AndroidSDK.zip解压到当前文件夹,成功后如图(圈出的为解压后新增的文件):
打开BaiduNavi_AndroidSDK文件夹,可以看到一些重要的aar文件,jar包和so库。
Copy时弹出下框,直接点确定
全部添加后:
2. 随便选一个jar包,右键->add as library->确定,add后出现如下则表示添加成功,注意jar包左边要有小三角
add成功后如图:
导航SDK自带TTS能力已经打包为一个独立的aar,命名为NaviTts.aar,可以将其以aar module引入集成APP project,引入后,可以利用导航SDK提供的TTS接口进行初始化。
导航SDK核心已经打包为一个独立的aar,命名为onsdk_all.aar,可以将其以aar module引入集成APP project,引入后,即可引用导航SDK相关类进行开发。
所以这两个包是非常重要的。引入步骤如下:
1. 将NaviTts.aar文件复制到libs文件目录下
打开BaiduNavi_AndroidSDK,可以看到两个aar文件。拷贝到libs后如图:
接下来按照图片操作:
到这一步后等待一下下
要是app中一时没有NaviTts,可以在All Modules中找到,不过等一会在app中也会有了。Apply后如下,则表示成功:
用同样的步骤将onsdk_all.aar引入,引入成功后如图:
到这一步可以先用模拟器调试一下,可能会报如下错误:
此时需要把galaxy_lite_lbs_v2.3.jar删除
右键选择Delete,会显示如下图提醒,点击Do Refactor。
会出现上图是因为我们在build.gradle中implement了这个jar包,所以需要将build.gradle中的一起删,如图:
删除后再次调试,此时还是报错。这是因为有几个jar包冲突了,需要把冲突的jar包删去。报错如图:
可见是图中的三个包冲突,直接删去即可,删完后如图:
此时再运行调试,依旧报错,但这是因为没有写入调用的代码。所以暂时不用管,接着往下做。
打开AndroidManifest.xml,在< application >中加入如下代码配置开发密钥(AK):
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="开发者 key" />
加入后如图:
value值开发者key在百度地图开放平台中获取http://lbsyun.baidu.com/apiconsole/key:
然后在AndroidManifest.xml中加入如下权限:
<!-- 获取设备网络状态,禁用后无法获取网络状态--> <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" /> <!-- 这个权限用于访问GPS定位--> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <!-- 获取统计数据--> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <!-- 使用步行AR导航,配置Camera权限--> <uses-permission android:name="android.permission.CAMERA" /> <!-- 程序在手机屏幕关闭后后台进程仍然运行--> <uses-permission android:name="android.permission.WAKE_LOCK" />
加入后如图:
需要在activity_main.xml中加入如下代码:
<com.baidu.mapapi.map.MapView
android:id="@+id/bmapView"
android:layout_width="0dp"
android:layout_height="0dp"
android:clickable="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0"
app:layout_constraintHorizontal_bias="1.0"/>
加入后如图:
public class MainActivity extends AppCompatActivity{ private MapView mMapView = null; private BaiduMap mBaiduMap = null; private Context context; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); SDKInitializer.initialize(getApplicationContext()); setContentView(R.layout.activity_main); SDKInitializer.setCoordType(CoordType.BD09LL); this.context = this; mMapView = (MapView) findViewById(R.id.bmapView); //获取地图控件引用 mBaiduMap = mMapView.getMap(); } protected void onStart() { super.onStart(); } @Override protected void onResume() { super.onResume(); mMapView.onResume(); } @Override protected void onPause() { super.onPause(); mMapView.onPause(); } @Override protected void onStop() { super.onStop(); } @Override protected void onDestroy() { super.onDestroy(); mBaiduMap.setMyLocationEnabled(false); mMapView.onDestroy(); mMapView = null; } }
加入后如图:
在app目录下的build.gradle文件中加入如下:
multiDexEnabled true
加入后如图:
到此,所有配置都已完毕,点击运行调试程序,一般不会报错,运行结果如下:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。