나는 안드로이드 개발에 대한 새로운이야 15 초마다 같은 좌표를 가져오고 서버에 결과를 보낼 필요가 같은 사용자 상호 작용없이 백그라운드 서비스에서 GPS 위치를 얻을 필요가 어떻게 내가 이것을 얻을 수 있습니다. 그럼 내가 융합 위치 API를 syncadapter combination.It 작동, 좌표를 받고 있어요하지만 전용 안드로이드 서비스에서 해당 위치 클래스를 사용해야합니다 어떻게하면이 서비스를 실행하게 15 분 동안 좌표를 가져오고 보내려면이 필요를 달성 할 수 있습니다 서버에 대한 결과로 내 Google API 클라이언트 클래스를 게시 할 수있게되었습니다. 아래 코드를 시도해 보았습니다.백그라운드 서비스에서 융합 위치를 사용하여 GPS 업데이트 받기 전 (15 분) 동안?
그것은 syncadapter에서 작동import android.content.Context;
import android.location.Location;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.util.Log;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GooglePlayServicesUtil;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.common.api.PendingResult;
import com.google.android.gms.common.api.Status;
import com.google.android.gms.location.FusedLocationProviderApi;
import com.google.android.gms.location.LocationListener;
import com.google.android.gms.location.LocationRequest;
import com.google.android.gms.location.LocationServices;
import java.text.DateFormat;
import java.util.Date;
/**
* Created by 4264 on 14-10-2016.
*/
public class Locationlistener implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener,LocationListener {
LocationRequest mLocationRequest;
GoogleApiClient mGoogleApiClient;
Location mCurrentLocation;
String mLastUpdateTime;
private Context context;
private static final long INTERVAL = 1000 * 10;
private static final long FASTEST_INTERVAL = 1000 * 5;
public Locationlistener(Context c)
{
context=c;
//show error dialog if GoolglePlayServices not available
createLocationRequest();
mGoogleApiClient = new GoogleApiClient.Builder(context)
.addApi(LocationServices.API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
mGoogleApiClient.connect();
}
protected void createLocationRequest() {
mLocationRequest = new LocationRequest();
mLocationRequest.setInterval(INTERVAL);
mLocationRequest.setFastestInterval(FASTEST_INTERVAL);
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
}
public String lat(){
String lat=null;
if(mCurrentLocation==null){
Log.d("is null","null");
}
else {
lat=String.valueOf(mCurrentLocation.getLatitude());
}
return lat;
}
protected void startLocationUpdates() {
PendingResult<Status> pendingResult = LocationServices.FusedLocationApi.requestLocationUpdates(
mGoogleApiClient, mLocationRequest, this);
Log.d("started", "Location update started ..............: ");
}
public void updateUI() {
Log.d("updated", "UI update initiated .............");
if (null != mCurrentLocation) {
String lat = String.valueOf(mCurrentLocation.getLatitude());
String lng = String.valueOf(mCurrentLocation.getLongitude());
Log.e("latw",lat);
Log.e("Long",lng);
} else {
Log.d("", "location is null ...............");
}
}
@Override
public void onConnected(Bundle bundle) {
Log.d("connected", "onConnected - isConnected ...............: " + mGoogleApiClient.isConnected());
startLocationUpdates();
}
@Override
public void onConnectionSuspended(int i) {
}
@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
Log.d("failed", "Connection failed: " + connectionResult.toString());
}
@Override
public void onLocationChanged(Location location) {
Log.d("locationchanged", "Firing onLocationChanged..............................................");
mCurrentLocation = location;
mLastUpdateTime = DateFormat.getTimeInstance().format(new Date());
updateUI();
}
}
하지만 난 사용자가 사전에 네트워크 위치 업데이트 덕분에이를 수 있습니다 내가 어떻게이 얻을 수있는 위치는 GPS의 전원을 끌 경우 내가이 또 다른 의심을 달성 할 수있는 방법을 서비스에서이 문제를 확인해야합니다!
배치하는 예를 https://stackoverflow.com/questions/39314901/getting-latitude-and-longitude-in-30-seconds/39315097#39315097 – Saveen