import gpx
This commit is contained in:
parent
5081b70c94
commit
a1095ea959
2 changed files with 64 additions and 2 deletions
|
@ -68,6 +68,11 @@
|
||||||
<category android:name="android.intent.category.CAR_DOCK" />
|
<category android:name="android.intent.category.CAR_DOCK" />
|
||||||
<category android:name="android.intent.category.DESK_DOCK" />
|
<category android:name="android.intent.category.DESK_DOCK" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.intent.action.VIEW" />
|
||||||
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
|
<data android:scheme="file" android:host="*" android:pathPattern=".*\\.gpx" android:mimeType="*/*" />
|
||||||
|
</intent-filter>
|
||||||
<receiver android:name="net.osmand.plus.audionotes.MediaRemoteControlReceiver">
|
<receiver android:name="net.osmand.plus.audionotes.MediaRemoteControlReceiver">
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.CAMERA_BUTTON" />
|
<action android:name="android.intent.action.CAMERA_BUTTON" />
|
||||||
|
|
|
@ -1,11 +1,13 @@
|
||||||
package net.osmand.plus.activities;
|
package net.osmand.plus.activities;
|
||||||
|
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
import net.osmand.CallbackWithObject;
|
||||||
import net.osmand.Location;
|
import net.osmand.Location;
|
||||||
import net.osmand.StateChangedListener;
|
import net.osmand.StateChangedListener;
|
||||||
import net.osmand.access.AccessibilityPlugin;
|
import net.osmand.access.AccessibilityPlugin;
|
||||||
|
@ -19,6 +21,8 @@ import net.osmand.map.MapTileDownloader.DownloadRequest;
|
||||||
import net.osmand.map.MapTileDownloader.IMapDownloaderCallback;
|
import net.osmand.map.MapTileDownloader.IMapDownloaderCallback;
|
||||||
import net.osmand.plus.ApplicationMode;
|
import net.osmand.plus.ApplicationMode;
|
||||||
import net.osmand.plus.BusyIndicator;
|
import net.osmand.plus.BusyIndicator;
|
||||||
|
import net.osmand.plus.GPXUtilities;
|
||||||
|
import net.osmand.plus.GPXUtilities.GPXFile;
|
||||||
import net.osmand.plus.OsmAndConstants;
|
import net.osmand.plus.OsmAndConstants;
|
||||||
import net.osmand.plus.OsmandApplication;
|
import net.osmand.plus.OsmandApplication;
|
||||||
import net.osmand.plus.OsmandPlugin;
|
import net.osmand.plus.OsmandPlugin;
|
||||||
|
@ -63,6 +67,7 @@ import android.view.Window;
|
||||||
import android.widget.FrameLayout;
|
import android.widget.FrameLayout;
|
||||||
import android.widget.ProgressBar;
|
import android.widget.ProgressBar;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
import org.apache.http.client.protocol.ClientContext;
|
||||||
|
|
||||||
public class MapActivity extends AccessibleActivity {
|
public class MapActivity extends AccessibleActivity {
|
||||||
|
|
||||||
|
@ -318,6 +323,16 @@ public class MapActivity extends AccessibleActivity {
|
||||||
mapViewTrackingUtilities.setMapLinkedToLocation(false);
|
mapViewTrackingUtilities.setMapLinkedToLocation(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final Intent intent = getIntent();
|
||||||
|
if (intent != null && intent.getData() != null)
|
||||||
|
{
|
||||||
|
final Uri data = intent.getData();
|
||||||
|
if ("file".equalsIgnoreCase(data.getScheme()))
|
||||||
|
{
|
||||||
|
navigateImportedGpx(data.getPath());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
View progress = mapLayers.getMapInfoLayer().getProgressBar();
|
View progress = mapLayers.getMapInfoLayer().getProgressBar();
|
||||||
if (progress != null) {
|
if (progress != null) {
|
||||||
app.getResourceManager().setBusyIndicator(new BusyIndicator(this, progress));
|
app.getResourceManager().setBusyIndicator(new BusyIndicator(this, progress));
|
||||||
|
@ -667,6 +682,48 @@ public class MapActivity extends AccessibleActivity {
|
||||||
getMapView().refreshMap();
|
getMapView().refreshMap();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void navigateImportedGpx(final String gpxFile)
|
||||||
|
{
|
||||||
|
final CallbackWithObject<GPXFile> callback = new CallbackWithObject<GPXUtilities.GPXFile>()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public boolean processResult(GPXFile result)
|
||||||
|
{
|
||||||
|
getMapActions().setGPXRouteParams(result);
|
||||||
|
getMyApplication().getTargetPointsHelper().updateRoutingHelper();
|
||||||
|
getRoutingHelper().recalculateRouteDueToSettingsChange();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
final ProgressDialog dlg = ProgressDialog.show(this, getString(R.string.loading), getString(R.string.loading_data));
|
||||||
|
new Thread(new Runnable()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void run()
|
||||||
|
{
|
||||||
|
final GPXFile res = GPXUtilities.loadGPXFile(getApplication(), new File(gpxFile));
|
||||||
|
dlg.dismiss();
|
||||||
|
if (res != null)
|
||||||
|
{
|
||||||
|
MapActivity.this.runOnUiThread(new Runnable()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void run()
|
||||||
|
{
|
||||||
|
if (res.warning != null)
|
||||||
|
{
|
||||||
|
AccessibleToast.makeText(MapActivity.this, res.warning, Toast.LENGTH_LONG).show();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
callback.processResult(res);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}, "Loading gpx").start(); //$NON-NLS-1$
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue