I am quite new to Android, and I don't know how to inherit from the class 'HereMapClass', in my case, into an activity 'HereMap' that extends AppCompatActivity?
I think there is code in double, the goal is to have the main class that inherit all the functions of the HereMapClass. I would like to get the class HereMapClass to manage the download of map etc... and the main class just to manage the map visually on the phone in a fragment. I did it that way because I need to use the class separate as I use it in multiple place in the code but without needing to display the map visually.
Here is the code of the Main class :
HereMap Class activity:
import androidx.appcompat.app.AppCompatActivity;
public class HereMap extends AppCompatActivity {
private MapView view;
private AndroidXMapFragment mapFragment = null;
private MapRoute m_mapRoute;
JSONArray jsonPoints;
JSONArray jsArray;
ArrayList<String> poiArr;
String gpsFolder;
String poiFolder;
String loopName = "";
String loopLang = "";
String loopEvent = "";
Context mContext;
Intent intent;
Bundle bundle2;
private final static String TAG = HereMap.class.getSimpleName();
private MapView mapView;
private Map map;
private static Image m_marker_image;
//MapScreenMarker m_tap_marker;
MapMarker m_tap_marker2;
private ArrayList<MapPackage> currentInstalledMaps;
private String currentInstalledMapsString;
private ProgressBar downloadProgressBar;
private PositioningManager positioningManager = null;
private PositioningManager.OnPositionChangedListener positionListener;
private GeoCoordinate currentPosition;
// 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(HereMap.this,
"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);
}
}
}
...
Here is the class to inherit into the main one:
HereMapClass:
public class HereMapClass {
private MapView view;
private AndroidXMapFragment mapFragment = null;
private MapRoute m_mapRoute;
private MapEngine mapEngine;
private MapLoader mapLoader;
JSONArray jsonPoints;
JSONArray jsArray;
ArrayList<String> poiArr;
String gpsFolder;
String poiFolder;
String loopName = "";
String loopLang = "";
String loopEvent = "";
Context mContext;
Intent intent;
Bundle bundle2;
private final static String TAG = HereMap.class.getSimpleName();
private MapView mapView;
private Map map;
private static Image m_marker_image;
//MapScreenMarker m_tap_marker;
MapMarker m_tap_marker2;
private ArrayList<MapPackage> currentInstalledMaps;
private String currentInstalledMapsString;
private ProgressBar downloadProgressBar;
private PositioningManager positioningManager = null;
private PositioningManager.OnPositionChangedListener positionListener;
private GeoCoordinate currentPosition;
private Context context;
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);
}
}
//continuez à installer
//lancer notification pour login
}
...
Best regards