Почему вылетает activity при вызове registerGnssStatusCallback
Мне нужно получить ГНСС данные от спутников.
Activity, которое визуализирует измерения, при переходе на него вылетает на предыдущее.
Когда убираю строчку locationManager.registerGnssStatusCallback(gnssStatusCallback);, не вылетает, но никакие измерения не происходят.
Разрешения предоставлены, и в манифесте, и в самом коде activity есть запрос разрешения.
private void startGNSS() {
if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
gnssStatusCallback = new GnssStatus.Callback() {
@Override
public void onSatelliteStatusChanged(GnssStatus status) {
runOnUiThread(() -> {
super.onSatelliteStatusChanged(status);
totalSatellitesTextView.setText(status.getSatelliteCount());
int gnssSatellites = 0, gpsSatellites = 0, galileoSatellites = 0, beidouSatellites = 0;
for (int i = 0; i < status.getSatelliteCount(); i++) {
if (status.getConstellationType(i) == GnssStatus.CONSTELLATION_GLONASS) {
gnssSatellites++;
} else if (status.getConstellationType(i) == GnssStatus.CONSTELLATION_GPS) {
gpsSatellites++;
} else if (status.getConstellationType(i) == GnssStatus.CONSTELLATION_GALILEO) {
galileoSatellites++;
} else if (status.getConstellationType(i) == GnssStatus.CONSTELLATION_BEIDOU) {
beidouSatellites++;
}
}
glonassTextView.setText(gnssSatellites);
gpsTextView.setText(gpsSatellites);
galileoTextView.setText(galileoSatellites);
beidouTextView.setText(beidouSatellites);
signalTextView.setText(getSignalValue());
pseudorangeTextView.setText(getPseudorangeValue());
});
}
};
if (locationManager != null) {
locationManager.registerGnssStatusCallback(gnssStatusCallback);
}}}