1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

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

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von mido86, 09.03.2011.

  1. mido86, 09.03.2011 #1
    mido86

    mido86 Threadstarter Neuer Benutzer

    Beiträge:
    1
    Erhaltene Danke:
    0
    Registriert seit:
    09.03.2011
    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];
    	}
    
    
     

Diese Seite empfehlen