Fix aidl copy file

This commit is contained in:
crimean 2019-02-14 18:37:15 +03:00
parent 3d49967332
commit 95d7078fb6
9 changed files with 452 additions and 307 deletions

View file

@ -524,13 +524,4 @@ public class AndroidUtils {
} }
return result; return result;
} }
public static void deleteRecursive(File fileOrDir){
if(fileOrDir.isDirectory()) {
for (File child: fileOrDir.listFiles()) {
deleteRecursive(child);
}
}
fileOrDir.delete();
}
} }

View file

@ -79,7 +79,7 @@ import net.osmand.aidl.gpx.CreateGpxBitmapParams;
import net.osmand.aidl.tiles.ASqliteDbFile; import net.osmand.aidl.tiles.ASqliteDbFile;
import net.osmand.aidl.plugins.PluginParams; import net.osmand.aidl.plugins.PluginParams;
import net.osmand.aidl.tiles.CopyFileParams; import net.osmand.aidl.copyfile.CopyFileParams;

View file

@ -1,6 +1,5 @@
package net.osmand.aidl; package net.osmand.aidl;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.app.Activity; import android.app.Activity;
import android.content.BroadcastReceiver; import android.content.BroadcastReceiver;
@ -29,6 +28,7 @@ import android.widget.ArrayAdapter;
import net.osmand.CallbackWithObject; import net.osmand.CallbackWithObject;
import net.osmand.IndexConstants; import net.osmand.IndexConstants;
import net.osmand.PlatformUtil; import net.osmand.PlatformUtil;
import net.osmand.aidl.copyfile.CopyFileParams;
import net.osmand.aidl.favorite.AFavorite; import net.osmand.aidl.favorite.AFavorite;
import net.osmand.aidl.favorite.group.AFavoriteGroup; import net.osmand.aidl.favorite.group.AFavoriteGroup;
import net.osmand.aidl.gpx.AGpxBitmap; import net.osmand.aidl.gpx.AGpxBitmap;
@ -45,7 +45,6 @@ import net.osmand.aidl.navdrawer.NavDrawerFooterParams;
import net.osmand.aidl.plugins.PluginParams; import net.osmand.aidl.plugins.PluginParams;
import net.osmand.aidl.search.SearchResult; import net.osmand.aidl.search.SearchResult;
import net.osmand.aidl.tiles.ASqliteDbFile; import net.osmand.aidl.tiles.ASqliteDbFile;
import net.osmand.aidl.tiles.CopyFileParams;
import net.osmand.data.FavouritePoint; import net.osmand.data.FavouritePoint;
import net.osmand.data.LatLon; import net.osmand.data.LatLon;
import net.osmand.data.PointDescription; import net.osmand.data.PointDescription;
@ -100,13 +99,26 @@ import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.lang.ref.WeakReference; import java.lang.ref.WeakReference;
import java.util.*; import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import static net.osmand.aidl.OsmandAidlConstants.*; import static net.osmand.aidl.OsmandAidlConstants.COPY_FILE_IO_ERROR;
import static net.osmand.aidl.OsmandAidlConstants.COPY_FILE_MAX_LOCK_TIME_MS;
import static net.osmand.aidl.OsmandAidlConstants.COPY_FILE_PARAMS_ERROR;
import static net.osmand.aidl.OsmandAidlConstants.COPY_FILE_PART_SIZE_LIMIT;
import static net.osmand.aidl.OsmandAidlConstants.COPY_FILE_PART_SIZE_LIMIT_ERROR;
import static net.osmand.aidl.OsmandAidlConstants.COPY_FILE_UNSUPPORTED_FILE_TYPE_ERROR;
import static net.osmand.aidl.OsmandAidlConstants.COPY_FILE_WRITE_LOCK_ERROR;
import static net.osmand.aidl.OsmandAidlConstants.OK_RESPONSE;
import static net.osmand.plus.OsmAndCustomizationConstants.DRAWER_ITEM_ID_SCHEME; import static net.osmand.plus.OsmAndCustomizationConstants.DRAWER_ITEM_ID_SCHEME;
public class OsmandAidlApi { public class OsmandAidlApi {
private static final Log LOG = PlatformUtil.getLog(OsmandAidlApi.class); private static final Log LOG = PlatformUtil.getLog(OsmandAidlApi.class);
private static final String AIDL_REFRESH_MAP = "aidl_refresh_map"; private static final String AIDL_REFRESH_MAP = "aidl_refresh_map";
@ -1738,7 +1750,7 @@ public class OsmandAidlApi {
private void clearNavDrawerItems(String appPackage) { private void clearNavDrawerItems(String appPackage) {
try { try {
JSONObject allItems = new JSONObject(app.getSettings().API_NAV_DRAWER_ITEMS_JSON.get()); JSONObject allItems = new JSONObject(app.getSettings().API_NAV_DRAWER_ITEMS_JSON.get());
allItems.put(appPackage, null); allItems.put(appPackage, new JSONArray());
app.getSettings().API_NAV_DRAWER_ITEMS_JSON.set(allItems.toString()); app.getSettings().API_NAV_DRAWER_ITEMS_JSON.set(allItems.toString());
} catch (JSONException e) { } catch (JSONException e) {
e.printStackTrace(); e.printStackTrace();
@ -1965,92 +1977,96 @@ public class OsmandAidlApi {
private Map<String, FileCopyInfo> copyFilesCache = new ConcurrentHashMap<>(); private Map<String, FileCopyInfo> copyFilesCache = new ConcurrentHashMap<>();
private class FileCopyInfo { private class FileCopyInfo {
long start; long startTime;
long lastAccess; long lastAccessTime;
FileOutputStream FileOutputStream; FileOutputStream fileOutputStream;
FileCopyInfo(long start, long lastAccess, FileOutputStream fileOutputStream) { FileCopyInfo(long startTime, long lastAccessTime, FileOutputStream fileOutputStream) {
this.start = start; this.startTime = startTime;
this.lastAccess = lastAccess; this.lastAccessTime = lastAccessTime;
FileOutputStream = fileOutputStream; this.fileOutputStream = fileOutputStream;
} }
} }
int copyFile(final CopyFileParams filePart) { int copyFile(final CopyFileParams params) {
if (Algorithms.isEmpty(filePart.getFilename()) || filePart.getFilePartData() == null) { if (Algorithms.isEmpty(params.getFileName()) || params.getFilePartData() == null) {
return COPY_FILE_PARAMS_ERROR; return COPY_FILE_PARAMS_ERROR;
} }
if (filePart.getFilename().endsWith(IndexConstants.SQLITE_EXT)) { if (params.getFilePartData().length > COPY_FILE_PART_SIZE_LIMIT) {
return copyFileImpl(filePart, return COPY_FILE_PART_SIZE_LIMIT_ERROR;
IndexConstants.TILES_INDEX_DIR); }
if (params.getFileName().endsWith(IndexConstants.SQLITE_EXT)) {
return copyFileImpl(params, IndexConstants.TILES_INDEX_DIR);
} else { } else {
return COPY_FILE_UNSUPPORTED_FILE_TYPE_ERROR; return COPY_FILE_UNSUPPORTED_FILE_TYPE_ERROR;
} }
} }
private int copyFileImpl(CopyFileParams fileParams, String destination){ private int copyFileImpl(CopyFileParams params, String destinationDir) {
File file = app.getAppPath(IndexConstants.TEMP_DIR + params.getFileName());
if (fileParams.getFilePartData().length > 256*1024) { File tempDir = app.getAppPath(IndexConstants.TEMP_DIR);
return COPY_FILE_PART_SIZE_LIMIT_ERROR; if (!tempDir.exists()) {
tempDir.mkdirs();
} }
String fileName = params.getFileName();
File file = app.getAppPath(IndexConstants.TEMP_DIR + fileParams.getFilename()); File destFile = app.getAppPath(destinationDir + fileName);
FileOutputStream fos; long currentTime = System.currentTimeMillis();
String key = fileParams.getFilename();
try { try {
if (!copyFilesCache.containsKey(key)){ FileCopyInfo info = copyFilesCache.get(fileName);
if (fileParams.getActionId() == COPY_FILE_START_FLAG) { if (info == null) {
file.delete(); FileOutputStream fos = new FileOutputStream(file, true);
file.getParentFile().mkdirs(); copyFilesCache.put(fileName,
fos = new FileOutputStream(file, true); new FileCopyInfo(params.getStartTime(), currentTime, fos));
fos.write(fileParams.getFilePartData()); if (params.isDone()) {
copyFilesCache.put( if (!finishFileCopy(params, file, fos, fileName, destFile)) {
key, new FileCopyInfo(fileParams.getStartTime(), System.currentTimeMillis(), return COPY_FILE_IO_ERROR;
fos));
return COPY_FILE_OK_RESPONSE;
} else if (fileParams.getActionId() == COPY_FILE_FINISH_FLAG) {
file.delete();
file.getParentFile().mkdirs();
fos = new FileOutputStream(file, true);
fos.write(fileParams.getFilePartData());
file.renameTo(app.getAppPath(destination + fileParams.getFilename()));
return COPY_FILE_OK_RESPONSE;
} else {
return COPY_FILE_PARAMS_ERROR;
} }
} else if (copyFilesCache.containsKey(key)) {
fos = copyFilesCache.get(key).FileOutputStream;
if (fileParams.getActionId() == COPY_FILE_START_FLAG) {
if (copyFilesCache.get(key).lastAccess - copyFilesCache.get(key).start > COPY_FILE_VALID_PAUSE) {
file.delete();
fos.close();
copyFilesCache.remove(key);
file.getParentFile().mkdirs();
fos = new FileOutputStream(file, true);
fos.write(fileParams.getFilePartData());
copyFilesCache.put(key,
new FileCopyInfo(fileParams.getStartTime(), System.currentTimeMillis(), fos));
return COPY_FILE_OK_RESPONSE;
} else { } else {
fos.write(params.getFilePartData());
}
} else {
if (info.startTime != params.getStartTime()) {
if (currentTime - info.lastAccessTime < COPY_FILE_MAX_LOCK_TIME_MS) {
return COPY_FILE_WRITE_LOCK_ERROR; return COPY_FILE_WRITE_LOCK_ERROR;
}
} else if (fileParams.getActionId() == COPY_FILE_FINISH_FLAG) {
fos.close();
copyFilesCache.remove(key);
file.renameTo(app.getAppPath(destination + fileParams.getFilename()));
return COPY_FILE_OK_RESPONSE;
} else { } else {
copyFilesCache.get(key).lastAccess = System.currentTimeMillis(); file.delete();
fos.write(fileParams.getFilePartData()); copyFilesCache.remove(fileName);
return COPY_FILE_OK_RESPONSE; return copyFileImpl(params, destinationDir);
}
}
FileOutputStream fos = info.fileOutputStream;
info.lastAccessTime = currentTime;
if (params.isDone()) {
if (!finishFileCopy(params, file, fos, fileName, destFile)) {
return COPY_FILE_IO_ERROR;
}
} else {
fos.write(params.getFilePartData());
} }
} }
} catch (IOException e) { } catch (IOException e) {
LOG.error(e.getMessage(), e); LOG.error(e.getMessage(), e);
}
return COPY_FILE_IO_ERROR; return COPY_FILE_IO_ERROR;
} }
return OK_RESPONSE;
}
private boolean finishFileCopy(CopyFileParams params, File file, FileOutputStream fos, String fileName, File destFile) throws IOException {
boolean res = true;
byte[] data = params.getFilePartData();
if (data.length > 0) {
fos.write(data);
}
if (destFile.exists() && !destFile.delete()) {
res = false;
}
if (res && !file.renameTo(destFile)) {
file.delete();
res = false;
}
copyFilesCache.remove(fileName);
return res;
}
private static class GpxAsyncLoaderTask extends AsyncTask<Void, Void, GPXFile> { private static class GpxAsyncLoaderTask extends AsyncTask<Void, Void, GPXFile> {

View file

@ -2,15 +2,20 @@ package net.osmand.aidl;
public interface OsmandAidlConstants { public interface OsmandAidlConstants {
int OK_RESPONSE = 0;
int MIN_UPDATE_TIME_MS = 1000;
long COPY_FILE_PART_SIZE_LIMIT = 256 * 1024;
long COPY_FILE_MAX_LOCK_TIME_MS = 10000;
int CANNOT_ACCESS_API_ERROR = -5;
int UNKNOWN_API_ERROR = -2;
int MIN_UPDATE_TIME_MS_ERROR = -1;
int COPY_FILE_PARAMS_ERROR = -1001; int COPY_FILE_PARAMS_ERROR = -1001;
int COPY_FILE_PART_SIZE_LIMIT_ERROR = -1002; int COPY_FILE_PART_SIZE_LIMIT_ERROR = -1002;
int COPY_FILE_WRITE_LOCK_ERROR = -1003; int COPY_FILE_WRITE_LOCK_ERROR = -1003;
int COPY_FILE_IO_ERROR = -1004; int COPY_FILE_IO_ERROR = -1004;
int COPY_FILE_UNSUPPORTED_FILE_TYPE_ERROR = -1005; int COPY_FILE_UNSUPPORTED_FILE_TYPE_ERROR = -1005;
int COPY_FILE_START_FLAG = 1001;
int COPY_FILE_FINISH_FLAG = 1002;
int COPY_FILE_IN_PROGRESS_FLAG = 1000;
long COPY_FILE_VALID_PAUSE = 10000;
int COPY_FILE_OK_RESPONSE = 0;
} }

View file

@ -66,7 +66,7 @@ import net.osmand.aidl.plugins.PluginParams;
import net.osmand.aidl.search.SearchParams; import net.osmand.aidl.search.SearchParams;
import net.osmand.aidl.search.SearchResult; import net.osmand.aidl.search.SearchResult;
import net.osmand.aidl.tiles.ASqliteDbFile; import net.osmand.aidl.tiles.ASqliteDbFile;
import net.osmand.aidl.tiles.CopyFileParams; import net.osmand.aidl.copyfile.CopyFileParams;
import net.osmand.plus.OsmandApplication; import net.osmand.plus.OsmandApplication;
import net.osmand.util.Algorithms; import net.osmand.util.Algorithms;
@ -77,16 +77,17 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import static net.osmand.aidl.OsmandAidlConstants.CANNOT_ACCESS_API_ERROR;
import static net.osmand.aidl.OsmandAidlConstants.MIN_UPDATE_TIME_MS;
import static net.osmand.aidl.OsmandAidlConstants.MIN_UPDATE_TIME_MS_ERROR;
import static net.osmand.aidl.OsmandAidlConstants.UNKNOWN_API_ERROR;
public class OsmandAidlService extends Service { public class OsmandAidlService extends Service {
private static final Log LOG = PlatformUtil.getLog(OsmandAidlService.class); private static final Log LOG = PlatformUtil.getLog(OsmandAidlService.class);
private static final String DATA_KEY_RESULT_SET = "resultSet"; private static final String DATA_KEY_RESULT_SET = "resultSet";
private static final int MIN_UPDATE_TIME_MS = 1000;
private static final int MIN_UPDATE_TIME_MS_ERROR = -1;
private Map<Long, IOsmAndAidlCallback> callbacks; private Map<Long, IOsmAndAidlCallback> callbacks;
private Handler mHandler = null; private Handler mHandler = null;
HandlerThread mHandlerThread = new HandlerThread("OsmAndAidlServiceThread"); HandlerThread mHandlerThread = new HandlerThread("OsmAndAidlServiceThread");
@ -137,7 +138,7 @@ public class OsmandAidlService extends Service {
} }
@Override @Override
public boolean refreshMap() throws RemoteException { public boolean refreshMap() {
try { try {
OsmandAidlApi api = getApi("refreshMap"); OsmandAidlApi api = getApi("refreshMap");
return api != null && api.reloadMap(); return api != null && api.reloadMap();
@ -149,7 +150,7 @@ public class OsmandAidlService extends Service {
@Override @Override
public boolean addFavoriteGroup(AddFavoriteGroupParams params) throws RemoteException { public boolean addFavoriteGroup(AddFavoriteGroupParams params) {
try { try {
OsmandAidlApi api = getApi("addFavoriteGroup"); OsmandAidlApi api = getApi("addFavoriteGroup");
return params != null && api != null && api.addFavoriteGroup(params.getFavoriteGroup()); return params != null && api != null && api.addFavoriteGroup(params.getFavoriteGroup());
@ -160,7 +161,7 @@ public class OsmandAidlService extends Service {
} }
@Override @Override
public boolean removeFavoriteGroup(RemoveFavoriteGroupParams params) throws RemoteException { public boolean removeFavoriteGroup(RemoveFavoriteGroupParams params) {
try { try {
OsmandAidlApi api = getApi("removeFavoriteGroup"); OsmandAidlApi api = getApi("removeFavoriteGroup");
return params != null && api != null && api.removeFavoriteGroup(params.getFavoriteGroup()); return params != null && api != null && api.removeFavoriteGroup(params.getFavoriteGroup());
@ -171,7 +172,7 @@ public class OsmandAidlService extends Service {
} }
@Override @Override
public boolean updateFavoriteGroup(UpdateFavoriteGroupParams params) throws RemoteException { public boolean updateFavoriteGroup(UpdateFavoriteGroupParams params) {
try { try {
OsmandAidlApi api = getApi("updateFavoriteGroup"); OsmandAidlApi api = getApi("updateFavoriteGroup");
return params != null && api != null && api.updateFavoriteGroup(params.getFavoriteGroupPrev(), params.getFavoriteGroupNew()); return params != null && api != null && api.updateFavoriteGroup(params.getFavoriteGroupPrev(), params.getFavoriteGroupNew());
@ -182,7 +183,7 @@ public class OsmandAidlService extends Service {
} }
@Override @Override
public boolean addFavorite(AddFavoriteParams params) throws RemoteException { public boolean addFavorite(AddFavoriteParams params) {
try { try {
OsmandAidlApi api = getApi("addFavorite"); OsmandAidlApi api = getApi("addFavorite");
return params != null && api != null && api.addFavorite(params.getFavorite()); return params != null && api != null && api.addFavorite(params.getFavorite());
@ -193,7 +194,7 @@ public class OsmandAidlService extends Service {
} }
@Override @Override
public boolean removeFavorite(RemoveFavoriteParams params) throws RemoteException { public boolean removeFavorite(RemoveFavoriteParams params) {
try { try {
OsmandAidlApi api = getApi("removeFavorite"); OsmandAidlApi api = getApi("removeFavorite");
return params != null && api != null && api.removeFavorite(params.getFavorite()); return params != null && api != null && api.removeFavorite(params.getFavorite());
@ -204,7 +205,7 @@ public class OsmandAidlService extends Service {
} }
@Override @Override
public boolean updateFavorite(UpdateFavoriteParams params) throws RemoteException { public boolean updateFavorite(UpdateFavoriteParams params) {
try { try {
OsmandAidlApi api = getApi("updateFavorite"); OsmandAidlApi api = getApi("updateFavorite");
return params != null && api != null && api.updateFavorite(params.getFavoritePrev(), params.getFavoriteNew()); return params != null && api != null && api.updateFavorite(params.getFavoritePrev(), params.getFavoriteNew());
@ -215,7 +216,7 @@ public class OsmandAidlService extends Service {
} }
@Override @Override
public boolean addMapMarker(AddMapMarkerParams params) throws RemoteException { public boolean addMapMarker(AddMapMarkerParams params) {
try { try {
OsmandAidlApi api = getApi("addMapMarker"); OsmandAidlApi api = getApi("addMapMarker");
return params != null && api != null && api.addMapMarker(params.getMarker()); return params != null && api != null && api.addMapMarker(params.getMarker());
@ -225,7 +226,7 @@ public class OsmandAidlService extends Service {
} }
@Override @Override
public boolean removeMapMarker(RemoveMapMarkerParams params) throws RemoteException { public boolean removeMapMarker(RemoveMapMarkerParams params) {
try { try {
OsmandAidlApi api = getApi("removeMapMarker"); OsmandAidlApi api = getApi("removeMapMarker");
return params != null && api != null && api.removeMapMarker(params.getMarker()); return params != null && api != null && api.removeMapMarker(params.getMarker());
@ -236,7 +237,7 @@ public class OsmandAidlService extends Service {
} }
@Override @Override
public boolean updateMapMarker(UpdateMapMarkerParams params) throws RemoteException { public boolean updateMapMarker(UpdateMapMarkerParams params) {
try { try {
OsmandAidlApi api = getApi("updateMapMarker"); OsmandAidlApi api = getApi("updateMapMarker");
return params != null && api != null && api.updateMapMarker(params.getMarkerPrev(), params.getMarkerNew()); return params != null && api != null && api.updateMapMarker(params.getMarkerPrev(), params.getMarkerNew());
@ -247,7 +248,7 @@ public class OsmandAidlService extends Service {
} }
@Override @Override
public boolean addMapWidget(AddMapWidgetParams params) throws RemoteException { public boolean addMapWidget(AddMapWidgetParams params) {
try { try {
OsmandAidlApi api = getApi("addMapWidget"); OsmandAidlApi api = getApi("addMapWidget");
return params != null && api != null && api.addMapWidget(params.getWidget()); return params != null && api != null && api.addMapWidget(params.getWidget());
@ -258,7 +259,7 @@ public class OsmandAidlService extends Service {
} }
@Override @Override
public boolean removeMapWidget(RemoveMapWidgetParams params) throws RemoteException { public boolean removeMapWidget(RemoveMapWidgetParams params) {
try { try {
OsmandAidlApi api = getApi("removeMapWidget"); OsmandAidlApi api = getApi("removeMapWidget");
return params != null && api != null && api.removeMapWidget(params.getId()); return params != null && api != null && api.removeMapWidget(params.getId());
@ -268,7 +269,7 @@ public class OsmandAidlService extends Service {
} }
@Override @Override
public boolean updateMapWidget(UpdateMapWidgetParams params) throws RemoteException { public boolean updateMapWidget(UpdateMapWidgetParams params) {
try { try {
OsmandAidlApi api = getApi("updateMapWidget"); OsmandAidlApi api = getApi("updateMapWidget");
return params != null && api != null && api.updateMapWidget(params.getWidget()); return params != null && api != null && api.updateMapWidget(params.getWidget());
@ -279,7 +280,7 @@ public class OsmandAidlService extends Service {
} }
@Override @Override
public boolean showMapPoint(ShowMapPointParams params) throws RemoteException { public boolean showMapPoint(ShowMapPointParams params) {
try { try {
OsmandAidlApi api = getApi("showMapPoint"); OsmandAidlApi api = getApi("showMapPoint");
return params != null && api != null && api.showMapPoint(params.getLayerId(), params.getPoint()); return params != null && api != null && api.showMapPoint(params.getLayerId(), params.getPoint());
@ -290,7 +291,7 @@ public class OsmandAidlService extends Service {
} }
@Override @Override
public boolean addMapPoint(AddMapPointParams params) throws RemoteException { public boolean addMapPoint(AddMapPointParams params) {
try { try {
OsmandAidlApi api = getApi("addMapPoint"); OsmandAidlApi api = getApi("addMapPoint");
return params != null && api != null && api.putMapPoint(params.getLayerId(), params.getPoint()); return params != null && api != null && api.putMapPoint(params.getLayerId(), params.getPoint());
@ -301,7 +302,7 @@ public class OsmandAidlService extends Service {
} }
@Override @Override
public boolean removeMapPoint(RemoveMapPointParams params) throws RemoteException { public boolean removeMapPoint(RemoveMapPointParams params) {
try { try {
OsmandAidlApi api = getApi("removeMapPoint"); OsmandAidlApi api = getApi("removeMapPoint");
return params != null && api != null && api.removeMapPoint(params.getLayerId(), params.getPointId()); return params != null && api != null && api.removeMapPoint(params.getLayerId(), params.getPointId());
@ -312,7 +313,7 @@ public class OsmandAidlService extends Service {
} }
@Override @Override
public boolean updateMapPoint(UpdateMapPointParams params) throws RemoteException { public boolean updateMapPoint(UpdateMapPointParams params) {
try { try {
OsmandAidlApi api = getApi("updateMapPoint"); OsmandAidlApi api = getApi("updateMapPoint");
return params != null && api != null && api.putMapPoint(params.getLayerId(), params.getPoint()); return params != null && api != null && api.putMapPoint(params.getLayerId(), params.getPoint());
@ -323,7 +324,7 @@ public class OsmandAidlService extends Service {
} }
@Override @Override
public boolean addMapLayer(AddMapLayerParams params) throws RemoteException { public boolean addMapLayer(AddMapLayerParams params) {
try { try {
OsmandAidlApi api = getApi("addMapLayer"); OsmandAidlApi api = getApi("addMapLayer");
return params != null && api != null && api.addMapLayer(params.getLayer()); return params != null && api != null && api.addMapLayer(params.getLayer());
@ -334,7 +335,7 @@ public class OsmandAidlService extends Service {
} }
@Override @Override
public boolean removeMapLayer(RemoveMapLayerParams params) throws RemoteException { public boolean removeMapLayer(RemoveMapLayerParams params) {
try { try {
OsmandAidlApi api = getApi("removeMapLayer"); OsmandAidlApi api = getApi("removeMapLayer");
return params != null && api != null && api.removeMapLayer(params.getId()); return params != null && api != null && api.removeMapLayer(params.getId());
@ -345,7 +346,7 @@ public class OsmandAidlService extends Service {
} }
@Override @Override
public boolean updateMapLayer(UpdateMapLayerParams params) throws RemoteException { public boolean updateMapLayer(UpdateMapLayerParams params) {
try { try {
OsmandAidlApi api = getApi("updateMapLayer"); OsmandAidlApi api = getApi("updateMapLayer");
return params != null && api != null && api.updateMapLayer(params.getLayer()); return params != null && api != null && api.updateMapLayer(params.getLayer());
@ -356,7 +357,8 @@ public class OsmandAidlService extends Service {
} }
@Override @Override
public boolean importGpx(ImportGpxParams params) throws RemoteException { public boolean importGpx(ImportGpxParams params) {
try {
if (params != null && !Algorithms.isEmpty(params.getDestinationPath())) { if (params != null && !Algorithms.isEmpty(params.getDestinationPath())) {
OsmandAidlApi api = getApi("importGpx"); OsmandAidlApi api = getApi("importGpx");
if (api != null) { if (api != null) {
@ -373,59 +375,94 @@ public class OsmandAidlService extends Service {
} }
} }
return false; return false;
} catch (Exception e) {
handleException(e);
return false;
}
} }
@Override @Override
public boolean showGpx(ShowGpxParams params) throws RemoteException { public boolean showGpx(ShowGpxParams params) {
try {
if (params != null && params.getFileName() != null) { if (params != null && params.getFileName() != null) {
OsmandAidlApi api = getApi("showGpx"); OsmandAidlApi api = getApi("showGpx");
return api != null && api.showGpx(params.getFileName()); return api != null && api.showGpx(params.getFileName());
} }
return false; return false;
} catch (Exception e) {
handleException(e);
return false;
}
} }
@Override @Override
public boolean hideGpx(HideGpxParams params) throws RemoteException { public boolean hideGpx(HideGpxParams params) {
try {
if (params != null && params.getFileName() != null) { if (params != null && params.getFileName() != null) {
OsmandAidlApi api = getApi("hideGpx"); OsmandAidlApi api = getApi("hideGpx");
return api != null && api.hideGpx(params.getFileName()); return api != null && api.hideGpx(params.getFileName());
} }
return false; return false;
} catch (Exception e) {
handleException(e);
return false;
}
} }
@Override @Override
public boolean getActiveGpx(List<ASelectedGpxFile> files) throws RemoteException { public boolean getActiveGpx(List<ASelectedGpxFile> files) {
try {
OsmandAidlApi api = getApi("getActiveGpx"); OsmandAidlApi api = getApi("getActiveGpx");
return api != null && api.getActiveGpx(files); return api != null && api.getActiveGpx(files);
} catch (Exception e) {
handleException(e);
return false;
}
} }
@Override @Override
public boolean getImportedGpx(List<AGpxFile> files) throws RemoteException { public boolean getImportedGpx(List<AGpxFile> files) {
try {
OsmandAidlApi api = getApi("getImportedGpx"); OsmandAidlApi api = getApi("getImportedGpx");
return api != null && api.getImportedGpx(files); return api != null && api.getImportedGpx(files);
} catch (Exception e) {
handleException(e);
return false;
}
} }
@Override @Override
public boolean removeGpx(RemoveGpxParams params) throws RemoteException { public boolean removeGpx(RemoveGpxParams params) {
try {
if (params != null && params.getFileName() != null) { if (params != null && params.getFileName() != null) {
OsmandAidlApi api = getApi("removeGpx"); OsmandAidlApi api = getApi("removeGpx");
return api != null && api.removeGpx(params.getFileName()); return api != null && api.removeGpx(params.getFileName());
} }
return false; return false;
} catch (Exception e) {
handleException(e);
return false;
}
} }
@Override @Override
public boolean setMapLocation(SetMapLocationParams params) throws RemoteException { public boolean setMapLocation(SetMapLocationParams params) {
try {
if (params != null) { if (params != null) {
OsmandAidlApi api = getApi("setMapLocation"); OsmandAidlApi api = getApi("setMapLocation");
return api != null && api.setMapLocation(params.getLatitude(), params.getLongitude(), return api != null && api.setMapLocation(params.getLatitude(), params.getLongitude(),
params.getZoom(), params.isAnimated()); params.getZoom(), params.isAnimated());
} }
return false; return false;
} catch (Exception e) {
handleException(e);
return false;
}
} }
@Override @Override
public boolean calculateRoute(CalculateRouteParams params) throws RemoteException { public boolean calculateRoute(CalculateRouteParams params) {
try {
if (params == null || params.getEndPoint() == null) { if (params == null || params.getEndPoint() == null) {
return false; return false;
} else { } else {
@ -473,10 +510,14 @@ public class OsmandAidlService extends Service {
*/ */
return true; return true;
} }
} catch (Exception e) {
handleException(e);
return false;
}
} }
@Override @Override
public boolean startGpxRecording(StartGpxRecordingParams params) throws RemoteException { public boolean startGpxRecording(StartGpxRecordingParams params) {
try { try {
OsmandAidlApi api = getApi("startGpxRecording"); OsmandAidlApi api = getApi("startGpxRecording");
return api != null && api.startGpxRecording(params); return api != null && api.startGpxRecording(params);
@ -487,7 +528,7 @@ public class OsmandAidlService extends Service {
} }
@Override @Override
public boolean stopGpxRecording(StopGpxRecordingParams params) throws RemoteException { public boolean stopGpxRecording(StopGpxRecordingParams params) {
try { try {
OsmandAidlApi api = getApi("stopGpxRecording"); OsmandAidlApi api = getApi("stopGpxRecording");
return api != null && api.stopGpxRecording(params); return api != null && api.stopGpxRecording(params);
@ -498,7 +539,7 @@ public class OsmandAidlService extends Service {
} }
@Override @Override
public boolean takePhotoNote(TakePhotoNoteParams params) throws RemoteException { public boolean takePhotoNote(TakePhotoNoteParams params) {
try { try {
OsmandAidlApi api = getApi("takePhotoNote"); OsmandAidlApi api = getApi("takePhotoNote");
return params != null && api != null && api.takePhotoNote(params.getLatitude(), params.getLongitude()); return params != null && api != null && api.takePhotoNote(params.getLatitude(), params.getLongitude());
@ -509,7 +550,7 @@ public class OsmandAidlService extends Service {
} }
@Override @Override
public boolean startVideoRecording(StartVideoRecordingParams params) throws RemoteException { public boolean startVideoRecording(StartVideoRecordingParams params) {
try { try {
OsmandAidlApi api = getApi("startVideoRecording"); OsmandAidlApi api = getApi("startVideoRecording");
return params != null && api != null && api.startVideoRecording(params.getLatitude(), params.getLongitude()); return params != null && api != null && api.startVideoRecording(params.getLatitude(), params.getLongitude());
@ -520,7 +561,7 @@ public class OsmandAidlService extends Service {
} }
@Override @Override
public boolean startAudioRecording(StartAudioRecordingParams params) throws RemoteException { public boolean startAudioRecording(StartAudioRecordingParams params) {
try { try {
OsmandAidlApi api = getApi("startAudioRecording"); OsmandAidlApi api = getApi("startAudioRecording");
return params != null && api != null && api.startAudioRecording(params.getLatitude(), params.getLongitude()); return params != null && api != null && api.startAudioRecording(params.getLatitude(), params.getLongitude());
@ -531,7 +572,7 @@ public class OsmandAidlService extends Service {
} }
@Override @Override
public boolean stopRecording(StopRecordingParams params) throws RemoteException { public boolean stopRecording(StopRecordingParams params) {
try { try {
OsmandAidlApi api = getApi("stopRecording"); OsmandAidlApi api = getApi("stopRecording");
return api != null && api.stopRecording(); return api != null && api.stopRecording();
@ -542,7 +583,7 @@ public class OsmandAidlService extends Service {
} }
@Override @Override
public boolean navigate(NavigateParams params) throws RemoteException { public boolean navigate(NavigateParams params) {
try { try {
OsmandAidlApi api = getApi("navigate"); OsmandAidlApi api = getApi("navigate");
return params != null && api != null && api.navigate( return params != null && api != null && api.navigate(
@ -556,7 +597,7 @@ public class OsmandAidlService extends Service {
} }
@Override @Override
public boolean navigateGpx(NavigateGpxParams params) throws RemoteException { public boolean navigateGpx(NavigateGpxParams params) {
try { try {
OsmandAidlApi api = getApi("navigateGpx"); OsmandAidlApi api = getApi("navigateGpx");
return params != null && api != null && api.navigateGpx(params.getData(), params.getUri(), params.isForce()); return params != null && api != null && api.navigateGpx(params.getData(), params.getUri(), params.isForce());
@ -567,7 +608,7 @@ public class OsmandAidlService extends Service {
} }
@Override @Override
public boolean pauseNavigation(PauseNavigationParams params) throws RemoteException { public boolean pauseNavigation(PauseNavigationParams params) {
try { try {
OsmandAidlApi api = getApi("pauseNavigation"); OsmandAidlApi api = getApi("pauseNavigation");
return api != null && api.pauseNavigation(); return api != null && api.pauseNavigation();
@ -578,7 +619,7 @@ public class OsmandAidlService extends Service {
} }
@Override @Override
public boolean resumeNavigation(ResumeNavigationParams params) throws RemoteException { public boolean resumeNavigation(ResumeNavigationParams params) {
try { try {
OsmandAidlApi api = getApi("resumeNavigation"); OsmandAidlApi api = getApi("resumeNavigation");
return api != null && api.resumeNavigation(); return api != null && api.resumeNavigation();
@ -589,7 +630,7 @@ public class OsmandAidlService extends Service {
} }
@Override @Override
public boolean stopNavigation(StopNavigationParams params) throws RemoteException { public boolean stopNavigation(StopNavigationParams params) {
try { try {
OsmandAidlApi api = getApi("stopNavigation"); OsmandAidlApi api = getApi("stopNavigation");
return api != null && api.stopNavigation(); return api != null && api.stopNavigation();
@ -600,7 +641,7 @@ public class OsmandAidlService extends Service {
} }
@Override @Override
public boolean muteNavigation(MuteNavigationParams params) throws RemoteException { public boolean muteNavigation(MuteNavigationParams params) {
try { try {
OsmandAidlApi api = getApi("muteNavigation"); OsmandAidlApi api = getApi("muteNavigation");
return api != null && api.muteNavigation(); return api != null && api.muteNavigation();
@ -611,7 +652,7 @@ public class OsmandAidlService extends Service {
} }
@Override @Override
public boolean unmuteNavigation(UnmuteNavigationParams params) throws RemoteException { public boolean unmuteNavigation(UnmuteNavigationParams params) {
try { try {
OsmandAidlApi api = getApi("unmuteNavigation"); OsmandAidlApi api = getApi("unmuteNavigation");
return api != null && api.unmuteNavigation(); return api != null && api.unmuteNavigation();
@ -622,7 +663,7 @@ public class OsmandAidlService extends Service {
} }
@Override @Override
public boolean setNavDrawerItems(SetNavDrawerItemsParams params) throws RemoteException { public boolean setNavDrawerItems(SetNavDrawerItemsParams params) {
try { try {
OsmandAidlApi api = getApi("setNavDrawerItems"); OsmandAidlApi api = getApi("setNavDrawerItems");
return params != null && api != null && api.setNavDrawerItems(params.getAppPackage(), params.getItems()); return params != null && api != null && api.setNavDrawerItems(params.getAppPackage(), params.getItems());
@ -633,7 +674,7 @@ public class OsmandAidlService extends Service {
} }
@Override @Override
public boolean search(SearchParams params, final IOsmAndAidlCallback callback) throws RemoteException { public boolean search(SearchParams params, final IOsmAndAidlCallback callback) {
try { try {
OsmandAidlApi api = getApi("search"); OsmandAidlApi api = getApi("search");
return params != null && api != null && api.search(params.getSearchQuery(), params.getSearchType(), return params != null && api != null && api.search(params.getSearchQuery(), params.getSearchType(),
@ -658,7 +699,7 @@ public class OsmandAidlService extends Service {
} }
@Override @Override
public boolean navigateSearch(NavigateSearchParams params) throws RemoteException { public boolean navigateSearch(NavigateSearchParams params) {
try { try {
OsmandAidlApi api = getApi("navigateSearch"); OsmandAidlApi api = getApi("navigateSearch");
return params != null && api != null && api.navigateSearch( return params != null && api != null && api.navigateSearch(
@ -672,7 +713,8 @@ public class OsmandAidlService extends Service {
} }
@Override @Override
public long registerForUpdates(long updateTimeMS, IOsmAndAidlCallback callback) throws RemoteException { public long registerForUpdates(long updateTimeMS, IOsmAndAidlCallback callback) {
try {
if (updateTimeMS >= MIN_UPDATE_TIME_MS) { if (updateTimeMS >= MIN_UPDATE_TIME_MS) {
updateCallbackId++; updateCallbackId++;
callbacks.put(updateCallbackId, callback); callbacks.put(updateCallbackId, callback);
@ -681,44 +723,79 @@ public class OsmandAidlService extends Service {
} else { } else {
return MIN_UPDATE_TIME_MS_ERROR; return MIN_UPDATE_TIME_MS_ERROR;
} }
} catch (Exception e) {
handleException(e);
return UNKNOWN_API_ERROR;
}
} }
@Override @Override
public boolean unregisterFromUpdates(long callbackId) throws RemoteException { public boolean unregisterFromUpdates(long callbackId) {
try {
return callbacks.remove(callbackId) != null; return callbacks.remove(callbackId) != null;
} catch (Exception e) {
handleException(e);
return false;
}
} }
@Override @Override
public boolean setNavDrawerLogo(String imageUri) throws RemoteException { public boolean setNavDrawerLogo(String imageUri) {
try {
OsmandAidlApi api = getApi("setNavDrawerLogo"); OsmandAidlApi api = getApi("setNavDrawerLogo");
return api != null && api.setNavDrawerLogo(imageUri); return api != null && api.setNavDrawerLogo(imageUri);
} catch (Exception e) {
handleException(e);
return false;
}
} }
@Override @Override
public boolean setEnabledIds(List<String> ids) throws RemoteException { public boolean setEnabledIds(List<String> ids) {
try {
OsmandAidlApi api = getApi("setFeaturesEnabledIds"); OsmandAidlApi api = getApi("setFeaturesEnabledIds");
return api != null && api.setEnabledIds(ids); return api != null && api.setEnabledIds(ids);
} catch (Exception e) {
handleException(e);
return false;
}
} }
@Override @Override
public boolean setDisabledIds(List<String> ids) throws RemoteException { public boolean setDisabledIds(List<String> ids) {
try {
OsmandAidlApi api = getApi("setFeaturesDisabledIds"); OsmandAidlApi api = getApi("setFeaturesDisabledIds");
return api != null && api.setDisabledIds(ids); return api != null && api.setDisabledIds(ids);
} catch (Exception e) {
handleException(e);
return false;
}
} }
@Override @Override
public boolean setEnabledPatterns(List<String> patterns) throws RemoteException { public boolean setEnabledPatterns(List<String> patterns) {
try {
OsmandAidlApi api = getApi("setFeaturesEnabledPatterns"); OsmandAidlApi api = getApi("setFeaturesEnabledPatterns");
return api != null && api.setEnabledPatterns(patterns); return api != null && api.setEnabledPatterns(patterns);
} catch (Exception e) {
handleException(e);
return false;
}
} }
@Override @Override
public boolean setDisabledPatterns(List<String> patterns) throws RemoteException { public boolean setDisabledPatterns(List<String> patterns) {
try {
OsmandAidlApi api = getApi("setFeaturesDisabledPatterns"); OsmandAidlApi api = getApi("setFeaturesDisabledPatterns");
return api != null && api.setDisabledPatterns(patterns); return api != null && api.setDisabledPatterns(patterns);
} catch (Exception e) {
handleException(e);
return false;
}
} }
void startRemoteUpdates(final long updateTimeMS, final long callbackId, final IOsmAndAidlCallback callback) { void startRemoteUpdates(final long updateTimeMS, final long callbackId, final IOsmAndAidlCallback callback) {
try {
mHandler.postDelayed(new Runnable() { mHandler.postDelayed(new Runnable() {
@Override @Override
public void run() { public void run() {
@ -735,79 +812,135 @@ public class OsmandAidlService extends Service {
} }
} }
}, updateTimeMS); }, updateTimeMS);
} catch (Exception e) {
handleException(e);
}
} }
@Override @Override
public boolean regWidgetVisibility(SetWidgetsParams params) throws RemoteException { public boolean regWidgetVisibility(SetWidgetsParams params) {
try {
OsmandAidlApi api = getApi("regWidgetVisibility"); OsmandAidlApi api = getApi("regWidgetVisibility");
return api != null && api.regWidgetVisibility(params.getWidgetKey(), params.getAppModesKeys()); return api != null && api.regWidgetVisibility(params.getWidgetKey(), params.getAppModesKeys());
} catch (Exception e) {
handleException(e);
return false;
}
} }
@Override @Override
public boolean regWidgetAvailability(SetWidgetsParams params) throws RemoteException { public boolean regWidgetAvailability(SetWidgetsParams params) {
try {
OsmandAidlApi api = getApi("regWidgetVisibility"); OsmandAidlApi api = getApi("regWidgetVisibility");
return api != null && api.regWidgetAvailability(params.getWidgetKey(), params.getAppModesKeys()); return api != null && api.regWidgetAvailability(params.getWidgetKey(), params.getAppModesKeys());
} catch (Exception e) {
handleException(e);
return false;
}
} }
@Override @Override
public boolean customizeOsmandSettings(OsmandSettingsParams params) throws RemoteException { public boolean customizeOsmandSettings(OsmandSettingsParams params) {
try {
OsmandAidlApi api = getApi("customizeOsmandSettings"); OsmandAidlApi api = getApi("customizeOsmandSettings");
return api != null && api.customizeOsmandSettings(params.getSharedPreferencesName(), params.getBundle()); return api != null && api.customizeOsmandSettings(params.getSharedPreferencesName(), params.getBundle());
} catch (Exception e) {
handleException(e);
return false;
}
} }
@Override @Override
public boolean getSqliteDbFiles(List<ASqliteDbFile> files) throws RemoteException { public boolean getSqliteDbFiles(List<ASqliteDbFile> files) {
try {
OsmandAidlApi api = getApi("getSqliteDbFiles"); OsmandAidlApi api = getApi("getSqliteDbFiles");
return api != null && api.getSqliteDbFiles(files); return api != null && api.getSqliteDbFiles(files);
} catch (Exception e) {
handleException(e);
return false;
}
} }
@Override @Override
public boolean getActiveSqliteDbFiles(List<ASqliteDbFile> files) throws RemoteException { public boolean getActiveSqliteDbFiles(List<ASqliteDbFile> files) {
try {
OsmandAidlApi api = getApi("getActiveSqliteDbFiles"); OsmandAidlApi api = getApi("getActiveSqliteDbFiles");
return api != null && api.getActiveSqliteDbFiles(files); return api != null && api.getActiveSqliteDbFiles(files);
} catch (Exception e) {
handleException(e);
return false;
}
} }
@Override @Override
public boolean showSqliteDbFile(String fileName) throws RemoteException { public boolean showSqliteDbFile(String fileName) {
try {
OsmandAidlApi api = getApi("showSqliteDbFile"); OsmandAidlApi api = getApi("showSqliteDbFile");
return api != null && api.showSqliteDbFile(fileName); return api != null && api.showSqliteDbFile(fileName);
} catch (Exception e) {
handleException(e);
return false;
}
} }
@Override @Override
public boolean hideSqliteDbFile(String fileName) throws RemoteException { public boolean hideSqliteDbFile(String fileName) {
try {
OsmandAidlApi api = getApi("hideSqliteDbFile"); OsmandAidlApi api = getApi("hideSqliteDbFile");
return api != null && api.hideSqliteDbFile(fileName); return api != null && api.hideSqliteDbFile(fileName);
} catch (Exception e) {
handleException(e);
return false;
}
} }
@Override @Override
public boolean setNavDrawerLogoWithParams(NavDrawerHeaderParams params) throws RemoteException { public boolean setNavDrawerLogoWithParams(NavDrawerHeaderParams params) {
try {
OsmandAidlApi api = getApi("setNavDrawerLogoWithParams"); OsmandAidlApi api = getApi("setNavDrawerLogoWithParams");
return api != null && api.setNavDrawerLogoWithParams( return api != null && api.setNavDrawerLogoWithParams(
params.getImageUri(), params.getPackageName(), params.getIntent()); params.getImageUri(), params.getPackageName(), params.getIntent());
} catch (Exception e) {
handleException(e);
return false;
}
} }
@Override @Override
public boolean setNavDrawerFooterWithParams(NavDrawerFooterParams params) public boolean setNavDrawerFooterWithParams(NavDrawerFooterParams params) {
throws RemoteException { try {
OsmandAidlApi api = getApi("setNavDrawerFooterParams"); OsmandAidlApi api = getApi("setNavDrawerFooterParams");
return api != null && api.setNavDrawerFooterWithParams(params); return api != null && api.setNavDrawerFooterWithParams(params);
} catch (Exception e) {
handleException(e);
return false;
}
} }
@Override @Override
public boolean restoreOsmand() { public boolean restoreOsmand() {
try {
OsmandAidlApi api = getApi("restoreOsmand"); OsmandAidlApi api = getApi("restoreOsmand");
return api != null && api.restoreOsmand(); return api != null && api.restoreOsmand();
} catch (Exception e) {
handleException(e);
return false;
}
} }
@Override @Override
public boolean changePluginState(PluginParams params) { public boolean changePluginState(PluginParams params) {
try {
OsmandAidlApi api = getApi("changePluginState"); OsmandAidlApi api = getApi("changePluginState");
return api != null && api.changePluginState(params); return api != null && api.changePluginState(params);
} catch (Exception e) {
handleException(e);
return false;
}
} }
@Override @Override
public boolean registerForOsmandInitListener(final IOsmAndAidlCallback callback) public boolean registerForOsmandInitListener(final IOsmAndAidlCallback callback) {
throws RemoteException {
try { try {
OsmandAidlApi api = getApi("registerForOsmandInitListener"); OsmandAidlApi api = getApi("registerForOsmandInitListener");
return api != null && api.registerForOsmandInitialization(new OsmandAppInitCallback() { return api != null && api.registerForOsmandInitialization(new OsmandAppInitCallback() {
@ -827,7 +960,7 @@ public class OsmandAidlService extends Service {
} }
@Override @Override
public boolean getBitmapForGpx(CreateGpxBitmapParams params, final IOsmAndAidlCallback callback) throws RemoteException { public boolean getBitmapForGpx(CreateGpxBitmapParams params, final IOsmAndAidlCallback callback) {
try { try {
OsmandAidlApi api = getApi("getBitmapForGpx"); OsmandAidlApi api = getApi("getBitmapForGpx");
return params != null && api != null && api.getBitmapForGpx(params.getGpxUri(), params.getDensity(), params.getWidthPixels(), params.getHeightPixels(), params.getColor(), new GpxBitmapCreatedCallback() { return params != null && api != null && api.getBitmapForGpx(params.getGpxUri(), params.getDensity(), params.getWidthPixels(), params.getHeightPixels(), params.getColor(), new GpxBitmapCreatedCallback() {
@ -848,11 +981,16 @@ public class OsmandAidlService extends Service {
@Override @Override
public int copyFile(CopyFileParams copyFileParams) { public int copyFile(CopyFileParams copyFileParams) {
try {
OsmandAidlApi api = getApi("copyFile"); OsmandAidlApi api = getApi("copyFile");
if (api == null) { if (api == null) {
return -5; return CANNOT_ACCESS_API_ERROR;
} }
return api.copyFile(copyFileParams); return api.copyFile(copyFileParams);
} catch (Exception e) {
handleException(e);
return UNKNOWN_API_ERROR;
}
} }
}; };
} }

View file

@ -0,0 +1,3 @@
package net.osmand.aidl.copyfile;
parcelable CopyFileParams;

View file

@ -1,33 +1,32 @@
package net.osmand.aidl.tiles; package net.osmand.aidl.copyfile;
import android.os.Parcel; import android.os.Parcel;
import android.os.Parcelable; import android.os.Parcelable;
import java.util.Arrays; import android.support.annotation.NonNull;
public class CopyFileParams implements Parcelable { public class CopyFileParams implements Parcelable {
private String filename; private String fileName;
private byte[] filePartData; private byte[] filePartData;
private long startTime; private long startTime;
private int actionId; private boolean done;
public CopyFileParams(String filename, byte[] filePartData, long startTime, int actionId) { public CopyFileParams(@NonNull String fileName, @NonNull byte[] filePartData, long startTime, boolean done) {
this.filename = filename; this.fileName = fileName;
this.filePartData = filePartData; this.filePartData = filePartData;
this.startTime = startTime; this.startTime = startTime;
this.actionId = actionId; this.done = done;
} }
public String getFilename() { public String getFileName() {
return filename; return fileName;
} }
public byte[] getFilePartData() { public byte[] getFilePartData() {
return filePartData; return filePartData;
} }
public int getActionId() { public boolean isDone() {
return actionId; return done;
} }
public long getStartTime() { public long getStartTime() {
@ -35,10 +34,10 @@ public class CopyFileParams implements Parcelable {
} }
protected CopyFileParams(Parcel in) { protected CopyFileParams(Parcel in) {
filename = in.readString(); fileName = in.readString();
filePartData = in.createByteArray(); filePartData = in.createByteArray();
startTime = in.readLong(); startTime = in.readLong();
actionId = in.readInt(); done = in.readByte() == 0;
} }
public static final Creator<CopyFileParams> CREATOR = new Creator<CopyFileParams>() { public static final Creator<CopyFileParams> CREATOR = new Creator<CopyFileParams>() {
@ -62,21 +61,18 @@ public class CopyFileParams implements Parcelable {
@Override @Override
public String toString() { public String toString() {
return "CopyFileParams {" + return "CopyFileParams {" +
"filename='" + filename + '\'' + " fileName=" + fileName +
", filePartData=" + filePartData + ", filePartData size=" + filePartData.length +
", startTime=" + startTime + ", startTime=" + startTime +
", actionId=" + actionId + ", done=" + done +
'}'; " }";
} }
@Override @Override
public void writeToParcel(Parcel dest, int flags) { public void writeToParcel(Parcel dest, int flags) {
dest.writeString(filename); dest.writeString(fileName);
dest.writeByteArray(filePartData); dest.writeByteArray(filePartData);
dest.writeLong(startTime); dest.writeLong(startTime);
dest.writeInt(actionId); dest.writeByte((byte) (done ? 0 : 1));
} }
} }

View file

@ -1,3 +0,0 @@
package net.osmand.aidl.tiles;
parcelable CopyFileParams;

View file

@ -26,7 +26,6 @@ import android.widget.ImageView;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
import net.osmand.AndroidUtils;
import net.osmand.CallbackWithObject; import net.osmand.CallbackWithObject;
import net.osmand.IndexConstants; import net.osmand.IndexConstants;
import net.osmand.PlatformUtil; import net.osmand.PlatformUtil;
@ -172,7 +171,7 @@ public class OsmandApplication extends MultiDexApplication {
externalStorageDirectory = osmandSettings.getInternalAppPath(); externalStorageDirectory = osmandSettings.getInternalAppPath();
} }
AndroidUtils.deleteRecursive(this.getAppPath(IndexConstants.TEMP_DIR)); Algorithms.removeAllFiles(this.getAppPath(IndexConstants.TEMP_DIR));
checkPreferredLocale(); checkPreferredLocale();
appInitializer.onCreateApplication(); appInitializer.onCreateApplication();