百度导航引擎初始化失败的原因有如下几点需要注意:
1.manifest中权限是否添加正确,需要添加的权限有:
<!-- 手机震动权限 --> <uses-permission android:name="android.permission.BODY_SENSORS"/> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <uses-permission android:name="android.permission.BAIDU_LOCATION_SERVICE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCES_MOCK_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_GPS" /> <!-- SDK1.5需要android.permission.GET_TASKS权限判断本程序是否为当前运行的应用? --> <uses-permission android:name="android.permission.GET_TASKS" /> <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.PROCESS_OUTGOING_CALLS" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> <uses-permission android:name="android.permission.RECORD_AUDIO" /> <!-- 摄影机 --> <uses-permission android:name="android.permission.CAMERA" />
2.增加百度LBS密钥,将下面的key值修改为我们自己在LBS开放平台申请的AK。
<meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="your key" />3.定位用的service:
<service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote" />4.将我们下载的工具包中assets中的文件拷贝至我们自己项目assets目录中
5.将工具包中libs中jar包和so库拷贝至项目libs目录中,之后将Jar包添加进项目依赖库、并在build.gradle文件中android{}中添加
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
或把.jar包拷贝到libs目录下,.so文件拷贝到main文件夹下jniLibs文件夹下
6.初始化 在使用SDK前,应该先进行百度服务授权和引擎初始化。已经内置了tts播报功能,如果需要使用自己的tts来进行播报,需要传入对应tts回调。具体回调请参考demo:
private void initNavi() { // 申请权限 if (android.os.Build.VERSION.SDK_INT >= 23) { if (!hasBasePhoneAuth()) { this.requestPermissions(authBaseArr, authBaseRequestCode); return; } } BaiduNaviManager.getInstance().init(this, mSDCardPath, APP_FOLDER_NAME, new BaiduNaviManager.NaviInitListener() { @Override public void onAuthResult(int status, String msg) { if (0 == status) { authinfo = "key校验成功!"; } else { authinfo = "key校验失败, " + msg; } MainActivity.this.runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(MainActivity.this, authinfo, Toast.LENGTH_LONG).show(); } }); } public void initSuccess() { Toast.makeText(MainActivity.this, "百度导航引擎初始化成功", Toast.LENGTH_SHORT).show(); hasInitSuccess = true; initSetting(); } public void initStart() { Toast.makeText(MainActivity.this, "百度导航引擎初始化开始", Toast.LENGTH_SHORT).show(); } public void initFailed() { Toast.makeText(MainActivity.this, "百度导航引擎初始化失败", Toast.LENGTH_SHORT).show(); } }, null, ttsHandler, ttsPlayStateListener); } 7.如果需要语音播报 需要在导航TTS平台中进行注册申请。注意此处的应用签名为MD5,AK为在LBS开发平台申请到的AK。MD5签名仅包含字母,不包含分号 申请成功出现以下图片: