浏览器版本低!无法浏览完整内容,建议升级或更换浏览器。

Android 导航SDK

百度Andriod 导航SDK为Android移动端应用提供了一套简单易用的导航服务接口,适用于Android 2.1及以上版本。专注于为广大开发者提供最好的导航服务,通过使用百度导航SDK,开发者可以轻松为应用程序实现专业、高效、精准的导航功能。

导航SDK集成
1权限说明
<!-- 读写sd卡 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<!-- 写sd卡 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_GPS"/>
<!-- 获取精确gps位置 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<!-- 获取粗略位置 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<!-- 允许程序访问额外的定位提供者指令获取模拟定位信息 -->
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"/>
<!-- 网络链接 -->
<uses-permission android:name="android.permission.INTERNET">
</uses-permission>
<!-- 获取网络状态 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE">
</uses-permission>
<!-- 更改wifi连状态 -->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<!-- 获取wifi状态 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

对于Android6.0及以上系统,还需要动态申请READ_PHONE_STATE权限,用于百度导航SDK TTS播报和来电去电的互斥策略。

2授权key配置

申请到百度开放平台应用Key后,为了能够百度导航SDK正常运行,将其配置在AndroidManifest.xml的application节点内部,如下所示:

<meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="申请的Key" />
3导航SDK核心集成

导航SDK核心已经打包为一个独立的aar,命名为onsdk_all.aar,可以将其以aar module引入集成APP project,引入后,即可引用导航SDK相关类进行开发。

4导航SDK依赖库集成

导航SDK目前依赖库主要包含两方面:第三方库和百度其他库。目前这些库在提供时都是以jar包提供,实际集成时,对于第三方库,也可以采用gradle自身的引用方式。
对于百度其他库,如百度授权SDK(lbsCoreSDK.jar),因为APP可能同时集成了百度地图和百度导航sdk,那么它们可能同时集成引入这些库,所以当编译时出现Class重复时,可找到重复的Class所在的jar包,并且将该jar包移除,避免冲突。对于第三方库,在引入时可尽量引入比较新的版本,因为旧的版本可能会导致百度导航内部找不该api报错。

image-20190415164103454.png

除了上图的库,百度导航SDK还需要引入2个库,分别是recyclerview-v7包和apache包,引入方式如下:

android {
  // apache包
  useLibrary 'org.apache.http.legacy'
  ……
}
dependencies {
  ……
  // recyclerview-v7包,导航SDK必要的依赖
  compile 'com.android.support:recyclerview-v7:27.0.2'
  ……
}
5导航SDK自带TTS集成

导航SDK自带TTS能力已经打包为一个独立的aar,命名为NaviTts.aar,可以将其以aar module引入集成APP project,引入后,可以利用导航SDK提供的TTS接口进行初始化。

当不需要导航SDK自带TTS时,可以不进行集成,此时需要利用导航SDK支持外部TTS的方式进行TTS能力初始化。

6SDK和TTS授权申请配置

这里包括SDK授权和TTS授权两部分,申请时先申请SDK授权,再申请TTS授权,具体授权申请方式如下。


5.1 SDK授权申请

1. 准备材料

    1) apk包名

    2) apk签名sh1

2. 登录//lbsyun.baidu.com/apiconsole/key 申请 更详细的过程可参考说明://lbsyun.baidu.com/index.php?title=android-navsdk/guide/key

3. 记得将申请的key按照上述说明,在工程Manifest文件中进行配置,否则导航SDK将处于功能不可用状态

5.2 TTS授权申请

SDK授权申请后,可以继续申请TTS授权。

    1. 以SDK授权申请时相同账号登录 http://yuyin.baidu.com/,点击右上角的“应用管理“,将会在列表里看到SDK授权申请的APP,如下图:

    2. 点击右边的“管理包名“,填入APP的包名

    3. 截图中的App ID,就是在开发中初始化TTS能力时传入的参数之一

至此,和导航SDK集成相关的授权申请就完成了。

7so库的集成

在 main 目录下创建文件夹 jniLibs (如果有就不需要创建了),将下载文件的 armeabi 文件夹复制到这个目录下,如果已经有这个目录,将下载的 so 库复制到这个目录即可。如图所示

image-20190401113936057.png

8Android Studio配置与Gradle配置

1.由于百度导航不支持instant run,因此开发者使用的Android studio中如果有instant run功能选项请先关闭(较新版本的Android studio没有这个功能选项,可忽略),不然会造成编译失败,在设置中搜索instant run,关闭方式如下图。

image-20190401140659323.png

2.为了避免Android "64K 引用限制"引起的异常,在app的build.gradle中需要引入multidex包,并进行相关配置,并且导航SDK内部使用了annotationProcessor,同样需要在build.gradle中配置,如下。

defaultConfig {
    ……
    // 避免"64K 引用限制"
    multiDexEnabled true
    // 导航SDK内部使用了annotationProcessor,需要添加下面代码,防止编译异常
    javaCompileOptions { annotationProcessorOptions { includeCompileClasspath = true } }
}
9代码混淆
# BaiduNavi SDK
-dontoptimize
-ignorewarnings
-keeppackagenames com.baidu.**
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,LocalVariable*Table,*Annotation*,Synthetic,EnclosingMethod

-dontwarn com.baidu.**
-dontwarn com.baidu.navisdk.**
-dontwarn com.baidu.navi.**

-keep class com.baidu.** { *; }
-keep interface com.baidu.** { *; }

-keep class vi.com.gdi.** { *; }

-dontwarn com.google.protobuf.**
-keep class com.google.protobuf.** { *;}
-keep interface com.google.protobuf.** { *;}

-dontwarn com.google.android.support.v4.**
-keep class com.google.android.support.v4.** { *; }
-keep interface com.google.android.support.v4.app.** { *; }
-keep public class * extends com.google.android.support.v4.**
-keep public class * extends com.google.android.support.v4.app.Fragment

  • 文档根本没法用

  • 文档水平很差

  • 文档水平一般

  • 文档不错

  • 文档写的很好

如发现文档错误,或对此文档有更好的建议,请在下方反馈。问题咨询请前往反馈平台提交工单咨询。

提交反馈

拖动标注工具

添加矩形标注

添加箭头标注

完成

取消