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

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

SaniMatthias
Antworten
19
Aufrufe
938
swa00
swa00
M
Antworten
3
Aufrufe
145
moin
M
B
Antworten
4
Aufrufe
470
bb321
B
Zurück
Oben Unten