Android-Google Maps Teknolojileri

Buse DEMİR
4 min readMar 15, 2022

--

Bugün tüm mobil uygulamalarda karşımıza çıkan konum servisleri hakkında bilgi edineceğiniz. Haritalar, adresler , kullanıcının konumları gibi bileşenleri uygulamada nasıl kullandığımızı bunun için gerekli izinlerin nasıl alındığı hakkında öğrendiklerimi paylaşacağım. Haydi Başlayalım :)

İlk olarak uygulamamızı açarken bildiğimiz üzere Activity seçimi yaparken Google Maps Activity olarak seçiyoruz.

Uygulama adımızı giriyoruz. Normal Empty Activity de yaptığımız adımları gerçekleştiriyoruz tek fark Google Maps Activity seçmek olucaktır. Sadece içerisinde bir kaç farklılık yapmamız gerekiyor. Bu da google haritaları kullanabilmek için bize lazım olacaktır. Google bu hizmeti sunabilmek için uygulamamızı kaydetmemizi istiyor. Uygulamamızın içerisinde Values in altında “google_maps_api.xml” adlı bir dosya göreceğiz. İşte bu google maps in bize verdiği hizmetin kayıt ederek aldığı bir anahtardır. Gizli bir anahtar barındırır ve bu sayede google maps e erişebiliyoruz.

Bu API KEY ‘e nerden erişiyoruz ?

Apı , Uygulama programlama arayüzü olarak geçmektedir. Bunu kullanabilmek için “ Google Developer Console” giriş yapıyoruz. Burada bir gmail hesabınızın açık olması gerekmektedir.

Hizmeti google dan alabilmemiz için buraya kayıt olmamız gerekiyor. Önceden oluşturmuş olduğumuz proje varsa entegre edebiliriz yada yeni proje oluşturabilirsiniz.

En son gördüğünüz gibi API Key bize verilmiş oluyor. Bu Key i alıp uygulamamızdaki google_maps_api.xml e ekliyoruz. Ve google maps servislerimizi artık emülatör de görebiliyoruz.

UYARI !

Birçok kişiniz karşılaştığı bir sorundan bahsedeceğim. Bazen google maps olarak seçtiğiniz activity de API KEY ile ilgili bir linke erişemiyorsunuz. Bunun için en güzel ve en doğru çözüm aşağıda eklediğim linkten adımları uygulayabilirsiniz.

Artık Haritalarımız aktif haldedir. Fakat ilk açıldığı zaman sizin konumunuzu algılamicaktır. Bunun için bazı işlemler gereklidir. İlk önce Google Maps Activity içerisinde bize hazır olarak gelen kodlar vardır. Bu kodlar diğer uygulamalarımızda ki gibi OnCreate ile başlıyor.

Burada bir dikkat etmemiz gereken LatLng yani Lattiude ve Longitud bu enlem boylam bilgisidir.Bu bilgi sayesinde istediğimiz konuma erişebiliyoruz. Yani aslında ki Map de ki önemli noktalardan birisidir.

Kullanıcının Konumuna Erişme

Bir uygulamada bir noktada kesinlikle kullanıcının konumuna erişmemiz gerekir. Yani bunun ilelebet google maps ile alakası olmasına gerek yok.Bizim kullanıcının lokasyonunu alabilmemiz için iki tane önemli obje ile çalışıyoruz.

(Lokasyon Yönetici & Lokasyon Dinleyicisi)

Şimdi yukarda göstermiş olduğum fotoğraftan size kısaca bunu anlatacağım.

Lokasyon Dinleyicisi(Müşteri) : Esas olayımızı ilerleten Dinleyicidir. Yani restoranda da sonra tadımı yapan beğenen beğenmeyendir. Kullanıcının da lokasyonunu konumunu takip eden dinleyicidir. Bir sınıf değil arayüzdür. Konum her değiştiğinde takip edecek olandır. Siparişi istediği değiştikçe bildircek olan müşteridir.

