Android GPS-Tracking App: Positionsupdate funktioniert nicht richtig + probleme bei d

  • 0 Antworten
  • Letztes Antwortdatum
M

mido86

Neues Mitglied
0
hallo,

ich versuche gerade eine GPS-Tracking app (in vereinfachter version) aufzubauen.

1.Jedoch habe ich Probleme beim Test auf nem realen Android-Handy beim Positions update, mal wird die aktuelle korrekte Position kurz angezeigt, dann geht Sie wieder verloren.
Im Emulator funzt das theoretisch alles.

2. Das nächste Problem ist das ich versuche die strecke (bzw punkte) nach zu zeichnen die ich laufe.
Ich versuche das von punkt zu punkt zu machen, was bei mir schon direkt zum App absturz führt.
Da liegt wahrscheinlich ein denk fehler bei mir, vlt sieht ihn jemand.

Code:
   MapView mapView;
	MapController mapController;
	[COLOR=darkred]private[/COLOR] LocationManager mLocationManager;
	[COLOR=darkred]private[/COLOR] MyLocationOverlay mMyOverlay;
	[COLOR=darkred]private[/COLOR] GeoKontaktOverlay mMapViewOverlay;
	[COLOR=darkred]public[/COLOR] GeoPoint oldPos;
	[COLOR=darkred]public[/COLOR] GeoPoint aktPos;
	[COLOR=darkred]public[/COLOR] Point oldPunkt;
	[COLOR=darkred]public[/COLOR] Point aktPunkt;
	List<Overlay> mapOverlays;

	@Override
	[COLOR=darkred]protected[/COLOR] [COLOR=darkred]void[/COLOR] onPause() {
		mMyOverlay.disableMyLocation();
		mapView.getOverlays().remove(mMyOverlay);
		mLocationManager.removeUpdates(mMyOverlay);
		mMyOverlay.disableCompass();
		[COLOR=darkred]super[/COLOR].onPause();
	}
	
	@Override
	[COLOR=darkred]protected[/COLOR] [COLOR=darkred]void[/COLOR] onResume() {
		[COLOR=darkred]super[/COLOR].onResume();
		mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000L, [COLOR=darkorange]500[/COLOR].0f, mMyOverlay);
		
		mapView.getOverlays().add(mMyOverlay);
		mMyOverlay.enableMyLocation();
		mMyOverlay.enableCompass();
		[COLOR=green]//mapView.invalidate();[/COLOR]
		
		mMapViewOverlay = [COLOR=darkred]new[/COLOR] GeoKontaktOverlay();
		mapView.getOverlays().add(mMapViewOverlay);
		mapView.invalidate();
		
		
		mMyOverlay.runOnFirstFix([COLOR=darkred]new[/COLOR] Runnable() {
			
			@Override
			[COLOR=darkred]public[/COLOR] [COLOR=darkred]void[/COLOR] run() {
				
				mapController.animateTo(mMyOverlay.getMyLocation());
			}
			
		});
	}


	@Override
	[COLOR=darkred]public[/COLOR] [COLOR=darkred]void[/COLOR] onCreate(Bundle savedInstanceState) {
    	[COLOR=darkred]super[/COLOR].onCreate(savedInstanceState);
    	setContentView(R.layout.main);

    	mapView = (MapView) findViewById(R.id.mapview);
    	mapView.setBuiltInZoomControls([COLOR=darkred]true[/COLOR]);
    	mapController = mapView.getController();
    	mapController.setZoom([COLOR=darkorange]18[/COLOR]);
    	
		mMyOverlay = [COLOR=darkred]new[/COLOR] MyLocationOverlay([COLOR=darkred]this[/COLOR], mapView) {
			
			[COLOR=darkred]public[/COLOR] [COLOR=darkred]synchronized[/COLOR] [COLOR=darkred]void[/COLOR] onLocationChanged(Location location) {
					[COLOR=darkred]super[/COLOR].onLocationChanged(location);
					
			    	oldPos = mMyOverlay.getMyLocation();
	 		    	[COLOR=darkred]final[/COLOR] GeoPoint mypoint = [COLOR=darkred]new[/COLOR]  GeoPoint(([COLOR=darkred]int[/COLOR])(location.getLatitude() * 1E6),  ([COLOR=darkred]int[/COLOR])(location.getLongitude() * 1E6));
			    	aktPos = mypoint;
			    	mapController.animateTo(mypoint);
				}
			
		};
		
		
		mMapViewOverlay = [COLOR=darkred]new[/COLOR] GeoKontaktOverlay();
    	
    	
    	mLocationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
		mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000L, [COLOR=darkorange]3[/COLOR].0f, mMyOverlay);

	}

[COLOR=darkred]private[/COLOR] [COLOR=darkred]class[/COLOR] GeoKontaktOverlay [COLOR=darkred]extends[/COLOR] Overlay {

		  [COLOR=green]//final RectF mRect = new RectF();[/COLOR]
		  [COLOR=darkred]final[/COLOR] Paint mPaint = [COLOR=darkred]new[/COLOR] Paint();

		@Override
		[COLOR=darkred]public[/COLOR] [COLOR=darkred]void[/COLOR] draw(Canvas canvas, MapView mapView, [COLOR=darkred]boolean[/COLOR] shadow) {
			[COLOR=green]//super.draw(canvas, mapView, shadow);[/COLOR]

			oldPunkt = [COLOR=darkred]new[/COLOR] Point();
			aktPunkt = [COLOR=darkred]new[/COLOR] Point();
			
			mapView.getProjection().toPixels(oldPos, oldPunkt) ;
			mapView.getProjection().toPixels(aktPos, aktPunkt);
				  
			canvas.drawLine(aktPunkt.x, aktPunkt.y,oldPunkt.x, oldPunkt.y, mPaint);
			
			[COLOR=darkred]super[/COLOR].draw(canvas, mapView, shadow);
		}
	}

	@Override
	[COLOR=darkred]protected[/COLOR] [COLOR=darkred]boolean[/COLOR] isRouteDisplayed() {
		[COLOR=darkred]return[/COLOR] [COLOR=darkred]false[/COLOR];
	}
 

Ähnliche Themen

M
Antworten
21
Aufrufe
1.214
swa00
swa00
Mr-Fisch
Antworten
5
Aufrufe
914
migi01
migi01
Mr-Fisch
Antworten
8
Aufrufe
965
Mr-Fisch
Mr-Fisch
M
Antworten
9
Aufrufe
747
mkuz24
M
A
Antworten
5
Aufrufe
672
swa00
swa00
Zurück
Oben Unten