1

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?

ΩlostA
  • 2,501
  • 5
  • 27
  • 63

0 Answers0