Цель лабораторной работы:
разработка приложения, демонстрирующего геолокационные возможности.
Задачи лабораторной работы:
В данной работе рассмотрим процесс создания приложения.
Создадим приложение.
Далее будем править java файл, определяющий класс активности приложения. Внесем в этот класс следующие дополнения:
LocationManager, поэтому в методе onCreate() запишем следующую конструкцию:
LocationManager mlocManager =
(LocationManager) getSystemService(Context.LOCATION_SERVICE);
экземпляр класса LocationManager, как и большинство системных сервисов, создается с помощью вызова метода getSystemService().
requestLocationUpdates() класса LocationManager:
mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
0, 0, mlocListener);
первый параметр метода указывает способ получения координат, для этого используются константы класса LocationManager:
GPS_PROVIDER |
- сообщает, что координаты определяются с помощью GPS; |
NETWORK_ PROVIDER |
- сообщает, что координаты определяются с использованием сигналов сотовых вышек и WiFi. |
В случае, когда необходимо получать координаты и с GPS, и от сотовых вышек необходимо вызвать метод requestLocationUpdates() дважды: один раз первый параметр должен быть равен GPS_PROVIDER, второй раз - NETWORK_ PROVIDER.
Последний параметр указывает на слушателя, который получает вызовы при обновлениях координат. В нашем случае слушателем является переменная mlocListener - реализация интерфейса LocationListener.
mlocListener:
LocationListener mlocListener = new LocationListener(){
public void onLocationChanged(Location location) {
tvLat.append(" "+location.getLatitude());
tvLon.append(" "+location.getLongitude());
}
public void onStatusChanged(String provider, int status,
Bundle extras) {}
public void onProviderEnabled(String provider) {}
public void onProviderDisabled(String provider) {}
};
Переменная mlocListener инициализируется реализацией интерфейса LocationListener. Этот интерфейс содержит 4 метода, каждый из которых должен быть определен в реализации интерфейса. Нас интересует метод onLocationChanged(), который вызывается каждый раз при изменении показаний GPS датчика, в этом методе всего лишь выполняется вывод полученных координат в информационные поля.
NETWORK_PROVIDER) или с GPS датчика (GPS_PROVIDER), необходимо в файле манифеста добавить строку:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
(для работы с сигналами сотовых вышек) или
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
(для работы GPS датчиком).
Без этих полномочий приложение "сломается" во время выполнения, когда попробует запросить обновление координат. Если в приложении в качестве источника координат используются и NETWORK_PROVIDER, и GPS_PROVIDER, в манифесте достаточно запросить только полномочия на ACESS_FINE_LOCATION. Тогда как ACCESS_COARSE_LOCATION позволяет работать только с NETWORK_PROVIDER.
В листинге 13.1 представлен код приложения, позволяющего получать координаты устройства и отслеживать их изменения, используя GPS приемник.
После создания приложения, разумеется, необходимо протестировать его работу. Проще всего это сделать, используя реальное устройство под управлением Android, но если устройства под рукой нет, можно использовать виртуальное устройство. Однако при этом необходимо решить вопрос, каким образом имитировать передачу данных о местоположении на эмулятор. Проще всего воспользоваться для этого DDMS.
В Eclipse откройте компоновку (Perspective) DDMS, в этой компоновке выберите вкладку Emulator Control. С помощью инструмента DDMS, можно имитировать обновление данных о местоположении несколькими способами:
В этой части работы рассмотрели вопросы разработки приложений, способных получать координаты устройства и отслеживать их изменения. Разработанное приложение реагирует на изменения координат устройства и выдает новые координаты в соответствующие информационные поля.
package com.example.lab5_4_geolocation;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.widget.TextView;
public class MainActivity extends Activity {
TextView tvOut;
TextView tvLon;
TextView tvLat;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tvOut = (TextView)findViewById(R.id.textView1);
tvLon = (TextView)findViewById(R.id.longitude);
tvLat = (TextView)findViewById(R.id.latitude);
//Получаем сервис
LocationManager mlocManager = (LocationManager)
getSystemService(Context.LOCATION_SERVICE);
LocationListener mlocListener = new LocationListener(){
public void onLocationChanged(Location location) {
//Called when a new location is found by the network location provider.
tvLat.append(" "+location.getLatitude());
tvLon.append(" "+location.getLongitude());
}
public void onStatusChanged(String provider, int status, Bundle extras) {}
public void onProviderEnabled(String provider) {}
public void onProviderDisabled(String provider) {}
};
//Подписываемся на изменения в показаниях датчика
mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0,
mlocListener);
//Если gps включен, то ... , иначе вывести "GPS is not turned on..."
if (mlocManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
tvOut.setText("GPS is turned on...");
} else {
tvOut.setText("GPS is not turned on...");
}
}
}
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.