ГЕОЛОКАЦИЯ БЕЗ ИЗПОЛЗВАНЕ НА КАРТИ в Android приложението

Ами ако дейността ви се нуждае от достъп до информация за геолокация, но тази дейност няма MapView? Когато използвате MapView, Android прави нещата много по-лесни, като ви позволява да използвате My LocationOverl. Но ако все още не се нуждаете от карта, все още не е твърде трудно да получите информация за геолокация. Кодът в този раздел не е част от програмата MJAndroid, но показва как можете да получите информация за геолокация, без да използвате MapView.

Нека разгледаме едно много просто приложение, състоящо се само от една дейност. В тази програма текущото местоположение се показва в TextView.

Файлове с описание и оформление

карти

Използвахме много прост файл с оформление, който включва четири TextView: един етикет и едно текстово поле за стойностите на географската ширина и дължина:

геолокация

Свързване с доставчик на местоположение и получаване на актуализации

Първо, помислете за дейност, която просто се свързва с LocationProvider на глобалната система за позициониране, получава текущата ни информация за местоположение и я изобразява (без актуализации):

приложението

геолокация

Процедурата е напълно проста. Нека да разгледаме обясненията за кода.

Свързване към LocationManager с помощта на getSystemService(Context.LOCATION_SERVICE).

Ние питаме LocationManager къде ще се използва getLastKnownLoca -tionC'provider").

Получаваме географска ширина и дължина - тези стойности се връщат от местоположението и се използват, ако е необходимо.

Ние също трябва да получаваме периодични актуализации на информацията за местоположението от LocationManager, за да можем да следим нашето собственодвижение. За да направите това, трябва да добавите рутина за слушане и да кажете на LocationManager да извика тази рутина, когато има актуализиране на информация.

Приложението има достъп до актуализации на местоположението от LocationManager чрез класа Di spLocListener. Затова ще създадем екземпляр на този клас в метода onCreate на нашата основна дейност. Ще трябва да заменим методите в класа DispLocListener, за да съответстват на дефиницията на интерфейса LocationListener, но нашето приложение няма да трябва да работи с този интерфейс, така че тези дефиниции ще останат празни. Ето пълната реализация на класа:

android

Нашият метод onCreate инстанцира класа Dis spLocListener и инструктира LocationManager да го актуализира, когато е необходимо чрез requestLocationUpdates. Този метод приема четири параметъра.

Доставчик на низове – Указва кое местоположение да се използва за доставчика. В този случай се предполага, че имаме налична GPS система.

long minTime – минимално време между актуализациите, определено в милисекунди. LocationManager няма да се актуализира по-често от този интервал. Тук можете да конфигурирате приложението така, че да не консумира твърде много енергия от батерията: колкото по-често се извършват актуализации, толкова повече енергия се губи.

float minDistance - минималното разстояние в метри, след което се стартира актуализацията. LocationManager ще се актуализира само ако сме изминали поне това разстояние от последната актуализация.

LocationListenerlіstenei - Името на метода слушател, който да бъде извикан, когато са налични актуализации. Слушателят е екземплярът на DispLocListener, който току-що създадохме.

И накрая, искаме да добавим кода за onPause иonResume, за да деактивирате актуализациите на местоположението, когато картата не се показва на екрана на устройството и да активирате отново, когато картата е на екрана:

приложението

Актуализиране на емулирана геолокация

Когато разработваме и отстраняваме грешки в приложение като описаното в предишния раздел, ние обикновено използваме емулатор. Би било хубаво (може би дори от съществено значение), ако можем да актуализираме текущото геолокация, което емулаторът използва, когато изпълнява вашия код. Такъв симулиран доставчик на местоположение може да бъде много сложен, но Android предоставя няколко вградени начина за актуализиране на емулираното местоположение:

географска програма (deo), вградена в обвивката на Android;

еднократни актуализации, извършени с помощта на Dalvik Debug Monitor Server;

посока на движение, актуализирана последователно с помощта на Dalvik Debug Monitor Server.

Нека да разгледаме тези компоненти.

Използване на deo за актуализиране на геолокация

Помощната програма deo е вградена в изображението на Android, работещо в емулатора. Той има редица функции, ние ще изброим най-полезните от тях.

Командата deo fix може да се използва за изпращане на информация за местоположението до Android. Това става чрез свързване към конзолата на емулираното устройство чрез Telnet протокола. След това LocationProvider ще използва тези данни като действително местоположение:

deo fix приема три параметъра:

longitude - географска дължина, посочена в десетични дроби;

lat і tude - географска ширина, също дадена в десетични дроби;

надморска височина - височина, посочена в метри.

Използване на DDMS за актуализиране на геолокация

използване

Ориз. 15.1. Областта за контрол на емулатора в инструмента DDMS

Да информираемулатора, за да актуализирате информацията за геолокация веднъж, просто въведете стойностите за географска ширина и дължина в съответните полета и щракнете върху Изпрати.

Ако изберете раздела GPX или KML, можете да качите GPX или KML файл, който описва пътя (Фигура 15.2). Тук вече сме заредили файла OR. kml, наличен на уебсайта на тази книга. Той проследява пътя близо до централата на издателство O'Reilly, разположено в град Севастопол, Калифорния.

геолокация

Ориз. 15.2. DDMS емулатор с актуализации на местоположението във формат KML

GPX файлове с пътеки могат да бъдат създадени с помощта на различни програми за навигация с GPS, а KML файлове могат да бъдат създадени с помощта на Google Earth и много други програми за навигация. ИЛИ файл. kml е генериран чрез поставяне на множество маркери и обединяването им в един файл. Ето фрагмент от файла OR. kml:

приложението

карти

Източник: Android. Java програмиране за следващото поколение мобилни устройства