Главная » Разработка для Android » ДОБАВЛЕНИЕ ПОДДЕРЖКИ ГЕОЛОКАЦИОННЫХ СЕРВИСОВ – ЧАСТЬ 1

0

Вопросы, рассматриваемые в этом часе:

•             подготовка дизайна для функционала, связанного с указанием избранного места пользователя;

•             использование геолокационных сервисов;

•             использование сервисов, основанных на геокодировании;

•             работа с картами.

В этом часе вы добавите новый функционал в приложение «Been There. Done That!» — возможность указывать пользователю на экране с настройками выбранное им место. Это можно будет делать одним из двух способов: либо используя текущее местоположение, предоставляемое геолокационными сервисами на мобильном телефоне (LBS — location- based services), либо указав название места, которое может быть преобразовано в соответствующие GPS- координаты с использованием инструментария Android SDK.

ПОДГОТОВКА ДИЗАЙНА ДЛЯ ФУНКЦИОНАЛА, СВЯЗАННОГО С УКАЗАНИЕМ ИЗБРАННОГО МЕСТА ПОЛЬЗОВАТЕЛЯ

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

Поскольку приложение «Been There, Done That!» – это игра, вы хотите использовать в нем некоторые из наиболее распространенных функций, предоставляемых LBS-сервисами. Для этого вы добавите на экран с настройками Функционал, связанный с указанием избранного места пользователя. В ходе работы вы познакомитесь с другими возможностями LBS-сервисов, которые могут быть использованы для построения более мощных приложений.

На экране с настройками пользователь может выбрать и сохранить и качестве своего избранного места либо последнее известное местоположение, сохраненное в памяти телефона, либо ввести ключевые слона, описывающие что место, например его адрес, город или название достопримечательности (например, New York City, Iceland,

Yellowstone National Park, 90210). После этого приложение обращается к любому доступному поставщику услуг, основанных на геокодировании, чтобы преобразовать указанное местоположение в соответствующие GPS-координаты.

Чтобы реализовать подобный функционал на экране с настройками приложения «Been There, Done That!», вам потребуется немного изменить дизайн экрана. На рис. 14.1 изображен эскиз, который показывает, каким образом будет модифицирован экран с настройками.

Рис. 14.1. Эскиз дизайна для функционала, связанного с указанием избранного места пользователя

Определение изменений макета для реализации геолокационного функционала Favorite Place

Напомним, что все поля, отображаемые на экране с настройками, размешаются внутри элемента ScrollView. Благодаря лому добавить новый параметр в нижнюю часть экрана не составит никакого труда. Функциональность, связанная с указанием избранного места пользователя, во многом будет работать так, как работают параметры Date of Birth (Дата рождения) и Password (Пароль).

Чтобы внести необходимые изменения в файл макета /res/layout/settings.xml для добавления параметра Favorite Place (Избранное место), вам потребуется создать новую область на экране с настройками, расположив ее под элементом Spinner параметра Gender (Пол).

Сначала вы добавите элемент TextView, который будет использоваться для отображения названия нового параметра. Затем — внутренний элемент- контейнер LinearLayout с элементом Button, используемым для отображения диалогового окна, и элементом управления TextView, который будет применяться для отображения выбранного значения параметра Favorite Place (Избранное место).

Т-Тя тлп 14 9 гтрттс’гякттрмта wpr\fwr\TTT.TA/TTap ТЯ^ЛДРНРНТЯЯ Л/Г^ь-ртя

Рис. 14.2. Измененный макет экрана с настройками для реализации функциональности, связанной с указанием избранного места пользователя

Разработка дизайна диалогового окна для выбора избранного места пользователя

Как и раньше, вы построите пользовательское диалоговое окно на базе класса

AlertDialog.

Значение параметра Favorite Place (Избранное место) в файле с настройками приложения будет храниться в виде трех частей:

[1]      название местоположения (значение типа String);

•             широта местоположения (значение типа float);

• долгота местоположения (значение типа float).

КСТАТИ

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

Чтобы максимально упростить работу с этим диалоговым окном, вы можете предоставить пользователю две возможности; использовать последнее известное местоположение (при условии, что GPS-провайдер предоставляет необходимую информацию) или ввести строку в элемент EditText, которая будет преобразована в GPS-координаты при помощи инструментария Android SDK.

Рис. 14.3. Эскиз дизайна диалогового окна для выбора избранного места пользователя

Получив информацию о широте и долготе выбранного местоположения, вы можете включить возможность просмотра этого местоположения в приложении для ра­боты с картами (если таковое имеется). На рис. 14.3 изображен эскиз дизайна диа­логового окна для выбора избранного места пользователя.

Реализация макета диалогового окна для выбора избранного места пользователя

