Overview (request location updates to receive them):
Without explicitly asking for location updates, your device may not be seeking this information. The following worked for me where member mGnssStatusCallback
is your GnssStatus.Callback and the Activity (or some other class) implements LocationListener; here this activity implements it and I pass this
as the final parameter to requestLocationUpdates
and removeUpdates
. The 30000
indicates that we're requesting updates every 30 seconds (30000 milliseconds), with 0
indicating that we only want an update if the device has moved > 0 meters.
You probably need to figure out what providers are available, etc.
see Android Training.
Example
public class GnssActivity extends Activity implements LocationListener {
GnssStatus.Callback mGnssStatusCallback;
LocationManager mLocationManager;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mLocationManager =
(LocationManager) getSystemService(LOCATION_SERVICE);
mGnssStatusCallback = new GnssStatus.Callback() {
// TODO: add your code here!
};
}
@Override
protected void onStart() {
super.onStart();
mLocationManager.registerGnssStatusCallback(mGnssStatusCallback);
mLocationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER, 30000, 0, this
);
}
@Override
protected void onStop() {
mLocationManager.removeUpdates(this);
mLocationManager.unregisterGnssStatusCallback(
mGnssStatusCallback
);
super.onStop()
}
@Override
public void onLocationChanged(Location location) {
}
@Override
public void onStatusChanged(String provider, int status,
Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
⋮
}