Skip to content

Commit ac02c32

Browse files
committed
Updates and fixes
1 parent af6b22a commit ac02c32

File tree

3 files changed

+76
-82
lines changed

3 files changed

+76
-82
lines changed

app/src/main/java/org/nitri/opentopo/MainActivity.java

Lines changed: 24 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package org.nitri.opentopo;
22

33
import android.Manifest;
4+
import android.content.ContentResolver;
45
import android.content.Intent;
56
import android.content.pm.PackageManager;
67
import android.net.Uri;
@@ -14,6 +15,7 @@
1415
import org.xmlpull.v1.XmlPullParserException;
1516

1617
import java.io.IOException;
18+
import java.io.InputStream;
1719

1820
import io.ticofab.androidgpxparser.parser.GPXParser;
1921
import io.ticofab.androidgpxparser.parser.domain.Gpx;
@@ -38,6 +40,14 @@ protected void onCreate(Bundle savedInstanceState) {
3840
if (savedInstanceState != null) {
3941
mGpxUri = savedInstanceState.getString(GPX_URI_STATE);
4042
}
43+
44+
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
45+
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_LOCATION_PERMISSION);
46+
} else if (ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
47+
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_STORAGE_PERMISSION);
48+
} else {
49+
addMapFragment();
50+
}
4151
}
4252

