0

だから、私はバックグラウンドで呼び出されている JobService を持っています。ただし、現在の場所を取得して Web サービスに送信する必要があります。静的データを送信すると、Web サービスはうまく機能します。しかし、場所を取得することは問題です。場所オブジェクトは常に null です。これは私が試してきたことです。

public class GPSBackgroundJobService extends JobService implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener {

private String LOGSERVICE = "GPS";

private InspectorsLogic mInspectorsLogic;
ParsoContext mContext;

private GoogleApiClient mGoogleApiClient;

ParsoLocationListener mLocationListener;
Location mLastLocation;
Double longitude;
Double latitude;



@Override
public void onCreate() {
    super.onCreate();
    Log.i(LOGSERVICE, "onCreate");
    mContext = (ParsoContext) getApplicationContext();
    mInspectorsLogic = new InspectorsLogic(mContext);


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





@Override
public boolean onStartJob(JobParameters job) {
    Log.i(LOGSERVICE, "onStartJob called");
    mGoogleApiClient.connect();
    mLastLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);

    if (mLastLocation!=null) {
        latitude = mLastLocation.getLatitude();
        longitude =mLastLocation.getLongitude();
        sendGPSTask mSendGPSTask = new sendGPSTask();
        mSendGPSTask.execute(Double.toString(latitude), Double.toString(longitude));
    }else{
        Log.e(LOGSERVICE, "Lat and Long are null");
    }
    return false;
}

@Override
public boolean onStopJob(JobParameters job) {
    mGoogleApiClient.disconnect();
    return false;
}

@Override
public void onConnected(Bundle connectionHint) {
    mLastLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
}

@Override
public void onConnectionSuspended(int i) {

}

@Override
public void onConnectionFailed(ConnectionResult connectionResult) {

}


}
4

2 に答える 2