X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/a20681b06320824a80f6da1e86c1c2d52a371636..a4ba6170ea7696e085b07adfef73eeb8b77cb8e2:/src/com/owncloud/android/location/LocationUpdateService.java diff --git a/src/com/owncloud/android/location/LocationUpdateService.java b/src/com/owncloud/android/location/LocationUpdateService.java new file mode 100644 index 00000000..6e3dfb83 --- /dev/null +++ b/src/com/owncloud/android/location/LocationUpdateService.java @@ -0,0 +1,110 @@ +/* ownCloud Android client application + * Copyright (C) 2011 Bartek Przybylski + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ +package com.owncloud.android.location; + +import android.app.IntentService; +import android.content.Intent; +import android.content.SharedPreferences; +import android.location.Criteria; +import android.location.Location; +import android.location.LocationListener; +import android.location.LocationManager; +import android.location.LocationProvider; +import android.os.Bundle; +import android.preference.PreferenceManager; +import android.util.Log; +import android.widget.Toast; + +import com.owncloud.android.R; + +public class LocationUpdateService extends IntentService implements + LocationListener { + + public static final String TAG = "LocationUpdateService"; + + private LocationManager mLocationManager; + private LocationProvider mLocationProvider; + private SharedPreferences mPreferences; + + public LocationUpdateService() { + super(TAG); + } + + @Override + protected void onHandleIntent(Intent intent) { + mLocationManager = (LocationManager) getSystemService(LOCATION_SERVICE); + // Determine, how we can track the device + Criteria criteria = new Criteria(); + criteria.setAccuracy(Criteria.ACCURACY_FINE); + criteria.setPowerRequirement(Criteria.POWER_LOW); + mLocationProvider = mLocationManager.getProvider(mLocationManager + .getBestProvider(criteria, true)); + + // Notify user if there is no way to track the device + if (mLocationProvider == null) { + Toast.makeText(this, + R.string.location_no_provider, + Toast.LENGTH_LONG); + stopSelf(); + return; + } + + // Get preferences for device tracking + mPreferences = PreferenceManager.getDefaultSharedPreferences(this); + boolean trackDevice = mPreferences.getBoolean("enable_devicetracking", + true); + int updateIntervall = Integer.parseInt(mPreferences.getString( + "devicetracking_update_intervall", "30")) * 60 * 1000; + int distanceBetweenLocationChecks = 50; + + // If we do shall track the device -> Stop + if (!trackDevice) { + Log.d(TAG, "Devicetracking is disabled"); + stopSelf(); + return; + } + + mLocationManager.requestLocationUpdates(mLocationProvider.getName(), + updateIntervall, distanceBetweenLocationChecks, this); + } + + @Override + public void onLocationChanged(Location location) { + Log.d(TAG, "Location changed: " + location); + + } + + @Override + public void onProviderDisabled(String arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void onProviderEnabled(String arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void onStatusChanged(String arg0, int arg1, Bundle arg2) { + // TODO Auto-generated method stub + + } + +}