Android studio геолокация kotlin

Получить местоположение Android Kotlin

Я недавно добавил функцию определения местоположения. Когда я пытаюсь показать долготу и широту, он возвращает ноль.

Это мой класс LocationListener:

И это моя функция GetUserLocation:

И это моя функция, чтобы вернуть мою долготу и широту:

6 ответов

Когда GetUserLocation возвращается, locationManager выходит из области видимости и, по-видимому, уничтожается, препятствуя вызову onLocationChanged и предоставляя обновления.

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

Вы не показали, где и как объявляется внешний mylocation (за пределами GetUserLocation ), но как бы он ни объявлялся, он скрывается тем, что внутри GetUserLocation . Так что вы не получаете много.

Вот пример того, как вы можете это сделать. (Переменная thetext определена в макете XML и доступна с помощью расширений Kotlin.)

Я прочитал много ответов, но вопрос — получить только последнее известное местоположение. С приемником он постоянно отправляет широту и долготу, у меня есть решение для этого в kotlin .. Дайте разрешения

В 2019 году лучшее официальное решение в Котлине

Google API Client / FusedLocationApi устарели, а Location Manager вообще бесполезен. Поэтому Google предпочитает объединенный провайдер определения местоположения, используя API определения местоположения сервисов Google Play «FusedLocationProviderClient» используется для определения местоположения и его лучшего способа экономии заряда аккумулятора и точности

Вот пример кода в kotlin для получения последнего известного местоположения / одноразового местоположения (эквивалент текущего местоположения)

Если ваше приложение может постоянно отслеживать местоположение, вы должны получать обновления получения местоположения .

Проверьте образец для этого в kotlin

Убедитесь, что вы позаботились о разрешении Mainfaist и разрешении времени выполнения для местоположения

И для Gradle добавить это

Для более подробной информации следуйте этим официальным документам

Получить местоположение с адресом в Android Kotlin

Добавьте эту строку в зависимости

Добавьте это в AndroidManifest

Скопируйте этот код ниже в свой класс

Запустите свой код и проверьте журнал, Happy Coding

Я знаю, что уже поздно, но теперь Google упростил использование. На сайте разработчика написано, что вам нужно создать клиента:

Тогда на создание получим провайдера:

И, наконец, чтобы узнать ваше последнее местоположение, просто позвоните:

* Протестировано с этой реализацией для определения местоположения (настройка в файле приложения вашего приложения)

Для получения дополнительной информации, проверьте эту ссылку:

Я хотел бы помочь кому-то, кто пытается получить местоположение с нуля. Вот ссылка: Получить текущее местоположение Kotlin

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

Источник

Current Location Android Kotlin With Latitude Longitude Programmatically

It is necessary to find C urrent Location Android Kotlin latitude longitude programmatically when you are developing location-based applications.

For example, when finding restaurants near by you, you need your current location, latitude and longitude.

In C urrent Location Android Kotlin example tutorial, you will learn to get current latitude and longitude of Android device.

We will use Google’s FusedLocationAPI for getting current location latitude longitude.

Following is the output of C urrent Location Android Kotlin example tutorial programmatically:

Download Source Code For Current Location Android Kotlin Example

Step 1. New Project

Create a new project in Android Studio. Select your first activity as empty activity.

Step 2. Updating build.gradle(Module:app)

In build.gradle(Module:app) file add this:

Above lines will add necessary classes for integrating various google services like GPS, push notification , google map etc.

Step 3. Interfaces

Implement required interfaces

Step 4. Required instances

Step 5. Updating onCreate()

Put following in onCreate() function:

Step 6. Overriding methods

Override necessary methods.

Читайте также:  Стал сильно тупить андроид

Step 7. Adding permissions

Last but not least, put required permissions in AndroidManifest.xml:

If you are targeting marshmallow and after versions (targetSdkVersion >=23) then you have to check for run-time permissions.

Now full source code:

AndroidManifest.xml

build.gradle(Module:app)

Step 7. Full Source code for MainActivity.

activity_main.xml

MainActivity.kt

In above class, there is a method

This method is used to check whether location service is on or off in your phone. If off, then it will pop up one dialog, which will take the user to settings to enable location service.

After following all the steps, you should be able get current location in terms of latitude and longitude with kotlin source code.

Источник

Getting Current Location in Android using Kotlin

