public class MainActivity extends Activity implements LocationListener{
...
private LocationLayer locationLayer;
private LocationManager locationManager;
private final MapPosition mapPosition = new MapPosition();
private double startLat;
private double startLong;
@Override
protected void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Tile.SIZE = Tile.calculateTileSize(getResources().getDisplayMetrics().scaledDensity);
mapView = new MapView(this);
final EditText input = new EditText(this);
input.setText(currentArea);
boolean greaterOrEqKitkat = Build.VERSION.SDK_INT >= 19;
if (greaterOrEqKitkat) {
if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
logUser("PATH is not usable without an external storage!");
return;
}
mapsFolder = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS),
"/maps/");
} else
mapsFolder = new File(Environment.getExternalStorageDirectory(), "/maps/");
if (!mapsFolder.exists())
mapsFolder.mkdirs();
TextView welcome = (TextView) findViewById(R.id.welcome);
welcome.setText("Path Assistance to Hospitals(PATHS)");
welcome.setPadding(6, 3, 3, 3);
localSpinner = (Spinner) findViewById(R.id.locale_area_spinner);
localButton = (Button) findViewById(R.id.locale_button);
remoteSpinner = (Spinner) findViewById(R.id.remote_area_spinner);
remoteButton = (Button) findViewById(R.id.remote_button);
// TODO get user confirmation to download
// if (AndroidHelper.isFastDownload(this))
chooseAreaFromRemote();
chooseAreaFromLocal();
}
@Override
protected void onDestroy() {
super.onDestroy();
if (hopper != null)
hopper.close();
hopper = null;
// necessary?
System.gc();
// Cleanup VTM
mapView.map().destroy();
}
boolean isReady() {
if (hopper != null) {
start = null;
return true;
}
if (prepareInProgress) {
logUser("Preparation still in progress");
return false;
}
logUser("Error loading files. Please redownload files on the main menu.");
return false;
}
private void initFiles(String area) {
...
}
private void chooseAreaFromLocal() {
...
}
private void chooseAreaFromRemote() {
...
}
private void chooseArea(Button button, final Spinner spinner,
List<String> nameList, final MySpinnerListener myListener) {
...
}
void downloadingFiles() {
...
}
void loadMap(File areaFolder) {
log("loading map");
// Long press receiver
mapView.map().layers().add(new LongPressLayer(mapView.map()));
...
loadGraphStorage();
}
@Override
protected void onResume() {
super.onResume();
enableAvailableProviders();
}
@Override
protected void onPause() {
super.onPause();
if (locationManager != null) {
if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED
|| ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED){
locationManager.removeUpdates(this);
locationLayer.setEnabled(false);
}
}
}
@Override
public void onLocationChanged(Location location) {
locationLayer.setEnabled(true);
if (location!=null) {
locationLayer.setPosition(location.getLatitude(), location.getLongitude(), location.getAccuracy());
// Follow location
mapView.map().getMapPosition(mapPosition);
mapPosition.setPosition(location.getLatitude(), location.getLongitude());
mapView.map().setMapPosition(mapPosition);
logUser("Successful");
}
logUser("test");
}
@Override
public void onProviderDisabled(String provider) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
private void enableAvailableProviders() {
if (locationManager != null) {
if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED
|| ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED){
locationManager.removeUpdates(this);
for (String provider : locationManager.getProviders(true)) {
if (LocationManager.GPS_PROVIDER.equals(provider)
|| LocationManager.NETWORK_PROVIDER.equals(provider)) {
locationManager.requestLocationUpdates(provider, 0, 0, this);
}
}
}
}
}
void loadGraphStorage() {
log("loading graph");
getGeoPoints();
plotHosp();
...
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationLayer = new LocationLayer(mapView.map());
locationLayer.setEnabled(true);
mapView.map().layers().add(locationLayer);
...
}
private void finishPrepare() {
prepareInProgress = false;
}
...
}