[Android][Google Maps Platform Navigation SDK] Navigation sound at start sometimes missing
22:30 25 Nov 2025

Please check for me if the code is correct, the function call position is reasonable.

Because there is currently a problem that the navigation sound when starting Navigation is sometimes absent.

Expect: The navigation sound must always be played when starting navigation
SDK version: 5.3.2

suspend fun initializeNavApi() {
    if (isNavigatorInitialized) {
        return
    }

    logMessage(message = "ODRD Navigation SDK is initializing")
    suspendCoroutine { continuation ->
        NavigationApi.getNavigator(
            application,
            object : NavigationApi.NavigatorListener {
                override fun onNavigatorReady(navigatorResult: Navigator) {
                    logMessage(message = "ODRD Navigation SDK initialized successfully")
                    navigator = navigatorResult
                    coroutineScope.launch(Dispatchers.Main) {
                        setAudioGuidance(cdgPreferencesDataSource.isMutedVoiceNavigator.first())
                    }
                    completableDeferredNavigator.complete(navigatorResult)
                    isSdkReady.tryEmit(isNavigatorInitialized && isVehicleReporterInitialized && isLocationTrackingEnabled)
                    continuation.resume(Unit)
                }

                override fun onError(@NavigationApi.ErrorCode errorCode: Int) {
                    logMessage(message = "ODRD Navigation SDK initialized failed with error code = $errorCode")
                    completableDeferredNavigator.completeExceptionally(Exception("initializeNavApi with error code = $errorCode"))
                    continuation.resumeWithException(Exception("initializeNavApi with error code = $errorCode"))
                }
            },
        )
    }
}

fun startNavigation(odrdWaypoint: OdrdWaypoint) {
        logMessage(message = "ODRD Navigation SDK is starting navigation to odrdWaypoint: $odrdWaypoint, navigator: $navigator")

        val wayPoint = odrdWaypoint.toSdkModel()
        if (wayPoint == null) {
            stopNavigation()
            return
        }

        val routingOptions = RoutingOptions()
            .travelMode(RoutingOptions.TravelMode.TAXI)
            .routingStrategy(RoutingOptions.RoutingStrategy.DEFAULT_BEST)
        requireNavigator.setDestination(wayPoint, routingOptions)
            .setOnResultListener { routeStatus ->
                logMessage(message = "ODRD Navigation SDK started navigation with routeStatus: $routeStatus")
                coroutineScope.launch(Dispatchers.Main) {
                    setAudioGuidance(cdgPreferencesDataSource.isMutedVoiceNavigator.first())
                    requireNavigator.startGuidance()
                }
            }

    }

suspend fun setAudioGuidance(isMuted: Boolean) {
        logMessage(message = "ODRD Vehicle Reporter > setAudioGuidance, isMuted: $isMuted")
        if (!isNavigatorInitialized) {
            logMessage(message = "ODRD Vehicle Reporter > setAudioGuidance, isNavigatorInitialized: $isNavigatorInitialized")
            return
        }
        cdgPreferencesDataSource.setIsMutedVoiceNavigator(isMuted)
        if (isMuted) {
            requireNavigator.setAudioGuidance(SILENT)
        } else {
            requireNavigator.setAudioGuidance(VOICE_ALERTS_AND_GUIDANCE)
        }
    }
android