Huawei Health Kit ile Kalori Takip Uygulaması Geliştirme

Abdurrahim Çillioğlu
Huawei Developers - Türkiye
6 min readNov 4, 2020

Selamlar, bu yazımızda Huawei Health Kit kullanarak Android Studio ortamında Kotlin dilini kullanarak basit bir kalori takip uygulaması geliştireceğiz.

Huawei Health Kit Nedir?

Kullanıcıların akıllı telefonlar veya diğer cihazlar (saatler, bileklikler, adımsayarlar vb.) ile topladıkları fitness ve sağlık verilerini depolamalarına, ekosistem içerisinde birbirleriyle güvenli bir şekilde paylaşmalarına olanak sağlayan ücretsiz bir kittir.

Health Kit Özellikleri

Veri Depolama: Kolaylıkla fitness ve sağlık verilerinizi depolayabilirsiniz.

Veri Açıklığı: Birçok fitness ve sağlık API’ ları sunmanın yanında adım sayar, kilo, kalp atım hızını da içeren bu verilerin paylaşımını destekler.

Veri Erişimi Yetkilendirme Sistemi: Kullanıcıların veri gizliliği ve yasal haklarını garanti altına alarak kullanıcıların fitness ve sağlık verilerini yönetebilmelerine olanak sağlar.

Cihaz Erişimi: Bluetooth aracılığıyla donanım aygıtlarından veri ölçümü yapılıp bu verilerin cihazlara yüklenmesini sağlar.

Uygulamamızın Özellikleri

Uygulamamız iki ekrandan oluşuyor. İlk ekranda bulunan Login butonuna tıkladığımızda Huawei Account Kit yardımıyla giriş işlemimizi yapıyoruz. Giriş işleminden sonraki ekranda “alınan kalori miktarını” ve “kilo bilgilerimizi” girebileceğimiz alanlar bulunuyor. Health Kit aracılığıyla kaydetmiş olduğumuz bu bilgileri grafik üzerinde görüntüleyebiliyoruz. Grafiksel olarak görüntülemek için ise MPAndroidChart isimli ücretsiz kütüphaneyi kullandık.

Uygulamanın kaynak kodlarının tamamına bu bağlantı ile Github üzerinden erişebilirsiniz.

1- Huawei Core Entegrasyonunun Sağlanması

İlk olarak Console üzerinden hesap açmamız ve sonrasında proje oluşturup uygulamamıza entegre etmemiz gerekmektedir. Bu işlemi resmi codelab dökümantasyonu üzerinden yapabileceğiniz gibi aşağıdaki bağlantıda anlatılan adımları takip ederek de hızlı bir şekilde yapabiliriz.

2- Huawei Health Kit Entegrasyonu

Şimdi de Health Kit servisine başvuru yapmamız gerekiyor.
Bu bağlantı aracılığıyla Console a giriş yaptıktan sonra aşağıdaki görüntüde de belirtildiği gibi Health Kit’ e tıklayalım.

Sonrasında “Apply for Health Kit” diyerek başvurumuzu yapalım.

Burada uygulamamızda kullanacak olduğumuz veriler için izin istiyoruz. Biz sadece “kilo” ve “kalori” verilerini kullanacağımız için sadece ilgili izinleri istedik; “Access and add body height and weight” ve “Access and add calories (include BMR)”
Sonrasında ise “Submit” butonuna tıklayarak işlemimizi tamamlayalım.
Not: Burada bazı izinlerin hassas veriler oldukları için kilitli olduklarını göreceksiniz. Eğer uygulamanızda hassas verileri kullanacaksanız “hihealth@huawei.com” mail adresine “Applying for Health Kit open permissions” başlıklı bir mail atabilirsiniz. Çok kısa sürede size geri dönüş yapacaklardır. Yine daha detaylı bilgiye buradan ulaşabilirsiniz.

Console üzerinden gerekli izin işlemlerimizi bitirdikten sonra Android Studio ile uygulamamızı geliştirmeye devam edelim.

build.gradle(project) dosyasını açarak gerekli implementasyonları yapalım.
allprojects — repositories altına aşağıdaki dependency leri ekleyelim. (jitpack url’ ini grafik kütüphanesi için ekliyoruz)

