Skip to content

📱 Production Showcase: Speed Assistant App ​

The Flagship Consumer Telematics Reference Implementation Powered by Veg Sahayyak SDK.

Speed Assistant App Logo

Speed Assistant App

A high-precision mobile speedometer and driving safety HUD application designed for daily commuters, highway drivers, and fleet operators.


🌟 Overview & Reference Role ​

The Speed Assistant App serves as the primary production reference implementation of the Veg Sahayyak SDK (com.vegsahayyak:speed-core and com.vegsahayyak:speed-ui).

Instead of maintaining a separate in-house telematics pipeline, the Speed Assistant consumer app delegates all GPS velocity calculation, signal noise filtering, threshold monitoring, and speedometer gauge rendering directly to the SDK.


⚡ Technical Benchmarks in Production ​

DimensionEngineering GuaranteeSDK Implementation
Memory Footprint< 5 MB runtime heapHeadless core engine with zero memory leaks and minimal object allocations in the critical location loop.
UI Render PerformanceFluid 60 FPSHardware-accelerated Canvas rendering via @Composable SpeedGauge.
GPS Velocity SmoothingProprietary Native EMAEliminates raw sensor jitter without introducing perceptible lag.
Threshold StabilityDual Schmitt HysteresisProprietary upper/lower bounds eliminate alarm flutter.
Lifecycle ComplianceAndroid 10 to 15+ SafeNative FOREGROUND_SERVICE_LOCATION handling with zero unneeded wake-locks when stationary.

🛠️ How the Production App Implements the SDK ​

The reference application integrates the SDK using standard Kotlin Coroutines and Jetpack Compose state collection:

1. Initialization in Application / Activity ​

kotlin
// Initialize and configure headless telematics
val speedAssistant = SpeedAssistant.with(context, "YOUR_JWT_LICENSE")
    .setWarningSpeedThreshold(80f)      // Alert threshold in km/h
    .setMinWarningSpeedThreshold(30f)   // Minimum corridor threshold
    .setColorScheme(
        SpeedColorScheme(
            safeColor = 0xFF00E676.toInt(),
            overSpeedColor = 0xFFFF1744.toInt(),
            underSpeedColor = 0xFF00E5FF.toInt()
        )
    )

// Start headless foreground service
speedAssistant.start()

2. Rendering the HUD Gauge in Jetpack Compose ​

kotlin
@Composable
fun DriverDashboardScreen() {
    val speedState by SpeedAssistant.observeFlow()
        .collectAsState(initial = SpeedData.SpeedUnavailable)

    val currentSpeedKmh = (speedState as? SpeedData.SpeedChanged)?.let { 
        it.speedMps * 3.6f 
    } ?: 0f

    val isOverLimit = (speedState as? SpeedData.SpeedChanged)?.isOverLimit ?: false

    Column(
        modifier = Modifier
            .fillMaxSize()
            .background(Color.Black),
        horizontalAlignment = Alignment.CenterHorizontally,
        verticalArrangement = Arrangement.Center
    ) {
        SpeedGauge(
            speed = currentSpeedKmh,
            warningSpeed = 80f,
            minSpeedLimit = 30f,
            isTrackingActive = true,
            isOverLimit = isOverLimit,
            unitLabel = "km/h",
            themeMode = ThemeMode.OLED_BLACK
        )
    }
}

To see the user interface, design, and feature set in action:

Released under Commercial Enterprise License. Follow us on LinkedIn | Contact Us.