Android ile Konum Servisleri

Merhaba arkadaşlar,

Bugün sizlerle beraber Android telefonunuzdaki GPS servislerini kullanarak konum bilgilerine erişme konusunu irdeleyeceğiz.  Öncelikle bu konuya geçmeden önce coğrafi koordinatlardan bahsetmek isterim.
Dünyamızın kendine has bir şekli vardır ki bu şekle Geoit denir. Dünyamızın üzerinden geçen yatay ve dikey doğrular vardır. Biz bu doğrulara sırasıyla enlem(Latitude) ve boylam(Longitude) deriz. Bu doğrulara ait değerler ise bizim konumumuzu belirler.

Ülkemiz, Kuzey Yarım Küre’de, 36-42 derece kuzey enlemleriyle 26-45 derece doğu boylamlarında arasında yer alır.

Gelelim işin Android kısmına. Android işletim sistemi, yüklü olduğu cihazlara GPS kullanımı ve bu bilgilerin kullanıcı tarafından izin verilmiş uygulamalarla paylaşımı konusunda imkan sağlar.

1)Gerekli İzinler

AndroidManifest.xml dosyanızı açın ve aşağıdaki izinleri ekleyin.

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

2)Layout Tasarımı

Şimdi ise uygulamamızın arayüz tasarımını yapacağız. Ve bize hayati derecede lazım olan şey 2 adet textview. Çünkü biz bu textviewlere yazdıracağız aldığımız enlem ve boylam değerlerini. Aşağıdaki kodlar kodları layout dosyanıza eklerseniz, bizim için yeterli olur.

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/txtEnlem"
    android:textAlignment="center"
    android:textSize="21sp"
    android:textColor="#ffffff"/>
<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/txtBoylam"
    android:textAlignment="center"
    android:textSize="21sp"
    android:textColor="#ffffff"/>

3)Kodlama

Activity sınıfınızı açın ve LocationListener sınıfını implements edin. Hata verecektir ve sizden implemente edilen arayüze ait methodları eklemenizi isteyecetir. Implement methods diyerek bu hatayı çözebilirsiniz.
Son durumda şu şekilde.

public class MainActivity extends Activity implements LocationListener

sonrasında sınıfın hemen içinde en üst kısımda her yerden erişebilmek için bir global değişken tanımlıyoruz.

public LocationManager locationManager;
TextView txtEnlem,txtBoylam;

Sonra ise onCreate methodunun içine geliyoruz ve uygulama açılır açılmaz locationManager nesnemizin bir örneğini yaratıyoruz. Ayrıca enlem ve boylam değerlerini yazdıracağımız TextViewlerimizin de örneklerini yaratıyoruz.

locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
txtEnlem=(TextView)findViewById(R.id.txtEnlem);
txtBoylam=(TextView)findViewById(R.id.txtBoylam);

Ardından da AndroidManifest dosyasında eklediğimiz izinlerin bir de RunTime sırasında istenmesini sağlamak amacıyla aşağıdaki kodu ekliyoruz.

ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 1);

Bir sonraki adımda ise LocationManager nesnemizin güncel konumlardan haberdar olabilmesi için aşağıdaki kodu ekliyoruz. 3000 değerinin girildiği parametre saniyeyi ifade eder ve 3 saniyede bir güncelleme alınacak anlamına gelir.

try
{
    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 3000, 10, this);
}
catch (SecurityException ex)
{
    Toast.makeText(getApplicationContext(),ex.getMessage().toString(),Toast.LENGTH_LONG).show();
}

artık onCreate methoduyla işimiz tamamlanmış oluyor ve bütün ayarlamaları da yapmış oluyoruz. Şimdi herhangi bir konum değişikliği olduğunda bir şey olmasını sağlamak için LocationListener arayüzünü implemente ettiğimizde eklenen 4 methoddan 1’i olan onLocationChanged methodunun içini doldurmaya geldi sıra. Aşağıdaki kod ile her konum değişikliği olduğunda yeni konumun enlem ve boylam değerlerini alıp ekrana yazdıracağız.

txtEnlem.setText("Enlem:"+location.getLatitude());
txtBoylam.setText("Boylam:"+location.getLongitude());

Evet Arkdadaşlar bugünde Android ve Konum servisleriyle ilgili konumuzu işledik. Umarım faydalı bir yazı olmuştur.

4 thoughts on “Android ile Konum Servisleri

  1. Merhaba,
    2 gündür bir çok forumdan vs. bu konuyu öğrenmeye, örnek kodları çalıştırmaya çalıştım, olmamıştı.
    Bu sayfadan bakarak kodumu çalıştırabildim. Çok Teşekkürler.

  2. Hayırlı akşamlar bir porje geliştiriyorum ve bunun hakkında sorularım olacaktı acaba size ulaşabileceğim sorularımı daha detaylı sorabileceğim bir eposta hesabınız veyahut paşka bir platform var mıdır?

  3. HOCAM O KADAR ÖRNEK DENEDİMKİ ANLATAMAM. BİR İŞ BU KADAR BASİT ANLATILABİLİR. ELİNE SAĞLIK DİYORUM. O KADAR ÖRNEKTEN SONRA BU KISACIK KOD ÇALIŞMAZ DEDİM. AMA ALLAH SENDEN RAZI OLSUN.

Leave a Reply

Your email address will not be published. Required fields are marked *