Huawei Location Kiti, HMS Core Entegrasyonu ve Location Update Fonksiyonunun Uygulanması

Gürkan Orduluoğlu
Huawei Developers - Türkiye
6 min readJul 3, 2020

Huawei konum hizmetleri dendiğinde ilk akla gelen Huawei bu alanda ne gibi hizmetler sağlayabileceği ve kullanıcı ne derece tatmin edebileceği sorusu oluyor. Aslında Huawei Location Kit’i tam olarakta burada, bu sorunun yanıtı olarak karşımıza çıkıyor. HUAWEI Konum Kiti, hassas kullanıcı konumlarını hızlı bir şekilde elde etmenize, küresel konumlandırma yetenekleri oluşturmanıza ve dünya çapında çok çeşitli kullanıcılara ulaşmanıza yardımcı olmak için GPS, Wi-Fi ve baz istasyonu konumlarını birleştirir. Şu anda, üç ana özellik sunmaktadır: Fused location, Activity identification ve Geofence. İlgili özellikleri gerektiği gibi arayabilirsiniz.

  • Fused Location: GPS, Wi-Fi ve baz istasyonu konum verilerine göre cihaz konumunu hızlı bir şekilde almanız için bir dizi basit ve kullanımı kolay API’ler sağlar.
  • Activity Identification: Hızlanma sensörü, hücresel ağ bilgileri ve manyetometre aracılığıyla kullanıcının hareket durumunu tanımlar ve uygulamanızı kullanıcı davranışına göre ayarlamanıza yardımcı olur.
  • Geofence: Uygulamanızın belirli bir işlem (alanda ayrılma, girme veya alandan çıkma gibi) olduğunda bildirim alabilmesi için bir API aracılığıyla ilgilenilen bir alan ayarlamanıza olanak tanır.

Desteklenen En Eski SDK ve İşletim Sistemi Sürümleri

HUAWEI Konum Kitini indirmek veya kullanmak için, Huawei Geliştirici Hizmet Sözleşmesini, Huawei API’lerinin Kullanımına İlişkin Sözleşmeyi ve AppGallery Connect Veri İşleme Eki’ni kabul etmeniz gerekir. Söz konusu Huawei Konum Setini indirmenin veya kullanmanın, yukarıdaki tüm sözleşmeleri kabul edeceğini ve söz konusu sözleşmeler uyarınca yasal sorumluluk ve yükümlülükleri yerine getireceğinizi ve üstleneceğinizi anlar ve taahhüt edersiniz. Ayrıca, uygulama gizlilik bildiriminde kullanıcılara Huawei Konum Kiti hizmetinin yalnızca konum boylamını ve enlemini uygulamalara gönderdiğini ancak bilgileri kaydetmediğini kullanicilara bildirmeniz gerekir.

Huawei Location Kit’i entegre etmeden önce developer Huawei sayfamiza gelelim, üye değilsek üyeliğimizi oluşturalım 1 veya 2 gün içerisinde üyelik kaydımız tamamlanmış olacaktır; →https://developer.huawei.com/consumer/en/

1- Huawei Developer Web sitesine üyeliğimizi tamamlandıktan sonra, kullanıcı adı ve şifremizle üye girişi yaptıktan sonra sağ üst köşedeki Console butonuna tıklayalım.

2- Huawei AppGallery Card’a tıklayıp, AppGallery Connect’e giriş yapalım.

3- Açılan AppGallery Connect sayfasında My apps butonuna tıklayalım.

4- My apps sayfasındaki New app butonuna tıklayıp, yeni bir app oluşturalım.

5- Yeni olusturdugumuz app bilgilerimizi girelim.

Not: App name ile ileride olusturacağımız android proje ismimizin aynı olması gerekir !!

6- Projemizi şuana kadar belirtilen adımlarla oluşturulduktan sonra, app bilgilerimiz otomatik olarak görülecektir. App kimliğimizi tamamlamış oluyoruz.

7- Developer sekmesine tıkladığımızda iki seçenek karşımıza çıkıyor, siz de benim gibi ilk defa yapiyorsaniz manuel olarak oluşturmayı seçebilirsiniz, çünkü otomatik olarak oluşturmak için elinizde bazı paketlerin olması gerekmektedir.

Not: Daha once beşinci maddede belirttiğim notta app name ile burası aynı olmalıdır.

8- Artık Android Studio da projemizi oluşturabiliriz. File → new → new project

9- Empty Activity ‘yi seçip next butonuna basabiliriz.

10- Daha önce beşinci ve yedinci maddelerde belirttiğim app name ve proje adı burada aynı girilmelidir.

11- Uygulamamızda SHA256 parmak izi oluşturmak için kullanılacak yeni bir imza dosyası oluşturmamiz gerekmektedir. Bu yüzden; Build →Generate Signed Bundle/APK

Daha sonra APK yi işaretleyip next butonuna basıyoruz.

Sonrasında create new butonuna basıp yeni bir tane oluşturuyoruz.

JKS dosyamızı oluşturacağımız konumumuzu seçip, şifremizi oluşturup gerekli diğer bilgileri dolduruyoruz ve Ok’a tıklıyoruz.

Daha sonra gelen ekranda next butonuna basıyoruz.

Daha sonra release V1 ve V2 imza versiyonlarini ve release seçilip finish butonuna basıyoruz.

