Разработка информационного приложения для прогноза погоды на платформе Android

 

Введение

android программа алгоритм смартфон

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

Задание, полученное на практику - разработать программное обеспечение для платформы Android информационное приложения для показа прогноз погоды.

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


.Обзор существующих приложений


Обозревая существующих приложений на ОС Android можно выделить двух популярных программ для просмотра погоды:

Gismeteo weather forecast- это официальная программа для просмотра прогнозов погоды от крупнейшего в России поставщика метеорологических данных - компании Гисметео. Помимо России, программа показывает погоду и ее прогноз по всему миру.По точности прогнозов погоды в России, программе Гисметео точно нет равных, ведь именно на данные этого сервиса всегда ссылаются в эфирах передач прогнозов погоды.

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

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

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

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

Особенности AccuWeather:

-Более 2 миллионов мест, где отслеживается погода;

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

-Значок в верхнем меню с отображением температуры воздуха;

-Мониторинг погоды сразу в нескольких местах;

-Удобные виджеты для слежения за погодой;

-Возможность делиться информацией о погоде через социальные сети, и это только малая часть возможностей программы;

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

Итог: AccuWeather - это качественное и надежное приложение для слежения за погодой, которое не даст вам промокнуть, замерзнуть и простыть. В приложении есть избыточная информация относительно погоды, что удовлетворит большинство пользователей, ну а если этих данных мало, то остальное вы всегда можете найти на официальном сайте сервиса. Скачать AccuWeather вы можете прямо в магазине приложений Google Play.


1.1Операционные системы современных смартфонов


Смартфон, (англ. smartphone - умный телефон) - мобильный телефон c расширенной функциональностью, сравнимой с карманным персональным компьютером (КПК). Также для обозначения некоторых устройств, совмещающих функциональность мобильного телефона и КПК часто используется термин «коммуникатор».

Коммуникатор (англ. Communicator, PDA Phone) - карманный персональный компьютер, дополненный функциональностью мобильного телефона.Смартфоны и коммуникаторы отличаются от обычных мобильных телефонов наличием достаточно развитой операционной системы, открытой для разработки программного обеспечения сторонними разработчиками (операционная система обычных мобильных телефонов закрыта для сторонних разработчиков). Установка дополнительных приложений позволяет значительно улучшить функциональность смартфонов и коммуникаторов по сравнению с обычными мобильными телефонами.

Однако, в последнее время граница между "обычными" телефонами и смартфонами все больше стирается, новые телефоны (за исключением самых дешёвых моделей) давно обзавелись функционалом, некогда присущим только смартфонам, например электронная почта и HTML-браузер. Программы, написанные специально для операционной системы смартфона или коммуникатора являются полноценными скомпилированными в двоичный код последовательностями низкоуровневых микропроцессорных команд. Специализированные приложения рациональней используют ресурсы процессора и, как правило, обладают большим функционалом, чем «универсальные» J2ME-программы.

Однако для большинства пользователей данное обстоятельство не является основным критерием выбора. Смартфоны продвигаются производителями за счёт других факторов, таких как: продвинутые мультимедийные функции (более качественная камера, расширенные возможности воспроизведения видеофайлов, улучшенные музыкальные способности), Wi-Fi, GPS и т. п.Открытость операционной системы смартфонов и коммуникаторов порождает ещё одну проблему, хорошо знакомую пользователям персональных компьютеров - компьютерные вирусы и другие вредоносные программы.

Для защиты от этой опасности большинством ведущих разработчиков антивирусного ПО созданы специальные версии антивирусных программ для мобильных операционных систем (например, Kaspersky Mobile Security от Лаборатории Касперского).Большинство современных вредоносных программ для мобильных устройств (в основном это троянские программы) распространяется через Интернет под видом полезных программ (игр, кодеков для видеопроигрывателей и других), либо локально в людных местах посредством bluetooth. При этом установка вредоносной программы должна быть подтверждена пользователем. Для защиты от таких вирусов достаточно соблюдать разумную осторожность: не принимать запрос соединения по bluetooth от незнакомых людей, не устанавливать подозрительные программы из ненадежных источников и т. п.

Тем не менее, по мере роста числа смартфонов и коммуникаторов, используемых для выхода в Интернет (благодаря внедрению новых технологий беспроводной связи 3G, Mobile WiMAX и других), вредоносные программы для мобильных устройств могут стать серьёзной опасностью.

Также необходимо отметить, что обычные мобильные телефоны тоже могут подвергнуться заражению вредоносными программами (существуют вредоносные J2ME-программы, возможно использование уязвимостей ОС телефона и т. п.).


.2 Операционные системы и платформы


Наличие операционной системы (ОС) - главная особенность, отличающая смартфон от обычного мобильного телефона. У коммуникаторов же ОС есть по определению. При выборе конкретной модели смартфона или коммуникатора ОС часто становится определяющим фактором.

Наиболее распространённые операционные системы и платформы для смартфонов:

Symbian OS - занимает большую часть рынка ОС для смартфонов. По состоянию на начало 2010 года на базе этой ОС осталась всего 1 платформа: Series 60, которая используется преимущественно в устройствах Nokia, а также некоторых моделях Samsung.

BlackBerry OS (RIM) - устройства на этой системе широко используются в основном в США, так как спецслужбы некоторых стран не заинтересованы в использовании этих смартфонов в своей стране из-за того, что все входящие/исходящие данные шифруются с помощью AES.Mobile и Windows CE - компактная ОС компании Microsoft, выпускается с 1996 года и занимает крупный сегмент рынка ОС для смартфонов.Phone 7 - новая разработка компании Microsoft, кардинально отличающаяся от Windows Mobile.OS - некогда популярная платформа, в настоящее время аппараты на базе Palm OS малораспространены. Последний смартфон под управлением данной операционной системы был представлен в конце 2007 года (Palm Centro).webOS - 8 января 2009 года был анонсирован смартфон Palm Pre под управлением новой ОС Palm webOS, ядром которой является ОС Linux. В дальнейшем компания Palm будет выпускать смартфоны только с ОС Palm webOS.

Android - платформа для смартфонов, с открытым исходным кодом, разрабатываемая OHA (группа компаний во главе с Google). Платформа базируется на Linux.- широкого распространения не получили, однако традиционно считаются перспективным направлением. Смартфоны на базе Linux распространены в основном в Азии.- новейшая мобильная платформа, разработанная компанией Samsung. Первым телефоном на новой платформе стал S8500 Wave.

1.3 Операционная система Android

- это основанная на Linux платформа для мобильных телефонов, разработанная Open Handset Alliance (OHA), инициированным Google. Она позволяет создавать Java-приложения, управляющие устройством через разработанные Google библиотеки. Также есть возможность писать приложения на Си и других языках программирования с помощью Android Native Development Kit.1.5 (Cupcake) - выпущено 30 апреля 2009 года. Среди основных улучшений появилась поддержка записи и просмотра видео в режиме камеры; поддержка Bluetooth A2DP; возможность автоматически подключаться к Bluetooth-гарнитуре.Первым устройством, работающим под управлением Android, стал разработанный компанией HTC смартфон T-Mobile G1, презентация которого состоялась 23 сентября 2008 года. Вскоре последовали многочисленные анонсы других производителей смартфонов о намерении выпустить устройства с Android.

В компании Google выделяют несколько основных преимуществ, отличающих устройства на базе платформы Android от аналогичных продуктов:

-Открытость - Android позволяет получить доступ к основным функциям мобильных устройств с помощью стандартных вызовов API;

-Разрушение границ - можно объединять информацию из интернета с данными телефона, например контактной информацией или данными о географическом положении, чтобы получить новые возможности;

-Равноправие приложений - для Android нет разницы между основными приложениями телефона и сторонним программным обеспечением - можно изменить даже программу для набора номера или заставку экрана;

-Быстрая и легкая разработка - в SDK есть все, что нужно для создания и запуска приложений Android, включая имитатор настоящего прибора и расширенные инструменты отладки;

Кроме того, Android обладает и другими функциональными возможностями. Так, например, для выполнения приложений используется виртуальная Java-машина Dalvik с низким потреблением памяти. Dalvik позволяет поддерживать одновременную работу нескольких приложений и открывает файлы в специальном формате dex, оптимизированном для мобильных устройств.

