5.00 / 1 oy

Enlem ve Boylam bilgilerini veren Android Uygulaması

Cihazın GPS üzerinden konum bilgilerini konsola yazdıran ve AVD sanal makinesinde çalışan bir uygulama hazırlayalım. Uygulamanın tasarım konusu geliştiriciye kalmış durumda olduğu için sadece Java kodları üzerinden bir örnek paylaşacağım ve hazır kodları vereceğim. AVD cihazlarda konum bilgisinin nasıl değiştirilebileceği ile ilgili paylaştığım yazı için bkz: Sanal Android Cihazlarda (AVD) Konumu Değiştirmek.

Uygulama aynı zamanda cihaz konumunun kullanımı için çalışma zamanı içerisinde kullanıcının iznini de istemeli, gelen isteğin olumlu ya da olumsuz olmasına göre de koşulları olmalı. Bu işlem için de birer satır log yazdıran bir kısım ayırdım.

Konum değiştirildiğinde seçilen konuma göre gelen logcat örneği:

android avd gps location change logcat

Java Kodları

public class KonumController extends AppCompatActivity {

    final int IZIN_KODU = 123;
    final long MIN_ZAMAN = 5000;
    final float MIN_MESAFE = 1000;
    String LOCATION_PROVIDER = LocationManager.GPS_PROVIDER;

    LocationManager mLocationManager;
    LocationListener mLocationListener;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.konum_controller_layout);
    }

    protected void onResume() {
        super.onResume();
        konumBilgileriniAl();
    }

    private void konumBilgileriniAl() {
        mLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

        mLocationListener = new LocationListener() {
            @Override
            public void onLocationChanged(Location location) {
                Log.d("KonumApp","Konum değişti");
                String longitude = String.valueOf(location.getLongitude());
                String lattitude = String.valueOf(location.getLatitude());
                Log.d("KonumApp","Enlem boylam bilgileriniz: "+lattitude+", "+longitude);
            }

            @Override
            public void onStatusChanged(String s, int i, Bundle bundle) {

            }

            @Override
            public void onProviderEnabled(String s) {

            }

            @Override
            public void onProviderDisabled(String s) {

            }
        };
        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(this, new String[] {Manifest.permission.ACCESS_FINE_LOCATION}, IZIN_KODU);
            return;
        }
        mLocationManager.requestLocationUpdates(LOCATION_PROVIDER, MIN_ZAMAN, MIN_MESAFE, mLocationListener);
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);

        if (requestCode == IZIN_KODU)
        {
            if(grantResults.length>0 && grantResults[0] == PackageManager.PERMISSION_GRANTED)
            {
                Log.d("KonumApp","izin verildi" );
                konumBilgileriniAl();
            }
            else {
                Log.d("KonumApp","izin verilmedi" );
            }
        }
    }
}

 

utku33

26.04.2020 01:59

Bu soru 1 kez yanıtlandı.

Bu soruya sadece kayıtlı kullanıcılar yanıt yazabilirler. Yanıt yazmak için lütfen giriş yapınız.

Reitix
Enlem ve Boylam bilgilerini veren Android Uygulaması

İnternet sitemizdeki deneyiminizi iyileştirmek için çerezler kullanıyoruz. Bu siteye giriş yaparak çerez kullanımını kabul etmiş sayılıyorsunuz. Daha fazla bilgi.