Android | Huawei Location Kit Kullanarak Canlı Konum Paylaşma Uygulaması

Besir Karaoglu
Huawei Developers - Türkiye
4 min readOct 12, 2022

Giriş

Merhaba,

Bu yazımda, Huawei tarafından geliştirilen HMS Core ve AppGallery Connect servislerini kullanarak uygulamaya sahip kullanıcılara anlık olarak konum paylaşabildiğimiz ve anlık olarak paylaşılan konumları görebildiğimiz bir uygulama geliştireceğiz.

Kullanılan Kütüphaneler

  1. Auth Service
  2. Cloud DB
  3. Map Kit
  4. Location Kit

Kullanacağımız Kütüphaneler Hakkında

Auth Service, bulut tabanlı Auth Service özelliklerini uygulamanıza doğrudan entegre ederek uygulamanız için hızlı bir şekilde güvenli ve güvenilir bir kullanıcı kimlik doğrulama sistemi oluşturmanıza yardımcı olur.

Cloud DB, cihaz ve bulut, birleştirilmiş veri modelleri ve çeşitli veri yönetimi API’leri arasında veri sinerjisi yönetimi yetenekleri sağlayan bir cihaz-bulut sinerji veritabanı ürünüdür.

Map Kit, kişiselleştirilmiş harita gösterimini ve etkileşimi kolaylıkla uygulamanız için güçlü ve kullanışlı harita hizmetleri sağlar.

Location Kit, kullanıcı cihazı konumunu kesin ve hızlı bir şekilde elde etmeniz için yetenekler sağlayarak, global konumlandırma yetenekleri oluşturmanıza yardımcı olur.

Not: Bu yazının basitliği için bazı entegrasyon adımlarını atlıyoruz. Eğer daha önce bu servisleri kullanmadıysanız bu adımlar hakkında bilgi almak ya da eksik olduğunu düşündüğünüz adımlar için Referanslar başlığı altındaki linkleri inceleyebilirsiniz.

Kodlama

Bu uygulamayı geliştirirken 4 kütüphaneden faydalanacağız. Öncelikle bunları entegre edelim.

Ardından AndroidManifest.xml dosyasına gerekli tanımlamaları yapmamız gerekiyor. Bu yüzden manifest tag’ının içine:

Permission taglerini ekliyoruz. Bu tagler Map Kit’i ve Location Kit’i kullanırken ihtiyacımız olan izinleri sağlıyor. Ardından konumu alabilmek ve uygulama arka plandayken de konum bağlantısının kesilmemesi için gerekli Service ve BroadcastReceiver classlarını <application> tagı içerisine ekliyoruz.

AndroidManifest.xml’i de tamamladıktan sonra Activity’leri ekliyoruz. Bu uygulamada AuthService işlemlerini yapmak için LoginActivity, diğer fonksiyonlar için ise MainActivity’yi kullanacağız. Bu 2 Activity’yi de oluşturalım.

Activities

Auth Service, çeşitli kullanıcı girişi seçenekleri sunmaktadır. Bu projede Auth Service’in Huawei ID ile girişini kulllanacağız. Bu sayede hem Cloud DB’ye kullanıcılar veri girişi yapabilecek hem de kullanıcılardan bilgi toplamamıza gerek kalmadan uid, isim, fotoğraf gibi bilgilere erişim sağlayabileceğiz. Önce LoginActivity’nin ui’ını düzenleyelim.

Ardından gerekli kodları LoginActivity.kt dosyasına ekleyelim. Burada yapmamız gereken işlem AGConnectAuth class’ını kullanarak daha önce giriş yapılıp yapılmadığını kontrol etmek, eğer giriş yapılmadıysa giriş için gerekli işlemleri yapmak olacak. Aşağıdaki kodları LoginActivity’e ekleyelim.

Bu işlemin ardından kullanıcı giriş işlemlerini tamamlamış olduk. Şimdi lokasyonları harita üzerinde göstermek için Map Kit bileşenlerini ekleyelim.

Öncelikle ui için:

Bu kısımda 2 bileşen eklemiş olduk. MapView bize harita üzerinde lokasyonları göstermemize yardımcı olacak. Switch ise lokasyon paylaşımının kullanıcı tarafından handle edilmesini sağlayacak.

Şimdi Cloud DB için gerekli Data Class’ımızı belirleyelim ve insert, delete ve query fonksiyonlarımızı yazalım.

Öncelikle AGC Console’a girip Cloud DB’den Object Type’ımızı ekleyelim. Ardından export edip projemize entegre edelim.

Object Type

Eğer daha önce yapmadıysanız bu linki takip ederek ekleyebilirsiniz.

Sonrasında CloudDBWrapper adında bir class oluşturalım ve sorgu fonksiyonlarımızı ekleyelim.

Fonksiyonlarımızı ekledik. Geriye sadece konum almak için gerekli fonksiyonlar kaldı.

Yazının başlarında manifest dosyasına BroadcastReceiver eklemiştik. LSSReceiver adında bir class oluşturalım ve gerekli fonksiyonları ekleyelim. Bu class arka planda cihazın konumunu almamızı ve Cloud DB’ye eklememizi sağlayacak.

Son olarak MainActivity’de ui için gerekli metotları ekleyeceğiz. Öncelikle MapView’i yönetmek için aşağıdaki kodları projemize ekleyelim.

Map Kit’i initialize edelim ve bu metodu Activity’mizin onCreate() metodunda çağıralım.

Sonrasında ise haritaya markerları eklemek için gerekli metodu ekleyelim.

Android’de konum bilgisini alabilmek için kullanıcıdan izin istememiz gerekiyor. Bu izinleri istemek için aşağıdaki metodu ekleyelim ve onCreate() metodunda çağıralım.

Location Kit’i kullanabilmek için izinleri kontrol etmemiz gerekiyor. Bunun için aşağıdaki kodu ekleyelim ve onCreate() metodunda çağıralım.

Bu case için sadece logları görmek yeterli fakat başka durumlar için OnSuccessListener’ı kullanabilirsiniz.

Location ayarlarını kontrol ettikten sonra Fused Location’ı initialize edelim. Sonrasında bu değişkeni switch ile kullanacağız.

Şimdi Switch’e listener ekleyelim ve eklediğimiz değişkeni kullanarak konum isteme durumunu kontrol edelim.

Burada 3 adet yeni metot ekledik. Bu metotlar konum almamızı sağlayan kilit metotlar. Bu metotları da ekleyelim.

Burada requestLocationUpdatesWithIntent() metodunu çağırırken LocationRequest değişkeni oluşturduk. Bu değişkendeki değerler uygulama amacına göre değiştirebilir. Daha ayrıntılı bilgi edinmek için bu linki takip edebilirsiniz.

Son olarak Cloud DB’deki değişiklikleri dinlemek kaldı. Bunun için de aşağıdaki metodu ekleyelim ve onCreate() metodunda çağıralım.

Böylece uygulamamızı bitirmiş olduk. Uygulamanın ekran görüntüleri:

Ekran Görüntüleri

Sonuç

Bu yazıda Auth Service, Cloud DB, Map Kit ve Location Kit kullanarak harita üzerinde canlı konum paylaşabildiğimiz ve diğer canlı konum paylaşan kullanıcıları görebildiğimiz bir uygulama geliştirdik. Projenin kaynak koduna ulaşmak ve kullanılan servisler hakkında daha fazla bilgi sahibi olmak için referanslar kısmına göz atabilirsiniz.

Gelecek yazılarda görüşmek üzere :)

Referanslar

--

--