Android - не удалось получить координаты местоположения - PullRequest
0 голосов
/ 16 мая 2018

Это мой код для получения координат GPS.

    if (Build.VERSION.SDK_INT >= 23) {
                getPermissions();
            } else
                doGPS();
private void getPermissions() {
        int PERMISSION_ALL = 1;
        String[] PERMISSIONS = {Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION};

        if (!hasPermissions(this, PERMISSIONS)) {
            ActivityCompat.requestPermissions(this, PERMISSIONS, PERMISSION_ALL);
        } else
            doGPS();
    }

    public static boolean hasPermissions(Context context, String... permissions) {
        if (context != null && permissions != null) {
            for (String permission : permissions) {
                if (ActivityCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) {
                    return false;
                }
            }
        }
        return true;
    }

    @Override
    public void onRequestPermissionsResult(int permsRequestCode, String[] permissions, int[] grantResults) {
        if (permsRequestCode == 1 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            getPermissions();
        }
    }
public void doGPS() {

        try {
            mlocManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

                mlocListener = new LocationListener() {
                    @Override
                    public void onLocationChanged(Location location) {
                        getCordinate(location.getLatitude(),location.getLongitude());
                    }

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

                    }

                    @Override
                    public void onProviderEnabled(String provider) {

                    }

                    @Override
                    public void onProviderDisabled(String provider) {

                    }
                };
                mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mlocListener);
            }
    }

Сначала он проверяет разрешение, а когда предоставляет, звонит по телефону getGps

У меня есть этот код в моем манифесте:

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

Требуется всегда вызывать метод getCordinate, он вообще не доходит до onLocationChanged.

Я проверил другие приложения, такие как карта Google, и он правильно получил координаты.

что с ним не так?

обновление 1: что-то странное, когда я нахожусь в месте без движения, это не работает, но когда я начинаю двигаться, это работает, как я могу заставить его получить координату, пока я не двигаюсь?

...