Stegräknare i mobilappar: vad det är, hur det fungerar och var det används

Författare: IT Sectr Publicerad: 2026-03-25 Lästid: 8 min

Stegräknaren (pedometer) i mobilappar är en mjukvaru-hårdvarumekanism för att räkna användarens steg baserat på data från accelerometern och gyroskopet. Moderna smartphones använder maskininlärningsalgoritmer i kombination med sensorer för att exakt bestämma gång, löpning och andra typer av fysisk aktivitet. Enligt data från Apple HealthKit Documentation, 2025 når noggrannheten för stegräkning på moderna enheter 95–97% vid normal gång.

Huvudpunkter

  • Stegräknare (pedometer) — funktion för att räkna steg baserat på analys av data från accelerometer, gyroskop och maskininlärningsalgoritmer.
  • Moderna stegräknaralgoritmer kan skilja mellan gång, löpning och trappgång, och automatiskt bestämma användarens aktivitetstyp.
  • Huvudsensorn för stegräkning är accelerometern, som registrerar acceleration längs tre axlar vid varje steg.
  • På iOS får utvecklare tillgång till stegräknaren via CMPedometer från Core Motion, på Android — via Sensor API med TYPE_STEP_COUNTER.
  • Noggrannheten för stegräkning beror på enhetens placering: stegräknaren fungerar mest exakt när smartphonen bärs i byxfickan eller på bältet.

Vad är en stegräknare i en mobilapp?

Stegräknare (pedometer) i mobilappar är en funktion som bestämmer antalet steg för användaren baserat på data från smartphonens inbyggda rörelsesensorer. Till skillnad från mekaniska stegräknare från förr använder den mobila stegräknaren mikro-elektromekaniska sensorer (MEMS) och algoritmer för digital signalbehandling för att exakt räkna rörelser. Moderna implementeringar räknar inte bara steg, utan klassificerar även aktiviteten: gång, löpning, trappgång.

Integreringen av stegräknaren i mobila enheter möjliggjordes tack vare lanseringen 2013 av M7-rörelsekoprocessorn i iPhone 5s, som kontinuerligt samlade in data från sensorer med minimal energiförbrukning. Idag har alla moderna smartphones hårdvarustöd för stegräkning på sensorhub-nivå — ett dedikerat chip som behandlar data från tröghetssensorer utan att väcka huvudprocessorn.

Hur fungerar stegräkning på en smartphone

Stegräkning på en smartphone baseras på analys av accelerometersignaler, som mäter enhetens acceleration längs tre vinkelräta axlar (X, Y, Z). Vid gång skapar varje steg ett karakteristiskt accelerationsmönster: först en topp uppåt när benet lyfts, sedan en topp nedåt vid landningen. Stegfrekvensen (kadensen) är 100–130 steg/min för gång och 150–180 steg/min för löpning, med en accelerationsamplitud på 2–6 m/s².

Behandling av accelerometersignalen

Den råa signalen från accelerometern innehåller brus och högfrekventa störningar, därför är det första steget i behandlingen ett lågpassfilter (low-pass filter) med en gränsfrekvens på 3–5 Hz. Efter filtrering beräknas accelerationsvektorn: a = sqrt(x² + y² + z²), som extraherar acceleration relaterad till rörelse, oberoende av enhetens orientering. Därefter detekterar algoritmen lokala maxima i signalen — varje maximum motsvarar ett steg.

För att minska falsklarm (t.ex. vid skakning i transport) tillämpas ytterligare kriterier: minimal stegamplitud (vanligtvis >1,2 m/s²), minimalt intervall mellan steg (300–400 ms för gång) och kontroll av signalens periodicitet via autokorrelation. Om tidsintervallen mellan topparna är oregelbundna markeras sekvensen som slumpmässiga rörelser och räknas inte som steg.

Detektering av steg via accelerometer

Grundalgoritmen för stegdetektering använder tröskeldetekteringsmetoden: systemet söker efter tillfällen då accelerometersignalen överstiger en inställd tröskel och sedan återgår till vilonivån. Varje sådan händelse betraktas som ett potentiellt steg. Det finns två tillvägagångssätt: toppdetektering (peak detection) och nollgenomgång (zero-crossing). Toppdetektering registrerar maximum i signalen, medan zero-crossing registrerar tillfällen då signalen passerar medelvärdet, vilket beror mindre på stegamplituden.

Tröskelmetoder och adaptiva algoritmer

Moderna stegräkningsalgoritmer använder en adaptiv tröskel som automatiskt anpassar sig till användarens gångstil. Systemet analyserar signalens varians under de senaste 2–3 sekunderna och beräknar den dynamiska tröskeln som standardavvikelsen (RMS) multiplicerad med en koefficient. Detta gör det möjligt att korrekt räkna steg både vid långsam promenad och vid kraftfull löpning utan korskalibrering mellan aktivitetstyper.

Stegräkningsalgoritmer och maskininlärning

Moderna implementeringar av stegräknaren använder inte bara toppdetektering, utan även maskininlärning för klassificering av rörelsemönster. Neurala nätverksmodeller tränas på tusentals timmar av inspelningar av verkliga rörelser från olika scenarier: gång på plan yta, trappgång, löpning, resor med transportmedel. Inmatningsegenskaperna är tidsserier från accelerometern och gyroskopet, och utmatningen är sannolikheten att det aktuella signalsegmentet motsvarar mänsklig rörelse.

Neurala nätverksmodeller för aktivitetsklassificering

Enligt data från Google Activity Recognition-forskningen uppnår modeller baserade på konvolutionella neurala nätverk (CNN) en noggrannhet på 98% för igenkänning av gång på testdataset. På Apple-enheter används Core ML med modellen Activity Classification, tränad på data från över 100 000 frivilliga. Optimerade modeller arbetar direkt på enheten (on-device inference), vilket säkerställer omedelbar behandling och bevarande av användarens integritet.

swift
import CoreMotion

class PedometerObserver {
    private let pedometer = CMPedometer()

    func startTracking() {
        guard CMPedometer.isStepCountingAvailable() else { return }
        
        pedometer.startUpdates(from: Date()) { data, error in
            guard let data = data else { return }
            
            let steps = data.numberOfSteps.intValue
            let distance = data.distance?.doubleValue
            let floorsAscended = data.floorsAscended?.intValue
            
            // Uppdatera UI med antal steg
            DispatchQueue.main.async {
                // self.stepsLabel.text = "\(steps) steg"
            }
        }
    }

    func stopTracking() {
        pedometer.stopUpdates()
    }
}

Stegräknare på iOS och Android: API och möjligheter

iOS används klassen CMPedometer från Core Motion-ramverket för åtkomst till stegräknaren. CMPedometer tillhandahåller inte bara antalet steg, utan även tillryggalagd sträcka, antal våningar (stigningar), gångtakt och aktivitetstid. Data är tillgängliga både i realtid (startUpdates) och för valfri period i det förflutna (queryPedometerData). Rörelsekoprocessorn (M-serien) behandlar sensordata på hårdvarunivå, vilket minskar energiförbrukningen med 80% jämfört med mjukvarubehandling.

Android realiseras arbetet med stegräknaren via två hårdvarusensorer: TYPE_STEP_COUNTER (kumulativ stegräknare sedan start) och TYPE_STEP_DETECTOR (generering av händelse för varje steg). TYPE_STEP_COUNTER kräver ingen kalibrering och förbrukar ingen processorenergi — data uppdateras på hårdvarunivå på sensorhubben. För åtkomst till ackumulerad stegstatistik för en dag används Google Fit API med posten DataType.TYPE_STEP_COUNT_DELTA.

kotlin
import android.hardware.Sensor
import android.hardware.SensorEvent
import android.hardware.SensorEventListener
import android.hardware.SensorManager

class StepCounter(
    private val sensorManager: SensorManager
) : SensorEventListener {

    private var totalSteps = 0
    private var previousSteps = -1

    fun startListening() {
        val sensor = sensorManager.getDefaultSensor(Sensor.TYPE_STEP_COUNTER)
        sensor?.let {
            sensorManager.registerListener(this, it, SensorManager.SENSOR_DELAY_NORMAL)
        }
    }

    override fun onSensorChanged(event: SensorEvent) {
        if (previousSteps < 0) {
            previousSteps = event.values[0].toInt()
        }
        val currentSteps = event.values[0].toInt()
        totalSteps = currentSteps - previousSteps
    }

    fun getStepCount(): Int = totalSteps

    override fun onAccuracyChanged(sensor: Sensor?, accuracy: Int) {}
}