В Android реализована поддержка 2D/3D-графики (причем одновременно можно использовать двух- и трехмерную графику), изображений, аудио и видео.Для хранения данных используется популярная легковесная СУБД SQLite. Доступна поддержка GSM, EDGE, 3G, Bluetooth, Wi-Fi, фото- и видеокамеры, GPS, компаса, акселерометра.

В работе платформы применяется также ряд библиотек, отвечающих за шифрование данных, чтение форматов аудио и видео, поддержку 2D и 3D-графики, шрифтов и т.д. В платформе от Google также задействована библиотека LibWebCore (WebKit), которая является движком для web-браузера Android. Стоит отметить, что данный движок используется в популярном браузере Safari от компании Apple.

Одним словом, Android - это программная платформа для мобильных устройств, которая включает в себя операционную систему, программное обеспечение промежуточного слоя (middleware), а также основные пользовательские приложения (e-mail-клиент, календарь, карты, браузер, контакты и другие).Как видно, у платформы от Google есть целый ряд преимуществ. Однако стоить обратить внимание и на недостатки Android.Так, например, многие эксперты отмечают, что платформа базируется на Java, поэтому преимущества и возможности операционной системы Linux на Android используются не в полной мере.

Также в платформе не используется ни один из популярных графических инструментов (toolkit) и библиотек (например, Ot или GTK), что делает маловероятным появление большого числа приложений, портированных с полноценного варианта Linux для домашнего компьютера на данную платформу из-за отсутствия по умолчанию X-сервера и распространенных графических библиотек.

Кроме того, появилась информация о том, что Google будет по своему усмотрению удалять приложения на телефонах пользователей, если нарушаются условия их использования.К недостаткам платформы можно также отнести и невозможность установки приложений на карту памяти. Данный пробел разработчиков является существенным, в особенности, если у телефона небольшой объем встроенной памяти (например, у T-Mobile G1 он составляет всего 70 Мб).Google Android устанавливается не только на смартфоны, данная платформа подходит и для нетбуков.

Так, например, Android уже стоит на ряде моделей Asus EE PC, а также портирован на нетбуки компаний MSI, Dell и Acer. Еще ряд производителей нетбуков заявили о скором выпуске устройств на базе мобильной платформы от Google.Кроме того, появление Google Android заставило многих крупных производителей микроэлектроники начать разработку устройств, которые до этого компании вообще не производили.

Аналитики и эксперты ИТ-рынка прочат Google Android хорошие коммерческие перспективы, что в принципе для продуктов на базе ПО с открытым кодом уже не является сенсацией. Они постепенно захватывают ИТ-пространство, вытесняя с него общепризнанных лидеров, порождая конкуренцию, что само по себе может только положительно сказаться на оздоровлении рынка.


.4 Постановка задачи


Целью работы является разработка приложения на операционной системе Android. Для достижения этой цели будет использована среда програмирования Eclipse.

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

-Построение алгоритма - наиболее эффективно математическую модель можно реализовать на компьютере в виде алгоритмической модели. Для этого может быть использован язык блок-схем;

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

-Разработка удобной пользовательского интерфейса;

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


2.Особенности и специфика разработки


2.1 Ключевые особенности Android

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

Приложение требует для установки в два раза (или даже в четыре) больше места, чем оригинальный размер приложения;

Скорость работы с файлами на встроенной флеш-карте падает в десятки раз при уменьшении свободного места;

Каждый процесс может использовать до 16 Мб (иногда 24 Мб) оперативной памяти.основан на Linux. Между приложением и ядром лежит слой API и слой библиотек на нативном коде. Приложение выполняется на виртуальной машине Java (Dalvik Virtual Machine).

В Android можно запускать много приложений. Но одно из них есть главным и занимает экран. От текущего приложения можно перейти к предыдущему или запустить новое. Это похоже на браузер с историей просмотров.

Каждый экран пользовательского интерфейса представлен классом Activity в коде. Различные Activity содержатся в процессах. Activity может даже жить дольше процесса. Activity может быть приостановлена и запущена вновь с сохранением всей нужной информации.использует специальный механизм описания действий основанный на Intent. Когда нужно выполнить действие (сделать звонок, послать письмо, показать окно), вызывается Intent.

Также Android содержит сервисы подобные демонам в Linux для выполнения нужных действий в фоновом режиме (например, проигрывание музыки). Для обмена данными между приложениями используются Content providers (провайдеры содержимого).

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


2.2 Общая схема работы приложения Android


Приложения для Android в своей работе использует окна(аналогично Windows), однако в данной системе вышеуказанные окна носят иное название - Activity. Как и в Windows, каждое окно имеет свой жизненный цикл и свои особенности. При создании нового окна вызывается метод onCreate(), при разработке данный метод переопределяется и в нем происходит инициализация приложения и его компонентов. Далее вызываются методы onStart() и onResume(). Оба метода вызываются перед отображением окна при его создании, либо восстановлении(при переключении из другого приложения, при разворачивании свернутого приложения и тп). При сворачивании вызываются методы onPause() и onStop(). При закрытии приложения и окна вызывается onDestory(), в данном методе можно сохранить пользовательские данные и параметры. Полное описание и последовательность вызова методов можно найти на официальном сайте. Общая схема жизненного цикла приложения для Android представлена на рисунке 2.


Рисунок 2 - Жизненный цикл приложения для системы под управлением Android 2.3.1


3.О технологии Java

- объектно-ориентированный язык программирования, разработанный компанией Sun Microsystems (в последующем приобретённой компанией Oracle).

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

Дата официального выпуска - 23 мая 1995 года. является основой практически для всех типов сетевых приложений и всеобщим стандартом для разработки и распространения встроенных и мобильных приложений, игр, веб-контента и корпоративного программного обеспечения.

В мире насчитывается более 9 миллионов специалистов, разрабатывающих приложения на Java, которая позволяет эффективно разрабатывать, внедрять и использовать превосходные приложения и услуги.

От портативных компьютеров до центров сбора данных, от игровых консолей до суперкомпьютеров, используемых для научных разработок, от сотовых телефонов до сети Интернет - Java используется повсюду.

-Java используется на 97% корпоративных настольных ПК;

-Java используется на 89% настольных ПК в США;

-9 млн разработчиков на Java в мире;

-Инструмент номер 1 среди разработчиков;

-Программа номер 1 среди разработчиков;

-Java используется в 3 млрд мобильных телефонов;

-Java входит в комплект поставки 100% всех проигрывателей дисков Blu-ray;

-Используется 5 млн Java Card;

-Java используется в 125 млн ТВ-устройств;

-5 из 5 основных производителей оригинального оборудования включают в комплект поставки Java ME;


3.1 Основные особенности языка Java при использования Android


Программы на Java транслируются в байт-код, выполняемый виртуальной машиной Java (JVM) - программой, обрабатывающей байтовый код и передающей инструкции оборудованию как интерпретатор.

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

Другой важной особенностью технологии Java является гибкая система безопасности благодаря тому, что исполнение программы полностью контролируется виртуальной машиной. Любые операции, которые превышают установленные полномочия программы (например, попытка несанкционированного доступа к данным или соединения с другим компьютером) вызывают немедленное прерывание.

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

В последнее время был внесен ряд усовершенствований, которые несколько увеличили скорость выполнения программ на Java:

-применение технологии трансляции байт-кода в машинный код непосредственно во время работы программы (JIT-технология) с возможностью сохранения версий класса в машинном коде;

-широкое использование платформенно-ориентированного кода (native-код) в стандартных библиотеках;

-аппаратные средства, обеспечивающие ускоренную обработку байт-кода (например, технология Jazelle, поддерживаемая некоторыми процессорами фирмы ARM);

По данным сайта shootout.alioth.debian.org, для семи разных задач время выполнения на Java составляет в среднем в полтора-два раза больше, чем для C/C++, в некоторых случаях Java быстрее, а в отдельных случаях в 7 раз медленнее. С другой стороны, для большинства из них потребление памяти Java-машиной было в 10-30 раз больше, чем программой на C/C++.

Также примечательно исследование, проведённое компанией Google, согласно которому отмечается существенно более низкая производительность и бо?льшее потребление памяти в тестовых примерах на Java в сравнении с аналогичными программами на C++.


3.2 Связь между Java, Android и Eclipse


