Почему вылетает 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);
            }}}

Ответы (0 шт):