What is location services in android

Android — Location Based Services

Android location APIs make it easy for you to build location-aware applications, without needing to focus on the details of the underlying location technology.

This becomes possible with the help of Google Play services, which facilitates adding location awareness to your app with automated location tracking, geofencing, and activity recognition.

This tutorial shows you how to use Location Services in your APP to get the current location, get periodic location updates, look up addresses etc.

The Location Object

The Location object represents a geographic location which can consist of a latitude, longitude, time stamp, and other information such as bearing, altitude and velocity. There are following important methods which you can use with Location object to get location specific information −

float distanceTo(Location dest)

Returns the approximate distance in meters between this location and the given location.

Get the estimated accuracy of this location, in meters.

Get the altitude if available, in meters above sea level.

Get the bearing, in degrees.

Get the latitude, in degrees.

Get the longitude, in degrees.

Get the speed if it is available, in meters/second over ground.

True if this location has an accuracy.

True if this location has an altitude.

True if this location has a bearing.

True if this location has a speed.

Clears the contents of the location.

void setAccuracy(float accuracy)

Set the estimated accuracy of this location, meters.

void setAltitude(double altitude)

Set the altitude, in meters above sea level.

void setBearing(float bearing)

Set the bearing, in degrees.

void setLatitude(double latitude)

Set the latitude, in degrees.

void setLongitude(double longitude)

Set the longitude, in degrees.

void setSpeed(float speed)

Set the speed, in meters/second over ground.

Returns a string containing a concise, human-readable description of this object.

Get the Current Location

To get the current location, create a location client which is LocationClient object, connect it to Location Services using connect() method, and then call its getLastLocation() method. This method returns the most recent location in the form of Location object that contains latitude and longitude coordinates and other information as explained above. To have location based functionality in your activity, you will have to implement two interfaces −

These interfaces provide following important callback methods, which you need to implement in your activity class −

Sr.No. Method & Description
1

abstract void onConnected(Bundle connectionHint)

This callback method is called when location service is connected to the location client successfully. You will use connect() method to connect to the location client.

abstract void onDisconnected()

This callback method is called when the client is disconnected. You will use disconnect() method to disconnect from the location client.

abstract void onConnectionFailed(ConnectionResult result)

This callback method is called when there was an error connecting the client to the service.

You should create the location client in onCreate() method of your activity class, then connect it in onStart(), so that Location Services maintains the current location while your activity is fully visible. You should disconnect the client in onStop() method, so that when your app is not visible, Location Services is not maintaining the current location. This helps in saving battery power up-to a large extent.

Get the Updated Location

If you are willing to have location updates, then apart from above mentioned interfaces, you will need to implement LocationListener interface as well. This interface provide following callback method, which you need to implement in your activity class −

Sr.No. Callback Methods & Description
1

abstract void onLocationChanged(Location location)

This callback method is used for receiving notifications from the LocationClient when the location has changed.

Location Quality of Service

The LocationRequest object is used to request a quality of service (QoS) for location updates from the LocationClient. There are following useful setter methods which you can use to handle QoS. There are equivalent getter methods available which you can check in Android official documentation.

Sr.No. Callback Method & Description
1

Set the duration of this request, in milliseconds.

Set the request expiration time, in millisecond since boot.

Explicitly set the fastest interval for location updates, in milliseconds.

Set the desired interval for active location updates, in milliseconds.

Set the number of location updates.

Set the priority of the request.

Now for example, if your application wants high accuracy location it should create a location request with setPriority(int) set to PRIORITY_HIGH_ACCURACY and setInterval(long) to 5 seconds. You can also use bigger interval and/or other priorities like PRIORITY_LOW_POWER for to request «city» level accuracy or PRIORITY_BALANCED_POWER_ACCURACY for «block» level accuracy.

Activities should strongly consider removing all location request when entering the background (for example at onPause()), or at least swap the request to a larger interval and lower quality to save power consumption.

Displaying a Location Address

Once you have Location object, you can use Geocoder.getFromLocation() method to get an address for a given latitude and longitude. This method is synchronous, and may take a long time to do its work, so you should call the method from the doInBackground() method of an AsyncTask class.

The AsyncTask must be subclassed to be used and the subclass will override doInBackground(Params. ) method to perform a task in the background and onPostExecute(Result) method is invoked on the UI thread after the background computation finishes and at the time to display the result. There is one more important method available in AyncTask which is execute(Params. params), this method executes the task with the specified parameters.

