A lépésszámláló (pedometer) a mobilalkalmazásokban egy szoftver-hardver mechanizmus a felhasználó lépéseinek számlálására a gyorsulásmérő és giroszkóp adatai alapján. A modern okostelefonok gépi tanulási algoritmusokat használnak a szenzorokkal kombinálva a séta, futás és más fizikai tevékenységek pontos meghatározására. A Apple HealthKit Documentation, 2025 adatai szerint a lépésszámlálás pontossága a modern eszközökön normál séta esetén eléri a 95–97%-ot.
Főbb pontok
Lépésszámláló (pedometer) a mobilalkalmazásokban egy olyan funkció, amely meghatározza a felhasználó lépéseinek számát az okostelefon beépített mozgásérzékelőitől származó adatok alapján. A múlt mechanikus lépésszámlálóival ellentétben a mobil lépésszámláló mikro-elektromechanikai szenzorokat (MEMS) és digitális jelfeldolgozó algoritmusokat használ a mozgások pontos számlálásához. A modern implementációk nemcsak számolják a lépéseket, hanem osztályozzák a tevékenységet: séta, futás, lépcsőzés.
A lépésszámláló mobil eszközökbe történő integrációja a 2013-ban megjelent M7 mozgás-koprocesszornak köszönhetően vált lehetővé az iPhone 5s-ben, amely minimális energiafogyasztás mellett folyamatosan gyűjtötte a szenzoradatokat. Ma minden modern okostelefon rendelkezik hardveres támogatással a lépésszámláláshoz a szenzorhub szintjén — egy dedikált chip, amely a tehetetlenségi érzékelők adatait dolgozza fel anélkül, hogy felébresztené a fő processzort.
Lépésszámlálás okostelefonon a gyorsulásmérő jeleinek elemzésén alapul, amely az eszköz gyorsulását három merőleges tengely (X, Y, Z) mentén méri. Séta közben minden lépés egy jellegzetes gyorsulási mintát hoz létre: először egy felfelé csúcs a láb emelésekor, majd egy lefelé csúcs a landoláskor. A lépések frekvenciája (kadencia) sétánál 100–130 lépés/perc, futásnál 150–180 lépés/perc, a gyorsulás amplitúdója pedig 2–6 m/s².
A gyorsulásmérő nyers jele zajt és nagyfrekvenciás zavarokat tartalmaz, ezért a feldolgozás első lépése egy aluláteresztő szűrő (low-pass filter) 3–5 Hz-es vágási frekvenciával. Szűrés után kiszámításra kerül a gyorsulásvektor: a = sqrt(x² + y² + z²), amely kivonja a mozgással kapcsolatos gyorsulást, függetlenül az eszköz tájolásától. Ezután az algoritmus lokális maximumokat detektál a jelben — minden maximum egy lépésnek felel meg.
A téves riasztások csökkentése érdekében (például közlekedési eszközön való rázódáskor) további kritériumok alkalmazandók: minimális lépésamplitúdó (általában >1,2 m/s²), minimális intervallum a lépések között (300–400 ms sétához) és a jel periodicitásának ellenőrzése autokorrelációval. Ha a csúcsok közötti időintervallumok szabálytalanok, a sorozat véletlenszerű mozgásként kerül megjelölésre, és nem számít lépésnek.
Az alap lépésdetektáló algoritmus küszöbérték-detektálási módszert használ: a rendszer olyan pillanatokat keres, amikor a gyorsulásmérő jele meghaladja a beállított küszöböt, majd visszatér a nyugalmi szintre. Minden ilyen esemény potenciális lépésnek minősül. Két megközelítés létezik: csúcsdetektálás (peak detection) és nullátmenet (zero-crossing). A csúcsdetektálás a jel maximumait rögzíti, a zero-crossing pedig a jel átlagos értéken való áthaladásának pillanatait, ami kevésbé függ a lépés amplitúdójától.
A modern lépésszámláló algoritmusok adaptív küszöböt használnak, amely automatikusan alkalmazkodik a felhasználó járásstílusához. A rendszer elemzi a jel varianciáját az utolsó 2–3 másodpercben, és kiszámítja a dinamikus küszöböt a szórás (RMS) és egy együttható szorzataként. Ez lehetővé teszi a lépések pontos számlálását mind lassú sétánál, mind erőteljes futásnál, anélkül hogy keresztkalibrációra lenne szükség a tevékenységtípusok között.
A lépésszámláló modern implementációi nemcsak csúcsdetektálást, hanem gépi tanulást is használnak a mozgásminták osztályozásához. A neurális hálózati modelleket több ezer órányi valós mozgásfelvételen tanítják különböző forgatókönyvekből: séta sík felületen, lépcsőzés, futás, utazás közlekedési eszközön. A bemeneti jellemzők a gyorsulásmérő és giroszkóp idősorai, a kimenet pedig annak valószínűsége, hogy az aktuális jelszegmens emberi mozgásnak felel meg.
A Google Activity Recognition kutatás adatai szerint a konvolúciós neurális hálózatokon (CNN) alapuló modellek 98%-os pontosságot érnek el a séta felismerésében a tesztadatkészleteken. Az Apple eszközökön Core ML-t használnak az Activity Classification modellel, amelyet több mint 100 ezer önkéntes adatain tanítottak. Az optimalizált modellek közvetlenül az eszközön működnek (on-device inference), ami azonnali feldolgozást és a felhasználói adatvédelem megőrzését biztosítja.
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
// UI frissítése a lépések számával
DispatchQueue.main.async {
// self.stepsLabel.text = "\(steps) lépés"
}
}
}
func stopTracking() {
pedometer.stopUpdates()
}
}
iOS-en a lépésszámláló eléréséhez a Core Motion keretrendszer CMPedometer osztálya használható. A CMPedometer nemcsak a lépések számát, hanem a megtett távolságot, az emeletek számát (emelkedők), a járás tempóját és az aktivitási időt is biztosítja. Az adatok elérhetők valós időben (startUpdates) és bármely múltbeli időszakra (queryPedometerData) is. A mozgás-koprocesszor (M-sorozat) hardveresen dolgozza fel a szenzoradatokat, ami 80%-kal csökkenti az energiafogyasztást a szoftveres feldolgozáshoz képest.
Androidon a lépésszámlálóval való munka két hardveres szenzoron keresztül valósul meg: TYPE_STEP_COUNTER (halmozott lépésszámláló a rendszerindítás óta) és TYPE_STEP_DETECTOR (esemény generálása minden lépéshez). A TYPE_STEP_COUNTER nem igényel kalibrációt és nem fogyaszt processzor energiát — az adatok hardveresen frissülnek a szenzorhub szintjén. Az összegyűjtött napi lépésstatisztikák eléréséhez a Google Fit API használható a DataType.TYPE_STEP_COUNT_DELTA rekorddal.
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) {}
}
A lépésszámláló pontossága több tényezőtől függ: az okostelefon elhelyezkedésétől (kézben, zsebben vagy táskában), a tevékenység típusától (séta, futás, lépcsőzés) és a szenzorok minőségétől. Az okostelefon nadrágzsebben hordva a pontosság 93–97%, táskában vagy hátizsákban 70–85%-ra csökken. A felhasználó járásstílusa is befolyásolja a pontosságot: a rövid lépések kis gyorsulási amplitúdóval több hibát okoznak, mint a rendszeres járás.
A mobil lépésszámlálók fő korlátai a következők: a lépések számlálásának képtelensége nagyon lassú mozgásnál (<1,5 km/h), téves riasztások a közlekedési eszközön való utazástól, a pontosság csökkenése alacsony sebességű futásnál (kocogás) és a gesztikulálás hatása beszélgetés közben. A hibák minimalizálása érdekében a modern alkalmazások szenzorkombinációt (gyorsulásmérő + giroszkóp + barométer) és gépi tanulást használnak a műtermékek kiszűrésére. A barométer például segít meghatározni a lépcsőzést és a magasságváltozást, kizárva a hamis lépéseket a liftben.
Gyakran Ismételt Kérdések
A lépésszámláló a telefonban gyorsulásmérőt használ, amely minden lépésnél rögzíti a gyorsulást. Az algoritmus elemzi a gyorsulási csúcsokat három tengely mentén, kiszűri a zajt, és meghatározza a lépések számát. A modern modellek giroszkópot és gépi tanulást is használnak a pontosság növelése és a tevékenység osztályozása érdekében.
Az okostelefon nadrágzsebben hordva a pontosság normál sétánál eléri a 95–97%-ot. Táskában vagy hátizsákban a pontosság 70–85%-ra csökken. A járásstílus és a felület típusa is befolyásolja a pontosságot — a egyenetlen terep akár 10–15%-os hibát is okozhat.
Igen, a lépésszámláló teljesen autonóm módon működik internetkapcsolat nélkül. Minden számítás az eszközön történik a beépített szenzorok segítségével. Internetre csak a fitneszalkalmazások felhőszolgáltatásaival való adatszinkronizáláshoz vagy az útvonal térképének megjelenítéséhez lehet szükség.
A különböző alkalmazások különböző algoritmusokat használnak a szenzoradatok feldolgozásához, a lépésdetektálási küszöböket és a szűrési módszereket. Egyes alkalmazások a nyers gyorsulásmérő adatok alapján számolják a lépéseket, mások a rendszer API-kon (TYPE_STEP_COUNTER) keresztül, és a különbség a számlálásban elérheti a 10–15%-ot.
Androidon a lépésszámláló eléréséhez használja a TYPE_STEP_COUNTER érzékelőt a Sensor API-n keresztül — ez az eszköz utolsó újraindítása óta számolt halmozott lépésszámot biztosítja. Egy adott nap lépéseinek eléréséhez integrálja a Google Fit API-t a TYPE_STEP_COUNT_DELTA adattípussal.
Összefoglalás
Kulcsrakész mobilalkalmazást fejlesztünk
Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.
Olvassa el is