import android.location.LocationListener;
import android.location.Criteria;
-import org.altusmetrum.altoslib_7.*;
+import org.altusmetrum.altoslib_10.*;
/**
* This Activity appears as a dialog. It lists any paired devices and
* by the user, the MAC address of the device is sent back to the parent
* Activity in the result Intent.
*/
-public class PreloadMapActivity extends Activity implements AltosLaunchSiteListener, AltosMapInterface, AltosMapLoaderListener, LocationListener {
+public class PreloadMapActivity extends Activity implements AltosLaunchSiteListener, AltosMapLoaderListener, LocationListener {
private ArrayAdapter<AltosLaunchSite> known_sites_adapter;
private ProgressBar progress;
+ private AltosMapLoader loader;
+
+ long loader_notify_time;
+
/* AltosMapLoaderListener interfaces */
public void loader_start(final int max) {
+ loader_notify_time = System.currentTimeMillis();
+
this.runOnUiThread(new Runnable() {
public void run() {
progress.setMax(max);
}
public void loader_notify(final int cur, final int max, final String name) {
+ long now = System.currentTimeMillis();
+
+ if (now - loader_notify_time < 100)
+ return;
+
+ loader_notify_time = now;
+
this.runOnUiThread(new Runnable() {
public void run() {
progress.setProgress(cur);
}
public void loader_done(int max) {
+ loader = null;
this.runOnUiThread(new Runnable() {
public void run() {
progress.setProgress(0);
});
}
+ public void debug(String format, Object ... arguments) {
+ AltosDebug.debug(format, arguments);
+ }
+
/* AltosLaunchSiteListener interface */
+
public void notify_launch_sites(final List<AltosLaunchSite> sites) {
this.runOnUiThread(new Runnable() {
public void run() {
});
}
- AltosMap map;
- AltosMapLoader loader;
-
- class PreloadMapImage implements AltosImage {
- public void flush() {
- }
-
- public PreloadMapImage(File file) {
- }
- }
-
- public AltosMapPath new_path() {
- return null;
- }
-
- public AltosMapLine new_line() {
- return null;
- }
-
- public AltosImage load_image(File file) throws Exception {
- return new PreloadMapImage(file);
- }
-
- public AltosMapMark new_mark(double lat, double lon, int state) {
- return null;
- }
-
- class PreloadMapTile extends AltosMapTile {
- public void paint(AltosMapTransform t) {
- }
-
- public PreloadMapTile(AltosMapTileListener listener, AltosLatLon upper_left, AltosLatLon center, int zoom, int maptype, int px_size) {
- super(listener, upper_left, center, zoom, maptype, px_size, 2);
- }
-
- }
-
- public AltosMapTile new_tile(AltosMapTileListener listener, AltosLatLon upper_left, AltosLatLon center, int zoom, int maptype, int px_size) {
- return new PreloadMapTile(listener, upper_left, center, zoom, maptype, px_size);
- }
-
- public int width() {
- return AltosMap.px_size;
- }
-
- public int height() {
- return AltosMap.px_size;
- }
-
- public void repaint() {
- }
-
- public void repaint(AltosRectangle damage) {
- }
-
- public void set_zoom_label(String label) {
- }
-
- public void select_object(AltosLatLon latlon) {
- }
-
- public void debug(String format, Object ... arguments) {
- AltosDebug.debug(format, arguments);
- }
-
/* LocationProvider interface */
AltosLaunchSite current_location_site;
private double radius() {
double r = value_distance(radius);
if (AltosPreferences.imperial_units())
- r = AltosConvert.distance.inverse(r);
+ r = AltosConvert.miles_to_meters(r);
else
r = r * 1000;
return r;
}
private void load() {
+ if (loader != null)
+ return;
+
try {
double lat = latitude();
double lon = longitude();
AltosDebug.debug("PreloadMap load %f %f %d %d %f %d\n",
lat, lon, min, max, r, t);
- loader.load(lat, lon, min, max, r, t);
+ loader = new AltosMapLoader(this, lat, lon, min, max, r, t, AltosMapOffline.scale);
} catch (ParseException e) {
AltosDebug.debug("PreloadMap load raised exception %s", e.toString());
}
known_sites_spinner.setAdapter(known_sites_adapter);
known_sites_spinner.setOnItemSelectedListener(new SiteListListener());
- map = new AltosMap(this);
-
- loader = new AltosMapLoader(map, this);
-
// Listen for GPS and Network position updates
LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
protected void onDestroy() {
super.onDestroy();
+ if (loader != null)
+ loader.abort();
+
// Stop listening for location updates
((LocationManager) getSystemService(Context.LOCATION_SERVICE)).removeUpdates(this);
}