Язык Java активно используется для создания мобильных приложений под операционную систему Android. При этом программы компилируются в нестандартный байт-код, для использования их виртуальной машиной Dalvik. Для такой компиляции используется дополнительный инструмент, а именно Software Development Kit, его разработали представители компании Google.

Разработку приложений можно вести в среде Eclipse, используя при этом плагин - Android Development Tools (ADT) или в IntelliJ IDEA. Версия JDK при этом должна быть 5.0 или выше.

Eclipse - свободная интегрированная среда разработки модульных кроссплатформенных приложений. Развивается и поддерживается Eclipse Foundation.

Наиболее известные приложения на основе Eclipse Platform - различные «Eclipse IDE» для разработки ПО на множестве языков (например, наиболее популярный «Java IDE», поддерживавшийся изначально, не полагается на какие-либо закрытые расширения, использует стандартный открытый API для доступа к Eclipse Platform).

Преимущества:служит в первую очередь платформой для разработки расширений, чем он и завоевал популярность: любой разработчик может расширить Eclipse своими модулями. Уже существуют Java Development Tools (JDT), C/C++ Development Tools (CDT), разрабатываемые инженерами QNX совместно с IBM, и средства для языков Ada (GNATbench, Hibachi), COBOL, FORTRAN, PHP и пр. от различных разработчиков.

Множество расширений дополняет среду Eclipse менеджерами для работы с базами данных, серверами приложений и др.Eclipse JDT (Java Development Tools) - наиболее известный модуль, нацеленный на групповую разработку: среда интегрирована с системами управления версиями - CVS, GIT в основной поставке, для других систем (например, Subversion, MS SourceSafe) существуют плагины. Также предлагает поддержку связи между IDE и системой управления задачами.

В основной поставке включена поддержка трекера ошибок Bugzilla, также имеется множество расширений для поддержки других трекеров (Trac, Jira и др.). В силу бесплатности и высокого качества, Eclipse во многих организациях является корпоративным стандартом для разработки приложений. Eclipse написана на Java, потому является платформо-независимым продуктом, за исключением библиотеки SWT, которая разрабатывается для всех распространённых платформ. Библиотека SWT используется вместо стандартной для Java библиотеки Swing. Она полностью опирается на нижележащую платформу (операционную систему), что обеспечивает быстроту и натуральный внешний вид пользовательского интерфейса, но иногда вызывает на разных платформах проблемы совместимости и устойчивости приложений.


4. Разработка программного обеспечения


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


.1 Функциональное назначение


Целью предипломной практики является создание Android приложения, позволяющего ознакомить пользователей с прогноз погодой Алматы.Интерфейс программы сделано очень удобным и простым для пользователей.С помощью этой программы пользователей может с легкостью ознокомиться с прогноз погодой г.Алматы.


.2 Комплекс технических средств


Для работы системы необходим компьютер со следующими параметрами:

ОЗУ не менее 32 Мб;

свободное дисковое пространство не менее 100 Мб;

не менее 32 Mb видео карта;

монитор типа SVGA;

мышь;

ОС Windows 7, XP.


4.3 Логическая структура программы


Код main.xml

1.Подключения пакета

-23. Импортируються классы

. Описание класса MainActivity

-35. Описание переменных

. Проверяет, переопределен ли метод

-53. Берет с интернета json и кладеть нужные данные в textview

-59. Читаеть json

. Проверяет, переопределен ли метод

-94. Загружает из сервера иконку соответствующий погоде

-107. Выводять данные на экран

Код интерфейса

-19. Задается координаты экрана

-52. Вводится textview

-58. Вводится Imageview

-75. Задается свойства экрана


.4 Вызов и запуск


Чтобы вызовать андроид приложению нам понадобиться запустить Eclipse и открыть Android virtual device manager и запустить эмупулятор.


Рисунок 4.1 - Окно Android virtual device manager


4.5 Инструкция потребителям


Чтобы открыть программу нам понадобиться телефон с ОС Анроид. Первым делом мы установливаем .apk файл и запускаем программу.


Рисунок 4.2 - Главное окно эмупулятора


Рисунок 4.3 - Главное меню эмупулятора


Рисунок 4.3 - Главное окно приложении


Заключение


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

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


Список литературы


