ich nicht bekommen es in OnLocationChanged, OnStatusChanged, onProviderEnabled, geben Sie onProviderDisabled I checked auszuschalten und auf dem GPS ich draußen versucht Büro (für, dass der Zähler genannt contador Sie in diesem Beispiel sehen)Location nicht (innen intentService) arbeiten, aber getLastKnownLocation ist (Rückkehr verschiedene GPS-Koordinaten)
Dies ist mein Code
import android.Manifest;
import android.app.IntentService;
import android.app.Notification;
import android.app.PendingIntent;
import android.content.Intent;
import android.content.Context;
import android.content.pm.PackageManager;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.support.v4.app.ActivityCompat;
/**
* An {@link IntentService} subclass for handling asynchronous task requests in
* a service on a separate handler thread.
* <p>
* TODO: Customize class - update intent actions, extra parameters and static
* helper methods.
*/
public class ISSubProcesoGps extends IntentService {
// TODO: Rename actions, choose action names that describe tasks that this
// IntentService can perform, e.g. ACTION_FETCH_NEW_ITEMS
public static int hacambiado=0;
LocationManager lm;
double longitude;
double latitude;
Location location=null;
public static volatile boolean shouldContinue = true;
int contador = 0;
LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
longitude = location.getLongitude();
latitude = location.getLatitude();
//mLocation = location;
//altitude = location.getAltitude();
hacambiado++;
}
@Override
public void onStatusChanged(String s, int i, Bundle bundle) {
String x=s;
}
@Override
public void onProviderEnabled(String s) {
String x=s;
}
@Override
public void onProviderDisabled(String s) {
String x=s;
}
};
// TODO: Rename parameters
public ISSubProcesoGps() {
super("ISSubProcesoGps");
}
/**
* Starts this service to perform action Foo with the given parameters. If
* the service is already performing a task this action will be queued.
*
* @see IntentService
*/
@Override
protected void onHandleIntent(Intent mIntent) {
lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
latitude = 0;
longitude = 0;
if (lm.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
return;
}
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
Intent intent = new Intent(getBaseContext(), MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent pendIntent = PendingIntent.getActivity(this, 0, intent, 0);
Notification notification = new Notification.Builder(this)
.setSmallIcon(R.drawable.ic_menu_gallery) // the status icon
.setTicker("hola muy myintentservice") // the status text
.setWhen(System.currentTimeMillis()) // the time stamp
.setContentTitle("content title") // the label of the entry
.setContentText("content teext") // the contents of the entry
.setContentIntent(pendIntent) // The intent to send when the entry is clicked
.build();
startForeground(1, notification);
while(true)
{
try {
location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
if(!shouldContinue)
{
if(lm!=null)
lm.removeUpdates(locationListener);
lm=null;
break;
}
}
}
}
}