2012-04-13 9 views
6

Ich entwickle die Anwendung Ortungsverfolgung. Aber ich höre auf, die Standortaktualisierung zu erhalten, indem ich 2 Dinge mache ...GPS-Symbol blinkt immer noch nach locationManager.removeUpdates() und durch Setzen von locationManager auf Null

  1. locationManager.removeUpdates (this); und
  2. Einstellung locationManager Verweis auf null.

Dies wird immer Standortkoordinaten stoppen, wie i ... wollen

Aber das Problem ist das GPS-Symbol noch .. blinkt, die das Gerät die Batterie entleeren.

So helfen Sie mir bitte diesen GPS-Fixes zu stoppen ...

Antwort

1

Wenn Sie dies auf dem Emulator testen, das ist vollkommen normal. Das GPS-Symbol in der Statusleiste verschwindet nie.

Wenn Sie dies auf der Hardware testen, haben Sie entweder requestLocationUpdates() mehr als einmal (und nicht die anderen Updates entfernt), oder vielleicht etwas anderes auf der Hardware verwendet GPS.

+0

Thx sir, Ich bin auf Gerät testen .. Aber mein Code ist wie wenn timer trifft Ich fordere den locationManager auf Updates von locationManager.requestLocationUpdates (BestProvider, 10 * 1000, 1, Listener) zu erhalten; dann in den Hörer i geschrieben hv public void OnLocationChanged (Lage, Lage) { \t \t \t \t \t \t FileUtils.save (Standort, mContext); \t \t \t locationManager.removeUpdates (this); \t \t \t \t \t} Also meiner Meinung nach gibt es keine Möglichkeit, dass mein Code nicht mehr um Updates anfordert ... Also sagen Sie mir bitte einen Code Modifikation i .. – NullPointerException

+0

zu tun hv Obwohl ich removeUpdates für alle requestLocationUpdates tun Ich habe initiiert, es passiert mir auf einigen Geräten nur, wie das Samsung Galaxy S2. Es scheint jedoch, dass das blinkende GPS-Symbol nach ein paar Sekunden (normalerweise weniger als 30) verschwindet. – Erwan

11

Wenn Sie Ihre Position und/oder den Kompass in Ihrer mapView anzeigen, müssen Sie sie deaktivieren. Wenn Sie das nicht tun, ist GPS noch aktiv.

Ex:

private MapView mapView; 
private MyLocationOverlay Location; 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.frame_layout); 

    mapView = (MapView) this.findViewById(R.id.mapView); 
    Location = new MyLocationOverlay(this, mapView); 
    Location.enableMyLocation(); 
    Location.enableCompass(); 
    mapView.getOverlays().add(Location); 
} 

@Override 
public void onDestroy() { 
    Location.disableMyLocation(); 
    Location.disableCompass(); 
} 
+2

Das war die Antwort für mich. Vielen Dank! Für die aktualisierte Google Maps API musste ich folgendes tun: 'map.setMyLocationEnabled (false);' – Robert

3

Zusätzlich zu den Antworten oben, in Situation, die Sie beschrieben, würde Ich mag sorgfältig empfehlen Bibliotheken von Drittanbietern zu überprüfen, die in Ihrem Projekt verwendet werden, vor allem einiger Analysebibliotheken .

Ich hatte einen großen Kopfschmerzen, bevor ich die GPS-Symbol realisiert von Flurry verursacht wurde, die nicht ordnungsgemäß installiert wurde (FlurryAgent.setReportLocation(true) gesetzt wurde und onEndSession() nicht in onStop() genannt wurde).