I try to download the map of HereMap to use it offline, but when I create a class for this Here Map download, it initialized well, but the download is not starting... The error message is:
I/Choreographer: Skipped 1390 frames! The application may be doing too much work on its main thread.
I/OpenGLRenderer: Davey! duration=23246ms; Flags=0, IntendedVsync=541429044228998, Vsync=541452210894738, OldestInputEvent=9223372036854775807, NewestInputEvent=0, HandleInputStart=541452219847929, AnimationStart=541452220213815, PerformTraversalsStart=541452220244856, DrawStart=541452273514752, SyncQueued=541452286173554, SyncStart=541452287155273, IssueDrawCommandsStart=541452287225898, SwapBuffers=541452289434856, FrameCompleted=541452291323711, DequeueBufferDuration=140261, QueueBufferDuration=1621927, GpuCompleted=0,
I/OpenGLRenderer: Davey! duration=23290ms; Flags=0, IntendedVsync=541429044228998, Vsync=541452210894738, OldestInputEvent=9223372036854775807, NewestInputEvent=0, HandleInputStart=541452219847929, AnimationStart=541452220213815, PerformTraversalsStart=541452220244856, DrawStart=541452321017669, SyncQueued=541452332492773, SyncStart=541452332826783, IssueDrawCommandsStart=541452332910273, SwapBuffers=541452333750690, FrameCompleted=541452335195690, DequeueBufferDuration=159479, QueueBufferDuration=935885, GpuCompleted=0,
V/FA: Inactivity, disconnecting from the service
Main class:
public class LoginActivity extends AppCompatActivity {
...
private HereMapClass hereMap;
private ProgressBar downloadProgressBar;
...
}
public void downloadMap() {
downloadProgressBar = (ProgressBar) findViewById(R.id.ext_progressBar);
hereMap = new HereMapClass(LoginActivity.getAppContext());
hereMap.onDownloadButtonClicked(downloadProgressBar);
}
HereMap Class:
public class HereMapClass {
private MapEngine mapEngine;
private MapLoader mapLoader;
...
public HereMapClass(Context context){
this.context=context;
}
// listener for MapLoader
private MapLoader.Listener mapLoaderHandler = new MapLoader.Listener() {
@Override
public void onProgress(int progress) {
Log.i(TAG, "Progress " + progress + "%");
downloadProgressBar.setProgress(progress);
}
@Override
public void onInstallationSize(long diskSize, long networkSize) {
Log.i(TAG, "Map data require " + diskSize);
}
@Override
public void onGetMapPackagesComplete(MapPackage rootMapPackage,
MapLoader.ResultCode resultCode) {
if (resultCode == MapLoader.ResultCode.OPERATION_SUCCESSFUL) {
Log.i(TAG, "Map packages received successful: " + rootMapPackage.getTitle());
currentInstalledMaps = new ArrayList<>(1);
populateInstalledMaps(rootMapPackage);
} else {
Log.e(TAG, "Can't retrieve map packages: " + resultCode.name());
Toast.makeText(context,
"Error: " + resultCode.name(), Toast.LENGTH_SHORT).show();
return;
}
StringBuilder sb = new StringBuilder();
for (MapPackage pac : currentInstalledMaps) {
sb.append(pac.getTitle());
sb.append("\n");
}
currentInstalledMapsString = sb.toString();
}
private void populateInstalledMaps(MapPackage pac) {
// only take installed root package, so if e.g. Germany is installed,
// don't check for children states
if (pac.getInstallationState() == MapPackage.InstallationState.INSTALLED) {
Log.i(TAG, "Installed package found: " + pac.getTitle() + " id " + pac.getId());
currentInstalledMaps.add(pac);
} else if (pac.getChildren() != null && pac.getChildren().size() > 0) {
for (MapPackage p : pac.getChildren()) {
populateInstalledMaps(p);
}
}
}
@Override
public void onCheckForUpdateComplete(boolean updateAvailable, String currentMapVersion,
String newestMapVersion, MapLoader.ResultCode resultCode) {
Log.i(TAG, "onCheckForUpdateComplete. Update available: " + updateAvailable +
" current version: " + currentMapVersion);
AlertDialog.Builder builder = new AlertDialog.Builder(context, R.style.AppCompatAlertDialogStyle);
builder.setTitle("Map version checked");
builder.setMessage("Current map version: " + currentMapVersion + "\n\n"
+ (updateAvailable ? "Update found to " + newestMapVersion : "No update found")
+ "\n\n" + "Installed maps:\n" + currentInstalledMapsString);
builder.setNegativeButton("close", null);
if (updateAvailable) {
builder.setPositiveButton("Update", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Log.i(TAG, "Update triggered");
downloadProgressBar.setProgress(0);
downloadProgressBar.setVisibility(View.VISIBLE);
MapLoader.getInstance().performMapDataUpdate();
}
});
}
builder.show();
}
@Override
public void onPerformMapDataUpdateComplete(MapPackage rootMapPackage,
MapLoader.ResultCode resultCode) {
Log.i(TAG, "onPerformMapDataUpdateComplete");
downloadProgressBar.setVisibility(View.INVISIBLE);
String message;
if (resultCode == MapLoader.ResultCode.OPERATION_SUCCESSFUL) {
message = "Map updated successfully";
} else {
message = "Map update failed: " + resultCode.name();
}
Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
}
@Override
public void onInstallMapPackagesComplete(MapPackage rootMapPackage,
MapLoader.ResultCode resultCode) {
downloadProgressBar.setVisibility(View.INVISIBLE);
String message;
if (resultCode == MapLoader.ResultCode.OPERATION_SUCCESSFUL) {
message = "Maps installed successfully";
Log.i(TAG, "Package is installed: " + rootMapPackage.getId() + " " + rootMapPackage.getTitle());
MapLoader.getInstance().getMapPackages();
} else {
message = "Map installation failed: " + resultCode.name();
Log.e(TAG, "Failed to install package: " + rootMapPackage.getId() + " " + rootMapPackage.getTitle());
}
Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
}
@Override
public void onUninstallMapPackagesComplete(MapPackage rootMapPackage,
MapLoader.ResultCode resultCode) {
Log.i(TAG, "onUninstallMapPackagesComplete");
String message;
if (resultCode == MapLoader.ResultCode.OPERATION_SUCCESSFUL) {
message = "Maps removed successfully";
} else {
message = "Map removal failed: " + resultCode.name();
}
// Toast.makeText(HereMap.this, message, Toast.LENGTH_SHORT).show();
// update packages and get installation state
MapLoader.getInstance().getMapPackages();
}
};
public void onDownloadButtonClicked(ProgressBar downloadProgressBar2) {
this.downloadProgressBar = downloadProgressBar2;
mapEngine = MapEngine.getInstance();
ApplicationContext appContext = new ApplicationContext(context);
mapEngine.init(appContext, new OnEngineInitListener() {
@Override
public void onEngineInitializationCompleted(Error error) {
if (error == OnEngineInitListener.Error.NONE) {
// Post initialization code goes here
Log.d(TAG, "Downloading new map data...");
List<Integer> downloadList = new ArrayList<>(1);
downloadList.add(120214); //Id:120002 Berlin Id:120214, Name: Andalucia, Size:231504 Cherche l'id avec l'application iOS map-downloader-ios-swift
downloadProgressBar.setProgress(0);
downloadProgressBar.setVisibility(View.VISIBLE);
//START TEST
AsyncTask.execute(new Runnable() {
@Override
public void run() {
MapLoader.getInstance().installMapPackages(downloadList);
}}); //=> LINE WITH PROBLEMS
} else {
// handle factory initialization failure
}
}
});
}
Is there something that I do wrong?