Example

Following example shows you in practical how to to use Location Services in your app to get the current location and its equivalent addresses etc.

To experiment with this example, you will need actual Mobile device equipped with latest Android OS, otherwise you will have to struggle with emulator which may not work.

Create Android Application

Sr.No. Method & Description
1
Step Description
1 You will use Android studio IDE to create an Android application and name it as Tutorialspoint under a package com.example.tutorialspoint7.myapplication.
2 add src/GPSTracker.java file and add required code.
3 Modify src/MainActivity.java file and add required code as shown below to take care of getting current location and its equivalent address.
4 Modify layout XML file res/layout/activity_main.xml to add all GUI components which include three buttons and two text views to show location/address.
5 Modify res/values/strings.xml to define required constant values
6 Modify AndroidManifest.xml as shown below
7 Run the application to launch Android emulator and verify the result of the changes done in the application.

Following is the content of the modified main activity file MainActivity.java.

Following is the content of the modified main activity file GPSTracker.java.

Following will be the content of res/layout/activity_main.xml file −

Following will be the content of res/values/strings.xml to define two new constants −

Following is the default content of AndroidManifest.xml

Let’s try to run your Tutorialspoint application. I assume that, you have connected your actual Android Mobile device with your computer. To run the app from Android Studio, open one of your project’s activity files and click Run icon from the toolbar. Before starting your application, Android studio installer will display following window to select an option where you want to run your Android application.

Now to see location select Get Location Button which will display location information as follows −

Источник

Как отключить Location Services Android

Location Services Android что это — предустановленный в смартфон сервис, который определяет местоположение пользователя и передает его другим приложениям (навигаторам, социальных сетям, играм). При сбое в работе сервиса или другого приложения, появляется соответствующая ошибка.

Как исправить

Из вариантов, как отключить Google Location Services :

  • отключите GPS/ГЛОНАСС;
  • ограничьте приложениям доступ к геолокации;
  • проверьте смартфон/планшет на наличие вирусов.

Существует специальное ПО, которое с помощью Root-прав запрещает софту пользоваться ГПС.

Перезапуск GPS

Базовый способ избавиться от ошибки :

  1. Откройте шторку быстрого доступа. Выключите «Геоданные» — ошибка должна пропасть.
  2. «Перезагрузите» смартфон, выбрав соответствующее действие после 1-3 секундного удержания клавиши питания.
  3. После запуска девайса, снова включите определение местоположения.

Перезагружайте смартфон 1 раз в 1-2 дня. Это позволяет избавиться от мелких ошибок, накопившихся за время работы ОС.

Принудительная остановка

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

    Перейдите в «Настройки». В открывшемся списке выберите «Приложения», следом зайдите во «Все приложения».

Запрет использовать GPS

За появление ошибки, также отвечают приложения, которые пытаются получить доступ к GPS, но не могут этого сделать из-за ошибки в работе сервиса или самого ПО. В таком случае :

  1. Через «Настройки» попадите в «Приложения». Оттуда переместитесь в «Разрешения».

Существуют приложения под названием App Ops и/или имеющим дополнение Permission manager. Они выполняют аналогичную функцию и запрещают софту получать доступ к геолокации на системном уровне, для чего используют Root-права или отладочный ADB-мост. Пользоваться ими не рекомендуется, поскольку:

  • вместо реальной пользы, софт может выступить как сервис, набитый рекламой, включая демонстрацию той на рабочем столе;
  • после установки, часть ПО принимает вид системного и его невозможно удалить без другого специального софта, вроде Titanium Backup.

Перед установкой App Ops обратите внимание на рейтинг и отзывы других юзеров.

Проверка на вирусы

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

  1. Запустите софт под названием «Безопасность», «Очистка» или подобное. В перечне функций выберите «Поиск вирусов».
  2. Дождитесь отчета о проверке, если понадобится, поместите обнаруженные файлы в карантин.

В качестве аналога встроенного решения, выступают Malwarebytes, Kasperskiy Internet Security, Avira.

Ошибка, связанная с Локейшен Сервис на Андроид, является причиной неудачной попытки одного из приложений получить доступ к геолокации смартфона. В редких случаях, когда вышеописанные способы не помогают, есть смысл сбросить настройки до заводского состояния.

Источник

Читайте также:  Самсунг галакси а50 это андроид или смартфон
Оцените статью