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