- Saat mencari aplikasi untuk ikut serta dalam "tantangan 100 push-up sehari" dari UK Cancer Centre, penulis memutuskan untuk membuat sesuatu yang seru dengan menghitung jumlah push-up sendiri
- Menjelajahi framework Core Motion di iOS
- Saat mencari cara memanfaatkan data sensor, penulis memutuskan menggunakan
CMHeadphoneMotionManager untuk memanfaatkan data gerakan AirPods
- Core Motion menyediakan data dari akselerometer, giroskop, sensor geomagnetik, dan lainnya
- Berguna untuk pengukuran gerakan dan orientasi yang akurat serta andal
- Memerlukan izin akses data untuk melindungi privasi pengguna
- Memikirkan cara menerapkan AI
- Sudah banyak aplikasi yang menggunakan framework seperti ARKit
- Sebagai gantinya, penulis menilai AI bisa membantu mewujudkan ide ini
- Dengan memanfaatkan GPT yang dilatih tentang Core Motion, penulis mengajukan pertanyaan dalam bahasa alami dan memperoleh solusi
- Merancang arsitektur aplikasi
- Motion Manager: melakukan streaming data sensor dan menangani pembaruan sensor perangkat
- Pushups Detector: menganalisis data yang di-streaming untuk mendeteksi dan menghitung push-up berdasarkan ambang batas yang telah ditentukan
- SwiftUI View: menyediakan UI responsif yang diperbarui secara real-time saat pengguna melakukan push-up
- Implementasi Motion Manager
- Mengakses nilai yang diperbarui dengan pola delegate
- Menggunakan
CMHeadphoneMotionManager untuk mengambil data motion perangkat
- Memulai dan menghentikan pembaruan sensor dengan
startUpdates() dan stopUpdates()
- Memperbarui nilai
pitch dan accelerationY lalu memberi tahu delegate
- Implementasi Pushups Detector
- Memperkenalkan konsep "sesi" untuk memulai dan menghentikan analisis aliran data
- Menafsirkan data mentah untuk menentukan postur pengguna dan apakah sebuah push-up terjadi
- Menggunakan ambang batas untuk mendeteksi gerakan turun dan naik pada push-up lalu menambah hitungan
- Mengimplementasikan
MotionManagerDelegate untuk menangani perubahan nilai akselerasi dan pitch
- Membangun tampilan sederhana dengan SwiftUI
- Terdiri dari tombol mulai/akhiri sesi dan angka besar untuk menampilkan jumlah push-up
- Juga menambahkan teks yang menunjukkan apakah postur pengguna sudah benar
- Analisis dan visualisasi data
- Menggunakan Swift Charts untuk memvisualisasikan data sensor mentah dan mengidentifikasi pola
- Menemukan pola gerakan turun (-1.0) dan naik (+0.5) pada push-up dari akselerasi sumbu Y
- Menyesuaikan ambang batas melalui pengujian nyata untuk meningkatkan akurasi (+0.4, -0.7)
- Daya tarik pelacakan real-time
- Saat memakai AirPods dan menekan tombol mulai, jumlah push-up diperbarui secara otomatis
- Berfungsi tanpa interaksi tambahan dari pengguna
- Hal yang dipelajari dari proyek ini
- Menegaskan kembali pentingnya validasi dini dan perbaikan iteratif
- Merasakan keseruan dan kepuasan dalam membuat sesuatu yang bermakna
- Masih ada hal yang bisa ditingkatkan seperti perbaikan UI dan penghitungan push-up lintas beberapa hari
- Menambahkan umpan balik audio melalui AirPods untuk meningkatkan pengalaman pengguna selain antarmuka visual
- Kesimpulan
- Dengan menggabungkan Core Motion, SwiftUI, dan AI, penulis mengembangkan aplikasi dalam 24 jam yang menambahkan dimensi baru pada pelacakan kebugaran
- Penting untuk menantang diri sendiri dalam memikirkan bagaimana teknologi baru bisa diterapkan pada masalah sehari-hari
2 komentar
Sekali lagi jadi terasa betapa hebatnya Galaxy Watch yang bisa menghitung jumlah repetisi tiga latihan utama.
Beberapa tahun lalu saya pernah membuat aplikasi tantangan push-up bernama Thirty yang memanfaatkan sensor kedekatan iPhone, ternyata ada juga cara melakukannya dengan AirPods.. Sepertinya akurasi sensor kedekatan agak menurun setelah penambahan Dynamic Island :(