1 Блог на хабре о разработке под Android [Электронный ресурс]// URL: #"justify">Приложение


.package com.survivingwithandroid.weatherapp;

.import java.io.BufferedReader;

.import java.io.InputStream;

.import java.io.InputStreamReader;

.import java.net.HttpURLConnection;

.import java.net.URL;

.import org.json.JSONArray;

.import org.json.JSONException;

.import org.json.JSONObject;

.import com.survivingwithandroid.weatherapp.adapter.DailyForecastPageAdapter;

.import com.survivingwithandroid.weatherapp.model.Location;

.import com.survivingwithandroid.weatherapp.model.Weather;

.import com.survivingwithandroid.weatherapp.model.WeatherForecast;

.import android.os.AsyncTask;

.import android.os.Bundle;

.import android.app.Activity;

.import android.graphics.Bitmap;

.import android.graphics.BitmapFactory;

.import android.support.v4.app.FragmentActivity;

.import android.support.v4.view.ViewPager;

.import android.view.Menu;

.import android.widget.ImageView;

.import android.widget.TextView;

.public class MainActivity extends FragmentActivity {

.private TextView cityText;

.private TextView condDescr;

.private TextView temp;

.private TextView press;

.private TextView windSpeed;

.private TextView windDeg;

.private TextView unitTemp;

.private TextView hum;

.private ImageView imgView;

.private static String forecastDaysNum = "3";

.private ViewPager pager;

.@Override

.protected void onCreate(Bundle savedInstanceState) {

.super.onCreate(savedInstanceState);

.setContentView(R.layout.activity_main);

.String city = "Almaty, Kazakhstan";

.String lang = "kz";

.cityText = (TextView) findViewById(R.id.cityText);

.temp = (TextView) findViewById(R.id.temp);

.unitTemp = (TextView) findViewById(R.id.unittemp);

.unitTemp.setText("°C");

.condDescr = (TextView) findViewById(R.id.skydesc);

.pager = (ViewPager) findViewById(R.id.pager);

.imgView = (ImageView) findViewById(R.id.condIcon);

.condDescr = (TextView) findViewById(R.id.condDescr);

.hum = (TextView) findViewById(R.id.hum);

.press = (TextView) findViewById(R.id.press);

.windSpeed = (TextView) findViewById(R.id.windSpeed);

.windDeg = (TextView) findViewById(R.id.windDeg);

.JSONWeatherTask task = new JSONWeatherTask();

.task.execute(new String[]{city,lang});

.JSONForecastWeatherTask task1 = new JSONForecastWeatherTask();

.task1.execute(new String[]{city,lang, forecastDaysNum});

.}

.@Override

.public boolean onCreateOptionsMenu(Menu menu) {

.getMenuInflater().inflate(R.menu.main, menu);

.return true;

.}

.private class JSONWeatherTask extends AsyncTask<String, Void,

.Weather> {

.@Override

.protected Weather doInBackground(String... params) {Weather weather = new Weather();

.String data = ( (new WeatherHttpClient()).getWeatherData(params[0],params[1]));

.try {

.weather = JSONWeatherParser.getWeather(data);

.System.out.println("Weather ["+weather+"]");

.weather.iconData = ( (newWeatherHttpClient()).getImage(weather.currentCondition.getIcon()));

.} catch (JSONException e) {e.printStackTrace();

.}

.return weather;

.}

.@Override

.protected void onPostExecute(Weather weather) {

.super.onPostExecute(weather);

.if (weather.iconData != null && weather.iconData.length > 0) {

.Bitmap img = BitmapFactory.decodeByteArray(weather.iconData, 0,weather.iconData.length);

.imgView.setImageBitmap(img);

.}

.cityText.setText(weather.location.getCity() + "," +weather.location.getCountry());

.temp.setText("" + Math.round((weather.temperature.getTemp() - 275.15)));

.condDescr.setText(weather.currentCondition.getCondition() + "(" +weather.currentCondition.getDescr() + ")");

.temp.setText("" + Math.round((weather.temperature.getTemp() - 275.5)) + "°C");

.hum.setText("" + weather.currentCondition.getHumidity() + "%");

.press.setText("" + weather.currentCondition.getPressure() + " hPa");

.windSpeed.setText("" + weather.wind.getSpeed() + " mps");

.windDeg.setText("" + weather.wind.getDeg() + "°");

.}}

.private class JSONForecastWeatherTask extends AsyncTask<String, Void,WeatherForecast> {

.@Override

.protected WeatherForecast doInBackground(String... params) {String data = ( (new WeaterHttpClient()).getForecastWeatherData(params[0], params[1], paras[2]));

.WeatherForecast forecast = new WeatherForecast();

.try {

.forecast = JSONWeatherParser.getForecastWeather(data);

.System.out.println("Weather ["+forecast+"]");

.weather.iconData = ( (new WeaterHttpClient()).getImage(weather.currentCondition.getIcon()));

.} catch (JSONException e) {e.printStackTrace();

.}return forecast;}

.@Override

.protected void onPostExecute(WeatherForecast forecastWeather) {

.super.onPostExecute(forecastWeather);

.DailyForecastPageAdapter adapter = new DailForecastPageAdapter(Integer.parseInt(forecastDaysNum), getSpportFragmentManager(), forecastWeather);

.pager.setAdapter(adapter);}}}