maven {url ‘https://developer.huawei.com/repo/'}
maven { url ‘https://jitpack.io' }

build.gradle(app) dosyasını açalım. Health Kit için aşağıdaki dependency yeterli olacaktır. Fakat biz Account Kit ile kullanacak olduğumuz grafik kütüphanesinin de dependency lerini ekleyelim.

implementation ‘com.huawei.hms:hihealth-base:{version}’

Son olarak da AndroidManifest.xml dosyamızda Application içerisine meta-data bilgisi olarak app id mizi ekleyelim. App Id mizi Console üzerinden “Huawei Id” ye tıklayıp, ardından projemizi seçerek öğrenebileceğimiz gibi Huawei Core entegrasyonu sırasında indirmiş olduğumuz “agconnect-services.json” dosyası içerisinden de öğrenebiliriz.

3- Uygulamanın Geliştirilmesi

Health Kit’ in bize sağlamış olduğu temelde 3 API var. Bunlar;

DataController: Fitness ve sağlık verilerinin eklenmesini, güncellenmesini, silinmesini ve okunmasını sağlar.
ActivityRecordsController: Egzersiz veya etkinlik oluşturup güncellenmesini sağlar.
AutoRecordController: Fitness ve sağlık verilerinin gerçek zamanlı olarak okunmasını sağlar.

Biz uygulamamızda kalori ve kilo verileriyle işlem yapacağımız için DataController kullanacağız. Yukarıda Health Kit in güvenli olduğundan bahsetmiştik. Kullanıcılara uygulamamıza giriş işlemi sırasında sağlık verilerini kullanacağımızdan dolayı bilgilerine erişim vermeleri için sorgu yönelteceğiz.

activity_main.xml dosyamızda yukarıdaki ekran görüntüsünden anlaşılacağı üzere logo, uygulama ismi ve giriş yapmak için kullanacağımız buton yer alıyor.

MainAcitivity.kt dosyamızda ise giriş işlemi için gerekli kodlar yer alıyor.

Burada dikkat etmemiz gereken kısım ise, uygulamada kullanacak olduğumuz verilerin izinlerini “Scope” olarak eklemek olacaktır. Daha sonra kullanıcı giriş butonuna bastığında soldaki ekran görüntüsünde görüldüğü üzere izinleri seçip yetkilendirme işlemi yapacaktır. Bu izinler varsayılan olarak işaretli gelmemektedir, kullanıcının işaretlemesi gerekmektedir.

CalorieTrackerActivity sayfamız ile de kalori ve kilo bilgilerimizi ekleyip görüntüleyebiliyoruz.

activity_calorie_tracker.xml için tasarımımızın kodları aşağıda yer alıyor.

Yukarıda Data Controller’ ın tanımını yapmıştık. Şimdi ise bir Data Controller oluşturalım ve içerisine kullanacak olduğumuz veriler için izinleri yazalım.

addConsumedCalorie methodu ile de verimizi Health Kit aracılığıyla kaydediyoruz. Kayıt ederken ise bir zaman aralığı belirtmemiz gerekiyor. Biz de milisaniye olarak o anki zaman ile bir milisaniye öncesini verdik.

addWeightData isminde kilo bilgilerimizi kaydetmek için yukarıdakine benzer bir method oluşturalım. Burada dikkat etmemiz gereken nokta ise kilo bilgilerimizi girerken başlangıç ve bitiş zamanı olarak değerlerin aynı olmasıdır, aksi halde kilo bilgisi girmeye çalıştığımızda uygulamamız çökecektir. Bunun dışında bir de veri türlerini değiştiriyoruz.

readConsumedData metodu ile tüketmiş olduğumuz kalori kayıtlarını okuyalım. Zaman aralığı olarak ise şu anki zaman ile bir hafta öncesine kadarki zaman aralığını belirledik. Bu zaman aralığındaki tüm verileri çekip zaman-değer olarak Map içerisine koyduk. Sonrasında ise bu verileri Bar Chart da görüntülemek için showCaloriesWeekly methodunu çağırdık.

readWeightData ile de kayıtlı kilo bilgilerini çekiyoruz.

showCaloriesWeekly methodu ile okumuş olduğumuz tüm zaman-değer (time-value) verilerini son bir haftadaki her gün için kendi içinde topluyoruz ve bir haftalık olarak düzenlenmiş şekilde Bar Chart da göstermek üzere initBarChart metodumuzu çağırıyoruz. Bu düzenlemeyi farklı algoritmalar kurarak daha kısa kodlarla da yapabilirsiniz ben daha okunabilir ve basit olması amacıyla bu yolu tercih ettim.

showWeightWeekly methodu ile de yukarıda yaptığımız işlemin neredeyse aynısını yapıyoruz. Tek fark günlük değerleri toplamıyoruz, onun yerine o gün içinde yazılmış son kilo değerini alıp Map e ekliyoruz.

initBarChart ile verilerimizi grafik halinde görüntülüyoruz.

Ekstra

Sağlık ve fitness verileri eklemenin ve okumanın yanında HealthKit içerisinde verileri güncelleme, silme ve tüm verileri temizleme özellikleri de yer alıyor. Bu özellikleri uygulamamız içerisinde aktif olarak kullanmadık ama yine de kısaca göz atalım.

updateWeight ile belirli bir zaman aralığı içerisindeki verileri güncelleyebiliriz. Yine dikkat etmemiz gereken nokta weight ile işlem yapıyorsak zaman aralığında her iki bölüme de aynı zaman değerini vermeliyiz. Ama kalori gibi bir değeri güncellemek istersek geniş bir zaman aralığı verebiliriz. Eğer belirttiğimiz zamanda güncellenecek bir değer yoksa otomatik olarak yeni değer yazacaktır.

deleteWeight ile belirttiğimiz değer aralığında bulunan veriler silinecektir.

clearHealthData ile HealthKitte yer alan tüm verileri silebiliyoruz.

Özet olarak bu yazımızda Huawei Health Kit yardımıyla “Health Tracker” isminde bir kalori-kilo takip uygulaması geliştirdik. Geliştirirken sağlık ve fitness verilerine nasıl ekleme-okuma-güncelleme ve silme işlemlerinin yapılacağını deneyimledik. Umarım Health Kit’ in implementasyon ve kullanım senaryoları hakkında sizlere yardımcı olmuştur. Karşılaştığınız sorunları veya sorularınızı yorum olarak yazabileceğiniz gibi aşağıdaki bağlantı aracılığıyla Huawei Geliştirici Forumu üzerinden de sorabilirsiniz.

Teşekkürler…

Referanslar

--

--