How does it work - requestLocationUpdates() + LocationRequest/Listener

前端 未结 2 741
慢半拍i
慢半拍i 2020-12-16 09:13

I am new Android coder and I have problem with requesting updates for my localization.

I working with tutorials from http://developer.android.com/training/location/r

相关标签:
2条回答
  • 2020-12-16 09:50

    I use this one:

    LocationManager.requestLocationUpdates(String provider, long minTime, float minDistance, LocationListener listener)
    

    For example, using a 1s interval:

    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,1000,0,this);
    

    the time is in milliseconds, the distance is in meters.

    This automatically calls:

    public void onLocationChanged(Location location) {
        //Code here, location.getAccuracy(), location.getLongitude() etc...
    }
    

    I also had these included in the script but didnt actually use them:

    public void onStatusChanged(String provider, int status, Bundle extras) {}
    public void onProviderEnabled(String provider) {}
    public void onProviderDisabled(String provider) {}
    

    In short:

    public class GPSClass implements LocationListener {
    
        public void onLocationChanged(Location location) {
            // Called when a new location is found by the network location provider.
            Log.i("Message: ","Location changed, " + location.getAccuracy() + " , " + location.getLatitude()+ "," + location.getLongitude());
        }
    
        public void onStatusChanged(String provider, int status, Bundle extras) {}
        public void onProviderEnabled(String provider) {}
        public void onProviderDisabled(String provider) {}
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
            locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,1000,0,this);
        }
    }
    
    0 讨论(0)
  • 2020-12-16 10:11

    You are implementing LocationListener in your activity MainActivity. The call for concurrent location updates will therefor be like this:

    mLocationClient.requestLocationUpdates(mLocationRequest, this);
    

    Be sure that the LocationListener you're implementing is from the google api, that is import this:

    import com.google.android.gms.location.LocationListener;
    

    and not this:

    import android.location.LocationListener;
    

    and it should work just fine.

    It's also important that the LocationClient really is connected before you do this. I suggest you don't call it in the onCreate or onStart methods, but in onResume. It is all explained quite well in the tutorial for Google Location Api: https://developer.android.com/training/location/index.html

    0 讨论(0)
提交回复
热议问题