HMS Wireless Kit ile Elde Edilen Hücresel(LTE) Bağlantı Değerlerinin Location Kit Kullanılarak Elde Edilen Konum Bilgisinin Map Kit ile Harita Üzerinde Gösterilmesi

Hakki Ozer
Huawei Developers - Türkiye
4 min readDec 11, 2020

Herkese merhaba,

Bu yazımda Wireless Kit kullanarak elde edilen hücresel veri değerlerinin ne olduğunu, nasıl kullanıldığını ve konum bazlı elde edilen Wireless Kit değerlerinin Huawei Map kit ve Location kit kullanılarak haritada nasıl gösterilebileceğini anlatacağım. İlk olarak Wireless Kit’in kullanımından başlayalım.

Wireless Kit Entegrasyonu ve Elde Edilen Dataların Kullanımı

Ilk olarak App Gallery Connect web sitesi projemizi oluşturuyoruz ve HMS core’u uygulmamıza entegre ediyoruz. Bu işlemlerin yapılması için gerekli ayrıntılı bilgiyi aşağıdaki linkten öğrenebilirsiniz.

Daha sonra MainActivity de üç aşamada yapacağımız uygulamanın butonlarını toplamda 3 tane olacak şekilde aşağıdaki gibi oluşturuyoruz.

Oluşturduğumuz butonları aşağıdaki gibi MainActivity sınıfında tanımlıyoruz.

Gerekli izinleri aşağıdaki manifest dosyasındaki gibi giriyoruz.

Yukarıda tanımladığımız ilk buton olan callbackButton a bastığımızda aşağıdaki getCallBackData metodunu çağırarak hücresel (LTE) bağlantınızın sırasıyla identifier, uplink latency, downlink latency, uplink bandwidth, downlink bandwidth, uplink rate, downlink rate, QoE level ve uplink packet loss rate verilerini elde ediyoruz.

getCallBackData metodunu aşağıda ayrıntılı bir şekilde inceleyebilirsiniz.

Ayrıca getCallBackData metodu sonuçları hakkında detaylı bilgi almak için aşağıdaki linke bakabilirsiniz.

İkinci olarak tanımladığımız realTimeDataButton butonu ile getNetworkData() metodunu çağırarak uygulamanın gerçek zamanlı NetworkQoe bilgilerini alıyoruz. Bir başka deyişle son saniye bağlantı bilgilerini görüntülüyoruz.

Bu işlemi aşağıdaki kod bölümündeki gibi networkQoeService.GetRealTimeData() komutunu kullanarak yapıyoruz.

Location ve Map Kit’in Entegrasyonu ve Elde Edilen Dataların Ekranda Gösterilmesi

Manifestimizde oluşturduğumuz openMapButton butonuyla da sırası ile showProgressAlertDialog(), getNetworkData(), getLocationData() metodlarını çağırıyoruz. İlk olarak showProgressAlertDialog() metodunu yapılacak diğer işlemlerin tamamlanması ve harita üzerinde konum ve hücresel bağlantı bilgileri sağlanması işlemleri tamamlanana kadar ekrana beklenmesi gerektiğini kullanıcıya belirtmek amacıyla “loading” ekranı basmak için kullanıyoruz. Bunu da aşağıdaki kod bölümünü kullanarak yapıyoruz.

İkinci olarak getNetworkData() metodunu çağırarak uygulamanın gerçek zamanlı NetworkQoe bilgilerini alıyoruz. Aldığımız sonuçlar içinde bizim kullanacağımız data ise netQoeLevel idir. netQoeLevel değişkeni bağlantı kalitesine göre aşağıdaki resimlerdeki gibi 4 ve 5 değerlerinden birini almaktadır. Eğer kullanıcı sorunsuz bir network bağlantısına sahip ise bu değer 4 olarak dönecektir. Fakat kullanıcı zayıf network performansına sahipse eğer bu değer 5 olarak dönecektir.

Son olarak da getLocationData() metodunu çağırarak kullanıcının network bağlantı kalitesi hesaplandığı anda bulunduğu konum bilgisini alıyoruz. Konum bilgisi alma işlemini aşağıdaki gibi yapıyoruz.

Yukarıdaki kod bölümünde de gördüğümüz gibi konum bilgisini alabilmek için getLocationUpdate metodunu kullanıyoruz. Daha sonra da son alınan konum bilgisini getLastLocation() metodunu kullanarak alıyoruz ve openMapActivity() metodu ile harita işlemlerimize başlıyoruz. Bu işleme başladığımızda gerekli olan konum alma işlemini yaptığımız için konum servis güncelleme işlemini stopLocationUpdates() kullanarak durduruyoruz. Buna ek olarak da harita açma işlemi başlayacağı için de progressDialog.cancel() i kullanarak loading ekranını kapatıyoruz.

openMapActivity() metoduna baktığımızda da aşağıdaki kod bölümünde yaptığımız gibi gerekli network bilgilerini ve konum bilgilerini kullanarak MapActivity i açıyoruz.

Burada yönlendirildiğimiz MapActivity içinde onCreate() metodu içerisinde parametrelere gerekli olan atamaları, haritamızın eni ve boyu için ayrıca mapView için gerekli tanımlamaları yapıyoruz ve oluşturuyoruz.

Yukarıda yaptığımız işlemleri tamamladıktan sonra onMapReady() metoduna geliyoruz. Bu metotta harita konfigürasyonlarımızı update camera view ile belirttiğimiz bölümde yapıyoruz. Daha sonra Wireless Kit üzerinden aldığımız network verilerinden qoeLevel değerine göre haritada kullanıcının konumunu gösterecek marker ı If condition içinde ayarlıyoruz. Yazımızın üst bölümlerinde anlattığımız gibi netQoeLevel parametresi eğer kullanıcı sorunsuz bir network bağlantısına sahip ise bu değer 4 olarak dönecektir ve biz bu durumda kullanıcının konumunu gösteren marker ı yeşil olarak ayarlıyoruz. Fakat kullanıcı zayıf network performansına sahipse eğer bu değer 5 olarak dönecektir ve bu durumda zayıf bağlantısını belirtmek için konum marker ını kırmızı olarak haritaya basıyoruz. Daha sonra da oluşturduğumuz bu markerlara tıkladığımız zaman ekranda network bilgisinin gösterilmesi için HuaweiMap üzerinde InfoWindowAdapter tanımlıyoruz. Bu işlemler bittikten sonra da Wireless Kit üzerinden aldığımız network bağlantı datalarını üzerine yerleştirmek için bir LinearLayout oluşturuyoruz. En son da netQoeLevel parametresine göre belirlediğimiz network kalite durumunu belirten markerların titlelarını aşağıdaki gibi title text, background gibi özelliklerini ayarladıktan sonra önceden oluşturduğumuz LinearLayout a ekliyoruz.

Oluşturduğumuz ekran görüntülerini aşağıda görebilirsiniz. Böylece uygulamamızı tamamlamış oluyoruz.

Wireless Kit ile ilgili ayrıntılı bilgi için aşağıdaki linki ziyaret edebilirsiniz.

Map Kit ile ilgili ayrıntılı bilgi için aşağıdaki linki ziyaret edebilirsiniz.

Location Kit ile ilgili ayrıntılı bilgi için aşağıdaki linki ziyaret edebilirsiniz.

Zaman ayırdığınız ve makalemi okuduğunuz için teşekkür ederim. Bir sonraki medium yazımda görüşmek dileğiyle.

--

--