Arkaplan Serviste LocationListener Kullanımı
Merhaba gelistirmek istedigim uygulamamda belirli zaman aralıgında arka planda aldıgım kordinatları uzak sunucuma post etmek istiyorum fakat Servis kısmında aşagıdaki hatayı alıyorum.
Can't create handler inside thread that has not called Looper.prepare()
Uygulama locationManager. requestlocationupdates metodunda olusuyor problem. Servisim extends Service implements LocationListener olarak tanımladım gerekli islemleri yapıyorum sorun nerede anlamadım yardımcı olursanız sevinirim
[code]
public class CoordinateService extends Service implements LocationListener {
//Gerekli değişkenlerim vb.
//Servis Methodum
@Override
public void onCreate() {
super.onCreate();
timer = new Timer();
handler = new Handler(Looper.getMainLooper());
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
getLocation();
// Yukardaki methodtan sonra asynctask ile verileri post ediyorum.
}
}, 0, 60 * 2000);
}
//Location değişkenimi set ettiğim method'um
public Location getLocation() {
try {
locationManager = (LocationManager) this.getSystemService(LOCATION_SERVICE);
// getting GPS status
isGPSEnabled = locationManager
.isProviderEnabled(LocationManager.GPS_PROVIDER);
// getting network status
isNetworkEnabled = locationManager
.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
if (!isGPSEnabled && !isNetworkEnabled) {
// no network provider is enabled
} else {
this.canGetLocation = true;
// First get location from Network Provider
if (isNetworkEnabled) {
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,MIN_TIME_BW_UPDATES,MIN_DISTANCE_CHANGE_FOR_UPDATES,this);
Log.d("Network", "Network");
if (locationManager != null) {
location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
if (location != null) {
latitude = location.getLatitude();
longitude = location.getLongitude();
}
}
}
// if GPS Enabled get lat/long using GPS Services
if (isGPSEnabled) {
if (location == null) {
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,MIN_TIME_BW_UPDATES,MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
Log.d("GPS Enabled", "GPS Enabled");
if (locationManager != null) {
location = locationManager
.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if (location != null) {
latitude = location.getLatitude();
longitude = location.getLongitude();
}
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return location;
}
}
[/code]