Вам нужно создать новый файл макета, в котором будет сохранен макет диалогового окна для выбора избранного места пользователя. Для этого вы добавите в проект новый ресурс макета с именем /res/layout/fav_place_dialog.xml.

Здесь нет ничего сложного. Все элементы диалогового окна размешаются внутри контейнера LinearLayout с вертикальной ориентацией. Сначала идет элемент

TextView, используемый для отображения текста с приглашением выбрать предпочтительное местоположение. Затем нужно отобразить элемент EditText, который будет использоваться для ввода названия места, а рядом с ним расположить элемент Button, позволяющий запустить приложение для работы с картами. Вы можете легко разместить элементы и EditText Button друг за другом, используя элемент- контейнер RelativeLayout. Наконец, нужно добавить два элемента TextView: один будет использоваться для отображения названия местоположения с указанными GPS- координатами, а другой— для отображения самих GPS-координат (в приложении «Been There. Done That!» эти координаты можно только просматривать, но не изменять).

На рис. 14.4 изображен дизайн-макет диалогового окна для выбора значения параметра Favorite Place (Избранное место).

Рис. 14.4. Дизайн-макет диалогового окна для выбора значения параметра Favorite Place (Избранное место)

РЕАЛИЗАЦИЯ ИНФРАСТРУКТУРЫ ДЛЯ ФУНКЦИОНАЛЬНОСТИ, СВЯЗАННОЙ С ВЫБОРОМ ИЗБРАННОГО МЕСТА ПОЛЬЗОВАТЕЛЯ

Перед тем, как приступить к добавлению поддержки LBS-сервисов и приложение «Been There. Done That!», нужно разработать инфраструктуру для функциональности, связанной с выбором избранного места. Здесь вам пригодятся навыки, полученные в предыдущих часах. Чтобы реализовать эту функциональность, выполните следующие шаги:

1. Добавьте новые ресурсы типа String, Dimension, Color и Drawable, которые потребуются для реализации макета.

2. Обновите файл макета /res/layout/settings.xml, чтобы добавить новую область в нижнюю часть экрана с настройками для открытия диалогового окна, как показано на рис. 14.5.

3. Добавьте в проект файл макета /res/layout/fav_place_dialog.xml и включите в него элементы TextView, EditText и Button, необходимые для диалогового окна (рис. 14.6).

Рис. 14.5. Экран с настройками, содержащий параметр Favorite Place (Избранное место)

4.                                  Определите три новых значения типа String в классе QuizActivity для дополнительных настроек приложения. Они будут использоваться в экземпляре класса SharedPreferences приложения для хранения названия избранного места пользователя (значение типа String), а также его географической широты (значение типа float) и долготы (значение типа float).

Рис. 14.6. Диалоговое окно для выбора избранного места пользователя

5.                                  Обновите класс QuizSettingsActivity, включив в него новое диалоговое окно. Сначала определите в этом классе идентификатор диалогового окна (например, PLACE_DIALOG_ID). Затем обновите метолы onCreateDialog() и onPrepareDialog () класса, чтобы создать, инициализировать и управлять новым диалоговым окном для выбора избранного места пользователя.

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

[1] Добавьте вспомогательный метод initFavoritePlacePicker() для отображения названия избранного места пользователя (если оно было указано ранее) и обработки событий нажатий на элемент Button, чтобы открывать диалоговое окно для выбора избранного места пользователя. Этот метод во многом должен быть похож на метолы initPasswordChooser() и initDatePicker() .

•             Создайте новое диалоговое окно для выбора избранного места пользователя, во многом похожее на диалоговое окно для ввода пароля, которое вы реализовали ранее. Одно из ключевых отличий состоит в том, что в новом диалоговом окне присутствует элемент Button, используемый для запуска приложения для работы с картами.

•             Шаг за шагом реализуйте диалоговое окно Dialog для выбора избранного места пользователя. Сначала реализуйте функциональность, позволяющую сохранять введенный в диалоговом окне Dialog текст в качестве названия избранного места пользователя. Затем добавьте сохранение некоторой тестовой информации о широте и долготе вместе с названием местоположения. Когда все это будет работать, добавьте реализацию класса View.OnClickListener для элемента управления Button, ис­пользуемого для открытия приложения для работы с картами, и в соответствующем методе этого класса отображайте всплывающее уведомление с некоторым текстом, например, «Мар Button Clicked».

Литература: Дэрси JI., Android за 24 часа. Программирование приложений под операционную систему Google/ ДэрсиЛ., КондерШ. — М.: Рид Групп, 2011. — 464 с. — (Профессиональные компьютерные книги). ISBN 978-5-4252-0318-2

По теме:

  • Комментарии