2016-09-05 2 views
0

Zunächst ist dies kein Duplikat einer anderen Frage auf der Website. Ich habe Standort-Updates unter Verwendung von Service und Google API beide gesehen.Wie wird die Google Location Service-API verwendet, um auch im Hintergrund Standort-Updates zu erhalten?

Ich habe beide versucht, aber im Servicefall, es funktioniert nicht. Aber der Code des ersten Links funktioniert einwandfrei und gibt die Standortaktualisierungen korrekt wieder. Aber ich denke, es kann nicht aktualisiert werden, wenn die App im Hintergrund ist.

Ich möchte diesen Code in einem Dienst, der kontinuierlich Standortupdates erhalten kann, auch wenn meine App im Hintergrund ist.

Aber kann nicht herausfinden, wie diese beiden Codes zusammenführen. Wenn Sie fragen, was ich versucht habe? Dann habe ich einfach die gängigen Methoden in die Serviceklasse kopiert. Aber es gibt mir zu viele Fehler :(

Wenn es alternative für diese mir bitte schlage ich bin neu auf Android

Vielen Dank im Voraus

Antwort

0

Versuchen:..!

-Service .java

import android.app.Service; 
import android.content.Context; 
import android.content.Intent; 
import android.location.Location; 
import android.os.Bundle; 
import android.os.IBinder; 
import android.support.annotation.Nullable; 
import android.util.Log; 
import android.widget.Toast; 
import com.google.android.gms.common.api.GoogleApiClient; 
import com.google.android.gms.location.LocationListener; 
import com.google.android.gms.location.LocationRequest; 
import com.google.android.gms.common.ConnectionResult; 
import com.google.android.gms.location.LocationServices; 


import java.io.IOException; 
import java.io.OutputStreamWriter; 

public class GPSService extends Service implements GoogleApiClient.ConnectionCallbacks,GoogleApiClient.OnConnectionFailedListener,LocationListener { 



private GoogleApiClient mGoogleApiClient; 

private LocationRequest mLocationRequest; 

@Nullable 
@Override 
public IBinder onBind(Intent intent) { 
    return null; 
} 


@Override 
public void onCreate() { 
    super.onCreate(); 

    mGoogleApiClient = new GoogleApiClient.Builder(this) 
      .addApi(LocationServices.API) 
      .addConnectionCallbacks(this) 
      .addOnConnectionFailedListener(this) 
      .build(); 

} 

@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 

    mGoogleApiClient.connect(); 

    return super.onStartCommand(intent, flags, startId); 
} 

@Override 
public void onDestroy() { 


    mGoogleApiClient.disconnect(); 
    super.onDestroy(); 



} 


@Override 
public void onConnected(Bundle bundle) { 
    mLocationRequest = LocationRequest.create(); 
    mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY); 
    mLocationRequest.setInterval(1000); // Update location every second 

    LocationServices.FusedLocationApi.requestLocationUpdates(
      mGoogleApiClient, mLocationRequest, this); 
} 

@Override 
public void onConnectionSuspended(int i) { 
    Toast.makeText(this,"GoogleApiClient connection has been suspend",Toast.LENGTH_LONG).show(); 
} 

@Override 
public void onConnectionFailed(ConnectionResult connectionResult) { 
    Toast.makeText(this,"GoogleApiClient connection has failed",Toast.LENGTH_LONG).show(); 
} 

und MainActivity.java

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    Intent i = new Intent(this,GPSService.class); 
    startService(i); 


} 
Verwandte Themen