2012-04-11 1 views
1

Ich arbeite an einer Android-App, die mit Google Map und GPS beschäftigt. Seine Annäherungsalarm-App, die die Karte anzeigt, akzeptiert eine Berührung des Benutzers und setzt einen Alarm für diesen Ort. Ich habe einen EditText hinzugefügt, um zu akzeptieren, wie weit entfernt vom Ziel der Benutzer benachrichtigt werden möchte. Aber egal, was der Benutzer eingibt, die App nimmt diesen Wert als 2 km. Ist es, weil es Zellenturm Info statt GPS verwendet? Und wenn es ein Tutorial gibt, das mir bei der Entwicklung der App helfen kann, teilen Sie es bitte mit. Wenn der Benutzer einen Standort auf der Karte auswählt, wird ein neuer Bildschirm angezeigt, damit der Benutzer die Benachrichtigungsdistanz eingeben kann. Das GPS-Symbol verschwindet jedoch, wenn die App vom Kartenbildschirm zum Benutzereingabebildschirm wechselt. Was könnte das Problem sein? Dies ist der Teil, der sich mit dem Einstellen des Alarms beschäftigt.GPS-Verbindung verloren, wenn Android-App auf einen neuen Bildschirm wechselt

mSetAlarm.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
      // Get the distance from the shared preferences 
      SharedPreferences preferences = PreferenceManager 
       .getDefaultSharedPreferences(getBaseContext()); 

      String distanceStr = preferences.getString("distance", "0"); 
      double distance = Double.parseDouble(distanceStr); 

      LocationManager locationManager = (LocationManager) getBaseContext() 
       .getSystemService(Context.LOCATION_SERVICE); 

      AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 
      Intent intent = new Intent(LocationInfoActivity.this, 
       MyBroadcastReceiver.class); 
      PendingIntent pendingIntent = PendingIntent.getBroadcast(
       getBaseContext().getApplicationContext(), 234324243, 
       intent, PendingIntent.FLAG_UPDATE_CURRENT); 

      MyLocationListener locationListener = new MyLocationListener(
       locationManager, preferences, alarmManager, 
       pendingIntent); 

      if (distance < Double.parseDouble(i)) { 
       alarmManager.set(AlarmManager.RTC_WAKEUP, System 
         .currentTimeMillis(), pendingIntent); 
       locationManager.removeUpdates(locationListener); 
      } else if (distance < 4.0) { 
       WakeMeUtill.requestLocationUpdates(locationManager, 0, 0, 
         locationListener); 
      } else { 
       double quaterDistance = (distance * 3)/4; 
       WakeMeUtill.requestLocationUpdates(locationManager, 0, 
         (float) quaterDistance * 1000, locationListener); 
      } 
     } 
    }); 
} 
+0

Welches Gerät/welche Android-Version verwenden Sie? – Evgeny

Antwort

0

in Ihrem Code sein kann, schrieb Sie diese Zeile in onPause() -Methode

onPause() 
{ 
    gpsLocationManager.removeupdates() 
} 

bitte Ihren Code überprüfen.

Wenn dies kein Problem war, bitte teilen Sie etwas mehr Details.

Verwandte Themen