/* * Copyright (c) 2013 by CDAC Chennai * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * @File GPSTracker (Modified ( Original file, GPSTracker) from Google Sample Code) * @Created: 20.11.2013 * @author: Rekha * Last Change: 24.03.2014 by Rekha */ package com.contextawareframework.backgroundservices; import android.app.Service; import android.content.Context; import android.content.Intent; import android.location.Location; import android.location.LocationManager; import android.net.ConnectivityManager; import android.location.LocationListener; import android.net.NetworkInfo; import android.os.Bundle; import android.os.IBinder; import android.util.Log; public class GPSTracker extends Service implements LocationListener { private Context _context; private Location location = null; // flag for GPS status boolean isGPSEnabled = false; // flag for network status boolean isNetworkEnabled = false; // flag for GPS status boolean canGetLocation = false; double latitude; // latitude double longitude; // longitude // Declaring a Location Manager protected LocationManager locationManager; // The minimum distance to change Updates in meters private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10; // 10 meters // The minimum time between updates in milliseconds private static final long MIN_TIME_BW_UPDATES = 1000 * 60 * 1; // 1 minute /* written for location context data analysis by Rekha */ /* public NetworkConnection() { Log.d("CAN GET LOCATION", "CAN GET LOCATION" + MIN_DISTANCE_CHANGE_FOR_UPDATES + ", CAN GET LOCATION " +MIN_DISTANCE_CHANGE_FOR_UPDATES); try { getLocation(); } catch(Exception e) { e.printStackTrace(); } }*/ /* written for location context data analysis by Rekha */ public GPSTracker(Context context) { //Log.d("MAIN ACTIVITY CONTEXT 5 ::::", "ACTIVITY CONTEXT 5 ::" + context + ", ACTIVITY CONTEXT:: 5 " + context); this._context = context; //Log.d("MAIN ACTIVITY CONTEXT 6 ::::", "ACTIVITY CONTEXT 6 ::" + _context + ", ACTIVITY CONTEXT:: 6 " + _context); location = getLocation(); } /** * Checking for all possible internet providers * **/ public boolean isConnectingToInternet() { ConnectivityManager connectivity = (ConnectivityManager) _context.getSystemService(Context.CONNECTIVITY_SERVICE); if (connectivity != null) { NetworkInfo[] info = connectivity.getAllNetworkInfo(); if (info != null) for (int i = 0; i < info.length; i++) if (info[i].getState() == NetworkInfo.State.CONNECTED) { return true; } } return false; } public Location getLocation() { Log.d("MAIN ACTIVITY CONTEXT 7 ::::", "ACTIVITY CONTEXT 7 ::" + _context + ", ACTIVITY CONTEXT:: 7 " + _context); try { if(_context != null) { locationManager = (LocationManager) _context.getSystemService(LOCATION_SERVICE); } else { Log.d("CONTEXT", "CONTEXT" +_context+ "CONTEXT" +_context); } } catch(Exception e) { e.printStackTrace(); } //Log.d("LOCATION MANAGER", "LOCATION MANAGER" +locationManager+ "LOCATION MANAGER" +locationManager); // getting GPS status isGPSEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); //Log.d("IS GPS ENABLED", "IS GPS ENABLED" +isGPSEnabled+ "IS GPS ENABLED" +isGPSEnabled); // getting network status isNetworkEnabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER); if (!isGPSEnabled && !isNetworkEnabled) { // no network provider is enabled } else { this.canGetLocation = true; if (isNetworkEnabled) { locationManager.requestLocationUpdates( LocationManager.NETWORK_PROVIDER, MIN_TIME_BW_UPDATES, MIN_DISTANCE_CHANGE_FOR_UPDATES, this); Log.d("Network", "Network Enabled"); Log.d("LOCATION MANAGER INSIDE NETWORK", "LOCATION MANAGER INSIDE NETWORK" +locationManager+ "LOCATION MANAGER" +locationManager); if (locationManager != null) { Log.d("Location Manager not null", "Location Manager not null"); location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); Log.d("Location not null 1", "Location not null 1" +location+ "Location not null 1" +location); if (location != null) { Log.d("Location not null 2", "Location not null 2" +location+ "Location not null 2" +location); latitude = location.getLatitude(); longitude = location.getLongitude(); Log.d("Location Latitude & Longitude", "Location Latitude & Longitude" +latitude+ "Location Latitude & Longitude" +longitude); } } } // if GPS Enabled get lat/long using GPS Services if (isGPSEnabled) { if (location == null) { locationManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, MIN_TIME_BW_UPDATES, MIN_DISTANCE_CHANGE_FOR_UPDATES, this); Log.d("GPS", "GPS Enabled"); if (locationManager != null) { location = locationManager .getLastKnownLocation(LocationManager.GPS_PROVIDER); if (location != null) { latitude = location.getLatitude(); longitude = location.getLongitude(); } } } } } Log.d("Location Latitude & Longitude", "Location Latitude & Longitude" +latitude+ "Location Latitude & Longitude" +longitude); return location; } /** * Function to check GPS/wifi enabled * * @return boolean * */ public boolean canGetLocation() { return this.canGetLocation; } /** * Function to get latitude * */ public double getLatitude() { if (location != null) { latitude = location.getLatitude(); } // return latitude return latitude; } /** * Function to get longitude * */ public double getLongitude() { if (location != null) { longitude = location.getLongitude(); } // return longitude return longitude; } @Override public void onLocationChanged(Location location) { } @Override public void onProviderDisabled(String provider) { } @Override public void onProviderEnabled(String provider) { } @Override public void onStatusChanged(String provider, int status, Bundle extras) { } @Override public IBinder onBind(Intent arg0) { return null; } }