was ist der beste Weg, Benutzerstandort zu erhalten, nachdem jede 2 Minuten sogar Sie app Dank im Voraus getötetAndroid Wie kontinuierlich Benutzer Lage zu erhalten, auch die App getötet
Antwort
Sie können eine Background Service für die Verwendung wählen Sie Ihre Aktivität.
In diesem Dienst stellen Sie Ihren Dienst so ein, dass er in dem von Ihnen gewünschten Intervall nach Ihrem Standort fragt.
Danach können Sie LocalBroadcastManager verwenden, um das Ergebnis Ihrer Interesse zu senden, um die nützlichen Ergebnisse zu Ihrer Anwendung zurückzugeben.
Hoffe es hilft!
Prost! Fröhliche Programmierung!
ausgeführt wird, aber wenn App getötet wird oder Gerät neu starten, dann stoppt der Dienst Bitte sagen Sie mir eine andere Möglichkeit –
Sie können einen Broadcast-Empfänger hinzufügen, um den Boot abzuschließen – Ameer
@NisarAhmad http://developer.android.com/ Referenz/android/app/Service.html # START_STICKY – sihao
Verwenden Sie eine Started service, um Code im Hintergrund auszuführen, selbst wenn die App beendet wird. Verwenden Sie Timer und Timer task, um den Standort-Erfassungscode in festgelegten Intervallen auszuführen.
Timer Beispiel
new Timer().scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {}
}, 0, 1000);
können Sie mir bitte Probe senden –
Sie können Beispiele finden Sie unter den Links zur Verfügung gestellt und versuchen Sie suchen Antworten auf spezifische Probleme, denen Sie begegnen, während Sie versuchen, dies selbst zu implementieren. –
Ich habe ein Beispiel für den Timer hinzugefügt. Wie man die verschiedenen Arten von Diensten verwendet, ist in der gestarteten Dienstverbindung. Ich hoffe, dies beantwortet Ihre ursprüngliche Frage –
Abgesehen von dem, was J Whitfield und Sihao vorgeschlagen haben, können Sie auch Ihren Dienst als Dienst starten (keine Intent Service) machen. Dann geben Sie auf dem onStartCommand des Dienstes START_STICKY zurück.
Sie können auch versuchen, Ihren Dienst in einem separaten Prozess auszuführen, damit er nicht beendet wird, selbst wenn Ihre App getötet wird.
Folgen dieser Schritte
1) Diejenigen Code in Ihrem Manifest File.Create Rundfunkempfänger und Service schreiben.
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<receiver
android:name=".activity.Timerservice"
android:process=":remote" >
</receiver>
<service
android:name=".model.GPSTracker"
android:exported="false" />
2) in der Hauptaktivität auf method.for erstellen weiterhin Intervallzeit fix erhalten aktuelle lat-long
public void scheduleAlarm() {
// Construct an intent that will execute the AlarmReceiver
Intent intent = new Intent(getApplicationContext(), Timerservice.class);
// Create a PendingIntent to be triggered when the alarm goes off
pIntent = PendingIntent.getBroadcast(this, Timerservice.REQUEST_CODE,
intent, PendingIntent.FLAG_UPDATE_CURRENT);
// Setup periodic alarm every 5 seconds
long firstMillis = System.currentTimeMillis(); // alarm is set right away
alarm = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);
// First parameter is the type: ELAPSED_REALTIME, ELAPSED_REALTIME_WAKEUP, RTC_WAKEUP
// Interval can be INTERVAL_FIFTEEN_MINUTES, INTERVAL_HALF_HOUR, INTERVAL_HOUR, INTERVAL_DAY
alarm.setInexactRepeating(AlarmManager.RTC_WAKEUP, firstMillis,
60000, pIntent);
}
3) TimeService.java (Broadcast Receiver Klasse)
public class Timerservice extends BroadcastReceiver {
public static final int REQUEST_CODE = 12345;
Context mContext;
public static final String ACTION = "com.codepath.example.servicesdemo.alarm";
// Triggered by the Alarm periodically (starts the service to run task)
@Override
public void onReceive(Context context, Intent intent) {
final LocationManager manager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
if (!manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
Intent i1 = new Intent(context, AlertDialogActivity.class);
i1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i1);
// buildAlertMessageNoGps();
}else{
Intent i = new Intent(context, GPSTracker.class);
context.startService(i);
}
}
}
4) GPSTracker.class
public class GPSTracker extends Service implements LocationListener {
Context mContext;
// flag for GPS status
boolean isGPSEnabled = false;
// flag for network status
boolean isNetworkEnabled = false;
boolean canGetLocation = false;
Location location; // location
double latitude; // latitude
double longitude; // longitude
double Lastlatitude; // latitude
double Lastlongitude; // longitude
double totalDistance, Totalkm;
SessionManagement sessionManagement;
// The minimum distance to change Updates in meters
private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10; // 10 meters
// The minimum time between updates in milliseconds
private static final long MIN_TIME_BW_UPDATES = 1000 * 60 * 1; // 1 minute
// Declaring a Location Manager
protected LocationManager locationManager;
public GPSTracker() {
//super("GPS");
}
public GPSTracker(Context mContext) {
//super("");
this.mContext = mContext;
getLocation();
}
public Location getLocation() {
try {
locationManager = (LocationManager) mContext
.getSystemService(LOCATION_SERVICE);
Criteria locationCritera = new Criteria();
String providerName = locationManager.getBestProvider(locationCritera,
true);
if (providerName != null)
location = locationManager.getLastKnownLocation(providerName);
GPSTracker locationListener = new GPSTracker();
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0,
0, locationListener);
// getting GPS status
isGPSEnabled = locationManager
.isProviderEnabled(LocationManager.GPS_PROVIDER);
// getting network status
isNetworkEnabled = locationManager
.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
if (!isGPSEnabled && !isNetworkEnabled) {
// no network provider is enabled
} else {
this.canGetLocation = true;
// First get location from Network Provider
if (isNetworkEnabled) {
locationManager.requestLocationUpdates(
LocationManager.NETWORK_PROVIDER,
MIN_TIME_BW_UPDATES,
MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
Log.d("Network", "Network");
if (locationManager != null) {
location = locationManager
.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
if (location != null) {
latitude = location.getLatitude();
longitude = location.getLongitude();
Log.i("location", +latitude + " " + longitude);
// Toast.makeText(getApplicationContext(),"LatLang is" +latitude+" "+longitude,Toast.LENGTH_LONG).show();
}
}
}
// if GPS Enabled get lat/long using GPS Services
if (isGPSEnabled) {
if (location == null) {
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
MIN_TIME_BW_UPDATES,
MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
Log.d("GPS Enabled", "GPS Enabled");
if (locationManager != null) {
location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if (location != null) {
latitude = location.getLatitude();
longitude = location.getLongitude();
}
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return location;
}
public void stopUsingGPS() {
if (locationManager != null) {
locationManager.removeUpdates(GPSTracker.this);
}
}
public double getLatitude() {
if (location != null) {
latitude = location.getLatitude();
}
// return latitude
return latitude;
}
public double getLongitude() {
if (location != null) {
longitude = location.getLongitude();
}
// return longitude
return longitude;
}
public boolean canGetLocation() {
return this.canGetLocation;
}
@Override
public void onLocationChanged(Location location) {
if (location != null) {
this.location = location;
getLatitude();
getLongitude();
}
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
}
@Override
public void onDestroy() {
super.onDestroy();
}
- 1. Geplante Aufgabe, auch wenn die App getötet
- 2. Halten Sie Android Chronometer aktiv, auch nachdem App getötet wird
- 3. Running Android App im Hintergrund nach "getötet"
- 4. Werden Android Geofences entfernt, wenn die App vom Benutzer getötet wird?
- 5. Android Emulator wird getötet
- 6. Altbeacon Android - EnterRegion, während App getötet wird (nicht im Hintergrund)
- 7. App kontinuierlich im Hintergrund laufen zu lassen
- 8. Twilio App zu App Anruf Wenn App geschlossen oder in Android getötet?
- 9. Wie schreibe ich Facebook App, die Profilbild kontinuierlich aktualisieren
- 10. Wie zu verhindern, dass eine Android-Aktivität getötet wird
- 11. Wie können wir überprüfen, die iOS-App von Benutzer oder iOS getötet
- 12. Android Flugmodus kontinuierlich wechseln
- 13. Wie Push-Benachrichtigungen vom Server, wenn App getötet wird
- 14. Wie startet die Facetime App automatisch, auch wenn die App beendet wird?
- 15. Android: Dienst am Laufen halten, wenn app getötet
- 16. So aktualisieren Sie eine kontinuierlich laufende Android App ohne Benutzerinteraktion
- 17. Android erzwingt den vollständigen Neustart, nachdem eine App getötet wurde
- 18. Android-Kontext nach dem Prozess wird getötet
- 19. In App Billing-Service immer mal getötet
- 20. Geofences funktioniert nicht, wenn App getötet wird
- 21. Android: Listing App Intents in der Lage zu verwenden PNG
- 22. Android SeekBar nicht kontinuierlich weiter
- 23. Griff onMessageReceived() und onTokenRefresh(), auch wenn die App nicht
- 24. Cordova Ibeacon; Senden Sie lokale Benachrichtigung, nachdem die App getötet wurde, funktioniert aber nicht auf Android
- 25. Android: Benutzer-ID erhalten, ohne scary (für Benutzer) Berechtigungen?
- 26. Aktion auf Anwendung in Android getötet
- 27. Android Clearing-App-Cache löscht Anbieter auch
- 28. App ist ideal eventough zugeteilten Speichergröße kontinuierlich in Android
- 29. Android: Wird AlarmManager nach dem Herunterfahren getötet
- 30. Geofence funktioniert nicht, wenn die App getötet wird
erstellen ein Hintergrunddienste und dieser Dienst arbeiten im Hintergrund selbst. erhalten Sie fortwährend Standort .. –
aber wenn Service ist, dann stoppen, wer ich Aufstellungsortaktualisierung erhalten kann –
Ja können Sie dieses erzielen, indem Sie einige Bemühung und R & D setzen. – Aks4125