Android - GPS status listener

0

Witam,

W mojej mojej aplikacji chce, aby przy wyłączeniu GPS w telefonie przestała pokazywać się aktualna pozycja na mapie, kod który zamieszczam poniżej działa jedynie jak wyłączymy GPS z poziomu ustawień natomiast jeżeli wyłączam GPS z poziomu paska powiadomień to nie wykrywa zmiany statusu. Macie może jakiś pomysł jak rozwiązać ten problem?

        LocationManager mng = (LocationManager) getSystemService(LOCATION_SERVICE);
        mng.addGpsStatusListener(new GpsStatus.Listener() {
            @Override
            public void onGpsStatusChanged(int event) {
                switch (event) {
                    case 1:
                        if (ActivityCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
                            mMap.setMyLocationEnabled(true);
                        }
                        break;
                    case 2:
                        if (ActivityCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
                            mMap.setMyLocationEnabled(false);
                        }

                        break;
                }
            }
        }); 
0

Gdyby ktoś kiedyś potrzebował, to zamieszczam tutaj moje rozwiązanie

LocationManager mng = (LocationManager) getSystemService(LOCATION_SERVICE);
LocationListener locationListener = new LocationListener() {
            @Override
            public void onLocationChanged(Location location) {

            }

            @Override
            public void onStatusChanged(String provider, int status, Bundle extras) {

            }

            @Override
            public void onProviderEnabled(String provider) {
                if(LocationManager.GPS_PROVIDER.equals(provider)) {
                    if (ActivityCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
                        mMap.setMyLocationEnabled(true);
                    }
                }
            }

            @Override
            public void onProviderDisabled(String provider) {
                if(LocationManager.GPS_PROVIDER.equals(provider)) {
                    if (ActivityCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
                        mMap.setMyLocationEnabled(false);
                    }
                }
            }
 

1 użytkowników online, w tym zalogowanych: 0, gości: 1