我们刚刚使用B2B-App升级到Skobbler SDK 2.4。现在我们遇到了以下问题:
在计算Route时,应用程序在调用 SKRouteManager.getInstance()。calculateRoute 后崩溃时出现空指针异常。
以下是代码:(在升级之前,它工作得非常好......)
SKRouteSettings route = new SKRouteSettings();
route.setStartCoordinate(ApplicationData.getInstance().getCurrentCoordinate());
route.setDestinationCoordinate(goal);
route.setNoOfRoutes(1);
route.setRouteMode(SKRouteSettings.SKRouteMode.PEDESTRIAN);
route.setAlternativeRouteModes(new ArrayList<SKRouteAlternativeSettings>()); route.setRouteConnectionMode(SKRouteSettings.SKRouteConnectionMode.OFFLINE);
route.setRouteExposed(true);
route.setViaPoints(new ArrayList<SKViaPoint>());
SKRouteManager.getInstance().setRouteListener(this);
SKRouteManager.getInstance().setAudioAdvisorSettings(new SKAdvisorSettings());
SKRouteManager.getInstance().calculateRoute(route);
空的ArrayLists是用于故障排除的测试。
2.4是否存在已知问题或更新有什么其他变化?
答案 0 :(得分:2)
我和你有完全相同的问题。路由使用旧SDK,而不是使用新SDK。
经过这一步之后,我认为你的问题源于这一行:
SKRouteManager.getInstance().setAudioAdvisorSettings(new SKAdvisorSettings());
请尝试使用此代码,以设置音频顾问程序:
final SKAdvisorSettings advisorSettings = new SKAdvisorSettings();
advisorSettings.setLanguage(SKAdvisorSettings.SKAdvisorLanguage.LANGUAGE_EN);
advisorSettings.setAdvisorConfigPath(context.getFilesDir() + "/SKMaps/Advisor");
advisorSettings.setResourcePath(context.getFilesDir() + "/SKMaps/Advisor/Languages");
advisorSettings.setAdvisorVoice("en");
advisorSettings.setAdvisorType(SKAdvisorSettings.SKAdvisorType.AUDIO_FILES);
SKRouteManager.getInstance().setAudioAdvisorSettings(advisorSettings);
此代码需要在计算路线之前调用一段时间。我喜欢把它放在代码的其余部分之上,以保持它们分开(即我刚发布的块可以在你发布的代码的正上方)
您可能想要做的唯一更改是更改这些行:
advisorSettings.setAdvisorConfigPath(context.getFilesDir() + "/SKMaps/Advisor");
advisorSettings.setResourcePath(context.getFilesDir() + "/SKMaps/Advisor/Languages");
这样他们就可以指向SKMaps / Advisor文件夹的正确位置。我总是使用内部应用程序存储,因此context.getFilesDir()将始终适用于我。如果您使用外部存储或将SKMaps文件存储在其他位置,这将不适合您。
希望这会有所帮助:)