API & Library

Activity Recognition ile Kullanıcı Aktivitelerini Tespit Etme

Bazı mobil uygulamalar da insanların  koşma, yürüme, bisiklet ya da araba sürme  gibi eylemlerini tespit edip,  kullanıcıya aktiviteleri hakkında  işlevsel bilgiler vermektedir. Örneğin, adım sayar uygulamaları, fitness spor uygulamaları hatta GoogleFit  uygulaması dahi bu konu üzerine çalışmaktadır.

Android uygulamalarda, insanların  koşma, yürüme, bisiklet ya da araba sürme  gibi eylemlerini tespit edebilmek için ActivityRecognitionClient sınıfını kullanmalıyız. Makalemde ise  bu konu hakkında Android uygulama yapacağım. Kullanıcı bu aktiviteleri yaparken uygulama arka plan da dahi olsa, kullanıcının yaptığı aktiviteler hakkında bilgi vermeyi sağlayan bir program yazacağım.

Örnek projemizin çıktısı aşağıdaki gibi olacak.

1-Activity Recognition

Android in eski sürümlerinde bu iş için LocationClientActivityRecognitionApi.  sınıfları kullanılıyordu. Ancak bu sınıflar son zamanlarda kullanımdan kaldırılmıştır. Kullanıcıların eylemlerini tespit etmek için artık ActivityRecognitionClient sınıfı kullanmalıyız. İşte, etkinliği saptamak için kullanılabileceğimiz kod:

2- Android Proje Oluşturma

Yapmamız gereken adımlar şu şekildedir:

  1. Android Studio ide’sinde yeni bir proje oluşturalım.
  2. Android SDK da, SDK Tools sekmesinde bulunan Google Play services APIs‘ini yüklemeliyiz.
  3. Oluşturduğum projemin app dizinin altındaki build.gradle dosyasını açıyoruz. Dependencies kod bloklarının arasına aşağıdaki kodları yerleştirerek  play-services-location kütüphanesini yüklüyoruz.
  4. Kullanıcının aktivite değişikliklerini algılayabilmek için belli sürelerde kontrol etmemiz gerekmektedir. Bu zamanı milli saniye cinsinden verip, diğer değişkenleride default değerler vermek için Constant sınıfını tanımlıyoruz.
  5. DetectedActivitiesIntentService.java adlı bir sınıf oluşturun. Bu sınıfa, IntentService ‘dan kalıtım alın. OnHandleIntent () metodunda  etkinliklerin listesi elde edilir ve LocalBroadcastManager kullanılarak yayınlanacaktır.
  6. Arka planda çalışacak olan ve belirli aralıklıklarla kullanıcının faaliyetleri tespit edecek Android servis sınıfını oluşturmamız gerekir.
  7. BackgroundDetectedActivitiesService ve DetectedActivitiesIntentService servis sınıflarını AndroidManifest.xml dosyasında tanımlamamız gerekir. Birde AndroidManifest.xml dosyasında ACTIVITY_RECOGNITION iznini vermemiz gerekir.

3-Activity Recognition

Şimdi herşeye hazırız. Kullanıcının yaptığı güncel  aktiviteyi  veya herhangi bir başka aktivite yaptığında bunun bilgisini nasıl alacağımızı görelim.

  1. ImageView (etkinliği temsil eden bir simge görüntülemek için) ve TextView (etkinliği görüntülemek için) ekliyoruz. Ayrıca, etkinlik tanıma hizmetini başlatmak ve başlatmak için iki button ekledim.
     
  2. MainActivity  sınıfında kullanılan startTracking() ve stopTracking() metodlar,hizmet durumunu değiştirerek kullanıcı etkinliği güncellemelerini başlatır veya durdurur. BroadcastReceiver  sınıfı, IntentService’den etkinlik güncellemelerini almak için kullanılır. handleUserActivity() metodu, kullanıcının yaptığı güncel aktivite tipini,aktivitenin doğruluğu bilgisini kullanarak arayüzde ilgili faaliyetin resmini ve doğruluk bilgisini gösterir.

 

Dilerseniz aşağıda vermiş olduğum Kod İndir resmine tıklayarak github’a yüklemiş olduğum projeyi indirip, inceleyebilirsiniz.

Kaynaklar

1-https://smality.com/activity-recognition-ile-kullanici-aktivitelerini-tespit-etme/

2- http://www.androhub.com/android-floating-widget-like-facebook-messenger-chat-head/

3- http://www.androidhive.info/2016/11/android-floating-widget-like-facebook-chat-head/

Bülten
Bültene abone ol

Bültene abone olarak yeni makalelerimden haberdar olun.