2

我们确实遇到了与 Android 的 SKNavigationState 更新不一致的情况。

有时我们在开始导航后得到不一致的 SKNavigationState 对象,因此导航停止工作。

奇怪的是,有时它确实有效。首先,我们怀疑某些构建已损坏,但我们有一些构建可以正常工作,但即使部署到同一设备多次也无法正常工作。

我们尝试了 SDK 版本 2.5.0.、2.5.1 和 3.0.2 以及我们的两个版本的代码。我们有相同版本组合的工作状态和非工作状态,因此我们认为这不会产生影响。

此外,我们检查了 SKAdvisorSettings 初始化和 gradle 文件。

这是一个已知问题吗?任何人都知道如何解决它?

    SKAdvisorSettings Initialization:
    public void setAdvicesAndStartNavigation(Application application, SKMapSurfaceView skMapSurfaceView) {
        […]

        initializeTextToSpeech(application);
        final SKAdvisorSettings advisorSettings = new SKAdvisorSettings();

        if (application.getResources().getConfiguration().locale.getLanguage().equals(Locale.GERMAN.toString())) {
            advisorSettings.setLanguage(SKAdvisorSettings.SKAdvisorLanguage.LANGUAGE_DE);
            advisorSettings.setAdvisorVoice("de");
        } else if (application.getResources().getConfiguration().locale.getLanguage().equals(Locale.FRENCH.toString())) {
            advisorSettings.setLanguage(SKAdvisorSettings.SKAdvisorLanguage.LANGUAGE_FR);
            advisorSettings.setAdvisorVoice("fr");
        } else if (application.getResources().getConfiguration().locale.getLanguage().equals("es")) {
            advisorSettings.setLanguage(SKAdvisorSettings.SKAdvisorLanguage.LANGUAGE_ES);
            advisorSettings.setAdvisorVoice("es");
        } else {
            advisorSettings.setLanguage(SKAdvisorSettings.SKAdvisorLanguage.LANGUAGE_EN);
            advisorSettings.setAdvisorVoice("en");
        }

        advisorSettings.setAdvisorConfigPath([…].getMapResourcesDirPath() + "/Advisor");
        advisorSettings.setResourcePath([…].getMapResourcesDirPath() + "/Advisor/Languages");

        advisorSettings.setAdvisorType(SKAdvisorSettings.SKAdvisorType.TEXT_TO_SPEECH);
        SKRouteManager.getInstance().setAudioAdvisorSettings(advisorSettings);

        launchNavigation(application, skMapSurfaceView);
    }


    Example #1: incorrect distance
    SKNavigationState [adviceID=-1,
    currentSpeed=0.0,
    currentSpeedLimit=0.0,
    countryCode=,
    lastAdvice=false,
    showSignPost=false,
    currentAdviceCurrentStreetName=,
    currentAdviceNextStreetName=,
    currentAdviceCurrentOsmStreetType=UNDEFINED,
    currentAdviceNextOsmStreetType=UNDEFINED,
    currentAdviceDistanceToAdvice=-1635951600, // <------ incorrect
    currentAdviceTimeToDestination=-1636254096,
    currentAdviceDistanceToDestination=-1635951952,
    currentAdviceVisualAdviceFile=,
    currentAdviceAudioAdvices=[None],
    currentAdviceExitNumber=,
    nextAdviceCurrentStreetName=,
    nextAdviceNextStreetName=,
    nextAdviceDistanceToAdvice=-1635998000,
    nextAdviceVisualAdviceFile=,
    nextAdviceCurrentOsmStreetType=UNDEFINED,
    nextAdviceNextOsmStreetType=UNDEFINED,
    distanceToDestination=0.0,
    firstCrossingDescriptor=SKCrossingDescriptor [crossingType=0,
    routeAngle=0.0,
    turnToRight=false,
    directionUK=false,
    allowedRoutesAngles=null,
    forbiddenRoutesAngles=null],
    secondCrossingDescriptor=SKCrossingDescriptor [crossingType=0,
    routeAngle=0.0,
    turnToRight=false,
    directionUK=false,
    allowedRoutesAngles=null,
    forbiddenRoutesAngles=null],
    adviceInstruction=,
    viaPointsInfo=null,
    isLastVisualAdvice=false,
    currentStreetDirection=DIRECTION_INVALID,
    nextStreetDirection=DIRECTION_INVALID]

    Example #2: distance
    SKNavigationState [adviceID=0,
    currentSpeed=0.0,
    currentSpeedLimit=0.0,
    countryCode=DE,
    lastAdvice=false,
    showSignPost=true,
    currentAdviceCurrentStreetName=,
    currentAdviceNextStreetName=,
    currentAdviceCurrentOsmStreetType=TRACK,
    currentAdviceNextOsmStreetType=UNDEFINED,
    currentAdviceDistanceToAdvice=130, // <------ correct
    currentAdviceTimeToDestination=22,
    currentAdviceDistanceToDestination=130,
    currentAdviceVisualAdviceFile=/storage/emulated/0/Android/data/[…].debug/files/SKMaps//Advisor/Visual/153844/0.png,
    currentAdviceAudioAdvices=[in_open,
    130_meters,
    you_will_reach_your_destination],
    currentAdviceExitNumber=,
    nextAdviceCurrentStreetName=,
    nextAdviceNextStreetName=,
    nextAdviceDistanceToAdvice=-1582944816,
    nextAdviceVisualAdviceFile=,
    nextAdviceCurrentOsmStreetType=UNDEFINED,
    nextAdviceNextOsmStreetType=UNDEFINED,
    distanceToDestination=130.0,
    firstCrossingDescriptor=SKCrossingDescriptor [crossingType=0,
    routeAngle=90.0,
    turnToRight=false,
    directionUK=false,
    allowedRoutesAngles=null,
    forbiddenRoutesAngles=null],
    secondCrossingDescriptor=SKCrossingDescriptor [crossingType=0,
    routeAngle=0.0,
    turnToRight=false,
    directionUK=false,
    allowedRoutesAngles=null,
    forbiddenRoutesAngles=null],
    adviceInstruction=in 130 meters you will reach your destination,
    viaPointsInfo=null]
4

0 回答 0