Noggrannhet och begränsningar för mobil stegräknare

Noggrannheten för stegräknaren beror på flera faktorer: smartphonens placering (i handen, fickan eller väskan), aktivitetstyp (gång, löpning, trappgång) och sensorernas kvalitet. Vid bärande av smartphonen i byxfickan är noggrannheten 93–97%, i väska eller ryggsäck sjunker den till 70–85%. Användarens gångstil påverkar också noggrannheten: korta steg med liten accelerationsamplitud ger fler fel än jämn gång.

De huvudsakliga begränsningarna för mobila stegräknare inkluderar: oförmåga att räkna steg vid mycket långsam rörelse (<1,5 km/h), falsklarm från resor med transportmedel, minskad noggrannhet vid låghastighetslöpning (joggning) och påverkan av gestikulering under samtal. För att minimera fel använder moderna appar en kombination av sensorer (accelerometer + gyroskop + barometer) och maskininlärning för att filtrera bort artefakter. Barometern hjälper till exempel att bestämma trappgång och höjdförändring, vilket utesluter falska steg i hissen.

Vanliga frågor

Hur fungerar en stegräknare i telefonen?

Stegräknaren i telefonen använder accelerometern, som registrerar acceleration vid varje steg. Algoritmen analyserar accelerationstopparna längs tre axlar, filtrerar brus och bestämmer antalet steg. Moderna modeller använder även gyroskop och maskininlärning för att öka noggrannheten och klassificera aktivitet.

Hur noggrann är stegräknaren på en smartphone?

Vid bärande av smartphonen i byxfickan når noggrannheten 95–97% vid vanlig gång. I väska eller ryggsäck sjunker noggrannheten till 70–85%. Gångstil och underlagstyp påverkar också noggrannheten — ojämn terräng kan orsaka fel på upp till 10–15%.

Kan en stegräknare fungera utan internet?

Ja, stegräknaren fungerar helt autonomt utan internetanslutning. Alla beräkningar utförs på enheten med inbyggda sensorer. Internet kan behövas endast för att synkronisera data med molntjänster för fitnessappar eller för att visa en ruttkarta.

Varför visar stegräknaren olika siffror i olika appar?

Olika appar använder olika algoritmer för att behandla sensordata, trösklar för stegdetektering och filtreringsmetoder. Vissa appar räknar steg baserat på råa accelerometerdata, andra — via system-API:er (TYPE_STEP_COUNTER), och skillnaden i räkning kan uppgå till 10–15%.

Hur får man åtkomst till stegräknaren i en Android-app?

Android använder du sensorn TYPE_STEP_COUNTER via Sensor API för åtkomst till stegräknaren — den ger det kumulativa antalet steg sedan enhetens senaste omstart. För åtkomst till steg för en specifik dag, integrera Google Fit API med datatypen TYPE_STEP_COUNT_DELTA.

Sammanfattning

  • Stegräknare (pedometer) — en funktion hos mobila enheter som bestämmer antalet steg baserat på data från MEMS-accelerometern och maskininlärningsalgoritmer.
  • Huvudmetoden för stegräkning är toppdetektering och nollgenomgång i accelerometersignalen med efterföljande artefaktfiltrering och adaptiv tröskel.
  • Moderna implementeringar använder konvolutionella neurala nätverk för att klassificera gång, löpning och trappgång med en noggrannhet på upp till 98%.
  • På iOS sker åtkomst till stegräknaren via CMPedometer (Core Motion), på Android — via TYPE_STEP_COUNTER och Google Fit API.
  • Hårdvarubaserad stegräkning på sensorhub-nivå väcker inte huvudprocessorn och förbrukar 80% mindre energi jämfört med mjukvarubehandling.
  • Noggrannheten för stegräknaren beror på enhetens placering: i byxfickan — upp till 97%, i väskan — 70–85%. Ojämn terräng och långsam gång minskar också noggrannheten.
  • För att minimera fel används en kombination av sensorer: accelerometer + gyroskop + barometer, vilket gör det möjligt att eliminera falska steg vid resor med transportmedel och detektera trappgång.

Vi utvecklar en mobil applikation nyckelfärdigt

IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.

Diskutera projektet

Läs också