Код интерфейса

.<LinearLayout xmlns:android="#"justify">.xmlns:tools="#"justify">3.android:layout_width="match_parent"

.android:layout_height="wrap_content"

.android:paddingBottom="@dimen/activity_vertical_margin"

.android:paddingLeft="@dimen/activity_horizontal_margin"

.android:paddingRight="@dimen/activity_horizontal_margin"

.android:paddingTop="@dimen/activity_vertical_margin"

.tools:context=".MainActivity"

.android:orientation="vertical" >

.<RelativeLayout

.android:layout_width="match_parent"

.android:layout_height="match_parent"

.android:paddingBottom="@dimen/activity_vertical_margin"

.android:paddingLeft="@dimen/activity_horizontal_margin"

.android:paddingRight="@dimen/activity_horizontal_margin"

.android:paddingTop="@dimen/activity_vertical_margin"

.tools:context=".MainActivity"

.android:layout_weight="1" >

.<TextView

.android:id="@+id/cityText"

.style="?android:attr/textAppearanceMedium"

.android:layout_width="wrap_content"

.android:layout_height="wrap_content"

.android:layout_alignParentLeft="true">

.</TextView>

.<TextView

.android:id="@+id/temp"

.style="@style/tempStyle"

.android:layout_width="wrap_content"

.android:layout_height="wrap_content"

.android:layout_below="@id/cityText"

.android:layout_centerHorizontal="true">

.</TextView>

.<TextView

.android:id="@+id/unittemp"

.android:layout_width="wrap_content"

.style="?android:attr/textAppearanceMedium"

.android:layout_height="wrap_content"

.android:layout_below="@id/cityText"

.android:layout_toRightOf="@id/temp"

.android:layout_alignBaseline="@id/temp">

.</TextView>

.<TextView

.android:id="@+id/skydesc"

.android:layout_width="wrap_content"

.style="?android:attr/textAppearanceMedium"

.android:layout_height="wrap_content"

.android:layout_below="@id/temp"

.android:layout_alignStart="@id/temp"

.android:layout_toRightOf="@id/temp">

.</TextView>

.<!-- Image weather condition -->

.<ImageView android:id="@+id/condIcon"

.android:layout_height="wrap_content"

.android:layout_width="wrap_content"

.android:layout_alignTop="@id/temp"

.android:layout_toRightOf="@id/temp"/>

.</RelativeLayout>

.<android.support.v4.view.ViewPager

.android:id="@+id/pager"

.android:layout_width="match_parent"

.android:layout_height="match_parent"

.android:layout_weight="6" >

.<android.support.v4.view.PagerTitleStrip

.android:id="@+id/pager_title_strip"

.android:layout_width="match_parent"

.android:layout_height="wrap_content"

.android:layout_gravity="top"

.android:background="#E6E6E6"

.android:paddingBottom="4dp"

.android:paddingTop="4dp"

.android:textColor="#fff" />

.</android.support.v4.view.ViewPager>

. </LinearLayout>


Введение android программа алгоритм смартфон Человеческие потребности быть всегда в курсе дел выводят информационные технологии на прямую линию по создани

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