Miksi anturin tietoasiat kuntosovelluksissa

Nykyaikaiset iOS-laitteet sisältävät joukon sensoreita, jotka voivat havaita liikkeen, sijainnin ja jopa sykkeen. Näiden antureiden integrointi kuntoseurantasovellukseen muuttaa raakadatan mielekkäiksi mittareiksi, kuten askelmäärän, matkan, kalorien ja reittikarttojen. Naputtamalla []Core Motion[] ja []]Core Sijainti], kehittäjät voivat luoda sovelluksia, jotka tuntuvat älykkäiltä ja reagoivilta ja antavat käyttäjille tarkkaa palautetta harjoituksistaan. Lisäksi sensoridata mahdollistaa kehittyneet ominaisuudet kuten aktiivisuusluokitus (kävely, juoksu, pyöräily) ja livepalautteen käytön aikana.

Avainanturit saatavilla iOS-laitteissa

Ennen kuin sukeltaa koodiin, on tärkeää ymmärtää, mitä sensoreita on käytettävissä:

  • Akkulämpömittari .
  • Gyroskooppi[ .
  • GPS[ .
  • Magnetometri[ .
  • Barometri[ .
  • Heart Rate Sensors[ ... ....................................................................................................................................................................................................................................

Jokainen anturi vaatii erityisiä kehyksiä: Core Motion for Axerography, gyroskoopin ja magnetometrin; Core Location for GPS and Barometri; HealthKit for syke ja muut terveystiedot.

Kehittämisympäristön luominen

Aloita asentamalla Xcode (saatavana Mac App Storesta) ja luomalla uusi iOS-projekti. Valitse [App[]-malli ja varmista, että sinulla on Apple Developer -tili todellisten laitteiden testaamiseen. Anturitiedot vaativat usein todellisia laitteistoja; simulaattoreilla on rajoitettu sensorituki (esim. GPS-korkeus, ei todellista kiihtyvyysmelua).

Xcode-projektissasi ota käyttöön vaaditut ominaisuudet Signing & Capabilities:n mukaisesti:

  • Sijaintipalvelut[ .
  • HealthKit .
  • Taustatilat[ . Tarkista ...

Lisää tarvittavat oikeudet ja info.plist-avaimet. Lisää esimerkiksi ja käyttäjäystävällisillä selityksillä.

Pyydän lupaa oikeaan suuntaan

Käyttäjät ovat yhä enemmän yksityisyystietoisia. Pyydä aina käyttölupia siinä vaiheessa, kun ominaisuus on todella tarpeen, ei lanseerauksessa. Käytä sijaintioikeuksia varten []CLLocationManager[:

import CoreLocation

let locationManager = CLLocationManager()
locationManager.delegate = self
locationManager.requestWhenInUseAuthorization()

Liikedataa varten käytä CMMotionManager[. Huomaa, että liikedata ei vaadi käyttäjän nimenomaista lupaa (se katsotaan laitteeksi-sisäinen), mutta sinun pitäisi silti selittää, miksi tarvitset sitä tietosuojakäytännössäsi. HealthKitin tietoja varten sinulla on oltava voimassa oleva HKHealthStore ja soita . Tarjoa selkeitä, ytimekkäitä säikeitä Info.plist-muodossa rakentaaksesi luottamusta.

Toteutetaan anturitietojen keruu

Tiedonkeruu on kuntosovelluksen ydin. Alla on liike- ja sijaintikokoelma.

Kiihdytysmittari ja gyroskooppidata ydinliikeineen

Käytä CMMotionManager[] -päivityksiä. Valitse päivitysväli, joka tasapainottaa tarkkuutta ja akun kestoa. Askellaskussa on tyypillinen, mutta käyttöliittymäpäivityksille 1/10 sekuntia.

import CoreMotion

let motionManager = CMMotionManager()
motionManager.accelerometerUpdateInterval = 0.1
motionManager.startAccelerometerUpdates(to: .main) { (data, error) in
 guard let accelData = data else { return }
 // Use accelData.acceleration.x, .y, .z
}

Gyroskooppi- ja magnetometrin osalta on olemassa samanlaiset menetelmät: ja . Jos tarvitset laitteen asentoa (kierre suhteessa painovoimaan), käytä , jossa yhdistyvät kiihtyvyysmittari, gyroskoopin ja magnetometrin tiedot.

GPS ja sijaintitiedot ydinsijainti

Aseta CLLLLcationManager[] -toiminto vastaanottaaksesi sijaintipäivitykset. Aseta haluttu tarkkuus toiminnan perusteella. Ulkoilua varten on sopiva; sisäkävelyä varten, säästää akun.

locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.distanceFilter = 5 // meters
locationManager.startUpdatingLocation()

Toteuta delegointimenetelmä uusien koordinaattien käsittelyyn. Käytä [-ominaisuutta suodattaaksesi huonolaatuisia lukemia. Reittikartoitusta varten säilytä koordinaatit yhdessä aikaleiman kanssa.

Sensoritietojen käsittely hyödylliseksi metriseksi

Raaka-anturin tiedot ovat meluisia. Käsittelyvaiheisiin kuuluvat tyypillisesti suodatus, kalibrointi ja laskenta.

Askellasku kiihtyvästä nopeudesta

Käytä huippuhavaitsemisalgoritmia kiihdytyksen suuruudessa. Yhteisenä lähestymistapana on laskea Euklidean normi (sqrt(x2+y2+z2)), soveltaa korkeapäästöistä suodatinta poistaa painovoimaa, sitten havaita huiput yli kynnysarvon. Tuotannossa harkita Apple-s sisäänrakennettu []CMPedometri, joka tarjoaa askelmäärät ja poljin ilman tarvetta toteuttaa havaitsemis itse.

if CMPedometer.isStepCountingAvailable() {
 var pedometer = CMPedometer()
 pedometer.startUpdates(from: Date()) { (data, error) in
 if let steps = data?.numberOfSteps {
 // update UI
 }
 }
}

Vastaavasti KMPedometri voi tarjota etäisyyttä, vauhtia ja lattiat ylösnousevat/laskeutuvat.

Toimintoluokitus

Käytä CMMotionActivityManager[] automaattisesti luokitella käyttäjän liiketila (kävely, juoksu, pyöräily, paikallaan). Tämä vähentää tarvetta erilliset havaitsemisalgoritmit ja tarjoaa korkean tason konteksti.

let activityManager = CMMotionActivityManager()
activityManager.startActivityUpdates(to: .main) { (activity) in
 if activity?.walking == true {
 // treat as walking
 } else if activity?.running == true {
 // treat as running
 }
}

Etäisyys ja nopeus GPS:stä

Laske peräkkäisten sijaintipisteiden välinen etäisyys [etäisyys [alkaen:)[] menetelmää käyttäen CLLlocation. Kokonaisetäisyydet saadaan ominaisuuden kautta. Suodata epätodennäköiset nopeuden (esim., > 30 m/s ihmisen toiminnan osalta).

Näytetään tiedot: kaaviot ja kartat

Reittikarttoja varten käytetään MKMapView[] ja piirnetään monilinjainen yhteys nauhoitettuihin koordinaatteihin. Suorituskykymittareihin käytetään karttoja[] (suosittu avoimen lähdekoodin kirjasto) tai Apple.Swift kaavioita[] kehystä (iOS 16+). Näytä yhteenvetotilastoja, kuten keskimääräinen tahti, sykealueet ja korkeusprofiili.

import MapKit

let polyline = MKPolyline(coordinates: &coordinates, count: coordinates.count)
mapView.addOverlay(polyline)

Jos syke on kytketty HealthKitin tai Bluetoothin kautta, näytä reaaliaikainen kaavio WKInterfaceGraphic- tai SwiftUI -näkymällä.

Käsittely Taustapäivitykset

Fitness-sovellukset on usein kerättävä, kun sovellus on taustalla. Ota käyttöön [ taustatilat[ ja valitse .Paikanpäivitykset. Jatkuvaan tausta-asentoon käytetään . Merkittävän muutoksen seurantaan (vähemmän usein, paristoystävällinen), käytä .].

Liiketietojen osalta taustapäivitykset ovat rajalliset. Järjestelmä voi toimittaa liikepäivityksiä vain silloin, kun sovellus on etualalla tai pian paikannuksen jälkeen. Luotettavuuden parantamiseksi on harkittava []CLActivityType[] -järjestelmän käyttöä :n mukaisesti.

Tietojen tallennus ja terveyskeskusten integrointi

Tallenna harjoitustiedot jatkuvasti. Valinnat:

  • Core Data[ .
  • SQLite[ .
  • UserDefaults .
  • HealthKit[ . Apple.Selvitystyön kirjoittaminen HealthKitille tarjoaa ne Apple Healthin ja muiden sovellusten käyttöön.

Integroida HealthKit, ensimmäinen pyyntö lupa kirjoittaa harjoitustiedot ja lukea asiaankuuluvat näytteet (sydämen syke, etäisyys). Sitten luoda HKWorkout objekti ja tallentaa se:

let healthStore = HKHealthStore()
let workout = HKWorkout(activityType: .running, start: startDate, end: endDate, duration: duration, totalEnergyBurned: energy, totalDistance: distance, metadata: nil)
healthStore.save(workout) { (success, error) in
 // handle
}

Sydämen sykemittanäytteet voidaan lukea harjoituksen aikana samanaikaisesti HKAnchoredObjectQuery tai HKObserverQuery.

Optimoin akun käyttöikää ja suorituskykyä

Jatkuva sensorin käyttö tyhjentää akun. Käytä näitä strategioita:

  • Adjust update intervallers .
  • Käytä etäisyyssuodatinta [ ... .......................................................................................................................................................................................................................................
  • Pysäytä, kun se on paikallaan[ . Käytä CMMotionActivityManager[] havaitaksesi pysäköimättömät kaudet ja pysäyttää GPS-päivitykset.
  • Vähennettyjä päivityksiä[ ... ....................................................................................................................................................................................................................................
  • Batch käsittely[ . ... Kerää tiedot muistiin ja kirjoita tallennukseen ajoittain (esim. 10 minuutin välein).

Testaus ja vianetsintä Anturitietojen testaus

Simulaattorilla testaaminen on rajoitettua. Aina testataan oikeilla laitteilla tarkka kiihtyvyysmittari, GPS ja syketiedot. Käytä Xcode.s [Simuloi sijainti[] ominaisuus testata vapaa-ajoreitit. Liikedatan avulla voit käyttää []Core Motion[] vianetsintätyökaluja kehittäjän valikossa. Log sensori lukemat aikaleimalla tarkistaa tarkkuutta. Myös testata taustan käyttäytymistä ottamalla .

Käyttäjäkokemus ja yksityisyyden suoja

Yksityisyys on tärkeää. Seuraa Apple.s App Store Review Guidelines[] ja ylläpitää selkeää tietosuojakäytäntöä. Älä koskaan jaa sensoritietoja ilman nimenomaista suostumusta. Käytä laitteen käsittelyä mahdollisuuksien mukaan. Analytiikka, anonymisoi ja koosta.

Käyttäjien kokemukseen tulisi sisältyä:

  • Koneessa oleva näyttö, joka selittää sensorien käytön ja hyödyt.
  • Reaaliaikainen palaute harjoitusten aikana (audio-keppiä, haptista palautetta).
  • Kyky tarkistaa, muokata ja poistaa harjoitustietoja.
  • Offline-toiminto ... tallentaa tiedot paikallisesti ja synkronoida, kun verkko on käytettävissä.

Tulevaisuuden parannukset

Harkitse lisättävää:

  • Integrointi Apple Watch syke- ja harjoitusseurannan osalta.
  • Koneoppimismallit (Core ML) kehittyneen toiminnan tunnistamiseen.
  • Sosiaaliset ominaisuudet (johtajistot, haasteet) CloudKitin avulla.
  • AR reittien päällystäminen ARKit.

Päätelmät

Kuntoilun seurantasovelluksen rakentaminen sensoritietojen integrointiin iOS:ssa on palkitseva haaste.Voit luoda Core Motion, Core Location ja HealthKit-sovelluksen, joka tarjoaa tarkkoja ja toimintakelpoisia oivalluksia samalla kun kunnioitat käyttäjien yksityisyyttä. Keskity puhtaaseen koodiin, pariston tehokkuuteen ja saumattomaan käyttökokemukseen. Aloita pieni askellaskulla ja paikannuksella, sitten laajenna sykettä ja kehittyneitä analytiikkaa. Virallisia asiakirjoja varten ota yhteyttä Core Motion[], []Lisää sijainti[] ja [HealthKit[[] -viitteitä.