>如何使用新的
FusedLocation检索当前位置
来自IntentService的API?
>我如何确保IntentService将收到所有
来自FusedLocation API的回调?
即
如何同步获取位置对象?
来自IntentService的API?
>我如何确保IntentService将收到所有
来自FusedLocation API的回调?
即
如何同步获取位置对象?
解决方法
这可能对你有所帮助
import java.util.ArrayList; import java.util.List; import org.apache.http.NameValuePair; import org.apache.http.message.BasicNameValuePair; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import android.app.AlertDialog; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.app.Service; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.location.Criteria; import android.location.Location; import android.location.LocationManager; import android.os.Bundle; import android.os.Handler; import android.os.IBinder; import android.util.Log; import android.widget.Toast; import com.example.driverapplication.CommonUtilities; import com.example.driverapplication.R; import com.example.driverapplication.ServiceHandler; import com.example.driverapplication.utilities.ConnectionDetector; import com.google.android.gms.common.ConnectionResult; import com.google.android.gms.common.api.GoogleApiClient; import com.google.android.gms.location.LocationRequest; import com.google.android.gms.location.LocationServices; public class LocationUpdate extends Service implements GoogleApiClient.ConnectionCallbacks,GoogleApiClient.OnConnectionFailedListener { private static final String TAG = "DRIVER"; private LocationManager mLocationManager = null; private static final int LOCATION_INTERVAL = 30000; private static final float LOCATION_DISTANCE = 0; private double currentLat,currentLng; private SharedPreferences pref; private String driverId; private GoogleApiClient mGoogleApiClient; // A request to connect to Location Services private LocationRequest mLocationRequest; private LocationListener locationListener; private class LocationListener implements com.google.android.gms.location.LocationListener { public LocationListener() { } @Override public void onLocationChanged(Location location) { Log.e(TAG,"onLocationChanged: " + location); currentLat = location.getLatitude(); currentLng = location.getLongitude(); } } @Override public IBinder onBind(Intent arg0) { return null; } @Override public int onStartCommand(Intent intent,int flags,int startId) { Log.e(TAG,"onStartCommand"); super.onStartCommand(intent,flags,startId); boolean stopService = false; if (intent != null) stopService = intent.getBooleanExtra("stopservice",false); System.out.println("stopservice " + stopService); locationListener = new LocationListener(); if (stopService) stopLocationUpdates(); else { if (!mGoogleApiClient.isConnected()) mGoogleApiClient.connect(); } return START_STICKY; } @Override public void onCreate() { Log.e(TAG,"onCreate"); pref = getSharedPreferences("driver_app",MODE_PRIVATE); driverId = pref.getString("driver_id",""); mGoogleApiClient = new GoogleApiClient.Builder(this) .addApi(LocationServices.API).addConnectionCallbacks(this) .addOnConnectionFailedListener(this).build(); } @Override public void onDestroy() { Log.e(TAG,"onDestroy"); super.onDestroy(); } public void stopLocationUpdates() { LocationServices.FusedLocationApi.removeLocationUpdates( mGoogleApiClient,locationListener); if (mGoogleApiClient.isConnected()) mGoogleApiClient.disconnect(); } @Override public void onConnectionFailed(ConnectionResult arg0) { // TODO Auto-generated method stub } @Override public void onConnected(Bundle arg0) { // TODO Auto-generated method stub mLocationRequest = LocationRequest.create(); mLocationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY); mLocationRequest.setInterval(35000); mLocationRequest.setFastestInterval(30000); startLocationUpates(); } private void startLocationUpates() { LocationServices.FusedLocationApi.requestLocationUpdates( mGoogleApiClient,mLocationRequest,locationListener); } @Override public void onConnectionSuspended(int arg0) { // TODO Auto-generated method stub } }