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

Я новичок в Android, но мой текущий проект требует работы с отслеживанием GPS.Я искал в Интернете, чтобы найти ответы, и некоторые темы смутили меня.Подскажите, пожалуйста, я не уверен, что понимаю:

  • Где нам нужно использовать грубое и когда хорошо?
  • в чем основная разница между NETWORK_PROVIDER и GPS_PROVIDER?

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

Из документации :

Если вы используете NETWORK_PROVIDER и GPS_PROVIDER, вам нужно запросить только разрешение ACCESS_FINE_LOCATION, поскольку оно включаетразрешение для обоих провайдеров.Разрешение на ACCESS_COARSE_LOCATION разрешает доступ только к NETWORK_PROVIDER.

Короче говоря, разница заключается в уровне детализации местоположения, которое вы получаете.

Сетевой провайдер определяет местоположение пользователей, используя вышки сотовой связи, точки доступа Wi-Fi и т. Д. В случае вышек сотовой связи учитывается расстояние между вышками и положение пользователя.Этот поставщик местоположения предлагает более быстрый ответ, но может быть нечетким.

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

Примечание : есть также PASSIVE_PROVIDER, который не запрашивает местоположение активно, но способен подслушивать по запросам другого приложения, т.е. он получает информацию о местоположении, когда другие приложения запрашивают его.

0 голосов
/ 23 октября 2018

Поставщик слияния местоположений предоставляет технологию местоположения и обеспечивает вам наилучшее местоположение. Это api дает пользователю доступ к лучшему местоположению без использования большого количества энергииустройство.

Добавьте в свой манифест

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

В активность код

private FusedLocationProviderClient flpClient;
flpClient = LocationServices.getFusedLocationProviderClient(this);

, чтобы получить последнийизвестное местоположение

flpClient.getLastLocation()
        .addOnSuccessListener(this, new OnSuccessListener<Location>() {
            @Override
            public void onSuccess(Location location) {
                if (location != null) {
                    // Logic to handle location object
                }
            }
        });

Посмотрите на API для дальнейшего объяснения https://developer.android.com/training/location/

...