Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
8dce0fc67b
11 changed files with 69 additions and 11 deletions
|
@ -42,6 +42,7 @@ public class IndexConstants {
|
|||
public static final String GPX_RECORDED_INDEX_DIR = GPX_INDEX_DIR + "rec/";
|
||||
public static final String GPX_IMPORT_DIR = GPX_INDEX_DIR + "import/";
|
||||
public static final String TILES_INDEX_DIR= "tiles/";
|
||||
public static final String LIVE_INDEX_DIR= "live/";
|
||||
public static final String TOURS_INDEX_DIR= "tours/";
|
||||
public static final String SRTM_INDEX_DIR = "srtm/"; //$NON-NLS-1$
|
||||
public static final String WIKI_INDEX_DIR = "wiki/"; //$NON-NLS-1$
|
||||
|
|
|
@ -301,9 +301,7 @@ public class MapTileDownloader {
|
|||
Iterator<WeakReference<IMapDownloaderCallback>> it = callbacks.iterator();
|
||||
while(it.hasNext()) {
|
||||
IMapDownloaderCallback c = it.next().get();
|
||||
if(c == null) {
|
||||
it.remove();
|
||||
} else {
|
||||
if(c != null) {
|
||||
c.tileDownloaded(request);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
3. All your modified/created strings are in the top of the file (to make easier find what\'s translated).
|
||||
PLEASE: Have a look at http://code.google.com/p/osmand/wiki/UIConsistency, it may really improve your and our work :-) Thx - Hardy
|
||||
-->
|
||||
<string name="download_live_updates">Live updates</string>
|
||||
<string name="rendering_value_default13_name">Default (13)</string>
|
||||
<string name="rendering_value_defaultTranslucentCyan_name">Default (translucent cyan)</string>
|
||||
<string name="rendering_attr_currentTrackColor_name">GPX color</string>
|
||||
|
|
|
@ -69,7 +69,7 @@ public class TileSourceProxyProvider extends interface_ImageMapLayerProvider {
|
|||
break;
|
||||
}
|
||||
try {
|
||||
tileReadyCallback.getSync().wait(250);
|
||||
tileReadyCallback.getSync().wait(50);
|
||||
} catch (InterruptedException e) {
|
||||
}
|
||||
}
|
||||
|
|
|
@ -860,6 +860,8 @@ public class OsmandSettings {
|
|||
// temporarily for new version
|
||||
public final CommonPreference<Boolean> DISABLE_COMPLEX_ROUTING = new BooleanPreference("disable_complex_routing", false).makeGlobal();
|
||||
|
||||
public final CommonPreference<Boolean> BETA_TESTING_LIVE_UPDATES = new BooleanPreference("live_updates_beta", false).makeGlobal();
|
||||
|
||||
public final OsmandPreference<Boolean> SHOW_TRAFFIC_WARNINGS = new BooleanPreference("show_traffic_warnings", true).makeProfile().cache();
|
||||
public final CommonPreference<Boolean> SHOW_PEDESTRIAN = new BooleanPreference("show_pedestrian", true).makeProfile().cache();
|
||||
public final OsmandPreference<Boolean> SHOW_CAMERAS = new BooleanPreference("show_cameras", false).makeProfile().cache();
|
||||
|
|
|
@ -114,6 +114,7 @@ public class DownloadTilesDialog {
|
|||
}
|
||||
|
||||
private volatile boolean cancel = false;
|
||||
private IMapDownloaderCallback callback;
|
||||
|
||||
public void run(final int zoom, final int progress, final QuadRect latlonRect, final ITileSource map){
|
||||
cancel = false;
|
||||
|
@ -142,14 +143,15 @@ public class DownloadTilesDialog {
|
|||
|
||||
final List<IMapDownloaderCallback> previousCallbacks = instance.getDownloaderCallbacks();
|
||||
instance.clearCallbacks();
|
||||
instance.addDownloaderCallback(new IMapDownloaderCallback(){
|
||||
callback = new IMapDownloaderCallback(){
|
||||
@Override
|
||||
public void tileDownloaded(DownloadRequest request) {
|
||||
if (request != null) {
|
||||
progressDlg.setProgress(progressDlg.getProgress() + 1);
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
instance.addDownloaderCallback(callback);
|
||||
|
||||
Runnable r = new Runnable(){
|
||||
@Override
|
||||
|
@ -201,6 +203,7 @@ public class DownloadTilesDialog {
|
|||
}
|
||||
}
|
||||
mapView.refreshMap();
|
||||
callback = null;
|
||||
} catch (Exception e) {
|
||||
log.error("Exception while downloading tiles ", e); //$NON-NLS-1$
|
||||
instance.refuseAllPreviousRequests();
|
||||
|
|
|
@ -116,6 +116,7 @@ public class MapActivity extends AccessibleActivity {
|
|||
|
||||
private DashboardOnMap dashboardOnMap = new DashboardOnMap(this);
|
||||
private AppInitializeListener initListener;
|
||||
private IMapDownloaderCallback downloaderCallback;
|
||||
|
||||
private Notification getNotification() {
|
||||
Intent notificationIndent = new Intent(this, getMyApplication().getAppCustomization().getMapActivity());
|
||||
|
@ -169,7 +170,8 @@ public class MapActivity extends AccessibleActivity {
|
|||
mapView.setAccessibilityActions(new MapAccessibilityActions(this));
|
||||
mapViewTrackingUtilities.setMapView(mapView);
|
||||
|
||||
app.getResourceManager().getMapTileDownloader().addDownloaderCallback(new IMapDownloaderCallback() {
|
||||
// to not let it gc
|
||||
downloaderCallback = new IMapDownloaderCallback() {
|
||||
@Override
|
||||
public void tileDownloaded(DownloadRequest request) {
|
||||
if (request != null && !request.error && request.fileToSave != null) {
|
||||
|
@ -180,7 +182,8 @@ public class MapActivity extends AccessibleActivity {
|
|||
mapView.tileDownloaded(request);
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
app.getResourceManager().getMapTileDownloader().addDownloaderCallback(downloaderCallback);
|
||||
createProgressBarForRouting();
|
||||
mapLayers.createLayers(mapView);
|
||||
// This situtation could be when navigation suddenly crashed and after restarting
|
||||
|
|
|
@ -49,6 +49,9 @@ public class SettingsDevelopmentActivity extends SettingsBaseActivity {
|
|||
cat.addPreference(createCheckBoxPreference(settings.USE_MAGNETIC_FIELD_SENSOR_COMPASS,
|
||||
R.string.use_magnetic_sensor,
|
||||
R.string.use_magnetic_sensor_descr));
|
||||
|
||||
cat.addPreference(createCheckBoxPreference(settings.BETA_TESTING_LIVE_UPDATES,
|
||||
"Live updates", "Beta testing for live updates"));
|
||||
|
||||
Preference pref = new Preference(this);
|
||||
pref.setTitle(R.string.test_voice_prompts);
|
||||
|
|
|
@ -34,6 +34,7 @@ public class DownloadActivityType {
|
|||
public static final DownloadActivityType SRTM_COUNTRY_FILE = new DownloadActivityType(R.string.download_srtm_maps, "srtm_map");
|
||||
public static final DownloadActivityType HILLSHADE_FILE = new DownloadActivityType(R.string.download_hillshade_maps, "hillshade");
|
||||
public static final DownloadActivityType WIKIPEDIA_FILE = new DownloadActivityType(R.string.download_wikipedia_maps, "wikimap");
|
||||
public static final DownloadActivityType LIVE_UPDATES_FILE = new DownloadActivityType(R.string.download_live_updates, "live_updates");
|
||||
private int resource;
|
||||
private String[] tags;
|
||||
|
||||
|
@ -108,6 +109,8 @@ public class DownloadActivityType {
|
|||
return ctx.getAppPath(IndexConstants.SRTM_INDEX_DIR);
|
||||
} else if (WIKIPEDIA_FILE == this) {
|
||||
return ctx.getAppPath(IndexConstants.WIKI_INDEX_DIR);
|
||||
} else if (LIVE_UPDATES_FILE == this) {
|
||||
return ctx.getAppPath(IndexConstants.LIVE_INDEX_DIR);
|
||||
} else if (HILLSHADE_FILE == this) {
|
||||
return ctx.getAppPath(IndexConstants.TILES_INDEX_DIR);
|
||||
}
|
||||
|
@ -115,7 +118,7 @@ public class DownloadActivityType {
|
|||
}
|
||||
|
||||
public boolean isZipStream(OsmandApplication ctx, IndexItem indexItem) {
|
||||
return HILLSHADE_FILE != this;
|
||||
return HILLSHADE_FILE != this && LIVE_UPDATES_FILE != this;
|
||||
}
|
||||
|
||||
public boolean isZipFolder(OsmandApplication ctx, IndexItem indexItem) {
|
||||
|
@ -147,6 +150,8 @@ public class DownloadActivityType {
|
|||
return IndexConstants.BINARY_SRTM_MAP_INDEX_EXT;
|
||||
} else if (WIKIPEDIA_FILE == this) {
|
||||
return IndexConstants.BINARY_WIKI_MAP_INDEX_EXT;
|
||||
} else if (LIVE_UPDATES_FILE == this) {
|
||||
return BINARY_MAP_INDEX_EXT;
|
||||
} else if (HILLSHADE_FILE == this) {
|
||||
return IndexConstants.SQLITE_EXT;
|
||||
}
|
||||
|
@ -265,6 +270,12 @@ public class DownloadActivityType {
|
|||
return s;
|
||||
} else if (this == HILLSHADE_FILE) {
|
||||
return fileName.replace('_', ' ');
|
||||
} else if (this == LIVE_UPDATES_FILE) {
|
||||
int l = fileName.lastIndexOf('.');
|
||||
if (l == -1) {
|
||||
l = fileName.length();
|
||||
}
|
||||
return fileName.substring(0, l) + IndexConstants.BINARY_MAP_INDEX_EXT;
|
||||
} else if (fileName.endsWith(IndexConstants.BINARY_MAP_INDEX_EXT)
|
||||
|| fileName.endsWith(IndexConstants.BINARY_MAP_INDEX_EXT_ZIP)) {
|
||||
int l = fileName.lastIndexOf('_');
|
||||
|
|
|
@ -57,9 +57,11 @@ import net.osmand.util.Algorithms;
|
|||
import java.io.File;
|
||||
import java.text.Collator;
|
||||
import java.text.MessageFormat;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.Date;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.List;
|
||||
|
@ -1160,6 +1162,26 @@ public class LocalIndexesFragment extends OsmandExpandableListFragment {
|
|||
return true;
|
||||
}
|
||||
});
|
||||
if(getMyApplication().getSettings().BETA_TESTING_LIVE_UPDATES.get()) {
|
||||
item = optionsMenu.getMenu().add("Live updates")
|
||||
.setIcon(iconsCache.getContentIcon(R.drawable.ic_action_refresh_dark));
|
||||
item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
|
||||
@Override
|
||||
public boolean onMenuItemClick(MenuItem item) {
|
||||
String fileName = info.getFileName();
|
||||
Toast.makeText(getActivity(), fileName, Toast.LENGTH_SHORT).show();
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yy_MM_dd");
|
||||
fileName = fileName.substring(0, fileName.indexOf('.')) + "_" + sdf.format(new Date()) + ".obf";
|
||||
IndexItem ii =
|
||||
new IndexItem(fileName, "Incremental update", new Date().getTime(), "1",
|
||||
1000, 1000, DownloadActivityType.LIVE_UPDATES_FILE);
|
||||
|
||||
getDownloadActivity().addToDownload(ii);
|
||||
return true;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
optionsMenu.show();
|
||||
}
|
||||
|
||||
|
|
|
@ -11,7 +11,6 @@ import java.text.MessageFormat;
|
|||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
@ -120,6 +119,8 @@ public class ResourceManager {
|
|||
|
||||
protected final Map<String, String> indexFileNames = new ConcurrentHashMap<String, String>();
|
||||
|
||||
protected final Map<String, String> liveUpdatesFiles = new ConcurrentHashMap<String, String>();
|
||||
|
||||
protected final Map<String, String> basemapFileNames = new ConcurrentHashMap<String, String>();
|
||||
|
||||
protected final Map<String, BinaryMapIndexReader> routingMapFiles = new ConcurrentHashMap<String, BinaryMapIndexReader>();
|
||||
|
@ -602,6 +603,10 @@ public class ResourceManager {
|
|||
if(OsmandPlugin.getEnabledPlugin(SRTMPlugin.class) != null) {
|
||||
collectFiles(context.getAppPath(IndexConstants.SRTM_INDEX_DIR), IndexConstants.BINARY_MAP_INDEX_EXT, files);
|
||||
}
|
||||
if(context.getSettings().BETA_TESTING_LIVE_UPDATES.get()) {
|
||||
collectFiles(context.getAppPath(IndexConstants.LIVE_INDEX_DIR), IndexConstants.BINARY_MAP_INDEX_EXT, files);
|
||||
}
|
||||
|
||||
Collections.sort(files, Algorithms.getFileVersionComparator());
|
||||
List<String> warnings = new ArrayList<String>();
|
||||
renderer.clearAllResources();
|
||||
|
@ -642,7 +647,11 @@ public class ResourceManager {
|
|||
if (dateCreated == 0) {
|
||||
dateCreated = f.lastModified();
|
||||
}
|
||||
indexFileNames.put(f.getName(), dateFormat.format(dateCreated)); //$NON-NLS-1$
|
||||
if(f.getParentFile().getName().equals(IndexConstants.LIVE_INDEX_DIR)) {
|
||||
liveUpdatesFiles.put(f.getName(), dateFormat.format(dateCreated)); //$NON-NLS-1$
|
||||
} else {
|
||||
indexFileNames.put(f.getName(), dateFormat.format(dateCreated)); //$NON-NLS-1$
|
||||
}
|
||||
for (String rName : index.getRegionNames()) {
|
||||
// skip duplicate names (don't make collision between getName() and name in the map)
|
||||
// it can be dangerous to use one file to different indexes if it is multithreaded
|
||||
|
@ -930,6 +939,7 @@ public class ResourceManager {
|
|||
imagesOnFS.clear();
|
||||
indexFileNames.clear();
|
||||
basemapFileNames.clear();
|
||||
liveUpdatesFiles.clear();
|
||||
renderer.clearAllResources();
|
||||
closeAmenities();
|
||||
closeRouteFiles();
|
||||
|
@ -961,6 +971,10 @@ public class ResourceManager {
|
|||
return new LinkedHashMap<String, String>(indexFileNames);
|
||||
}
|
||||
|
||||
public Map<String, String> getLiveIndexFileNames() {
|
||||
return new LinkedHashMap<String, String>(liveUpdatesFiles);
|
||||
}
|
||||
|
||||
public boolean containsBasemap(){
|
||||
return !basemapFileNames.isEmpty();
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue