1 /* ownCloud Android client application
2 * Copyright (C) 2011 Bartek Przybylski
3 * Copyright (C) 2012-2013 ownCloud Inc.
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 2,
7 * as published by the Free Software Foundation.
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 com
.owncloud
.android
.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
.widget
.Toast
;
32 import com
.owncloud
.android
.Log_OC
;
33 import com
.owncloud
.android
.R
;
35 public class LocationUpdateService
extends IntentService
implements
38 public static final String TAG
= "LocationUpdateService";
40 private LocationManager mLocationManager
;
41 private LocationProvider mLocationProvider
;
42 private SharedPreferences mPreferences
;
44 public LocationUpdateService() {
49 protected void onHandleIntent(Intent intent
) {
50 mLocationManager
= (LocationManager
) getSystemService(LOCATION_SERVICE
);
51 // Determine, how we can track the device
52 Criteria criteria
= new Criteria();
53 criteria
.setAccuracy(Criteria
.ACCURACY_FINE
);
54 criteria
.setPowerRequirement(Criteria
.POWER_LOW
);
55 mLocationProvider
= mLocationManager
.getProvider(mLocationManager
56 .getBestProvider(criteria
, true
));
58 // Notify user if there is no way to track the device
59 if (mLocationProvider
== null
) {
60 String message
= String
.format(getString(R
.string
.location_no_provider
), getString(R
.string
.app_name
));
63 Toast
.LENGTH_LONG
).show();
68 // Get preferences for device tracking
69 mPreferences
= PreferenceManager
.getDefaultSharedPreferences(this);
70 boolean trackDevice
= mPreferences
.getBoolean("enable_devicetracking",
72 int updateIntervall
= Integer
.parseInt(mPreferences
.getString(
73 "devicetracking_update_intervall", "30")) * 60 * 1000;
74 int distanceBetweenLocationChecks
= 50;
76 // If we do shall track the device -> Stop
78 Log_OC
.d(TAG
, "Devicetracking is disabled");
83 mLocationManager
.requestLocationUpdates(mLocationProvider
.getName(),
84 updateIntervall
, distanceBetweenLocationChecks
, this);
88 public void onLocationChanged(Location location
) {
89 Log_OC
.d(TAG
, "Location changed: " + location
);
94 public void onProviderDisabled(String arg0
) {
95 // TODO Auto-generated method stub
100 public void onProviderEnabled(String arg0
) {
101 // TODO Auto-generated method stub
106 public void onStatusChanged(String arg0
, int arg1
, Bundle arg2
) {
107 // TODO Auto-generated method stub