Getting Current Location in Android using Kotlin 2

So in this tutorial, we’ll be learning about getting the user’s current location in Android using kotlin (latitude & longitude).

We will be using Fused Location Provider.

The fused location provider retrieves the device’s last known location. The fused location provider is one of the location APIs in Google Play services.

It manages the underlying location technology and provides a simple API so that you can specify requirements at a high level, like high accuracy or low power.

STEP – 1

Add dependency in build.gradle file of you app.

STEP – 2

Ask for Location permission from User. Since Location is a dangerous Permission for android so we need to ask the user to grant permission for it.

Android offers two location permissions:

  1. ACCESS_COARSE_LOCATION
  2. ACCESS_FINE_LOCATION.

The permission you choose determines the accuracy of the location returned by the API.

Add these two permission in you manifest file.

STEP – 3

As you may know that from Android 6.0 (Marshmallow) you must request permissions for important access in the runtime. Cause it’s a security issue where while installing an application, the user may not clearly understand about important permission of their device.

As we need the location information of the user so we’ll need to implement the permission request also in runtime.

These will be in further Steps

PART – 1

checkPermissions()

This method will tell us whether or not the user grant us to access ACCESS_COARSE_LOCATION and ACCESS_FINE_LOCATION.

PART – 2

onRequestPermissionsResult()

This method is called when a user Allow or Deny our requested permissions. So it will help us to move forward if the permissions are granted.

PART – 3

isLocationEnabled()

This will check if the user has turned on location from the setting, Cause user may grant the app to user location but if the location setting is off then it’ll be of no use.

You may notice that while requesting for permission and in after the permission result, we used PERMISSION_ID, it’s a interger value which helps us to identify user’s action with which permission request. You can provide any unique value here.

STEP – 4

Now time to write the MainActivity.kt

STEP – 6

Now we’ll use the actual Fused Location Provider API to get the user’s current position. For this, you should declare a variable first lateint var using mFusedLocationClient: FusedLocationClient

Then we’ll create a method named getLastLocation() which will use to API and return the last recorder location information of the device. Also this method will check first if our permission is granted or not and if the location setting is turned on.

As you can see first it’ll check if we have granted permissions or not using our created method checkPermission() and if not, it’ll request for location permission. Then it’ll check if the location setting is turned on or off. If turned off, will open the location setting using intent to turn it on.

If every requirment is good then it’ll look for the last recorded location information and put the latitude and longitude values in our TextView using

STEP – 7

STEP – 8 (optional)

But here’s a thing you must know, for some rare cases the location can be null like:

  • In some device, if you turn off the location and again turn on, the previous recorded location information will be cleared.
  • May the user never turned on location before using your App, this time previous location information will be null too.

To avoid these rare cases when the location == null, we called a new method requestNewLocation() which will record the location information in runtime.

Читайте также:  Прошивка для андроид mtk6582

This method will make a new location request with highest accuracy.

When an update receives it’ll call a callBack method named mLocationCallback.

So when we get the location update, we set the latitude and longitude values in our TextViews.

So finally we’ll call our getLastLocation() method in our onCreate() method and also when user grants the permission request.

Источник

Выбор текущего местоположения и просмотр подробных сведений на карте

В этом руководстве рассказывается, как определить текущее местоположение устройства Android и показать сведения об организации или другом объекте, который там находится. Следуйте руководству по созданию приложения для Android с помощью Maps SDK for Android, Places SDK for Android и поставщика геоданных из нескольких источников в Location API сервисов Google Play.

Как получить код

Версия на языке Java:

Версия на языке Kotlin:

Как настроить проект

Чтобы создать проект в Android Studio, выполните следующие действия:

Импортируйте обучающий проект:

  • В Android Studio выберите Файл > Создать > Импортировать проект.
  • Перейдите в каталог, где вы сохранили репозиторий с примерами Google Maps Android API версии 2 после его скачивания.
  • Найдите проект CurrentPlaceDetailsOnMap. Он расположен в следующем каталоге:
    PATH-TO-SAVED-REPO/android-samples/tutorials/java/CurrentPlaceDetailsOnMap (Java)
    PATH-TO-SAVED-REPO/android-samples/tutorials/kotlin/CurrentPlaceDetailsOnMap (Kotlin)
  • Выберите каталог проекта и нажмите ОК. Теперь Android Studio создаст ваш проект с использованием инструмента сборки Gradle.

