summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjandegr <jandegr@users.noreply.github.com>2018-05-23 20:34:14 +0200
committerGitHub <noreply@github.com>2018-05-23 20:34:14 +0200
commite9d9bbb85e8cde6c5ddd6d4ce54ac11125b0c898 (patch)
tree378810846e97b36730d1a7298d071b04be054f6e
parentff6cca1c9e5ff31429b2ffca33b44e2995faee30 (diff)
downloadnavit-e9d9bbb85e8cde6c5ddd6d4ce54ac11125b0c898.tar.gz
optimize imports
-rw-r--r--navit/android/src/org/navitproject/navit/NavitActivityResult.java1
-rwxr-xr-xnavit/android/src/org/navitproject/navit/NavitAppConfig.java120
-rw-r--r--navit/android/src/org/navitproject/navit/NavitCamera.java30
-rw-r--r--navit/android/src/org/navitproject/navit/NavitDialogs.java1
-rw-r--r--navit/android/src/org/navitproject/navit/NavitSensors.java49
-rw-r--r--navit/android/src/org/navitproject/navit/NavitVehicle.java319
-rw-r--r--navit/android/src/org/navitproject/navit/NavitWatch.java147
7 files changed, 336 insertions, 331 deletions
diff --git a/navit/android/src/org/navitproject/navit/NavitActivityResult.java b/navit/android/src/org/navitproject/navit/NavitActivityResult.java
index 63b4e798f..f52f06c9c 100644
--- a/navit/android/src/org/navitproject/navit/NavitActivityResult.java
+++ b/navit/android/src/org/navitproject/navit/NavitActivityResult.java
@@ -1,4 +1,5 @@
package org.navitproject.navit;
+
import android.content.Intent;
public interface NavitActivityResult {
diff --git a/navit/android/src/org/navitproject/navit/NavitAppConfig.java b/navit/android/src/org/navitproject/navit/NavitAppConfig.java
index 7cc5a6173..bcbe6b8a5 100755
--- a/navit/android/src/org/navitproject/navit/NavitAppConfig.java
+++ b/navit/android/src/org/navitproject/navit/NavitAppConfig.java
@@ -1,70 +1,70 @@
package org.navitproject.navit;
-import java.util.ArrayList;
-import java.util.List;
+import android.app.Application;
+import android.content.SharedPreferences;
import org.navitproject.navit.NavitAddressSearchActivity.NavitAddress;
-import android.app.Application;
-import android.content.SharedPreferences;
+import java.util.ArrayList;
+import java.util.List;
public class NavitAppConfig extends Application {
- private static final int MAX_LAST_ADDRESSES = 10;
- private static final String TAG = "Navit";
-
- private List<NavitAddress> mLastAddresses = null;
- private int mLastAddressField;
- private SharedPreferences mSettings;
-
- @Override
- public void onCreate() {
- mSettings = getSharedPreferences(Navit.NAVIT_PREFS, MODE_PRIVATE);
- super.onCreate();
- }
-
- public List<NavitAddress> getLastAddresses() {
- if (mLastAddresses == null) {
- mLastAddresses = new ArrayList<NavitAddress>();
- int mLastAddressField = mSettings.getInt("LastAddress", -1);
- if (mLastAddressField >= 0) {
- int index = mLastAddressField;
- do {
- String addr_str = mSettings.getString("LastAddress_" + String.valueOf(index), "");
-
- if (addr_str.length() > 0) {
- mLastAddresses.add(new NavitAddress(
- 1,
- mSettings.getFloat("LastAddress_Lat_" + String.valueOf(index), 0),
- mSettings.getFloat("LastAddress_Lon_" + String.valueOf(index), 0),
- addr_str));
- }
-
- if (--index < 0) index = MAX_LAST_ADDRESSES - 1;
-
- } while (index != mLastAddressField);
- }
- }
- return mLastAddresses;
- }
-
- public void addLastAddress(NavitAddress newAddress) {
- getLastAddresses();
-
- mLastAddresses.add(newAddress);
- if (mLastAddresses.size() > MAX_LAST_ADDRESSES) mLastAddresses.remove(0);
-
- mLastAddressField++;
- if (mLastAddressField >= MAX_LAST_ADDRESSES) mLastAddressField = 0;
-
- SharedPreferences.Editor editSettings = mSettings.edit();
-
- editSettings.putInt("LastAddress", mLastAddressField);
- editSettings.putString("LastAddress_" + String.valueOf(mLastAddressField), newAddress.addr);
- editSettings.putFloat("LastAddress_Lat_" + String.valueOf(mLastAddressField), newAddress.lat);
- editSettings.putFloat("LastAddress_Lon_" + String.valueOf(mLastAddressField), newAddress.lon);
-
- editSettings.apply();
- }
+ private static final int MAX_LAST_ADDRESSES = 10;
+ private static final String TAG = "Navit";
+
+ private List<NavitAddress> mLastAddresses = null;
+ private int mLastAddressField;
+ private SharedPreferences mSettings;
+
+ @Override
+ public void onCreate() {
+ mSettings = getSharedPreferences(Navit.NAVIT_PREFS, MODE_PRIVATE);
+ super.onCreate();
+ }
+
+ public List<NavitAddress> getLastAddresses() {
+ if (mLastAddresses == null) {
+ mLastAddresses = new ArrayList<NavitAddress>();
+ int mLastAddressField = mSettings.getInt("LastAddress", -1);
+ if (mLastAddressField >= 0) {
+ int index = mLastAddressField;
+ do {
+ String addr_str = mSettings.getString("LastAddress_" + String.valueOf(index), "");
+
+ if (addr_str.length() > 0) {
+ mLastAddresses.add(new NavitAddress(
+ 1,
+ mSettings.getFloat("LastAddress_Lat_" + String.valueOf(index), 0),
+ mSettings.getFloat("LastAddress_Lon_" + String.valueOf(index), 0),
+ addr_str));
+ }
+
+ if (--index < 0) index = MAX_LAST_ADDRESSES - 1;
+
+ } while (index != mLastAddressField);
+ }
+ }
+ return mLastAddresses;
+ }
+
+ public void addLastAddress(NavitAddress newAddress) {
+ getLastAddresses();
+
+ mLastAddresses.add(newAddress);
+ if (mLastAddresses.size() > MAX_LAST_ADDRESSES) mLastAddresses.remove(0);
+
+ mLastAddressField++;
+ if (mLastAddressField >= MAX_LAST_ADDRESSES) mLastAddressField = 0;
+
+ SharedPreferences.Editor editSettings = mSettings.edit();
+
+ editSettings.putInt("LastAddress", mLastAddressField);
+ editSettings.putString("LastAddress_" + String.valueOf(mLastAddressField), newAddress.addr);
+ editSettings.putFloat("LastAddress_Lat_" + String.valueOf(mLastAddressField), newAddress.lat);
+ editSettings.putFloat("LastAddress_Lon_" + String.valueOf(mLastAddressField), newAddress.lon);
+
+ editSettings.apply();
+ }
}
diff --git a/navit/android/src/org/navitproject/navit/NavitCamera.java b/navit/android/src/org/navitproject/navit/NavitCamera.java
index bd78b36b2..1f08afca8 100644
--- a/navit/android/src/org/navitproject/navit/NavitCamera.java
+++ b/navit/android/src/org/navitproject/navit/NavitCamera.java
@@ -15,47 +15,47 @@
*/
package org.navitproject.navit;
-import java.io.IOException;
-
import android.content.Context;
import android.hardware.Camera;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
+import java.io.IOException;
+
public class NavitCamera extends SurfaceView implements SurfaceHolder.Callback {
- SurfaceHolder mHolder;
- Camera mCamera;
+ SurfaceHolder mHolder;
+ Camera mCamera;
- NavitCamera(Context context)
- {
- super(context);
- mHolder = getHolder();
+ NavitCamera(Context context)
+ {
+ super(context);
+ mHolder = getHolder();
mHolder.addCallback(this);
mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
- Log.e("NavitCamera","Creator");
+ Log.e("NavitCamera","Creator");
-
- }
+
+ }
public void surfaceCreated(SurfaceHolder holder) {
// The Surface has been created, acquire the camera and tell it where
// to draw.
try {
- mCamera = Camera.open();
+ mCamera = Camera.open();
mCamera.setPreviewDisplay(holder);
} catch (IOException exception) {
mCamera.release();
mCamera = null;
// TODO: add more exception handling logic here
}
- Log.e("NavitCamera","surfaceCreated");
+ Log.e("NavitCamera","surfaceCreated");
}
public void surfaceDestroyed(SurfaceHolder holder) {
@@ -64,13 +64,13 @@ public class NavitCamera extends SurfaceView implements SurfaceHolder.Callback {
// important to release it when the activity is paused.
mCamera.stopPreview();
mCamera = null;
- Log.e("NavitCamera","surfaceDestroyed");
+ Log.e("NavitCamera","surfaceDestroyed");
}
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
// Now that the size is known, set up the camera parameters and begin
// the preview.
- Log.e("NavitCamera","surfaceChanged "+w+"x"+h);
+ Log.e("NavitCamera","surfaceChanged "+w+"x"+h);
mCamera.stopPreview();
Camera.Parameters parameters = mCamera.getParameters();
parameters.setPreviewSize(w, h);
diff --git a/navit/android/src/org/navitproject/navit/NavitDialogs.java b/navit/android/src/org/navitproject/navit/NavitDialogs.java
index 426acb76f..b22eac353 100644
--- a/navit/android/src/org/navitproject/navit/NavitDialogs.java
+++ b/navit/android/src/org/navitproject/navit/NavitDialogs.java
@@ -13,6 +13,7 @@ import android.os.Message;
import android.util.Log;
import android.widget.ArrayAdapter;
import android.widget.Toast;
+
import java.io.File;
public class NavitDialogs extends Handler {
diff --git a/navit/android/src/org/navitproject/navit/NavitSensors.java b/navit/android/src/org/navitproject/navit/NavitSensors.java
index b263ed082..a0d300223 100644
--- a/navit/android/src/org/navitproject/navit/NavitSensors.java
+++ b/navit/android/src/org/navitproject/navit/NavitSensors.java
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package org.navitproject.navit;
import android.content.Context;
@@ -24,29 +25,29 @@ import android.hardware.SensorManager;
public class NavitSensors implements SensorEventListener {
- private SensorManager mSensorManager;
- private int callbackid;
- public native void SensorCallback(int id, int sensor, float x, float y, float z);
-
-
- NavitSensors(Context context, int cbid)
- {
- mSensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
- mSensorManager.registerListener((SensorEventListener)this, mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL);
- mSensorManager.registerListener((SensorEventListener)this, mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD), SensorManager.SENSOR_DELAY_NORMAL);
- callbackid=cbid;
- }
-
- public void
- onAccuracyChanged(Sensor sensor, int accuracy)
- {
- }
-
- public void
- onSensorChanged(SensorEvent sev)
- {
- // Log.e("NavitSensor","Type:" + sev.sensor.getType() + " X:" + sev.values[0] + " Y:"+sev.values[1]+" Z:"+sev.values[2]);
- SensorCallback(callbackid, sev.sensor.getType(), sev.values[0], sev.values[1], sev.values[2]);
- }
+ private SensorManager mSensorManager;
+ private int callbackid;
+ public native void SensorCallback(int id, int sensor, float x, float y, float z);
+
+
+ NavitSensors(Context context, int cbid)
+ {
+ mSensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
+ mSensorManager.registerListener((SensorEventListener)this, mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL);
+ mSensorManager.registerListener((SensorEventListener)this, mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD), SensorManager.SENSOR_DELAY_NORMAL);
+ callbackid=cbid;
+ }
+
+ public void
+ onAccuracyChanged(Sensor sensor, int accuracy)
+ {
+ }
+
+ public void
+ onSensorChanged(SensorEvent sev)
+ {
+ // Log.e("NavitSensor","Type:" + sev.sensor.getType() + " X:" + sev.values[0] + " Y:"+sev.values[1]+" Z:"+sev.values[2]);
+ SensorCallback(callbackid, sev.sensor.getType(), sev.values[0], sev.values[1], sev.values[2]);
+ }
}
diff --git a/navit/android/src/org/navitproject/navit/NavitVehicle.java b/navit/android/src/org/navitproject/navit/NavitVehicle.java
index 583d044c1..b224f9e3a 100644
--- a/navit/android/src/org/navitproject/navit/NavitVehicle.java
+++ b/navit/android/src/org/navitproject/navit/NavitVehicle.java
@@ -19,7 +19,6 @@
package org.navitproject.navit;
-import java.util.List;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
@@ -32,167 +31,169 @@ import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
-import android.util.Log;
import android.support.v4.content.ContextCompat;
+import android.util.Log;
+
+import java.util.List;
public class NavitVehicle {
-
- private static final String GPS_FIX_CHANGE = "android.location.GPS_FIX_CHANGE";
-
- public static Location lastLocation = null;
-
- private static LocationManager sLocationManager = null;
- private static Context context = null;
- private int vehicle_pcbid;
- private int vehicle_scbid;
- private int vehicle_fcbid;
- private String preciseProvider;
- private String fastProvider;
-
- private static NavitLocationListener preciseLocationListener = null;
- private static NavitLocationListener fastLocationListener = null;
-
- public native void VehicleCallback(int id, Location location);
- public native void VehicleCallback(int id, int satsInView, int satsUsed);
- public native void VehicleCallback(int id, int enabled);
-
- private class NavitLocationListener extends BroadcastReceiver implements GpsStatus.Listener, LocationListener {
- public boolean precise = false;
- public void onLocationChanged(Location location) {
- lastLocation = location;
- // Disable the fast provider if still active
- if (precise && fastProvider != null) {
- sLocationManager.removeUpdates(fastLocationListener);
- fastProvider = null;
- }
-
- VehicleCallback(vehicle_pcbid, location);
- VehicleCallback(vehicle_fcbid, 1);
- }
- public void onProviderDisabled(String provider){}
- public void onProviderEnabled(String provider) {}
- public void onStatusChanged(String provider, int status, Bundle extras) {}
-
- /**
- * Called when the status of the GPS changes.
- */
- public void onGpsStatusChanged (int event) {
- if (ContextCompat.checkSelfPermission(context, android.Manifest.permission.ACCESS_FINE_LOCATION)
- != PackageManager.PERMISSION_GRANTED) {
- // Permission is not granted
- return;
- }
- GpsStatus status = sLocationManager.getGpsStatus(null);
- int satsInView = 0;
- int satsUsed = 0;
- Iterable<GpsSatellite> sats = status.getSatellites();
- for (GpsSatellite sat : sats) {
- satsInView++;
- if (sat.usedInFix()) {
- satsUsed++;
- }
- }
- VehicleCallback(vehicle_scbid, satsInView, satsUsed);
- }
-
- @Override
- public void onReceive(Context context, Intent intent) {
- if (intent.getAction().equals(GPS_FIX_CHANGE)) {
- if (intent.getBooleanExtra("enabled", false))
- VehicleCallback(vehicle_fcbid, 1);
- else if (!intent.getBooleanExtra("enabled", true))
- VehicleCallback(vehicle_fcbid, 0);
- }
- }
- }
-
- /**
- * @brief Creates a new {@code NavitVehicle}
- *
- * @param context
- * @param pcbid The address of the position callback function which will be called when a location update is received
- * @param scbid The address of the status callback function which will be called when a status update is received
- * @param fcbid The address of the fix callback function which will be called when a
- * {@code android.location.GPS_FIX_CHANGE} is received, indicating a change in GPS fix status
- */
- NavitVehicle (Context context, int pcbid, int scbid, int fcbid) {
- if (ContextCompat.checkSelfPermission(context, android.Manifest.permission.ACCESS_FINE_LOCATION)
- != PackageManager.PERMISSION_GRANTED) {
- // Permission is not granted
- return;
- }
- this.context = context;
- sLocationManager = (LocationManager)context.getSystemService(Context.LOCATION_SERVICE);
- preciseLocationListener = new NavitLocationListener();
- preciseLocationListener.precise = true;
- fastLocationListener = new NavitLocationListener();
-
- /* Use 2 LocationProviders, one precise (usually GPS), and one
- not so precise, but possible faster. The fast provider is
- disabled when the precise provider gets its first fix. */
-
- // Selection criteria for the precise provider
- Criteria highCriteria = new Criteria();
- highCriteria.setAccuracy(Criteria.ACCURACY_FINE);
- highCriteria.setAltitudeRequired(true);
- highCriteria.setBearingRequired(true);
- highCriteria.setCostAllowed(true);
- highCriteria.setPowerRequirement(Criteria.POWER_HIGH);
-
- // Selection criteria for the fast provider
- Criteria lowCriteria = new Criteria();
- lowCriteria.setAccuracy(Criteria.ACCURACY_COARSE);
- lowCriteria.setAltitudeRequired(false);
- lowCriteria.setBearingRequired(false);
- lowCriteria.setCostAllowed(true);
- lowCriteria.setPowerRequirement(Criteria.POWER_HIGH);
-
- Log.e("NavitVehicle", "Providers " + sLocationManager.getAllProviders());
-
- preciseProvider = sLocationManager.getBestProvider(highCriteria, false);
- Log.e("NavitVehicle", "Precise Provider " + preciseProvider);
- fastProvider = sLocationManager.getBestProvider(lowCriteria, false);
- Log.e("NavitVehicle", "Fast Provider " + fastProvider);
- vehicle_pcbid = pcbid;
- vehicle_scbid = scbid;
- vehicle_fcbid = fcbid;
-
- context.registerReceiver(preciseLocationListener, new IntentFilter(GPS_FIX_CHANGE));
- sLocationManager.requestLocationUpdates(preciseProvider, 0, 0, preciseLocationListener);
- sLocationManager.addGpsStatusListener(preciseLocationListener);
-
- /*
- * Since Android criteria have no way to specify "fast fix", lowCriteria may return the same
- * provider as highCriteria, even if others are available. In this case, do not register two
- * listeners for the same provider but pick the fast provider manually. (Usually there will
- * only be two providers in total, which makes the choice easy.)
- */
- if (fastProvider == null || preciseProvider.compareTo(fastProvider) == 0) {
- List<String> fastProviderList = sLocationManager.getProviders(lowCriteria, false);
- fastProvider = null;
- for (String fastCandidate: fastProviderList) {
- if (preciseProvider.compareTo(fastCandidate) != 0) {
- fastProvider = fastCandidate;
- break;
- }
- }
- }
- if (fastProvider != null) {
- sLocationManager.requestLocationUpdates(fastProvider, 0, 0, fastLocationListener);
- }
- }
-
- public static void removeListener() {
- if (sLocationManager != null) {
- if (preciseLocationListener != null) {
- sLocationManager.removeUpdates(preciseLocationListener);
- sLocationManager.removeGpsStatusListener(preciseLocationListener);
- context.unregisterReceiver(preciseLocationListener);
- }
- if (fastLocationListener != null) sLocationManager.removeUpdates(fastLocationListener);
- }
-
- }
+
+ private static final String GPS_FIX_CHANGE = "android.location.GPS_FIX_CHANGE";
+
+ public static Location lastLocation = null;
+
+ private static LocationManager sLocationManager = null;
+ private static Context context = null;
+ private int vehicle_pcbid;
+ private int vehicle_scbid;
+ private int vehicle_fcbid;
+ private String preciseProvider;
+ private String fastProvider;
+
+ private static NavitLocationListener preciseLocationListener = null;
+ private static NavitLocationListener fastLocationListener = null;
+
+ public native void VehicleCallback(int id, Location location);
+ public native void VehicleCallback(int id, int satsInView, int satsUsed);
+ public native void VehicleCallback(int id, int enabled);
+
+ private class NavitLocationListener extends BroadcastReceiver implements GpsStatus.Listener, LocationListener {
+ public boolean precise = false;
+ public void onLocationChanged(Location location) {
+ lastLocation = location;
+ // Disable the fast provider if still active
+ if (precise && fastProvider != null) {
+ sLocationManager.removeUpdates(fastLocationListener);
+ fastProvider = null;
+ }
+
+ VehicleCallback(vehicle_pcbid, location);
+ VehicleCallback(vehicle_fcbid, 1);
+ }
+ public void onProviderDisabled(String provider){}
+ public void onProviderEnabled(String provider) {}
+ public void onStatusChanged(String provider, int status, Bundle extras) {}
+
+ /**
+ * Called when the status of the GPS changes.
+ */
+ public void onGpsStatusChanged (int event) {
+ if (ContextCompat.checkSelfPermission(context, android.Manifest.permission.ACCESS_FINE_LOCATION)
+ != PackageManager.PERMISSION_GRANTED) {
+ // Permission is not granted
+ return;
+ }
+ GpsStatus status = sLocationManager.getGpsStatus(null);
+ int satsInView = 0;
+ int satsUsed = 0;
+ Iterable<GpsSatellite> sats = status.getSatellites();
+ for (GpsSatellite sat : sats) {
+ satsInView++;
+ if (sat.usedInFix()) {
+ satsUsed++;
+ }
+ }
+ VehicleCallback(vehicle_scbid, satsInView, satsUsed);
+ }
+
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ if (intent.getAction().equals(GPS_FIX_CHANGE)) {
+ if (intent.getBooleanExtra("enabled", false))
+ VehicleCallback(vehicle_fcbid, 1);
+ else if (!intent.getBooleanExtra("enabled", true))
+ VehicleCallback(vehicle_fcbid, 0);
+ }
+ }
+ }
+
+ /**
+ * @brief Creates a new {@code NavitVehicle}
+ *
+ * @param context
+ * @param pcbid The address of the position callback function which will be called when a location update is received
+ * @param scbid The address of the status callback function which will be called when a status update is received
+ * @param fcbid The address of the fix callback function which will be called when a
+ * {@code android.location.GPS_FIX_CHANGE} is received, indicating a change in GPS fix status
+ */
+ NavitVehicle (Context context, int pcbid, int scbid, int fcbid) {
+ if (ContextCompat.checkSelfPermission(context, android.Manifest.permission.ACCESS_FINE_LOCATION)
+ != PackageManager.PERMISSION_GRANTED) {
+ // Permission is not granted
+ return;
+ }
+ this.context = context;
+ sLocationManager = (LocationManager)context.getSystemService(Context.LOCATION_SERVICE);
+ preciseLocationListener = new NavitLocationListener();
+ preciseLocationListener.precise = true;
+ fastLocationListener = new NavitLocationListener();
+
+ /* Use 2 LocationProviders, one precise (usually GPS), and one
+ not so precise, but possible faster. The fast provider is
+ disabled when the precise provider gets its first fix. */
+
+ // Selection criteria for the precise provider
+ Criteria highCriteria = new Criteria();
+ highCriteria.setAccuracy(Criteria.ACCURACY_FINE);
+ highCriteria.setAltitudeRequired(true);
+ highCriteria.setBearingRequired(true);
+ highCriteria.setCostAllowed(true);
+ highCriteria.setPowerRequirement(Criteria.POWER_HIGH);
+
+ // Selection criteria for the fast provider
+ Criteria lowCriteria = new Criteria();
+ lowCriteria.setAccuracy(Criteria.ACCURACY_COARSE);
+ lowCriteria.setAltitudeRequired(false);
+ lowCriteria.setBearingRequired(false);
+ lowCriteria.setCostAllowed(true);
+ lowCriteria.setPowerRequirement(Criteria.POWER_HIGH);
+
+ Log.e("NavitVehicle", "Providers " + sLocationManager.getAllProviders());
+
+ preciseProvider = sLocationManager.getBestProvider(highCriteria, false);
+ Log.e("NavitVehicle", "Precise Provider " + preciseProvider);
+ fastProvider = sLocationManager.getBestProvider(lowCriteria, false);
+ Log.e("NavitVehicle", "Fast Provider " + fastProvider);
+ vehicle_pcbid = pcbid;
+ vehicle_scbid = scbid;
+ vehicle_fcbid = fcbid;
+
+ context.registerReceiver(preciseLocationListener, new IntentFilter(GPS_FIX_CHANGE));
+ sLocationManager.requestLocationUpdates(preciseProvider, 0, 0, preciseLocationListener);
+ sLocationManager.addGpsStatusListener(preciseLocationListener);
+
+ /*
+ * Since Android criteria have no way to specify "fast fix", lowCriteria may return the same
+ * provider as highCriteria, even if others are available. In this case, do not register two
+ * listeners for the same provider but pick the fast provider manually. (Usually there will
+ * only be two providers in total, which makes the choice easy.)
+ */
+ if (fastProvider == null || preciseProvider.compareTo(fastProvider) == 0) {
+ List<String> fastProviderList = sLocationManager.getProviders(lowCriteria, false);
+ fastProvider = null;
+ for (String fastCandidate: fastProviderList) {
+ if (preciseProvider.compareTo(fastCandidate) != 0) {
+ fastProvider = fastCandidate;
+ break;
+ }
+ }
+ }
+ if (fastProvider != null) {
+ sLocationManager.requestLocationUpdates(fastProvider, 0, 0, fastLocationListener);
+ }
+ }
+
+ public static void removeListener() {
+ if (sLocationManager != null) {
+ if (preciseLocationListener != null) {
+ sLocationManager.removeUpdates(preciseLocationListener);
+ sLocationManager.removeGpsStatusListener(preciseLocationListener);
+ context.unregisterReceiver(preciseLocationListener);
+ }
+ if (fastLocationListener != null) sLocationManager.removeUpdates(fastLocationListener);
+ }
+
+ }
}
diff --git a/navit/android/src/org/navitproject/navit/NavitWatch.java b/navit/android/src/org/navitproject/navit/NavitWatch.java
index ebe5c8727..c73d451be 100644
--- a/navit/android/src/org/navitproject/navit/NavitWatch.java
+++ b/navit/android/src/org/navitproject/navit/NavitWatch.java
@@ -19,84 +19,85 @@
package org.navitproject.navit;
-import java.lang.Thread;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
+import java.lang.Thread;
+
public class NavitWatch implements Runnable {
- private Thread thread;
- private static Handler handler =new Handler() {
- public void handleMessage(Message m) {
- Log.e("NavitWatch","Handler received message");
- }
- };
- private boolean removed;
- private int watch_func;
- private int watch_fd;
- private int watch_cond;
- private int watch_callbackid;
- private boolean callback_pending;
- private Runnable callback_runnable;
- public native void poll(int func, int fd, int cond);
- public native void WatchCallback(int id);
+ private Thread thread;
+ private static Handler handler =new Handler() {
+ public void handleMessage(Message m) {
+ Log.e("NavitWatch","Handler received message");
+ }
+ };
+ private boolean removed;
+ private int watch_func;
+ private int watch_fd;
+ private int watch_cond;
+ private int watch_callbackid;
+ private boolean callback_pending;
+ private Runnable callback_runnable;
+ public native void poll(int func, int fd, int cond);
+ public native void WatchCallback(int id);
- NavitWatch(int func, int fd, int cond, int callbackid)
- {
- // Log.e("NavitWatch","Creating new thread for "+fd+" "+cond+" from current thread " + java.lang.Thread.currentThread().getName());
- watch_func=func;
- watch_fd=fd;
- watch_cond=cond;
- watch_callbackid=callbackid;
- final NavitWatch navitwatch=this;
- callback_runnable = new Runnable() {
- public void run()
- {
- navitwatch.callback();
- }
- };
- thread = new Thread(this, "poll thread");
- thread.start();
- }
- public void run()
- {
- for (;;) {
- // Log.e("NavitWatch","Polling "+watch_fd+" "+watch_cond + " from " + java.lang.Thread.currentThread().getName());
- poll(watch_func, watch_fd, watch_cond);
- // Log.e("NavitWatch","poll returned");
- if (removed)
- break;
- callback_pending=true;
- handler.post(callback_runnable);
- try {
- // Log.e("NavitWatch","wait");
- synchronized(this) {
- if (callback_pending)
- this.wait();
- }
- // Log.e("NavitWatch","wait returned");
- } catch (Exception e) {
- Log.e("NavitWatch","Exception "+e.getMessage());
- }
- if (removed)
- break;
- }
- }
- public void callback()
- {
- // Log.e("NavitWatch","Calling Callback");
- if (!removed)
- WatchCallback(watch_callbackid);
- synchronized(this) {
- callback_pending=false;
- // Log.e("NavitWatch","Waking up");
- this.notify();
- }
- }
- public void remove()
- {
- removed=true;
- thread.interrupt();
- }
+ NavitWatch(int func, int fd, int cond, int callbackid)
+ {
+ // Log.e("NavitWatch","Creating new thread for "+fd+" "+cond+" from current thread " + java.lang.Thread.currentThread().getName());
+ watch_func=func;
+ watch_fd=fd;
+ watch_cond=cond;
+ watch_callbackid=callbackid;
+ final NavitWatch navitwatch=this;
+ callback_runnable = new Runnable() {
+ public void run()
+ {
+ navitwatch.callback();
+ }
+ };
+ thread = new Thread(this, "poll thread");
+ thread.start();
+ }
+ public void run()
+ {
+ for (;;) {
+ // Log.e("NavitWatch","Polling "+watch_fd+" "+watch_cond + " from " + java.lang.Thread.currentThread().getName());
+ poll(watch_func, watch_fd, watch_cond);
+ // Log.e("NavitWatch","poll returned");
+ if (removed)
+ break;
+ callback_pending=true;
+ handler.post(callback_runnable);
+ try {
+ // Log.e("NavitWatch","wait");
+ synchronized(this) {
+ if (callback_pending)
+ this.wait();
+ }
+ // Log.e("NavitWatch","wait returned");
+ } catch (Exception e) {
+ Log.e("NavitWatch","Exception "+e.getMessage());
+ }
+ if (removed)
+ break;
+ }
+ }
+ public void callback()
+ {
+ // Log.e("NavitWatch","Calling Callback");
+ if (!removed)
+ WatchCallback(watch_callbackid);
+ synchronized(this) {
+ callback_pending=false;
+ // Log.e("NavitWatch","Waking up");
+ this.notify();
+ }
+ }
+ public void remove()
+ {
+ removed=true;
+ thread.interrupt();
+ }
}