- Birleşik Krallık Kanser Merkezi'nin "günde 100 şınav meydan okuması"na katılmak için uygulama ararken, şınav sayısını doğrudan sayan eğlenceli bir şey yapmaya karar verdi
- iOS’un Core Motion framework’ünü inceledi
- Sensör verilerinden nasıl yararlanabileceğini araştırırken AirPods’un hareket verilerini kullanmak için
CMHeadphoneMotionManager kullanmaya karar verdi
- Core Motion; ivmeölçer, jiroskop, manyetometre gibi sensörlerden veri sağlar
- Hareket ve yönelimi doğru ve güvenilir biçimde ölçmek için kullanışlıdır
- Kullanıcı gizliliğini korumak için veri erişim izni gerekir
- Yapay zekayı nasıl uygulayacağını düşündü
- ARKit gibi framework’leri kullanan çok sayıda uygulama zaten var
- Bunun yerine, fikrin hayata geçirilmesine yapay zekanın yardımcı olabileceğine karar verdi
- Core Motion konusunda eğitilmiş bir GPT kullanarak doğal dille sorular sordu ve çözümler aldı
- Uygulama mimarisini tasarladı
- Motion Manager: sensör verilerini akış halinde iletir ve cihaz sensörü güncellemelerini işler
- Pushups Detector: akış halindeki verileri analiz eder, önceden tanımlanmış eşiklere göre şınavı algılar ve sayar
- SwiftUI View: kullanıcı şınav çekerken gerçek zamanlı güncellenen duyarlı bir arayüz sunar
- Motion Manager uygulaması
- Güncellenen değerlere erişmek için delegate pattern kullandı
- Cihaz hareket verilerini almak için
CMHeadphoneMotionManager kullandı
- Sensör güncellemelerini başlatmak ve durdurmak için
startUpdates() ve stopUpdates() kullandı
pitch ve accelerationY değerlerini güncelleyip delegate’e bildirdi
- Pushups Detector uygulaması
- Veri akışını analiz etmeyi başlatıp durdurmak için "oturum" kavramını ekledi
- Ham verileri yorumlayarak kullanıcının duruşunu ve şınav yapıp yapmadığını belirledi
- Eşikleri kullanarak şınavın aşağı inişini ve yukarı çıkışını algıladı, ardından sayacı artırdı
- İvme ve pitch değerlerindeki değişimleri işlemek için
MotionManagerDelegate uyguladı
- SwiftUI ile basit bir görünüm oluşturdu
- Oturum başlat/durdur düğmesi ve şınav sayısını gösteren büyük rakamlardan oluşur
- Kullanıcının duruşunun doğru olup olmadığını gösteren bir metin de ekledi
- Veri analizi ve görselleştirme
- Ham sensör verilerini görselleştirmek ve örüntüleri belirlemek için Swift Charts kullandı
- Y ekseni ivmelenmesinde şınavın aşağı iniş (-1.0) ve yukarı çıkış (+0.5) örüntülerini keşfetti
- Gerçek testlerle eşikleri ayarlayarak doğruluğu artırdı (+0.4, -0.7)
- Gerçek zamanlı takibin çekiciliği
- AirPods’u takıp başlat düğmesine basınca şınav sayısı otomatik olarak güncellenir
- Kullanıcının herhangi bir etkileşimi olmadan çalışır
- Projeden öğrendikleri
- Erken doğrulama ve yinelemeli iyileştirmenin önemini yeniden gördü
- Anlamlı bir şey üretmenin eğlencesini ve tatminini hissetti
- Arayüzü iyileştirme ve birden fazla güne yayılan şınav sayımı gibi geliştirilmesi gereken noktalar da var
- Görsel arayüzün yanı sıra kullanıcı deneyimini geliştirmek için AirPods üzerinden sesli geri bildirim ekledi
- Sonuç
- Core Motion, SwiftUI ve yapay zekayı birleştirerek 24 saat içinde fitness takibine yeni bir boyut katan bir uygulama geliştirdi
- Yeni teknolojilerin günlük sorunlara nasıl uygulanabileceğini sorgulamanın önemli olduğunu vurguladı
2 yorum
Yine de 3 temel kaldırışın tekrarlarını sayan Galaxy Watch gerçekten etkileyici.
Birkaç yıl önce iPhone yakınlık sensörünü kullanan Thirty adında bir şınav challenge uygulaması yapmıştım; demek ki bunu AirPods ile yapmanın da bir yolu varmış.. Yakınlık sensörünün doğruluğu da Dynamic Island eklendikten sonra biraz düşmüş gibi :(