Как получить ключ API и активировать нужные API

Для выполнения этого учебного проекта вам понадобится ключ Google API, который авторизован для работы с Maps SDK for Android и Places SDK for Android.

Нажмите кнопку ниже, чтобы получить ключ и активировать API.

Более подробную информацию можно найти в полном руководстве по получению ключа API.

Как добавить ключ API в свое приложение

    Откройте файл local.properties проекта.

Добавьте приведенную ниже строку и укажите вместо YOUR_API_KEY ваш ключ API.

Плагин Secrets Gradle Plugin для Android копирует ключ API во время сборки приложения и делает его доступным в виде переменной сборки в манифесте Android.

Как создать сборку и запустить приложение

  1. Подключите устройство Android к компьютеру. Выполните инструкции по активации параметров для разработчиков на устройстве Android и настройте ваше приложение и систему для обнаружения этого устройства. Для настройки виртуального устройства вы также можете использовать Менеджер виртуального устройства Android (AVD). Выбирая эмулятор, убедитесь, что вы используете образ, который содержит интерфейсы Google API. Подробную информацию можно найти в руководстве по началу работы.
  2. В Android Studio выберите пункт меню Запустить или нажмите на значок воспроизведения, чтобы запустить свое приложение. В открывшемся окне выберите устройство.

Android Studio запустит Gradle для сборки приложения, а затем отобразит результаты на устройстве или в эмуляторе. Вы должны увидеть карту с набором маркеров, в центре которой будет ваше актуальное местоположение, как показано на иллюстрации на этой странице.

  • Если карта не отображается, проверьте, получен ли ключ API и добавлен ли он в приложение как описано выше. Проверьте журнал Android Monitor в Android Studio на наличие сообщений об ошибках, касающихся ключа API.
  • Если на карте отображается только один маркер, установленный на Сиднейском мосту (местоположение по умолчанию, указанное в приложении), проверьте, предоставили ли вы приложению доступ к данным о местоположении. Приложение запрашивает доступ в процессе запуска, используя шаблон, который приводится в руководстве с описанием разрешений Android. Обратите внимание, что разрешения можно также предоставить непосредственно на устройстве, выбрав Настройки > Приложения >название приложения > Разрешения > Местоположение. Подробную информацию о том, как указывать разрешения в коде, вы найдете ниже, в руководстве по запросу доступа к данным о местоположении.
  • Используйте средства отладки Android Studio чтобы просмотреть журналы и выполнить отладку приложения.

Понимание кода

В этой части руководства описаны наиболее важные компоненты приложения CurrentPlaceDetailsOnMap, чтобы вы могли понять принципы создания подобного приложения.

Создание клиента Places API

Ниже указаны объекты, которые являются основными точками входа в Places SDK на платформе Android:

  • Класс Places создает клиентов для Places SDK на платформе Android и управляет ими.
  • Интерфейс PlaceDetectionClient устанавливает текущее местоположение устройства и мест рядом.

Интерфейс LocationServices – главная точка входа для сервисов геолокации на платформе Android.

Чтобы использовать API, выполните следующие действия в рамках метода onCreate() вашего фрагмента или действия:

  1. Инициализируйте объект Places .
  2. Создайте объект PlaceDetectionClient .
  3. Создайте объект FusedLocationProviderClient .

Kotlin

Запрос доступа к данным о местоположении

Чтобы в вашем приложении работали функции геолокации (в том числе кнопка Мое местоположение на карте), необходимо получить от пользователя разрешение на доступ к данным о местоположении.

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

Читайте также:  Формат dat чем открыть андроид

Добавьте следующее разрешение в качестве дочернего для элемента в вашем манифесте Android:

Запросите разрешения при запуске приложения, чтобы пользователь мог принять или отклонить запрос доступа к данным о местоположении. Следующий код позволяет проверить, предоставил ли пользователь доступ к данным о точном местоположении. Если разрешение отсутствует, оно будет запрошено у пользователя.

Kotlin

Переопределите обратный вызов метода onRequestPermissionsResult() , чтобы обработать результат запроса доступа:

Kotlin

Метод updateLocationUI() мы рассмотрим ниже.

Добавление карты

Отобразите карту, используя Maps SDK для Android.

