初始化说明
在使用百度导航SDK任何功能之前,前需要先进行初始化,初始化方法是调用如下接口:
/**
* 初始化百度导航.
*
* @param context 建议是应用的context
* @param sdcardRootPath 系统SD卡根目录路径
* @param appFolderName 应用在SD卡中的目录名
* @param naviInitListener 百度导航初始化监听器
*/
BNaviInitConfig config = new BNaviInitConfig.Builder()
.sdcardRootPath(sdcardRootPath)
.appFolderName(appFolderName)
.naviInitListener(new IBaiduNaviManager.INaviInitListener())
.build();
BaiduNaviManagerFactory.getBaiduNaviManager().init(context, config);
初始化接口init详细说明如:
/** * 初始化百度导航. * * @param context 建议是应用的context * @param config 初始化配置 */ void init(final Context context, BNaviInitConfig config);
初始化结果监听
通过传入的INaviInitListener 接口对象接收初始化的返回结果,其包括授权校验结果、初始化开始、成功以及失败4种情况,具体定义如:
interface INaviInitListener {
/**
* 授权校验结果
*
* @param status 0 表示成功,其他表示失败
* @param msg 具体授权校验失败信息
*/
void onAuthResult(int status, String msg);
/**
* 百度导航初始化开始
*/
void initStart();
/**
* 百度导航初始化成功
*/
void initSuccess();
/**
* 百度导航初始化失败
*/
void initFailed(int errorCode);
}
初始化成功后,就可以进行后续的开发工作。
示例代码如下
BNaviInitConfig config = new BNaviInitConfig.Builder()
.sdcardRootPath(sdcardRootPath)
.appFolderName(appFolderName)
.naviInitListener(new IBaiduNaviManager.INaviInitListener() {
@Override
public void onAuthResult(int status, String msg) {
String result;
if (0 == status) {
result = "key校验成功!";
} else {
result = "key校验失败, " + msg;
}
Toast.makeText(DemoMainActivity.this, result, Toast.LENGTH_LONG).show();
}
@Override
public void initStart() {
Toast.makeText(DemoMainActivity.this.getApplicationContext(),
"百度导航引擎初始化开始", Toast.LENGTH_SHORT).show();
}
@Override
public void initSuccess() {
Toast.makeText(DemoMainActivity.this.getApplicationContext(),
"百度导航引擎初始化成功", Toast.LENGTH_SHORT).show();
hasInitSuccess = true;
// 初始化tts
initTTS();
}
@Override
public void initFailed(int errCode) {
Toast.makeText(DemoMainActivity.this.getApplicationContext(),
"百度导航引擎初始化失败 " + errCode, Toast.LENGTH_SHORT).show();
}
})
.build();
BaiduNaviManagerFactory.getBaiduNaviManager().init(context, config);
路线规划并通知发起专业导航
示例代码如下
BNRoutePlanNode sNode = new BNRoutePlanNode.Builder()
.latitude(40.05087)
.longitude(116.30142)
.name("百度大厦")
.description("百度大厦")
.coordinateType(CoordinateType.GCJ02)
.build();
BNRoutePlanNode eNode = new BNRoutePlanNode.Builder()
.latitude(39.90882)
.longitude(116.39750)
.name("北京天安门")
.description("北京天安门")
.coordinateType(CoordinateType.GCJ02)
.build();
List<BNRoutePlanNode> list = new ArrayList<>();
list.add(sNode);
list.add(eNode);
BaiduNaviManagerFactory.getRoutePlanManager().routeplanToNavi(
list,
IBNRoutePlanManager.RoutePlanPreference.ROUTE_PLAN_PREFERENCE_DEFAULT,
null,
new Handler(Looper.getMainLooper()) {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case IBNRoutePlanManager.MSG_NAVI_ROUTE_PLAN_START:
Toast.makeText(DemoMainActivity.this.getApplicationContext(),
"算路开始", Toast.LENGTH_SHORT).show();
break;
case IBNRoutePlanManager.MSG_NAVI_ROUTE_PLAN_SUCCESS:
Toast.makeText(DemoMainActivity.this.getApplicationContext(),
"算路成功", Toast.LENGTH_SHORT).show();
break;
case IBNRoutePlanManager.MSG_NAVI_ROUTE_PLAN_FAILED:
Toast.makeText(DemoMainActivity.this.getApplicationContext(),
"算路失败", Toast.LENGTH_SHORT).show();
break;
case IBNRoutePlanManager.MSG_NAVI_ROUTE_PLAN_TO_NAVI:
Toast.makeText(DemoMainActivity.this.getApplicationContext(),
"算路成功准备进入导航", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(DemoMainActivity.this,
DemoGuideActivity.class);
startActivity(intent);
break;
default:
// nothing
break;
}
}
});