我正在制作GPS追踪应用程序。该应用应跟踪用户位置。就我而言,它会跟踪应用程序何时处于后台并打开。如果我从后台杀了我的应用程序,我没有获得位置更新。其他应用程序,如Life360即使在杀死应用程序后也可以跟踪用户的位置。
这是我们的代码,我们仍有问题
公共类BService扩展服务{
private static final String TAG = "BService";
private static Location xLocation;
private static LocationRequest mLocationRequest;
private static GoogleApiClient mGoogleApiClient;
private static FusedLocationProviderApi mFusedLocationProviderApi = LocationServices.FusedLocationApi;
private static String mLocation = "";
private Context xContext;
private LocationListener mLocationListener = new LocationListener() {
@Override
public void onLocationChanged(Location lo) {
Log.i(TAG, "onLocationChanged: " + mLocation);
}
};
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.e(TAG, "onStartCommand: ");
xContext = this;
initGps();
return START_STICKY;
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
private void initGps() {
mLocationRequest = new LocationRequest();
mLocationRequest.setInterval(1000 * 60);
mLocationRequest.setFastestInterval(1000 * 40);
mLocationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY);
mGoogleApiClient = new GoogleApiClient.Builder(xContext)
.addConnectionCallbacks(new GoogleApiClient.ConnectionCallbacks() {
@Override
public void onConnected(@Nullable Bundle bundle) {
Location lo = null;
if (ActivityCompat.checkSelfPermission(xContext, Manifest.permission.ACCESS_FINE_LOCATION) ==
PackageManager.PERMISSION_GRANTED)
lo = mFusedLocationProviderApi.getLastLocation(mGoogleApiClient);
if (lo != null) {
Log.i(TAG, "onConnected: " + lo);
}
}
@Override
public void onConnectionSuspended(int i) {
}
})
.addOnConnectionFailedListener(new GoogleApiClient.OnConnectionFailedListener() {
@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
}
})
.addApi(LocationServices.API)
.build();
mGoogleApiClient.connect();
LocationSettingsRequest mLocationSettingsRequest = new LocationSettingsRequest.Builder()
.addLocationRequest(mLocationRequest)
.build();
LocationServices.SettingsApi.checkLocationSettings(mGoogleApiClient, mLocationSettingsRequest)
.setResultCallback(new ResultCallback<LocationSettingsResult>() {
@Override
public void onResult(@NonNull LocationSettingsResult locationSettingsResult) {
final Status status = locationSettingsResult.getStatus();
switch (status.getStatusCode()) {
case LocationSettingsStatusCodes.SUCCESS:
Notifier.cancel(xContext);
if (ActivityCompat.checkSelfPermission(xContext, Manifest.permission.ACCESS_FINE_LOCATION) ==
PackageManager.PERMISSION_GRANTED)
mFusedLocationProviderApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, mLocationListener);
break;
case LocationSettingsStatusCodes.RESOLUTION_REQUIRED:
// Gps Disabled
Notifier.notify(xContext, "You've turned off location services, which has disabled Beep." +
" Turn location services on to reconnect.");
break;
}
}
});
}
}
我们遇到的问题是onservice方法正在运行但内部代码没有响应。当应用程序被杀死时,服务没有响应。在自定义操作系统Android中