1 /* ownCloud Android client application
2 * Copyright (C) 2011 Bartek Przybylski
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 3 of the License, or
7 * (at your option) any later version.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 package eu
.alefzero
.owncloud
.location
;
20 import android
.app
.IntentService
;
21 import android
.content
.Intent
;
22 import android
.content
.SharedPreferences
;
23 import android
.location
.Criteria
;
24 import android
.location
.Location
;
25 import android
.location
.LocationListener
;
26 import android
.location
.LocationManager
;
27 import android
.location
.LocationProvider
;
28 import android
.os
.Bundle
;
29 import android
.preference
.PreferenceManager
;
30 import android
.util
.Log
;
31 import android
.widget
.Toast
;
33 public class LocationUpdateService
extends IntentService
implements
36 public static final String TAG
= "LocationUpdateService";
38 private LocationManager mLocationManager
;
39 private LocationProvider mLocationProvider
;
40 private SharedPreferences mPreferences
;
42 public LocationUpdateService() {
47 protected void onHandleIntent(Intent intent
) {
48 mLocationManager
= (LocationManager
) getSystemService(LOCATION_SERVICE
);
49 // Determine, how we can track the device
50 Criteria criteria
= new Criteria();
51 criteria
.setAccuracy(Criteria
.ACCURACY_FINE
);
52 criteria
.setPowerRequirement(Criteria
.POWER_LOW
);
53 mLocationProvider
= mLocationManager
.getProvider(mLocationManager
54 .getBestProvider(criteria
, true
));
56 // Notify user if there is no way to track the device
57 if (mLocationProvider
== null
) {
59 eu
.alefzero
.owncloud
.R
.string
.location_no_provider
,
65 // Get preferences for device tracking
66 mPreferences
= PreferenceManager
.getDefaultSharedPreferences(this);
67 boolean trackDevice
= mPreferences
.getBoolean("enable_devicetracking",
69 int updateIntervall
= Integer
.parseInt(mPreferences
.getString(
70 "devicetracking_update_intervall", "30")) * 60 * 1000;
71 int distanceBetweenLocationChecks
= 50;
73 // If we do shall track the device -> Stop
75 Log
.d(TAG
, "Devicetracking is disabled");
80 mLocationManager
.requestLocationUpdates(mLocationProvider
.getName(),
81 updateIntervall
, distanceBetweenLocationChecks
, this);
85 public void onLocationChanged(Location location
) {
86 Log
.d(TAG
, "Location changed: " + location
);
91 public void onProviderDisabled(String arg0
) {
92 // TODO Auto-generated method stub
97 public void onProviderEnabled(String arg0
) {
98 // TODO Auto-generated method stub
103 public void onStatusChanged(String arg0
, int arg1
, Bundle arg2
) {
104 // TODO Auto-generated method stub