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