Получение местоположения занимает много времени в приложении для Android - PullRequest
0 голосов
/ 12 ноября 2018

Я какое-то время разрабатывал приложение для Android, которое использовалось для доступа к текущему местоположению пользователя и другим вещам. Но в то же время широта и долгота возвращают 0.0 & 0.0, а затем через некоторое время отображаются некоторые значения. Я также использовал FusedLocationAPI (в настоящее время не рекомендуется) и FusedLocationProviderClient API, но также получил тот же результат. Я использовал LocationManager, но никаких улучшений вообще не было. Я приложил текущий код внизу. Может ли кто-нибудь показать мне лучший способ доступа к информации о местоположении? Заранее спасибо:)

private void Locate() {
    locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
            != PackageManager.PERMISSION_GRANTED &&
            ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION)
                    != PackageManager.PERMISSION_GRANTED) {

        String[] permits = {
                Manifest.permission.ACCESS_FINE_LOCATION,
                Manifest.permission.ACCESS_COARSE_LOCATION};

        if (!PermissionsAs(this, permits)) {
            ActivityCompat.requestPermissions(this, permits, REQ_CODE);
        }
        return;
    } else if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
            == PackageManager.PERMISSION_GRANTED &&
            ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION)
                    == PackageManager.PERMISSION_GRANTED) {
        Location location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
        if (location != null) {
            double lattitude = location.getLatitude();
            double longitude = location.getLongitude();

            String string = getCompleteAddressString(lattitude, longitude);

            System.out.println(string);

            System.out.println("Longitude: " + String.valueOf(lattitude) + " Lattitude: " + String.valueOf(lattitude) + "\n");
            Toast.makeText(getApplicationContext(), "" + longitude + " " + lattitude, Toast.LENGTH_LONG).show();
            sendText(lattitude, longitude);
        }
    }
}

1 Ответ

0 голосов
/ 13 ноября 2018

Вы можете использовать эту библиотеку, она автоматически обрабатывает провайдеров местоположения и дает вам наилучшее из возможных местоположений, я также использую ее в своем приложении, и она работает хорошо. Библиотека поставщиков местоположения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...