summaryrefslogtreecommitdiff
path: root/altosdroid
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2013-04-11 22:16:25 -0700
committerKeith Packard <keithp@keithp.com>2013-04-11 22:16:25 -0700
commit1f88d345c407e409611448d0e8813ab5a6de0a0b (patch)
tree8a8518d0f4693591a297044c38e5cf51b338be0b /altosdroid
parent81730670b6848bebb2c6a8ac7813419112f2779a (diff)
altosdroid: Hook up the position listeners
Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'altosdroid')
-rw-r--r--altosdroid/AndroidManifest.xml1
-rw-r--r--altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java44
2 files changed, 43 insertions, 2 deletions
diff --git a/altosdroid/AndroidManifest.xml b/altosdroid/AndroidManifest.xml
index 237c6dcf..bf885744 100644
--- a/altosdroid/AndroidManifest.xml
+++ b/altosdroid/AndroidManifest.xml
@@ -31,7 +31,6 @@
<!-- Permissions needed for GoogleMaps -->
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
- <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<permission android:name="org.altusmetrum.AltosDroid.permission.MAPS_RECEIVE"
diff --git a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java
index 5ff00a68..e1a5ada8 100644
--- a/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java
+++ b/altosdroid/src/org/altusmetrum/AltosDroid/TelemetryService.java
@@ -29,7 +29,8 @@ import android.app.PendingIntent;
import android.app.Service;
import android.bluetooth.BluetoothDevice;
import android.content.Intent;
-//import android.os.Bundle;
+import android.content.Context;
+import android.os.Bundle;
import android.os.IBinder;
import android.os.Handler;
import android.os.Message;
@@ -37,9 +38,32 @@ import android.os.Messenger;
import android.os.RemoteException;
import android.util.Log;
import android.widget.Toast;
+import android.location.Location;
+import android.location.LocationManager;
+import android.location.LocationListener;
import org.altusmetrum.altoslib_1.*;
+class AltosLocationListener implements LocationListener {
+ boolean fine;
+
+ public void onLocationChanged(Location location) {
+ }
+
+ public void onStatusChanged(String provider, int status, Bundle extras) {
+ }
+
+ public void onProviderEnabled(String provider) {
+ }
+
+ public void onProviderDisabled(String provider) {
+ }
+
+ public AltosLocationListener(boolean fine) {
+ this.fine = fine;
+ }
+}
+
public class TelemetryService extends Service {
private static final String TAG = "TelemetryService";
@@ -81,6 +105,11 @@ public class TelemetryService extends Service {
// internally track state of bluetooth connection
private int state = STATE_NONE;
+ // location listeners
+
+ private AltosLocationListener gpsListener;
+ private AltosLocationListener netListener;
+
// Handler of incoming messages from clients.
static class IncomingHandler extends Handler {
private final WeakReference<TelemetryService> service;
@@ -249,6 +278,14 @@ public class TelemetryService extends Service {
// Start our timer - first event in 10 seconds, then every 10 seconds after that.
timer.scheduleAtFixedRate(new TimerTask(){ public void run() {onTimerTick();}}, 10000L, 10000L);
+ // Listen for GPS and Network position updates
+ gpsListener = new AltosLocationListener(true);
+ netListener = new AltosLocationListener(false);
+
+ LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
+
+ locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, gpsListener);
+ locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, netListener);
}
@Override
@@ -281,6 +318,11 @@ public class TelemetryService extends Service {
@Override
public void onDestroy() {
+ // Stop listening for location updates
+ LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
+ locationManager.removeUpdates(gpsListener);
+ locationManager.removeUpdates(netListener);
+
// Stop the bluetooth Comms threads
stopAltosBluetooth();