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 com
.owncloud
.android
.Log_OC
; 
  22 import android
.app
.ActivityManager
; 
  23 import android
.app
.ActivityManager
.RunningServiceInfo
; 
  24 import android
.content
.BroadcastReceiver
; 
  25 import android
.content
.Context
; 
  26 import android
.content
.Intent
; 
  27 import android
.content
.SharedPreferences
; 
  28 import android
.preference
.PreferenceManager
; 
  30 public class LocationServiceLauncherReciever 
extends BroadcastReceiver 
{ 
  32     private final String TAG 
= getClass().getSimpleName(); 
  35     public void onReceive(Context context
, Intent intent
) { 
  36         Intent deviceTrackingIntent 
= new Intent(); 
  38                 .setAction("com.owncloud.android.location.LocationUpdateService"); 
  39         SharedPreferences preferences 
= PreferenceManager
 
  40                 .getDefaultSharedPreferences(context
); 
  41         boolean trackDevice 
= preferences
.getBoolean("enable_devicetracking", 
  44         // Used in Preferences activity so that tracking is disabled or 
  46         if (intent
.hasExtra("TRACKING_SETTING")) { 
  47             trackDevice 
= intent
.getBooleanExtra("TRACKING_SETTING", true
); 
  50         startOrStopDeviceTracking(context
, trackDevice
); 
  54      * Used internally. Starts or stops the device tracking service 
  56      * @param trackDevice true to start the service, false to stop it 
  58     private void startOrStopDeviceTracking(Context context
, boolean trackDevice
) { 
  59         Intent deviceTrackingIntent 
= new Intent(); 
  61                 .setAction("com.owncloud.android.location.LocationUpdateService"); 
  62         if (!isDeviceTrackingServiceRunning(context
) && trackDevice
) { 
  63             Log_OC
.d(TAG
, "Starting device tracker service"); 
  64             context
.startService(deviceTrackingIntent
); 
  65         } else if (isDeviceTrackingServiceRunning(context
) && !trackDevice
) { 
  66             Log_OC
.d(TAG
, "Stopping device tracker service"); 
  67             context
.stopService(deviceTrackingIntent
); 
  72      * Checks to see whether or not the LocationUpdateService is running 
  74      * @return true, if it is. Otherwise false 
  76     private boolean isDeviceTrackingServiceRunning(Context context
) { 
  77         ActivityManager manager 
= (ActivityManager
) context
 
  78                 .getSystemService(Context
.ACTIVITY_SERVICE
); 
  79         for (RunningServiceInfo service 
: manager
 
  80                 .getRunningServices(Integer
.MAX_VALUE
)) { 
  81             if (getClass().getName().equals(service
.service
.getClassName())) {