summaryrefslogtreecommitdiffstats
path: root/tests/LocationTracker
diff options
context:
space:
mode:
Diffstat (limited to 'tests/LocationTracker')
-rw-r--r--tests/LocationTracker/res/values/strings.xml22
-rwxr-xr-xtests/LocationTracker/res/xml/preferences.xml17
-rw-r--r--tests/LocationTracker/src/com/android/locationtracker/TrackerActivity.java17
-rw-r--r--tests/LocationTracker/src/com/android/locationtracker/TrackerService.java117
4 files changed, 72 insertions, 101 deletions
diff --git a/tests/LocationTracker/res/values/strings.xml b/tests/LocationTracker/res/values/strings.xml
index ea6bf2d..60a2912 100644
--- a/tests/LocationTracker/res/values/strings.xml
+++ b/tests/LocationTracker/res/values/strings.xml
@@ -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>
@@ -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>
-</resources>
+ <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
diff --git a/tests/LocationTracker/res/xml/preferences.xml b/tests/LocationTracker/res/xml/preferences.xml
index 61d4817..bd7f504 100755
--- a/tests/LocationTracker/res/xml/preferences.xml
+++ b/tests/LocationTracker/res/xml/preferences.xml
@@ -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>
diff --git a/tests/LocationTracker/src/com/android/locationtracker/TrackerActivity.java b/tests/LocationTracker/src/com/android/locationtracker/TrackerActivity.java
index 4cfdf6c..835e584 100644
--- a/tests/LocationTracker/src/com/android/locationtracker/TrackerActivity.java
+++ b/tests/LocationTracker/src/com/android/locationtracker/TrackerActivity.java
@@ -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;
@@ -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;
@@ -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));
}
diff --git a/tests/LocationTracker/src/com/android/locationtracker/TrackerService.java b/tests/LocationTracker/src/com/android/locationtracker/TrackerService.java
index e2332bf..844d13f 100644
--- a/tests/LocationTracker/src/com/android/locationtracker/TrackerService.java
+++ b/tests/LocationTracker/src/com/android/locationtracker/TrackerService.java
@@ -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;
@@ -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;
@@ -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
@@ -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;
@@ -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";
@@ -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);
- 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);
- }
+ int powerConsumption = getPowerConsumption();
+ LocationRequest lr = LocationRequest.create();
+ lr.setInterval(minUpdateTime);
+ lr.setQuality(powerConsumption);
+ if (doDebugLogging()) {
+ mTrackerData.writeEntry("init", String.format(
+ "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()) {
@@ -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);
}
@@ -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");
@@ -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
*/
@@ -239,19 +203,17 @@ 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) {
mTelephonyManager.listen(mPhoneStateListener, 0);
- }
-
+ }
+
// stop network/wifi listener
if (mNetwork != null) {
unregisterReceiver(mNetwork);
@@ -318,7 +280,7 @@ public class TrackerService extends Service {
/**
* Writes update to tracking file
- *
+ *
* @param provider - name of enabled provider
*/
public void onProviderEnabled(String provider) {
@@ -328,8 +290,8 @@ public class TrackerService extends Service {
}
/**
- * Writes update to tracking file
- *
+ * Writes update to tracking file
+ *
* @param provider - name of provider whose status changed
* @param status - new status
* @param extras - optional set of extra status messages
@@ -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();