4353
private void addMapFragment() {
@@ -54,19 +64,6 @@ private boolean mapFragmentAdded() {
5464
return getSupportFragmentManager().findFragmentByTag(MAP_FRAGMENT_TAG) != null;
5565
}
5666

57-
58-
@Override
59-
protected void onResume() {
60-
super.onResume();
61-
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
62-
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_LOCATION_PERMISSION);
63-
} else if (ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
64-
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_STORAGE_PERMISSION);
65-
} else {
66-
addMapFragment();
67-
}
68-
}
69-
7067
@Override
7168
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
7269
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
@@ -110,7 +107,7 @@ public void onActivityResult(int requestCode, int resultCode,
110107
Intent resultData) {
111108

112109
if (requestCode == READ_REQUEST_CODE && resultCode == AppCompatActivity.RESULT_OK) {
113-
Uri uri = null;
110+
Uri uri;
114111
if (resultData != null) {
115112
uri = resultData.getData();
116113
if (uri != null) {
@@ -131,16 +128,20 @@ protected void onSaveInstanceState(Bundle outState) {
131128

132129
private void parseGpx(Uri uri) {
133130
GPXParser parser = new GPXParser();
134-
try {
135-
Gpx gpx = parser.parse(getContentResolver().openInputStream(uri));
136-
MapFragment mapFragment = (MapFragment) getSupportFragmentManager().findFragmentByTag(MAP_FRAGMENT_TAG);
137-
if (mapFragment != null && gpx != null) {
138-
mapFragment.setGpx(gpx);
139-
mGpxUri = uri.toString();
140-
}
131+
ContentResolver contentResolver = getContentResolver();
132+
if (contentResolver != null) {
133+
try {
134+
InputStream inputStream = contentResolver.openInputStream(uri);
135+
Gpx gpx = parser.parse(inputStream);
136+
MapFragment mapFragment = (MapFragment) getSupportFragmentManager().findFragmentByTag(MAP_FRAGMENT_TAG);
137+
if (mapFragment != null && gpx != null) {
138+
mapFragment.setGpx(gpx);
139+
mGpxUri = uri.toString();
140+
}
141141

142-
} catch (XmlPullParserException | IOException e) {
143-
e.printStackTrace();
142+
} catch (XmlPullParserException | IOException e) {
143+
e.printStackTrace();
144+
}
144145
}
145146
}
146147
}

app/src/main/java/org/nitri/opentopo/MapFragment.java

Lines changed: 51 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import android.content.DialogInterface;
66
import android.graphics.Bitmap;
77
import android.graphics.BitmapFactory;
8-
import android.graphics.drawable.VectorDrawable;
98
import android.location.Location;
109
import android.location.LocationListener;
1110
import android.location.LocationManager;
@@ -14,12 +13,10 @@
1413
import android.os.Handler;
1514
import android.support.annotation.NonNull;
1615
import android.support.annotation.Nullable;
17-
import android.support.graphics.drawable.VectorDrawableCompat;
1816
import android.support.v4.app.Fragment;
19-
import android.support.v4.content.ContextCompat;
17+
import android.support.v4.app.FragmentActivity;
2018
import android.support.v7.app.AlertDialog;
2119
import android.support.v7.app.AppCompatActivity;
22-
import android.support.v7.content.res.AppCompatResources;
2320
import android.text.TextUtils;
2421
import android.util.DisplayMetrics;
2522
import android.view.LayoutInflater;
@@ -32,14 +29,11 @@
3229
import android.widget.Toast;
3330

3431
import org.nitri.opentopo.overlay.OverlayHelper;
35-
import org.osmdroid.config.Configuration;
3632
import org.osmdroid.events.DelayedMapListener;
3733
import org.osmdroid.events.MapListener;
3834
import org.osmdroid.events.ScrollEvent;
3935
import org.osmdroid.events.ZoomEvent;
40-
import org.osmdroid.tileprovider.tilesource.OnlineTileSourceBase;
4136
import org.osmdroid.tileprovider.tilesource.TileSourceFactory;
42-
import org.osmdroid.tileprovider.tilesource.XYTileSource;
4337
import org.osmdroid.util.GeoPoint;
4438
import org.osmdroid.views.MapView;
4539
import org.osmdroid.views.overlay.ScaleBarOverlay;
@@ -49,7 +43,6 @@
4943
import org.osmdroid.views.overlay.mylocation.GpsMyLocationProvider;
5044
import org.osmdroid.views.overlay.mylocation.MyLocationNewOverlay;
5145

52-
import java.io.File;
5346
import java.util.Objects;
5447

5548
import io.ticofab.androidgpxparser.parser.domain.Gpx;
@@ -102,8 +95,7 @@ public MapFragment() {
10295
}
10396

10497
public static MapFragment newInstance() {
105-
MapFragment fragment = new MapFragment();
106-
return fragment;
98+
return new MapFragment();
10799
}
108100

109101
@Override
@@ -113,65 +105,69 @@ public void onCreate(Bundle savedInstanceState) {
113105
}
114106

115107
@Override
116-
public View onCreateView(LayoutInflater inflater, ViewGroup container,
108+
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
117109
Bundle savedInstanceState) {
118110
View view = inflater.inflate(R.layout.fragment_map, container, false);
119111
mMapView = view.findViewById(R.id.mapview);
120112

121113
final DisplayMetrics dm = this.getResources().getDisplayMetrics();
122114

123-
mCompassOverlay = new CompassOverlay(getActivity(), new InternalCompassOrientationProvider(getActivity()),
124-
mMapView);
125-
mLocationOverlay = new MyLocationNewOverlay(new GpsMyLocationProvider(getActivity()),
126-
mMapView);
115+
FragmentActivity activity = getActivity();
127116

128-
Bitmap bmCrosshairs = BitmapFactory.decodeResource(getResources(),
129-
R.drawable.ic_crosshairs);
117+
if (activity != null) {
118+
mCompassOverlay = new CompassOverlay(getActivity(), new InternalCompassOrientationProvider(getActivity()),
119+
mMapView);
120+
mLocationOverlay = new MyLocationNewOverlay(new GpsMyLocationProvider(getActivity()),
121+
mMapView);
130122

131-
mLocationOverlay.setPersonIcon(bmCrosshairs);
132-
mLocationOverlay.setPersonHotspot(bmCrosshairs.getWidth() / 2, bmCrosshairs.getHeight() / 2);
123+
Bitmap bmCrosshairs = BitmapFactory.decodeResource(getResources(),
124+
R.drawable.ic_crosshairs);
133125

134-
mScaleBarOverlay = new ScaleBarOverlay(mMapView);
135-
mScaleBarOverlay.setCentred(true);
136-
mScaleBarOverlay.setScaleBarOffset(dm.widthPixels / 2, 10);
126+
mLocationOverlay.setPersonIcon(bmCrosshairs);
127+
mLocationOverlay.setPersonHotspot(bmCrosshairs.getWidth() / 2, bmCrosshairs.getHeight() / 2);
137128

138-
mRotationGestureOverlay = new RotationGestureOverlay(mMapView);
139-
mRotationGestureOverlay.setEnabled(true);
129+
mScaleBarOverlay = new ScaleBarOverlay(mMapView);
130+
mScaleBarOverlay.setCentred(true);
131+
mScaleBarOverlay.setScaleBarOffset(dm.widthPixels / 2, 10);
140132

141-
mMapView.getController().setZoom(15d);
142-
mMapView.setMaxZoomLevel(17d);
143-
mMapView.setTilesScaledToDpi(true);
144-
mMapView.setBuiltInZoomControls(true);
145-
mMapView.setMultiTouchControls(true);
146-
mMapView.setFlingEnabled(true);
147-
mMapView.getOverlays().add(this.mLocationOverlay);
148-
mMapView.getOverlays().add(this.mCompassOverlay);
149-
mMapView.getOverlays().add(this.mScaleBarOverlay);
133+
mRotationGestureOverlay = new RotationGestureOverlay(mMapView);
134+
mRotationGestureOverlay.setEnabled(true);
150135

151-
mMapView.setTileSource(TileSourceFactory.OpenTopo);
136+
mMapView.getController().setZoom(15d);
137+
mMapView.setMaxZoomLevel(17d);
138+
mMapView.setTilesScaledToDpi(true);
139+
mMapView.setBuiltInZoomControls(true);
140+
mMapView.setMultiTouchControls(true);
141+
mMapView.setFlingEnabled(true);
142+
mMapView.getOverlays().add(this.mLocationOverlay);
143+
mMapView.getOverlays().add(this.mCompassOverlay);
144+
mMapView.getOverlays().add(this.mScaleBarOverlay);
152145

153-
//final OnlineTileSourceBase localTopo = new XYTileSource("OpenTopoMap", 0, 19, 256, ".png",
154-
// new String[]{"http://192.168.2.108/hot/"}, "Kartendaten: © OpenStreetMap-Mitwirkende, SRTM | Kartendarstellung: © OpenTopoMap (CC-BY-SA)");
155-
//mMapView.setTileSource(localTopo);
146+
mMapView.setTileSource(TileSourceFactory.OpenTopo);
156147

157-
String copyRightNotice = mMapView.getTileProvider().getTileSource().getCopyrightNotice();
158-
TextView copyRightView = view.findViewById(R.id.copyrighView);
148+
//final OnlineTileSourceBase localTopo = new XYTileSource("OpenTopoMap", 0, 19, 256, ".png",
149+
// new String[]{"http://192.168.2.108/hot/"}, "Kartendaten: © OpenStreetMap-Mitwirkende, SRTM | Kartendarstellung: © OpenTopoMap (CC-BY-SA)");
150+
//mMapView.setTileSource(localTopo);
159151

160-
if (!TextUtils.isEmpty(copyRightNotice)) {
161-
copyRightView.setText(copyRightNotice);
162-
copyRightView.setVisibility(View.VISIBLE);
163-
} else {
164-
copyRightView.setVisibility(View.GONE);
165-
}
152+
String copyRightNotice = mMapView.getTileProvider().getTileSource().getCopyrightNotice();
153+
TextView copyRightView = view.findViewById(R.id.copyrighView);
166154

167-
mMapView.addMapListener(new DelayedMapListener(mDragListener));
155+
if (!TextUtils.isEmpty(copyRightNotice)) {
156+
copyRightView.setText(copyRightNotice);
157+
copyRightView.setVisibility(View.VISIBLE);
158+
} else {
159+
copyRightView.setVisibility(View.GONE);
160+
}
168161

169-
mLocationOverlay.enableMyLocation();
170-
mLocationOverlay.enableFollowLocation();
171-
mLocationOverlay.setOptionsMenuEnabled(true);
172-
mCompassOverlay.enableCompass();
173-
mMapView.setVisibility(View.VISIBLE);
174-
mOverlayHelper = new OverlayHelper(getActivity(), mMapView);
162+
mMapView.addMapListener(new DelayedMapListener(mDragListener));
163+
164+
mLocationOverlay.enableMyLocation();
165+
mLocationOverlay.enableFollowLocation();
166+
mLocationOverlay.setOptionsMenuEnabled(true);
167+
mCompassOverlay.enableCompass();
168+
mMapView.setVisibility(View.VISIBLE);
169+
mOverlayHelper = new OverlayHelper(getActivity(), mMapView);
170+
}
175171

176172
return view;
177173
}
@@ -221,6 +217,7 @@ public void onPause() {
221217
try {
222218
mLocationManager.removeUpdates(this);
223219
} catch (Exception ex) {
220+
ex.printStackTrace();
224221
}
225222

226223
mMapHandler.removeCallbacks(mCenterRunnable);
@@ -242,13 +239,13 @@ public void onResume() {
242239
mLocationManager = (LocationManager) getActivity().getSystemService(Context.LOCATION_SERVICE);
243240
if (mLocationManager != null) {
244241
try {
245-
mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0l, 0f, this);
242+
mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0L, 0f, this);
246243
} catch (Exception ex) {
247244
ex.printStackTrace();
248245

249246
}
250247
try {
251-
mLocationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0l, 0f, this);
248+
mLocationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0L, 0f, this);
252249
} catch (Exception ex) {
253250
ex.printStackTrace();
254251
}

build.gradle

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,7 @@ buildscript {
77
jcenter()
88
}
99
dependencies {
10-
classpath 'com.android.tools.build:gradle:3.2.0'
11-
12-
13-
// NOTE: Do not place your application dependencies here; they belong
14-
// in the individual module build.gradle files
10+
classpath 'com.android.tools.build:gradle:3.2.1'
1511
}
1612
}
1713

0 commit comments

Comments
 (0)