Loading tests/LocationTracker/res/values/strings.xml +17 −5 Original line number Diff line number Diff line Loading @@ -16,15 +16,14 @@ * limitations under the License. */ --> <resources> <string name="start_service_menu">Start Service</string> <string name="stop_service_menu">Stop Service</string> <string name="settings_menu">Settings</string> <string name="update_preference">Update frequency</string> <string name="title_mintime_preference">Minimum update time</string> <string name="summary_mintime_preference">The suggested minimum time interval for location updates, in seconds</string> <string name="dialog_title_mintime_preference">Minimum update time</string> <string name="title_update_preference">Update Interval (seconds)</string> <string name="summary_update_preference">The suggested time interval for location updates, in seconds</string> <string name="dialog_update_preference">Update Interval (seconds)</string> <string name="title_mindistance_preference">Minimum distance</string> <string name="summary_mindistance_preference">Minimum distance interval for location updates, in meters</string> <string name="dialog_title_mindistance_preference">Minimum distance</string> Loading @@ -45,4 +44,17 @@ <string name="clear_data">Clear data</string> <string name="delete_confirm">All current tracking data will be deleted.</string> <string name="confirm_title">Clear data</string> <string name="title_power_preference">Power Consumption</string> <string name="summary_power_preference">Select "High" for high accuracy location updates. Select "Low" will avoid high power location work where possible. Select "None" will receive location updates triggered by other applications. </string> <string name="dialog_power_preference">Power Consumption</string> <string-array name="powerList"> <item >High</item> <item >Low</item> <item >None</item> </string-array> <string-array name="powerValues"> <item >203</item> <item >201</item> <item >200</item> </string-array> </resources> No newline at end of file tests/LocationTracker/res/xml/preferences.xml +9 −8 Original line number Diff line number Diff line Loading @@ -21,15 +21,16 @@ <PreferenceCategory android:title="@string/update_preference"> <EditTextPreference android:key="mintime_preference" android:defaultValue="0" android:title="@string/title_mintime_preference" android:summary="@string/summary_mintime_preference" android:dialogTitle="@string/dialog_title_mintime_preference" /> android:title="@string/title_update_preference" android:summary="@string/summary_update_preference" android:dialogTitle="@string/dialog_update_preference" /> <EditTextPreference android:key="mindistance_preference" android:defaultValue="0" android:title="@string/title_mindistance_preference" android:summary="@string/summary_mindistance_preference" android:dialogTitle="@string/dialog_title_mindistance_preference" /> <ListPreference android:key="power_preference" android:title="@string/title_power_preference" android:summary="@string/summary_power_preference" android:defaultValue="203" android:entries="@array/powerList" android:entryValues="@array/powerValues"/> </PreferenceCategory> Loading tests/LocationTracker/src/com/android/locationtracker/TrackerActivity.java +6 −11 Original line number Diff line number Diff line Loading @@ -16,17 +16,12 @@ package com.android.locationtracker; import com.android.locationtracker.data.DateUtils; import com.android.locationtracker.data.TrackerDataHelper; import com.android.locationtracker.data.TrackerListHelper; import android.app.AlertDialog; import android.app.ListActivity; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.content.Intent; import android.database.Cursor; import android.location.LocationManager; import android.os.Bundle; import android.os.Environment; import android.util.Log; Loading @@ -35,6 +30,10 @@ import android.view.MenuInflater; import android.view.MenuItem; import android.widget.Toast; import com.android.locationtracker.data.DateUtils; import com.android.locationtracker.data.TrackerDataHelper; import com.android.locationtracker.data.TrackerListHelper; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; Loading Loading @@ -160,12 +159,8 @@ public class TrackerActivity extends ListActivity { private void exportKML() { String exportFileName = getUniqueFileName( LocationManager.NETWORK_PROVIDER + ".kml"); exportFile(LocationManager.NETWORK_PROVIDER, exportFileName, new TrackerDataHelper(this, TrackerDataHelper.KML_FORMATTER)); exportFileName = getUniqueFileName( LocationManager.GPS_PROVIDER + ".kml"); exportFile(LocationManager.GPS_PROVIDER, exportFileName, "fused" + ".kml"); exportFile(null, exportFileName, new TrackerDataHelper(this, TrackerDataHelper.KML_FORMATTER)); } Loading tests/LocationTracker/src/com/android/locationtracker/TrackerService.java +40 −77 Original line number Diff line number Diff line Loading @@ -16,8 +16,6 @@ package com.android.locationtracker; import com.android.locationtracker.data.TrackerDataHelper; import android.app.Service; import android.content.BroadcastReceiver; import android.content.Context; Loading @@ -28,6 +26,7 @@ import android.content.SharedPreferences.OnSharedPreferenceChangeListener; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.location.LocationRequest; import android.net.ConnectivityManager; import android.net.wifi.ScanResult; import android.net.wifi.WifiManager; Loading @@ -43,10 +42,9 @@ import android.telephony.gsm.GsmCellLocation; import android.util.Log; import android.widget.Toast; import java.util.ArrayList; import java.util.HashSet; import com.android.locationtracker.data.TrackerDataHelper; import java.util.List; import java.util.Set; /** * Location Tracking service Loading @@ -56,13 +54,10 @@ import java.util.Set; */ public class TrackerService extends Service { private List<LocationTrackingListener> mListeners; private LocationTrackingListener mListener; private static final String LOG_TAG = TrackerActivity.LOG_TAG; // controls which location providers to track private Set<String> mTrackedProviders; private TrackerDataHelper mTrackerData; private TelephonyManager mTelephonyManager; Loading @@ -79,7 +74,7 @@ public class TrackerService extends Service { // preference constants private static final String MIN_TIME_PREF = "mintime_preference"; private static final String MIN_DIS_PREF = "mindistance_preference"; private static final String POWER_PREF = "power_preference"; private static final String GPS_PREF = "gps_preference"; private static final String NETWORK_PREF = "network_preference"; private static final String SIGNAL_PREF = "signal_preference"; Loading @@ -103,43 +98,34 @@ public class TrackerService extends Service { * @param startId */ @Override public void onStart(Intent intent, int startId) { super.onStart(intent, startId); public int onStartCommand(Intent intent, int flags, int startId) { mNetworkLocation = null; initLocationListeners(); Toast.makeText(this, "Tracking service started", Toast.LENGTH_SHORT); return START_STICKY; } private synchronized void initLocationListeners() { mTrackerData = new TrackerDataHelper(this); LocationManager lm = getLocationManager(); mTrackedProviders = getTrackedProviders(); List<String> locationProviders = lm.getAllProviders(); mListeners = new ArrayList<LocationTrackingListener>( locationProviders.size()); mListener = new LocationTrackingListener(); LocationManager lm = getLocationManager(); long minUpdateTime = getLocationUpdateTime(); float minDistance = getLocationMinDistance(); for (String providerName : locationProviders) { if (mTrackedProviders.contains(providerName)) { Log.d(LOG_TAG, "Adding location listener for provider " + providerName); int powerConsumption = getPowerConsumption(); LocationRequest lr = LocationRequest.create(); lr.setInterval(minUpdateTime); lr.setQuality(powerConsumption); if (doDebugLogging()) { mTrackerData.writeEntry("init", String.format( "start listening to %s : %d ms; %f meters", providerName, minUpdateTime, minDistance)); } LocationTrackingListener listener = new LocationTrackingListener(); lm.requestLocationUpdates(providerName, minUpdateTime, minDistance, listener); mListeners.add(listener); } "start listening to location update : %d ms; %d power consumption", minUpdateTime, powerConsumption)); } Log.d(LOG_TAG, "Adding location listener"); lm.requestLocationUpdates(lr, mListener, null); mTelephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); if (doDebugLogging()) { Loading Loading @@ -168,30 +154,10 @@ public class TrackerService extends Service { getPreferences().registerOnSharedPreferenceChangeListener(mPrefListener); } private Set<String> getTrackedProviders() { Set<String> providerSet = new HashSet<String>(); if (trackGPS()) { providerSet.add(LocationManager.GPS_PROVIDER); } if (trackNetwork()) { providerSet.add(LocationManager.NETWORK_PROVIDER); } return providerSet; } private SharedPreferences getPreferences() { return PreferenceManager.getDefaultSharedPreferences(this); } private boolean trackNetwork() { return getPreferences().getBoolean(NETWORK_PREF, true); } private boolean trackGPS() { return getPreferences().getBoolean(GPS_PREF, true); } private boolean doDebugLogging() { return getPreferences().getBoolean(DEBUG_PREF, false); } Loading @@ -200,17 +166,6 @@ public class TrackerService extends Service { return getPreferences().getBoolean(SIGNAL_PREF, false); } private float getLocationMinDistance() { try { String disString = getPreferences().getString(MIN_DIS_PREF, "0"); return Float.parseFloat(disString); } catch (NumberFormatException e) { Log.e(LOG_TAG, "Invalid preference for location min distance", e); } return 0; } private long getLocationUpdateTime() { try { String timeString = getPreferences().getString(MIN_TIME_PREF, "0"); Loading @@ -223,6 +178,15 @@ public class TrackerService extends Service { return 0; } private int getPowerConsumption(){ try { String power = getPreferences().getString(POWER_PREF, "203"); return Integer.valueOf(power); } catch (NumberFormatException e) { Log.e(LOG_TAG, "Invalid preference for power consumption", e); } return 203; //high } /** * Shuts down this service */ Loading @@ -239,13 +203,11 @@ public class TrackerService extends Service { */ protected synchronized void stopListeners() { LocationManager lm = getLocationManager(); if (mListeners != null) { for (LocationTrackingListener listener : mListeners) { lm.removeUpdates(listener); } mListeners.clear(); if (mListener != null) { lm.removeUpdates(mListener); } mListeners = null; mListener = null; // stop cell state listener if (mTelephonyManager != null) { Loading Loading @@ -366,6 +328,7 @@ public class TrackerService extends Service { } } @Override public void onSignalStrengthsChanged(SignalStrength signalStrength) { if (mTelephonyManager.getPhoneType() == TelephonyManager.PHONE_TYPE_CDMA) { String updateMsg = "cdma dBM=" + signalStrength.getCdmaDbm(); Loading Loading
tests/LocationTracker/res/values/strings.xml +17 −5 Original line number Diff line number Diff line Loading @@ -16,15 +16,14 @@ * limitations under the License. */ --> <resources> <string name="start_service_menu">Start Service</string> <string name="stop_service_menu">Stop Service</string> <string name="settings_menu">Settings</string> <string name="update_preference">Update frequency</string> <string name="title_mintime_preference">Minimum update time</string> <string name="summary_mintime_preference">The suggested minimum time interval for location updates, in seconds</string> <string name="dialog_title_mintime_preference">Minimum update time</string> <string name="title_update_preference">Update Interval (seconds)</string> <string name="summary_update_preference">The suggested time interval for location updates, in seconds</string> <string name="dialog_update_preference">Update Interval (seconds)</string> <string name="title_mindistance_preference">Minimum distance</string> <string name="summary_mindistance_preference">Minimum distance interval for location updates, in meters</string> <string name="dialog_title_mindistance_preference">Minimum distance</string> Loading @@ -45,4 +44,17 @@ <string name="clear_data">Clear data</string> <string name="delete_confirm">All current tracking data will be deleted.</string> <string name="confirm_title">Clear data</string> <string name="title_power_preference">Power Consumption</string> <string name="summary_power_preference">Select "High" for high accuracy location updates. Select "Low" will avoid high power location work where possible. Select "None" will receive location updates triggered by other applications. </string> <string name="dialog_power_preference">Power Consumption</string> <string-array name="powerList"> <item >High</item> <item >Low</item> <item >None</item> </string-array> <string-array name="powerValues"> <item >203</item> <item >201</item> <item >200</item> </string-array> </resources> No newline at end of file
tests/LocationTracker/res/xml/preferences.xml +9 −8 Original line number Diff line number Diff line Loading @@ -21,15 +21,16 @@ <PreferenceCategory android:title="@string/update_preference"> <EditTextPreference android:key="mintime_preference" android:defaultValue="0" android:title="@string/title_mintime_preference" android:summary="@string/summary_mintime_preference" android:dialogTitle="@string/dialog_title_mintime_preference" /> android:title="@string/title_update_preference" android:summary="@string/summary_update_preference" android:dialogTitle="@string/dialog_update_preference" /> <EditTextPreference android:key="mindistance_preference" android:defaultValue="0" android:title="@string/title_mindistance_preference" android:summary="@string/summary_mindistance_preference" android:dialogTitle="@string/dialog_title_mindistance_preference" /> <ListPreference android:key="power_preference" android:title="@string/title_power_preference" android:summary="@string/summary_power_preference" android:defaultValue="203" android:entries="@array/powerList" android:entryValues="@array/powerValues"/> </PreferenceCategory> Loading
tests/LocationTracker/src/com/android/locationtracker/TrackerActivity.java +6 −11 Original line number Diff line number Diff line Loading @@ -16,17 +16,12 @@ package com.android.locationtracker; import com.android.locationtracker.data.DateUtils; import com.android.locationtracker.data.TrackerDataHelper; import com.android.locationtracker.data.TrackerListHelper; import android.app.AlertDialog; import android.app.ListActivity; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.content.Intent; import android.database.Cursor; import android.location.LocationManager; import android.os.Bundle; import android.os.Environment; import android.util.Log; Loading @@ -35,6 +30,10 @@ import android.view.MenuInflater; import android.view.MenuItem; import android.widget.Toast; import com.android.locationtracker.data.DateUtils; import com.android.locationtracker.data.TrackerDataHelper; import com.android.locationtracker.data.TrackerListHelper; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; Loading Loading @@ -160,12 +159,8 @@ public class TrackerActivity extends ListActivity { private void exportKML() { String exportFileName = getUniqueFileName( LocationManager.NETWORK_PROVIDER + ".kml"); exportFile(LocationManager.NETWORK_PROVIDER, exportFileName, new TrackerDataHelper(this, TrackerDataHelper.KML_FORMATTER)); exportFileName = getUniqueFileName( LocationManager.GPS_PROVIDER + ".kml"); exportFile(LocationManager.GPS_PROVIDER, exportFileName, "fused" + ".kml"); exportFile(null, exportFileName, new TrackerDataHelper(this, TrackerDataHelper.KML_FORMATTER)); } Loading
tests/LocationTracker/src/com/android/locationtracker/TrackerService.java +40 −77 Original line number Diff line number Diff line Loading @@ -16,8 +16,6 @@ package com.android.locationtracker; import com.android.locationtracker.data.TrackerDataHelper; import android.app.Service; import android.content.BroadcastReceiver; import android.content.Context; Loading @@ -28,6 +26,7 @@ import android.content.SharedPreferences.OnSharedPreferenceChangeListener; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.location.LocationRequest; import android.net.ConnectivityManager; import android.net.wifi.ScanResult; import android.net.wifi.WifiManager; Loading @@ -43,10 +42,9 @@ import android.telephony.gsm.GsmCellLocation; import android.util.Log; import android.widget.Toast; import java.util.ArrayList; import java.util.HashSet; import com.android.locationtracker.data.TrackerDataHelper; import java.util.List; import java.util.Set; /** * Location Tracking service Loading @@ -56,13 +54,10 @@ import java.util.Set; */ public class TrackerService extends Service { private List<LocationTrackingListener> mListeners; private LocationTrackingListener mListener; private static final String LOG_TAG = TrackerActivity.LOG_TAG; // controls which location providers to track private Set<String> mTrackedProviders; private TrackerDataHelper mTrackerData; private TelephonyManager mTelephonyManager; Loading @@ -79,7 +74,7 @@ public class TrackerService extends Service { // preference constants private static final String MIN_TIME_PREF = "mintime_preference"; private static final String MIN_DIS_PREF = "mindistance_preference"; private static final String POWER_PREF = "power_preference"; private static final String GPS_PREF = "gps_preference"; private static final String NETWORK_PREF = "network_preference"; private static final String SIGNAL_PREF = "signal_preference"; Loading @@ -103,43 +98,34 @@ public class TrackerService extends Service { * @param startId */ @Override public void onStart(Intent intent, int startId) { super.onStart(intent, startId); public int onStartCommand(Intent intent, int flags, int startId) { mNetworkLocation = null; initLocationListeners(); Toast.makeText(this, "Tracking service started", Toast.LENGTH_SHORT); return START_STICKY; } private synchronized void initLocationListeners() { mTrackerData = new TrackerDataHelper(this); LocationManager lm = getLocationManager(); mTrackedProviders = getTrackedProviders(); List<String> locationProviders = lm.getAllProviders(); mListeners = new ArrayList<LocationTrackingListener>( locationProviders.size()); mListener = new LocationTrackingListener(); LocationManager lm = getLocationManager(); long minUpdateTime = getLocationUpdateTime(); float minDistance = getLocationMinDistance(); for (String providerName : locationProviders) { if (mTrackedProviders.contains(providerName)) { Log.d(LOG_TAG, "Adding location listener for provider " + providerName); int powerConsumption = getPowerConsumption(); LocationRequest lr = LocationRequest.create(); lr.setInterval(minUpdateTime); lr.setQuality(powerConsumption); if (doDebugLogging()) { mTrackerData.writeEntry("init", String.format( "start listening to %s : %d ms; %f meters", providerName, minUpdateTime, minDistance)); } LocationTrackingListener listener = new LocationTrackingListener(); lm.requestLocationUpdates(providerName, minUpdateTime, minDistance, listener); mListeners.add(listener); } "start listening to location update : %d ms; %d power consumption", minUpdateTime, powerConsumption)); } Log.d(LOG_TAG, "Adding location listener"); lm.requestLocationUpdates(lr, mListener, null); mTelephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); if (doDebugLogging()) { Loading Loading @@ -168,30 +154,10 @@ public class TrackerService extends Service { getPreferences().registerOnSharedPreferenceChangeListener(mPrefListener); } private Set<String> getTrackedProviders() { Set<String> providerSet = new HashSet<String>(); if (trackGPS()) { providerSet.add(LocationManager.GPS_PROVIDER); } if (trackNetwork()) { providerSet.add(LocationManager.NETWORK_PROVIDER); } return providerSet; } private SharedPreferences getPreferences() { return PreferenceManager.getDefaultSharedPreferences(this); } private boolean trackNetwork() { return getPreferences().getBoolean(NETWORK_PREF, true); } private boolean trackGPS() { return getPreferences().getBoolean(GPS_PREF, true); } private boolean doDebugLogging() { return getPreferences().getBoolean(DEBUG_PREF, false); } Loading @@ -200,17 +166,6 @@ public class TrackerService extends Service { return getPreferences().getBoolean(SIGNAL_PREF, false); } private float getLocationMinDistance() { try { String disString = getPreferences().getString(MIN_DIS_PREF, "0"); return Float.parseFloat(disString); } catch (NumberFormatException e) { Log.e(LOG_TAG, "Invalid preference for location min distance", e); } return 0; } private long getLocationUpdateTime() { try { String timeString = getPreferences().getString(MIN_TIME_PREF, "0"); Loading @@ -223,6 +178,15 @@ public class TrackerService extends Service { return 0; } private int getPowerConsumption(){ try { String power = getPreferences().getString(POWER_PREF, "203"); return Integer.valueOf(power); } catch (NumberFormatException e) { Log.e(LOG_TAG, "Invalid preference for power consumption", e); } return 203; //high } /** * Shuts down this service */ Loading @@ -239,13 +203,11 @@ public class TrackerService extends Service { */ protected synchronized void stopListeners() { LocationManager lm = getLocationManager(); if (mListeners != null) { for (LocationTrackingListener listener : mListeners) { lm.removeUpdates(listener); } mListeners.clear(); if (mListener != null) { lm.removeUpdates(mListener); } mListeners = null; mListener = null; // stop cell state listener if (mTelephonyManager != null) { Loading Loading @@ -366,6 +328,7 @@ public class TrackerService extends Service { } } @Override public void onSignalStrengthsChanged(SignalStrength signalStrength) { if (mTelephonyManager.getPhoneType() == TelephonyManager.PHONE_TYPE_CDMA) { String updateMsg = "cdma dBM=" + signalStrength.getCdmaDbm(); Loading