Lokasyon Yöneticisi(Garson, Şef) : Lokasyon dinleyicisinin(müşterinin) emirleriyle çalışan ve tüm bu süreci yöneten objedir. Sistem lokasyon konum servislerine erişim sağlamada yardım edecektir.

Tanımlama

Location Manager tanımlarken dikkat etmemiz gerekenler ;

  • GetSystemServise : Sistemdeki sevisleri kullanmaya hazır hale getiriyor. Kullanıma bize açıyor. İçerisinde sadece konum servisleri yok bir çok servis vardır.
  • Context : Erişebileceğimiz tüm servislere ulaşıyoruz. bluetooth, kamera, radyo tüm servisleri barındırır. Biz lokasyon servilerini seçiyoruz.
  • AS : GetSystemServise içerisinde aldığımız değer bize ANY olarak dönüyor. ANY neydi ? Any herhangi bir şey anlamına geliyordu. Bütün servisler bulunduğu için bize any döndürüyor. Burda AS yapısını kullanıyoruz. Bu LOCATION MANAGER gibi davran demektir. Ama bu her yerde kullanılmaz yani siz bir string yapıyı int olarak gösteremezsiniz zaten çokca saçma olur bu .. Yapmayın :)

Locatin Listener ı Tanımlarken Dikkat Etmemiz Gerekenler ;

  • Bahsettiğim üzere Lokasyon Listener bir arayüzdü. Arayüzü tanımlar belirttiğim gibi yapıyoruz ve bize zaten member ları eklememiz için bir hata veriyor.
  • OnLocationChanged: Lokasyon yada konum değişince yapılacak işlemlerdir. Böylece kullanıcının konumunu daha kolya takip ediyoruz. Takip ettiğimiz değişkenimiz de P0 dır. P0 ile takip edebiliyoruz.

Kullanıcıdan Konum İzinleri Alma

Bazen uygulama kullanırken bizden genellikle uygulama izni istenir. Galeriye erişelim mi ? Konumunuzu kullanabilir miyiz ? gibi izinler görürüz. Bunlar hassas verilerdir. Bu yüzden kullanıcıdan izin almamız gerekiyor. Android developer sayfasından Permissions sayfasından bu izin türlerine ulaşabilirsiniz. Koruma seviyelerinden levellara ulaşabilirsiniz.

https://developer.android.com/guide/topics/permissions/overview

Biz bu uygulama da ACCES_FINE_LOCATION izinlerini kullanacağız.

  • ContextCompat : Farklı SDK seviyelerindeki karmaşıklığı engellemek için kullanıyoruz.
  • CheckSelfPermission: Hangi izni kullanacağımızı bize sormaktadır.
  • PackageManeger.PERMISSION_GRANTED : Kullanıcı izin vermemişse! yapılacaktı. PackManager kullanıcının izin kısmıdır.
  • RequestPermission:İzin istediğimiz yerdir. Bizden il olaak activity , isteyeceğimiz izni istiyor(kesinlikle array olmalı)
  • RequestCode: İstek kodudur. Kodlar ile izinlerimize erişmek daha kolaydır.
  • ELSE kısma yani izin verilmiş ise ; Konum güncellemelerini istemeliyiz.
  • RequestLocationUpdates: Konumu kim sağlayacak , Ne kadar sürede ve uzaklıkda kendini güncellesin.. gibi parametreler istemektedir. Konumuzu güncelleyecek olan fonksiyondur.

Telefonumuzdan güncel izni almış olduk. Artık konumumuza erişebiliyoruz. Farklı konumlarda başlaması için yada o bulunduğunuz konumda algılaması için latitude ve longitude değerlerini (eylem ve boylam) girmeniz gerekmektedir.

Teşekkürler ..

--

--

Buse DEMİR

Hello, my name is Buse. I am a computer engineer. ❤️Love Android and Kotlin❤️. Just live..