Daha sonra gradle islemlerinin tamamlanmasını bekliyoruz.

12- Java da bin uzantılı klasoru CMD ekranımızda açıyoruz.

13- Bu adımda, daha önce bahsettiğim SHA256 parmak izini oluşturalım. Bunun için bilgisayarımızda CMD sayfamızı açıp aşağıdaki keytool komutunu çalıştıralım.

keytool -list -v -keystore C:\Users\g00442989\Desktop\locationgurkan\app\locationgurkan.jks

Çıkan ekranda password umuzu yazalım. SHA256 kodumuzu kopyalayalım.

14- AppGallery Connect te oluşturduğumuz SHA256 parmak izini yapılandıralım.

AppGallery Connect sayfasında App information kısmına SHA256 parmak izini ekliyoruz.

15- Olusturmuş olduğumuz agconnect-service.json dosyasını indirip olusturmuş olduğumuz projemizdeki App klasorunun altına kaydedelim.

16- Build.gradle de Huawei Maven Deposunu aşağıda bahsettiğim şekilde eklememiz gerekecek.

Bu şekilde Huawei Maven Depomuzu eklemis oluyoruz.

17- Sonraki islemimiz App seviyesinde Build.gradle dosyasına imza yapılandırma bilgilerimizi ekliyoruz.

18- Sonrasında Sync butonuna tıklayıp senkronize ediyoruz.

19- Şimdi artık App Gallary de işimiz bitti, Android Studio’daki projemize gelebiliriz…

Projemizin seviyesindeki build.gradle dosyasını açalim. Repositories ve dependencies kısımlarına aşağidaki linkleri ekleyelim.

Ayrıca dependencies kısmına daha sonra “implementation ‘com.huawei.hms:location:4.0.4.300’ “ ekleyelim.

Ve tekrar Sync tusuna basip senkronize edelim.

20- Layout dosyamızı duzenleyip kodlarimizi ekleyebiliriz artık.

21- Son olarak konum mobil cihazimizda lokasyon izinlerimizi veriyoruz.

Gerekli izinleri de verdikten entegrasyonumuzu tamamlamış bulunmaktayız :)

Şimdi de Location Update Özelliğini Keşfedelim;

Ilk olarak android işletim sisteminden gerekli izinleri alalım. Android Manifest dosyasındaki konum izinlerini ekleyelim.

Eğer android sürümümüz Android 10 ve sonrası ise ve arka planda Location Update bilgilerini almamız gerekiyorsa Android Manifest dosyasına aşağıdaki izni ayrıca ekleyelim.

Android 6 ve sonraki versiyonları için ACCESS_COARSE_LOCATION ve ACCESS_FINE_LOCATION izinlerini dinamik olarakta kullanıcıdan istememiz gerekmektedir.

Şimdi konum hizmeti için istek oluşturalım.

Activity’nin onCreate() methodunda oluşturduğumuz FusedLocationProviderClient objesini initialize edelim ve objeyi konumla ilgili API’ları çağırmak için kullanalım.

Şimdi Konum bilgisinin Sürekli olarak güncel bir şekilde alınmasını sağlayalım,

Uygulamamızın cihaz konumunu sürekli olarak almasını sağlamak için HUAWEI Konum Kiti tarafından sağlanan requestLocationUpdates() API’sını kullanalım. Giriş parametresi türüne bağlı olarak API, cihazın konumunu aşağıdaki yollardan biriyle döndürür:

· Konum bilgilerini içeren bir LocationResult nesnesi edinmek için tanımlanan LocationCallback sınıfındaki onLocationResult() metodunu çağırmakla,

Ya da

· PendingIntent nesnesinin uzantı bilgisindeki konum bilgilerini çağırmakla sağlanabilir.

Uygulamanızın artık konum güncellemeleri alması gerekmiyorsa, güç tüketimini azaltmak için konum güncelleme işlevini durdurabiliriz. Bunu yapmak için de removeLocationUpdates() yöntemini çağırabiliriz.

RequestLocationUpdates() API’sine karşılık gelen LocationCallback veya PendingIntent nesnesini iletebiliriz. Aşağıda bir örneğini gösterelim,

Konum bilgisinin sürekli olarak güncel bir şekilde alınabilmesi için Location Request objesinde parametreleri ayarlama;

Lokasyon güncelleme bilgisini alabilmek için aşağıdaki şekilde LocationCallback objesini oluşturalım.

Şimdi requestLocationUpdates() komutunu çağıralım.

Konum güncelleme isteğini durdurmak için ise removeLocationUpdates() öğesini çağıralım.

Not; Konum güncellemeleri istenirken durdurulursa, mLocationCallback nesnesi requestLocationUpdates yöntemindeki LocationCallback ile aynı olmalıdır.

Not: Huawei Location servisini bir Huawei cihazınızda test etmelisiniz. Eğer cihazınız yok ise Huawei Cloud debugging kullanabilirsiniz bir çok model cihaza apk yükleyerek testler yapabilirsiniz.

Bu yazımda sizlere Huawei Location Kiti nedir? , HMS Core Entegrasyonu nasıl yapılır? ve Location Update Fonksiyonu’nun Uygulanmasını anlatmaya çalıştım, Umarım faydalı olmuştur.

Bir sonraki Medium yazımda görüşmek üzere.

--

--