Mobil uygulamalarda pedometre (adımsayar), ivmeölçer ve jiroskop verilerine dayanarak kullanıcının adımlarını sayan bir yazılım-donanım mekanizmasıdır. Modern akıllı telefonlar, yürüme, koşma ve diğer fiziksel aktivite türlerini doğru bir şekilde tespit etmek için sensörlerle birlikte makine öğrenimi algoritmalarını kullanır. Apple HealthKit Documentation, 2025'e göre, modern cihazlarda normal yürüyüş sırasında adım sayma doğruluğu %95–97'ye ulaşır.
Önemli Noktalar
Pedometre (adımsayar), mobil uygulamalarda, akıllı telefonun yerleşik hareket sensörlerinden gelen verilere dayanarak kullanıcının adım sayısını belirleyen bir işlevdir. Geçmişin mekanik pedometrelerinin aksine, mobil pedometre, doğru lokomosyon sayımı için mikroelektromekanik sensörler (MEMS) ve dijital sinyal işleme algoritmaları kullanır. Modern uygulamalar yalnızca adımları saymakla kalmaz, aynı zamanda aktiviteyi sınıflandırır: yürüme, koşma, merdiven çıkma.
Pedometrenin mobil cihazlara entegrasyonu, 2013 yılında iPhone 5s'te minimum güç tüketimiyle sürekli olarak sensörlerden veri toplayan M7 hareket yardımcı işlemcisinin tanıtılmasıyla mümkün oldu. Günümüzde tüm modern akıllı telefonlar, sensör hub seviyesinde adım sayma için donanım desteğine sahiptir — ana işlemciyi uyandırmadan atalet sensörü verilerini işleyen özel bir çip.
Akıllı telefonda adım sayma, cihazın üç dik eksen (X, Y, Z) boyunca ivmesini ölçen ivmeölçer sinyallerinin analizine dayanır. Yürürken, her adım karakteristik bir ivme modeli oluşturur: önce bacak kaldırılırken yukarı doğru bir tepe, ardından inişte aşağı doğru bir tepe. Adım hızı (kadans) yürüme için 100–130 adım/dakika ve koşma için 150–180 adım/dakika iken, ivme genliği 2–6 m/s² arasında değişir.
İvmeölçerden gelen ham sinyal, gürültü ve yüksek frekanslı parazit içerir, bu nedenle işlemenin ilk aşaması, 3–5 Hz kesme frekansına sahip düşük geçişli filtrelemedir. Filtrelemeden sonra, ivme vektörü hesaplanır: a = sqrt(x² + y² + z²), cihazın yönünden bağımsız olarak hareketle ilgili ivmeyi izole eder. Ardından algoritma, sinyaldeki yerel maksimumları tespit eder — her maksimum bir adıma karşılık gelir.
Yanlış pozitifleri azaltmak için (örneğin, taşıtlardaki sarsıntı), ek kriterler uygulanır: minimum adım genliği (genellikle >1,2 m/s²), adımlar arası minimum aralık (yürüme için 300–400 ms) ve otokorelasyon yoluyla sinyal periyodikliğinin doğrulanması. Tepe noktaları arasındaki zaman aralıkları düzensizse, dizi rastgele hareket olarak işaretlenir ve adım olarak sayılmaz.
Temel adım tespit algoritması, eşik tespit yöntemini kullanır: sistem, ivmeölçer sinyalinin belirlenmiş bir eşiği aştığı ve ardından dinlenme seviyesine döndüğü anları arar. Bu tür her olay potansiyel bir adım olarak kabul edilir. İki yaklaşım vardır: tepe tespiti (peak detection) ve sıfır geçişi (zero-crossing). Tepe tespiti, sinyalin maksimumlarını yakalar; sıfır geçişi ise sinyalin ortalama değeri geçtiği anları tespit eder ve bu, adım genliğine daha az bağımlıdır.
Modern adım sayma algoritmaları, kullanıcının yürüme stiline otomatik olarak uyum sağlayan uyarlanabilir bir eşik kullanır. Sistem, son 2–3 saniyedeki sinyal varyansını analiz eder ve bir katsayı ile çarpılan karekök ortalama (RMS) olarak dinamik bir eşik hesaplar. Bu, aktivite türleri arasında çapraz kalibrasyon olmadan hem yavaş bir yürüyüş hem de güçlü bir koşu sırasında doğru adım sayımı sağlar.
Modern pedometre uygulamaları, hareket modellerini sınıflandırmak için yalnızca tepe tespitini değil, aynı zamanda makine öğrenimini de kullanır. Sinir ağı modelleri, çeşitli senaryolardan binlerce saatlik gerçek hareket kaydıyla eğitilir: düz yüzeylerde yürüme, merdiven çıkma, koşma, taşıtlarda seyahat. Girdi özellikleri, ivmeölçer ve jiroskop zaman serilerini içerir ve çıktı, mevcut sinyal bölümünün insan lokomosyonuna karşılık gelme olasılığıdır.
Google Activity Recognition araştırmasına göre, evrişimli sinir ağlarına (CNN) dayalı modeller, kıyaslama veri kümelerinde %98 yürüme tanıma doğruluğuna ulaşır. Apple cihazlarında, 100.000'den fazla gönüllünün verileriyle eğitilmiş bir Aktivite Sınıflandırma modeli ile Core ML kullanılır. Optimize edilmiş modeller doğrudan cihazda çalışır (cihaz üzerinde çıkarım), anında işleme sağlar ve kullanıcı gizliliğini korur.
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
// Adım sayısıyla arayüzü güncelleme
DispatchQueue.main.async {
// self.stepsLabel.text = "\(steps) adım"
}
}
}
func stopTracking() {
pedometer.stopUpdates()
}
}
iOS'ta pedometreye erişmek için Core Motion framework'ünden CMPedometer sınıfı kullanılır. CMPedometer yalnızca adım sayısını değil, aynı zamanda kat edilen mesafeyi, kat sayısını (çıkışlar), yürüme hızını ve aktivite süresini de sağlar. Veriler hem gerçek zamanlı (startUpdates) hem de geçmişteki herhangi bir dönem için (queryPedometerData) kullanılabilir. Hareket yardımcı işlemcisi (M serisi), sensör verilerini donanım düzeyinde işler ve yazılım işlemeye kıyasla güç tüketimini %80 azaltır.
Android'de pedometre işlevselliği iki donanım sensörü aracılığıyla uygulanır: TYPE_STEP_COUNTER (başlatmadan bu yana kümülatif adım sayacı) ve TYPE_STEP_DETECTOR (her adımda olay oluşturma). TYPE_STEP_COUNTER kalibrasyon gerektirmez ve işlemci gücü tüketmez — veriler sensör hub seviyesinde donanımda güncellenir. Birikmiş günlük adım istatistiklerine erişmek için, DataType.TYPE_STEP_COUNT_DELTA kaydıyla Google Fit API kullanılır.
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) {}
}
Pedometre doğruluğu birkaç faktöre bağlıdır: akıllı telefonun konumu (elde, cepte veya çantada), aktivite türü (yürüme, koşma, merdiven çıkma) ve sensör kalitesi. Akıllı telefon pantolon cebinde taşındığında doğruluk %93–97'ye ulaşır; bir çanta veya sırtta çantada %70–85'e düşer. Kullanıcının yürüme stili de doğruluğu etkiler: düşük ivme genliğine sahip sürünen yürüyüş, istikrarlı bir adımdan daha fazla hata üretir.
Mobil pedometrelerin ana sınırlamaları şunları içerir: çok yavaş hareket sırasında (<1,5 km/s) adım sayamama, taşıtlarda seyahatten kaynaklanan yanlış pozitifler, düşük hızda koşma (jogging) sırasında azalan doğruluk ve konuşma sırasında jestlerin etkisi. Hataları en aza indirmek için modern uygulamalar, sensörlerin (ivmeölçer + jiroskop + barometre) bir kombinasyonunu ve yapay yapıları filtrelemek için makine öğrenimini kullanır. Barometre, örneğin, merdiven çıkma ve yükseklik değişikliklerini tespit etmeye yardımcı olur, asansördeki yanlış adımları hariç tutar.
Sıkça Sorulan Sorular
Telefondaki bir pedometre, her adımda ivmeyi kaydeden ivmeölçeri kullanır. Algoritma, üç eksendeki ivme tepelerini analiz eder, gürültüyü filtreler ve adım sayısını belirler. Modern modeller, doğruluğu artırmak ve aktiviteyi sınıflandırmak için jiroskop ve makine öğrenimini de kullanır.
Akıllı telefon pantolon cebinde taşındığında, normal yürüyüş sırasında doğruluk %95–97'ye ulaşır. Bir çanta veya sırtta çantada doğruluk %70–85'e düşer. Yürüme stili ve yüzey türü de doğruluğu etkiler — engebeli arazi %10–15'e kadar hata oluşturabilir.
Evet, pedometre internet bağlantısı olmadan tamamen çevrimdışı çalışır. Tüm hesaplamalar, yerleşik sensörler kullanılarak cihazda gerçekleştirilir. İnternet yalnızca fitness uygulamalarının bulut hizmetleriyle veri senkronizasyonu veya bir rota haritası görüntülemek için gerekebilir.
Farklı uygulamalar, sensör verilerini işlemek, tespit eşikleri ve filtreleme yöntemleri için farklı algoritmalar kullanır. Bazı uygulamalar adımları ham ivmeölçer verilerine dayanarak sayarken, diğerleri sistem API'lerini (TYPE_STEP_COUNTER) kullanır ve sayımlardaki fark %10–15'e kadar ulaşabilir.
Android'de pedometreye erişmek için Sensor API aracılığıyla TYPE_STEP_COUNTER sensörünü kullanın — cihazın son yeniden başlatılmasından bu yana kümülatif adım sayısını sağlar. Belirli bir günün adımlarına erişmek için, TYPE_STEP_COUNT_DELTA veri türüyle Google Fit API'yi entegre edin.
Özet
Anahtar teslim bir mobil uygulama geliştireceğiz
IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.
Ayrıca okuyun