Добавьте элемент в файл макета для объекта activity, activity_maps.xml . Этот элемент указывает, что фрагмент SupportMapFragment должен выступать в роли контейнера для карты и предоставить доступ к объекту GoogleMap . В учебном проекте используется версия вспомогательной библиотеки Android для фрагмента карты, чтобы обеспечить обратную совместимость с более ранними версиями фреймворка Android.

В методе onCreate() своего объекта activity установите файл макета как представление контента.

Kotlin

Реализуйте интерфейс OnMapReadyCallback и переопределите метод onMapReady() , чтобы настроить карту, когда объект GoogleMap будет доступен:

Kotlin

В методе onCreate() своего объекта activity получите дескриптор для фрагмента карты путем вызова метода FragmentManager.findFragmentById() . Затем используйте метод getMapAsync() , чтобы зарегистрировать обратный вызов карты:

Kotlin

Разместите в коде метод updateLocationUI() , чтобы добавить на карту элементы управления. Если пользователь предоставил разрешение на использование данных о местоположении, активируйте слой «Мое местоположение» и соответствующий элемент управления на карте. В противном случае отключите их и установите для текущего местоположения значение null:

Kotlin

Как получить информацию о местоположении устройства Android и позиции карты

Обратитесь к поставщику геоданных из нескольких источников, чтобы определить последнее известное местоположение устройства. Затем используйте эти данные для позиционирования карты. В этом руководстве есть код, который вам понадобится. Дополнительную информацию о том, как определить местоположение устройства, можно найти в руководстве по работе с поставщиком геоданных из нескольких источников для Location API сервисов Google Play.

Kotlin

Как получить данные о текущем местоположении

Получить список мест, где с вероятностью может находиться устройство, можно с помощью Places SDK for Android. Место в данном случае – это компания или другой объект для посещения.

Выполните приведенные ниже инструкции, чтобы настроить показ места, когда пользователь нажимает кнопку Узнать место. Пользователь увидит список подходящих мест и сможет сделать выбор, а затем добавить на карту маркер, чтобы указать местоположение выбранного места. В этом руководстве вы найдете код для взаимодействия с Places SDK for Android. Дополнительную информацию можно найти в руководстве по получению информации о текущем месте.

  1. Создайте файл макета ( current_place_menu.xml ) для меню параметров и переопределите метод onCreateOptionsMenu() , чтобы настроить это меню. Ознакомьтесь с кодом в примере приложения.
  2. Переопределите метод onOptionsItemSelected() , чтобы получать актуальную информацию о месте, когда пользователь нажимает Узнать место:

Kotlin

Создайте метод showCurrentPlace() , чтобы получить список мест, где может находиться устройство:

Kotlin

Создайте метод openPlacesDialog() , чтобы показать форму, в которой пользователь может выбрать место из списка. Добавьте на карту маркер для выбранного места. Маркер должен содержать сведения о названии и адресе места, а также другие атрибуты, которые предоставляет API:

Kotlin

Создайте собственный макет для контента информационного окна. Это позволяет показывать в окне несколько строк. Сначала добавьте файл макета XML ( custom_info_contents.xml ), который содержит текстовое представление для заголовка информационного окна, и еще одно текстовое представление для фрагмента (иными словами, текстовый контент информационного окна).

Реализуйте интерфейс InfoWindowAdapter , чтобы развернуть макет и загрузить контент информационного окна:

Kotlin

Сохранение состояния карты

Сохраните информацию о положении камеры и местоположении устройства. Когда пользователь поворачивает устройство Android или изменяет параметры конфигурации, фреймворк Android останавливает и заново запускает объект activity для карты. Чтобы обеспечить удобство для пользователя, сохраните соответствующее состояние приложения и восстановите его при необходимости.

Это руководство содержит весь код, который необходим для сохранения состояния карты. Дополнительную информацию вы можете найти в руководстве по использованию пакета savedInstanceState .

В операции, работающей с картой, настройте основные значения для сохранения состояния объекта activity:

Kotlin

Реализуйте обратный вызов onSaveInstanceState() , чтобы сохранить состояние, когда операция будет приостановлена:

Kotlin

В методе onCreate() своей операции получите информацию о местоположении устройства и положении камеры карты, если это было ранее сохранено:

Kotlin

Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Источник

Оцените статью