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:
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" );
}
}
}
}