Одним из наиболее перспективных рекламных рынков в настоящее время является рынок мобильной рекламы. По некоторым оценкам его объём к 2011 году может возрасти до 5 миллиардов евро. Это вполне предсказуемо, ведь экран мобильного телефона является, по сути, кратчайшим путём между рекламодателем и потребителем. Немалую роль здесь играет и значительный уровень проникновения мобильной связи. А, как известно, где аудитория, там и реклама.
Мобильный телефон сегодня окончательно перестал быть лишь удобным средством общения, превратившись в полноценный мультимедийный центр. Игры, видео, музыка, встроенный фотоаппарат, выход в Интернет – современным коммуникаторам под силу уже большинство возможностей десктопов. Тандем мобильного телефона и КПК оказался весьма удачным: преодолев функцию средства связи, аппарат превратился в полноценный рабочий инструмент, с помощью которого можно просматривать электронную почту, создавать и редактировать офисные документы, искать в Интернете необходимую информацию. Рынок мобильных технологий сейчас переживал до последнего времени довольно бурный рост, поддерживаемый, в том числе, и развивающимися странами. Финансовый кризис вносит свои коррективы, но пока это тенденция ещё сохраняется.
Однако для того, чтобы использовать все преимущества мобильных устройств в полной мере, необходима быстрая и удобная операционная система. До недавнего времени на рынке мобильных платформ существовало лишь два основных продукта: Symbian OS и Windows Mobile. Два гиганта мобильной индустрии постоянно сражались за пользователей, словно не замечая вокруг конкурирующих разработок. Казалось бы – зачем изобретать что-то новое, если старое вполне всех устраивает? Оказывается, не всех. Ни чем другим столь пристальное внимание аналитиков к платформе Android от поискового гиганта Google объяснить нельзя.
Google уже поддержали многие операторы сотовой связи и производители телефонов. Такие компании, как China Mobile, KDDI Corporation, NTT DoCoMo, Sprint Nextel, T-Mobile, Telecom Italia, Telefónica, HTC, LG, Motorola, Samsung Electronics и многие другие, вошли в так называемый альянс OHA (Open Handset Alliance), инициированный Google и официально представленный 5 сентября 2007 года. 8 декабря 2008 года к нему присоединились Vodaphone, Softbank, Sony Ericsson, ASUSTek, Garmin, Huawei Technologies и Toshiba, а также некоторые софтверные компании. Альянс занимается разработками в области приложений для новой платформы, а также ее продвижением на рынке.
Сильная сторона Google Android в её открытости и новой идеологии «All apps are equal». Операционная система не предоставляет никаких привилегий предустановленным приложениям, все они могут быть заменены сторонними разработками. В остальном же пред нами очередная мобильная платформа на основе ядра Linux. SDK для разработки сторонних приложений и эмулятор были выложены в Интернете ещё задолго до выхода первого устройства. В новую ОС интегрированы практически все сервисы от Google, что делает ее идеальной для работы и серфинга в Интернете.
Для создания программ используются языки программирования семейства JAVA, что значительно ускоряет процесс разработки. В основе Google Android виртуальная Java-машина DALVIK, которая позволяет управлять политикой энергопотребления приложений и распределять нагрузку на процессор.
Стандартные программы, вошедшие в новую ОС – это почтовый и SMS клиенты, календарь, менеджер контактов, калькулятор, медиаплеер, будильник и мессенджер. Всего в Android включено порядка 80 приложений с открытым кодом. Помимо этого, в Android были интегрированы практически все сервисы от Гугла, такие как Google Maps и Google Docs. Полноценную работу этих веб-приложений обеспечивает функциональный браузер. В онлайн-магазине Android Market на сегодня доступно около 200 дополнительных программ. Однако, разработок для Android еще не так много, что пока не позволяет нам в полной мере судить о проблемах и недоработках в системе. Разработчики во всём мире уже вовсю осваивают официальный SDK, а Google старается всячески подогреть интерес к платформе различными конкурсами для девелоперов. Суммарный исходный код системы, кстати, составил 2,1 Гб. С 21 октября 2008 года он доступен по адресу http://source.android.com/
В качестве основы для среды разработки используется плагин для Eclipse «Android development tools». Разработчику доступны популярные open-source библиотеки и компоненты: libc, SSL (для шифрования), Media Framework (PacketVideo OpenCORE™, MPEG4, AAC, AMR, H.264, MP3, JPG, PNG), Surface Manager, LibWebCore (на базе WebKit), 2D SGL, 3D-библиотеки (на базе OpenGL), FreeType (шрифты). В отличие от обычных приложений Linux, программы в Android могут использовать и некоторые нестандартные API: Content Providers (обмен данными между приложениями), Resource Manager (доступ к XML, PNG, JPEG), Notification Manager (доступ к строке состояния), Activity Manager (управление активными приложениями).
В архитектуре системы ввода-вывода для хранения данных теперь используются базы (SQLite), что позволяет упросить хранение и сортировку массивов информации. Интересный шаг сделали программисты Google и для обеспечения безопасности системы: для каждого приложения в ОС выделены виртуальные области, так называемые «песочницы», которые ограничивают доступ к другим программам. В случае проникновения в систему вируса вредоносный код не сможет получить данные о звонках пользователя или повлиять на работу соседних приложений.
В организации интерфейса Andriod есть одна интересная особенность, которая может на первый взгляд показаться багом. Дело в том, что в системе отсутствует возможность закрывать приложения. То есть, здесь нет привычного крестика в правом углу, да и в меню программ отсутствует пункт «выход». На самом деле, это не баг. При сворачивании приложения его состояние сохраняется, а само приложение выгружается из оперативной памяти, освобождая ресурсы. Таким образом, программа фактически не функционирует в фоновом режиме. Поэтому в плане быстродействия Android ощутимо превосходит своих конкурентов.
22 октября Google открыла онлайн-магазин по продаже приложений для Android, который называется Android Market. Разработчики программ получают 70% прибыли от продаж, а операторы сотовой связи – оставшиеся 30. Кроме того, в ноябре 2007 года компанией был учрежден конкурс ADC (Android Developers Challenge) среди разработчиков мобильного ПО с призовым фондом в 10 миллионов долларов. Это привлекло внимание многих программистов на Java, обеспечив Android OS широким сообществом разработчиков. 50 лучших приложений конкурса получили по 25 тысяч долларов, а десятка победителей – по 275 тысяч.
Первым коммуникатором, построенным на новой платформе, стал HTC Dream с процессором Qualcomm MSM7200 с тактовой частотой 384 мегагерца. В продажу он поступил 21 октября 2008 года. Из числа остальных устройств с Android на борту, можно отметить Qigi i6 и Kogan Agora. Полномасштабный выпуск мобильных устройств на базе новой ОС стоит ожидать в 2009 году. Тем временем народные умельцы уже начали модифицировать платформу для установки на различные аппараты. Как пример – Armadillo-50, Sharp Zaurus SL-C760, Neo FreeRunner и другие. Качество адаптации в целом хорошее, однако остается нерешенным вопрос со ждущим режимом системы, что значительно сокращает время работы аппаратов.
Естественно, гигантам мобильной индустрии такое «резвое» начинание Google весьма не понравилось, и их реакция на появление Android была довольно резкой. Вице-президент компании Symbian, например, весьма плохо скрывал свое раздражение по поводу создания еще одной платформы на базе Linux, а представители Microsoft вообще не признали потенциала новой системы, заявив, что ее нельзя сравнивать с их детищем. Возможно, разработчики обеих мобильных платформ просто боятся конкуренции со стороны молодого и амбициозного проекта?
Планы Google не ограничивались исключительно рынком мобильных ОС. Компания планировала создать собственную мобильную сеть, объединив миллионы пользователей по всему миру. Пока что тестирование беспроводной сети проходит в штаб-квартире компании, но в скором времени мы должны услышать и о первых практических испытаниях. Представители Google заявили об участии в аукционе Федеральной комиссии по коммуникациям США, где будет проходить продажа частот для мобильной связи. Стоимость одной такой частоты составит 4-5 млрд. долларов. И хотя аукцион компании выиграть не удалось, Google в судебном порядке оспорил исключительное право победителя аукциона на эти частоты.
Конечно, не все так радужно, как может показаться на первый взгляд. Google Android, как и все большие проекты, не лишена недостатков. По причине базирования на Java эта ОС не может использовать все преимущества Linux. Например, из-за отсутствия по умолчанию X-сервера и некоторых графических библиотек, портирование полноценных десктопных приложений на Android станет весьма затруднительным. К тому же, поговаривают, что Google оставит за собой право удалять приложения с аппаратов пользователей, если будут нарушаться правила их использования. Про навязывание пользователю сервисов Гугла и невозможность удаления некоторых приложений тоже следует упомянуть. Это лишает пользователей обещанной «полной свободы» и просто раздражает. Отсутствие совместимости с Java-приложениями, написанными для обычных телефонов, также не воодушевляет – под Android такие приложения придётся переписывать заново или пользоваться средствами автоматической адаптации. Ну, и, наконец, главный недостаток – невозможность установки приложений на карту памяти. Это весьма существенно для телефонов, обладающих маленьким объемом встроенной памяти.
Обладая целым рядом преимуществ и несколькими существенными недостатками, Google Android может стать одной из самых распространённых мобильных ОС в мире. Пока что рано судить о популярности данной платформы, однако вниманием пользователей и аналитиков она явно не обделена. В случае успеха на рынке смартфонов, Google планирует обратить свой взор и на рынок телефонов с закрытыми программными оболочками. Следует ожидать, что в ближайшие несколько лет компания потеснит монополистов мировой мобильной связи.
пятница, 17 декабря 2010 г.
В ОС Android обнаружена уязвимость, которая открывает доступ к файлам на карте памяти.
Очень интересную уязвимость в ОС Android обнаружили эксперты в области информационной безопасности во главе с Томасом Кэнноном. Уязвимость позволяет злоумышленникам получать доступ к файлам хранящимся на карте памяти. В первую очередь проблема связанна с веб- браузером, начиная с того что стандартный браузер Android не спрашивает разрешения на загрузку файлов а сохраняет его автоматически, после этого браузер сам может запустить этот файл который ко всему прочему может являться небезопасным. Поскольку код исполняется непосредственно внутри ОС, он позволяет при помощи Root открывать доступ к файлам. Данной проблеме подвержены все версии ОС Android включая и самую последнюю на сегодняшний день Android 2.2 Froyo.
Кэннон и его команда сразу оповестили разработчиков о найденной уязвимости, удивительно но специалисты Google отреагировали мгновенно, через 20 минут пришло письмо в котором было сказано что патч находится уже в стадии тестирования и будет выпущен сразу после анонса Android Gingerbread.
Основной сложностью является лишь то что сами операторы делают выпуск не регулярно и неохотно. В результате чего может потребоваться много времени для устранения уязвимости на всех смартфонах с ОС Android. Но есть и способы благодаря которым пользователи сами могут обезопасить себя, во первых следить за загрузками браузера ( уведомления появляются внизу экрана), но лучший метод это использование альтернативного браузера, благо на рынке ПО их сейчас предостаточно, это конечно не даст 100% но изрядно увеличит шансы что злоумышленники не завладеют важной информацией. Есть ещё один способ это отключение JavaScrpit в настройках браузера, но вряд ли это доставит удовольствие пользователю.
Кэннон и его команда сразу оповестили разработчиков о найденной уязвимости, удивительно но специалисты Google отреагировали мгновенно, через 20 минут пришло письмо в котором было сказано что патч находится уже в стадии тестирования и будет выпущен сразу после анонса Android Gingerbread.
Основной сложностью является лишь то что сами операторы делают выпуск не регулярно и неохотно. В результате чего может потребоваться много времени для устранения уязвимости на всех смартфонах с ОС Android. Но есть и способы благодаря которым пользователи сами могут обезопасить себя, во первых следить за загрузками браузера ( уведомления появляются внизу экрана), но лучший метод это использование альтернативного браузера, благо на рынке ПО их сейчас предостаточно, это конечно не даст 100% но изрядно увеличит шансы что злоумышленники не завладеют важной информацией. Есть ещё один способ это отключение JavaScrpit в настройках браузера, но вряд ли это доставит удовольствие пользователю.
Android 2.3 Platform and Updated SDK Tools
Android 2.3 Platform and Updated SDK Tools
Posted by Xavier Ducrohet, Android SDK Tech Lead on 06 December 2010 at 8:00 AM
Today we're announcing a new version of the Android platform — Android 2.3 (Gingerbread). It includes many new platform technologies and APIs to help developers create great apps. Some of the highlights include:
Enhancements for game development: To improve overall responsiveness, we’ve added a new concurrent garbage collector and optimized the platform’s overall event handling. We’ve also given developers native access to more parts of the system by exposing a broad set of native APIs. From native code, applications can now access input and sensor events, EGL/OpenGL ES, OpenSL ES, and assets, as well a new framework for managing lifecycle and windows. For precise motion processing, developers can use several new sensor types, including gyroscope.
Rich multimedia: To provide a great multimedia environment for games and other applications, we’ve added support for the new video formats VP8 and WebM, as well as support for AAC and AMR-wideband encoding. The platform also provides new audio effects such as reverb, equalization, headphone virtualization, and bass boost.
New forms of communication: The platform now includes support for front-facing camera, SIP/VOIP, and Near Field Communications (NFC), to let developers include new capabilities in their applications.
For a complete overview of what’s new in the platform, see the Android 2.3 Platform Highlights.
Alongside the new platform, we are releasing updates to the SDK Tools (r8), NDK, and ADT Plugin for Eclipse (8.0.0). New features include:
Simplified debug builds: Developers can easily generate debug packages without having to manually configure the application’s manifest, making workflow more efficient.
Integrated ProGuard support: ProGuard is now packaged with the SDK Tools. Developers can now obfuscate their code as an integrated part of a release build.
HierarchyViewer improvements: The HierarchyViewer tool includes an updated UI and is now accessible directly from the ADT Plugin.
Preview of new UI Builder: An early release of a new visual layout editor lets developers create layouts in ADT by dragging and dropping UI elements from contextual menus. It’s a work in progress and we intend to iterate quickly on it.
To get started developing or testing applications on Android 2.3, visit the Android Developers site for information about the Android 2.3 platform, the SDK Tools, the ADT Plugin and the new NDK.
Check out the video below to learn more about the new developer features in Android 2.3.
Posted by Xavier Ducrohet, Android SDK Tech Lead on 06 December 2010 at 8:00 AM
Today we're announcing a new version of the Android platform — Android 2.3 (Gingerbread). It includes many new platform technologies and APIs to help developers create great apps. Some of the highlights include:
Enhancements for game development: To improve overall responsiveness, we’ve added a new concurrent garbage collector and optimized the platform’s overall event handling. We’ve also given developers native access to more parts of the system by exposing a broad set of native APIs. From native code, applications can now access input and sensor events, EGL/OpenGL ES, OpenSL ES, and assets, as well a new framework for managing lifecycle and windows. For precise motion processing, developers can use several new sensor types, including gyroscope.
Rich multimedia: To provide a great multimedia environment for games and other applications, we’ve added support for the new video formats VP8 and WebM, as well as support for AAC and AMR-wideband encoding. The platform also provides new audio effects such as reverb, equalization, headphone virtualization, and bass boost.
New forms of communication: The platform now includes support for front-facing camera, SIP/VOIP, and Near Field Communications (NFC), to let developers include new capabilities in their applications.
For a complete overview of what’s new in the platform, see the Android 2.3 Platform Highlights.
Alongside the new platform, we are releasing updates to the SDK Tools (r8), NDK, and ADT Plugin for Eclipse (8.0.0). New features include:
Simplified debug builds: Developers can easily generate debug packages without having to manually configure the application’s manifest, making workflow more efficient.
Integrated ProGuard support: ProGuard is now packaged with the SDK Tools. Developers can now obfuscate their code as an integrated part of a release build.
HierarchyViewer improvements: The HierarchyViewer tool includes an updated UI and is now accessible directly from the ADT Plugin.
Preview of new UI Builder: An early release of a new visual layout editor lets developers create layouts in ADT by dragging and dropping UI elements from contextual menus. It’s a work in progress and we intend to iterate quickly on it.
To get started developing or testing applications on Android 2.3, visit the Android Developers site for information about the Android 2.3 platform, the SDK Tools, the ADT Plugin and the new NDK.
Check out the video below to learn more about the new developer features in Android 2.3.
Android — операционная система для мобильных телефонов
Android — операционная система для мобильных телефонов, планшетных компьютеров и смартбуков, основанная на ядре Linux[2]. Изначально разрабатывалась компанией Android Inc., которую затем купила Google. Впоследствии, Google инициировала создание Open Handset Alliance (OHA), которая сейчас и занимается поддержкой и дальнейшим развитием платформы. Android позволяет создавать Java-приложения, управляющие устройством через разработанные Google библиотеки. Также есть возможность писать приложения на Си и других языках программирования с помощью Android Native Development Kit.
Пишем своё первое приложение на Android
Предисловие
Цель данного поста — с одной стороны поделиться своим успешным опытом старта разработки приложений на платформе Android и с другой стороны поспособствовать развитию рынка софта для этой замечательной и бурно растущей платформы за счёт (без ложной скромности скажу) возможно Вас, прочитавших данный пост. В сети, конечно, можно найти материалы на тему разработки приложения «чуть сложнее, чем helloworld», но как правило они разрозненные и в них не описываются различные мелкие подводные камешки. В данном посте мы рассмотрим полный цикл разработки приложения, начиная с чистого компьютера до готового apk-файла. Под катом скрины.
Подготовка к разработке
Для того, чтобы подготовиться к разработке не требуется каких-то особых действий и манипуляций. Буду описывать пошагово, что нужно сделать. У меня стоит Windows XP, поэтому и всё нижесказанное следует относить именно к данной ОС, хотя действия без каких-то сильных изменений можно применить и к другим ОС семейства Windows и даже Linux.
Установка среды разработки Eclipse
Установка ADT плагина к Eclipse
Установка JDK и JRE
Установка Android SDK
Установка среды разработки Eclipse
Тут всё просто. Идём в раздел Downloads на официальном сайте и качаем версию Classic. Далее просто распакуйте архив, куда вам хочется, я же решил это сделать в почетную директорию C:\Eclipse
Установка ADT плагина к Eclipse
Запускаем Eclipse, и открываем диалог установки плагина через меню Help → Install new software. В поле Work with вписываем адрес загрузки плагина dl-ssl.google.com/android/eclipse/ (если не получилось, то плагин можно скачать и установить вручную по ссылке http://developer.android.com/sdk/eclipse-adt.html), далее в таблице ниже появится Developer Tools, отмечаем его и идем далее.
После успешной установки, можно перезапустить среду Eclipse.
Установка среды для Java: JDK и JRE
Если у вас еще не установлены Java Development Kit (JDK) и Java Runtime Environment (JRE), то их необходимо установить. Сделать это можно на сайте Oracle. Скачайте и установите JDK и JRE.
Установка Android SDK
Дело осталось за малым — это скачать и установить свежий Android SDK. Это делается на сайте для Android разработчиков. Я лично установил SDK опять-таки в почётную директорию C:\Android. После этого необходимо добавить платформы и прочие дополнительные элементы SDK. Я добавил все доступные версии, так как планирую делать приложения и для ранних платформ, а также USB-драйвер и примеры приложений.
Подготовка к разработке завершена. Теперь следующий этап — создание приложения.
Создание Android-приложения
Перед тем как создать своё первое приложение, можно создать виртуальное Android-устройство, чтобы быстро тестировать на нём свой свеженаписанный софт. Вначале я хочу сказать вам несколько слов по поводу Android Virtual Device (AVD). Это виртуальный смартфон с ОС Android, на котором вы с легкостью сможете запускать созданную вами программу. Как можно заметить, преимущество Android Virtual Device состоит в том, что наглядно можно увидеть как будет работать Ваша программа на разных смартфонах с Android, а не покупать весь модельный ряд и тестировать приложение на каждом из них.
Приступим к созданию виртуального устройства Android. Следуем в меню по пути Window → Android SDK and AVD Manager.
Выбираем New в правой части окна, в появившемся окне вписываем имя виртуального устройства, платформу (допустим Android 2.1), размер карты памяти (допустим 512 Mb), тип дисплея (допустим HVGA). Затем жмем внизу на кнопку Create AVD.
Теперь создадим проект. Для этого идем по пути в меню File → New → Other, в появившемся списке Android → Android Project.
В качестве примера расскажу о разработке одной моей простейшей программы UfaTermometr, показывающей текущую температуру с датчиков, расположенных на одном из объектов местной энерго-компании.
После создания проекта, слева вы увидите дерево директорий. Перво-наперво загрузим свою иконку приложения, а точнее 3 иконки под разные варианты. В папку drawable-hdpi грузим png-картинку с прозрачным фоном размером в 72x72, в drawable-mdpi соответственно 48x48 и в drawable-ldpi самую маленькую размером 36x36. Делать это можно простым перетаскиванием файлов прямо на дерево. Следующим шагом будут элементы управления. В моей программе было необходимо всего три элемента интерфейса: ImageView (просто картинка логотип приложения), Button (обновить значение температуры) и TextView (вывод значения температуры). Все эти элементы управления нужно описать в специальном xml-файле. В дереве он расположен по адресу res → layout → main.xml. Во-многом разметка элементов управления сходна с вёрсткой веб-страниц, тут есть и padding, и margin, и аналог align. Код main.xml моего приложения:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ImageView android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:src="@drawable/droid"
android:layout_gravity="center_horizontal|center"
android:layout_margin="0px"
/>
<Button
android:id="@+id/refrbutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:layout_gravity="center_horizontal|center"
android:textSize="30px"
android:padding="20px"
android:layout_marginTop="10dip"
android:text="Обновить"
/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="..."
android:textSize="100dip"
android:gravity="center_horizontal"
android:id="@+id/temper"
android:textColor="#EEE3C4"
/>
</LinearLayout>
* This source code was highlighted with Source Code Highlighter.
Подробно останавливаться на разметке элементов управления не буду, так как это всё достаточно подробно описано в мануале и вообще интуитивно понятно, особенно тому, кто имел дело с html/css-вёрсткой и/или разработкой в какой-либо визуальной среде (например, Delphi). Единственное, обратите внимание как я загрузил произвольное изображение в ImageView. В поле src указывается путь, начинающийся с символа @ и далее указываете адрес по дереву. В папке res я заблаговременно создал подпапку drawable и «закинул» туда логотип, а затем просто указал ImageView путь. Легко? По мне так очень.
Непосредственно код приложения располагается по пути src → «ваше название package» → «название приложения».java.
По-умолчанию создается «болванка» главного класса и от неё уже дальше можно плясать. Не буду останавливаться на тонкостях такого простого кода как у меня в примере, но поясню, что логика работы объясняется тремя простыми шагами:
Загрузить HTML-страницу со значениями температуры
С помощью регулярок «вытащить» температуру
Показать в TextView значение температуры
Заметьте, что когда приложению требуются какие-то системные разрешения, нужно указывать их в манифесте AndroidManifest.xml. В данном конкретном случае мы используем подключение к Интернет, соответственно добавляем строчку <uses-permission android:name=«android.permission.INTERNET»/> в указанный выше xml-файл.
Собственно сам код, реализующий указанную выше логику работы:
package app.test.ufatermometr;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.widget.Button;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.regex.*;
public class UfaTermometr extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final Button button = (Button) findViewById(R.id.refrbutton);
button.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) // клик на кнопку
{
RefreshTemper();
}
});
RefreshTemper(); // при запуске грузим температуру сразу
};
//----------------------------------------------------------------
public String GetTemper(String urlsite) // фукция загрузки температуры
{
String matchtemper = "";
try
{
// загрузка страницы
URL url = new URL(urlsite);
URLConnection conn = url.openConnection();
InputStreamReader rd = new InputStreamReader(conn.getInputStream());
StringBuilder allpage = new StringBuilder();
int n = 0;
char[] buffer = new char[40000];
while (n >= 0)
{
n = rd.read(buffer, 0, buffer.length);
if (n > 0)
{
allpage.append(buffer, 0, n);
}
}
// работаем с регулярками
final Pattern pattern = Pattern.compile
("<span style=\"color:#[a-zA-Z0-9]+\">[^-+0]+([-+0-9]+)[^<]+</span>[^(а-яА-ЯёЁa-zA-Z0-9)]+([а-яА-ЯёЁa-zA-Z ]+)");
Matcher matcher = pattern.matcher(allpage.toString());
if (matcher.find())
{
matchtemper = matcher.group(1);
}
return matchtemper;
}
catch (Exception e)
{
}
return matchtemper;
};
//----------------------------------------------------------------
public void RefreshTemper()
{
final TextView tTemper = (TextView) findViewById(R.id.temper);
String bashtemp = "";
bashtemp = GetTemper("http://www.bashkirenergo.ru/weather/ufa/index.asp");
tTemper.setText(bashtemp.concat("°")); // отображение температуры
};
}
* This source code was highlighted with Source Code Highlighter.
После того как приложение написано, можно уже его отлаживать и тестировать.
Запуск и тестирование приложения
Вспоминаем про нашу виртуальную машину и запускаем привычной кнопкой или менюшкой Run → Run
Вот такую картину мы можем затем созерцать:
Теперь, если вы хотите поделиться приложением, то нужно собрать apk-файл. Для этого воспользуемся меню File → Export и в списке Android → Export Android application. Далее выберите проект, затем создайте хранилище ключей keystore и ключ key, для этого нужно будет заполнить несколько полей с всякого рода справочной информацией. Получившийся apk-файл можно распространять и даже выложить в Android Market, но для этого придется зарегистрироваться и уплатить $25, что в общем-то немного, особенно для стоящего проекта. Но регистрация в Маркете, пожалуй, тема отдельной статьи.
Заключение
В заключении хотелось бы сказать, что безусловно разработка приложений для Android приятна, достаточно проста и интересна. Конечно, мы рассмотрели лишь верхушку айсберга, но я надеюсь, что в умах тех из вас, кто раньше не пробовал делать ничего подобного «загорелась лампочка» и вполне возможно, что когда-то вашим приложением будут пользоваться миллионы.
Благодарности, источники, ссылки
Хочу отблагодарить компанию Башкирэнерго за их сайт с онлайн-температурой с датчиков
В посте использованы материалы:
www.ibm.com
www.itblog.name
Википедия
APK-файл приложения
UPD: Устранение возможных ошибок
Defite:
1. Ошибка
ERROR: Unable to open class file C:\workspace\Test\gen\com\example\test\R.java: No such file or directory
решается очисткой проекта через меню Project → Clean или перезапуском Eclipse.
2. Когда возникает ошибка
emulator: ERROR: no search paths found in this AVD's configuration. Weird, the AVD's config.ini file is malformed. Try re-creating it
— это следствие того, что у Вас кириллица в имени пользователя. Решается: идем в Компьютер → Свойства системы → Дополнительные параметры системы → Переменные среды. Создаем новую переменную с именем ANDROID_SDK_HOME и значением – путем, где находится папка AVD (например, C:\Android\). Создаем, далее ищем там же переменную Path, открываем и в поле значений через точку с запятой добавляем путь до папки tools Android SDK (например, C:\Android\tools). Сохраняем. Запускаем Eclipse, запускаем программу.
Цель данного поста — с одной стороны поделиться своим успешным опытом старта разработки приложений на платформе Android и с другой стороны поспособствовать развитию рынка софта для этой замечательной и бурно растущей платформы за счёт (без ложной скромности скажу) возможно Вас, прочитавших данный пост. В сети, конечно, можно найти материалы на тему разработки приложения «чуть сложнее, чем helloworld», но как правило они разрозненные и в них не описываются различные мелкие подводные камешки. В данном посте мы рассмотрим полный цикл разработки приложения, начиная с чистого компьютера до готового apk-файла. Под катом скрины.
Подготовка к разработке
Для того, чтобы подготовиться к разработке не требуется каких-то особых действий и манипуляций. Буду описывать пошагово, что нужно сделать. У меня стоит Windows XP, поэтому и всё нижесказанное следует относить именно к данной ОС, хотя действия без каких-то сильных изменений можно применить и к другим ОС семейства Windows и даже Linux.
Установка среды разработки Eclipse
Установка ADT плагина к Eclipse
Установка JDK и JRE
Установка Android SDK
Установка среды разработки Eclipse
Тут всё просто. Идём в раздел Downloads на официальном сайте и качаем версию Classic. Далее просто распакуйте архив, куда вам хочется, я же решил это сделать в почетную директорию C:\Eclipse
Установка ADT плагина к Eclipse
Запускаем Eclipse, и открываем диалог установки плагина через меню Help → Install new software. В поле Work with вписываем адрес загрузки плагина dl-ssl.google.com/android/eclipse/ (если не получилось, то плагин можно скачать и установить вручную по ссылке http://developer.android.com/sdk/eclipse-adt.html), далее в таблице ниже появится Developer Tools, отмечаем его и идем далее.
После успешной установки, можно перезапустить среду Eclipse.
Установка среды для Java: JDK и JRE
Если у вас еще не установлены Java Development Kit (JDK) и Java Runtime Environment (JRE), то их необходимо установить. Сделать это можно на сайте Oracle. Скачайте и установите JDK и JRE.
Установка Android SDK
Дело осталось за малым — это скачать и установить свежий Android SDK. Это делается на сайте для Android разработчиков. Я лично установил SDK опять-таки в почётную директорию C:\Android. После этого необходимо добавить платформы и прочие дополнительные элементы SDK. Я добавил все доступные версии, так как планирую делать приложения и для ранних платформ, а также USB-драйвер и примеры приложений.
Подготовка к разработке завершена. Теперь следующий этап — создание приложения.
Создание Android-приложения
Перед тем как создать своё первое приложение, можно создать виртуальное Android-устройство, чтобы быстро тестировать на нём свой свеженаписанный софт. Вначале я хочу сказать вам несколько слов по поводу Android Virtual Device (AVD). Это виртуальный смартфон с ОС Android, на котором вы с легкостью сможете запускать созданную вами программу. Как можно заметить, преимущество Android Virtual Device состоит в том, что наглядно можно увидеть как будет работать Ваша программа на разных смартфонах с Android, а не покупать весь модельный ряд и тестировать приложение на каждом из них.
Приступим к созданию виртуального устройства Android. Следуем в меню по пути Window → Android SDK and AVD Manager.
Выбираем New в правой части окна, в появившемся окне вписываем имя виртуального устройства, платформу (допустим Android 2.1), размер карты памяти (допустим 512 Mb), тип дисплея (допустим HVGA). Затем жмем внизу на кнопку Create AVD.
Теперь создадим проект. Для этого идем по пути в меню File → New → Other, в появившемся списке Android → Android Project.
В качестве примера расскажу о разработке одной моей простейшей программы UfaTermometr, показывающей текущую температуру с датчиков, расположенных на одном из объектов местной энерго-компании.
После создания проекта, слева вы увидите дерево директорий. Перво-наперво загрузим свою иконку приложения, а точнее 3 иконки под разные варианты. В папку drawable-hdpi грузим png-картинку с прозрачным фоном размером в 72x72, в drawable-mdpi соответственно 48x48 и в drawable-ldpi самую маленькую размером 36x36. Делать это можно простым перетаскиванием файлов прямо на дерево. Следующим шагом будут элементы управления. В моей программе было необходимо всего три элемента интерфейса: ImageView (просто картинка логотип приложения), Button (обновить значение температуры) и TextView (вывод значения температуры). Все эти элементы управления нужно описать в специальном xml-файле. В дереве он расположен по адресу res → layout → main.xml. Во-многом разметка элементов управления сходна с вёрсткой веб-страниц, тут есть и padding, и margin, и аналог align. Код main.xml моего приложения:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ImageView android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:src="@drawable/droid"
android:layout_gravity="center_horizontal|center"
android:layout_margin="0px"
/>
<Button
android:id="@+id/refrbutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:layout_gravity="center_horizontal|center"
android:textSize="30px"
android:padding="20px"
android:layout_marginTop="10dip"
android:text="Обновить"
/>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="..."
android:textSize="100dip"
android:gravity="center_horizontal"
android:id="@+id/temper"
android:textColor="#EEE3C4"
/>
</LinearLayout>
* This source code was highlighted with Source Code Highlighter.
Подробно останавливаться на разметке элементов управления не буду, так как это всё достаточно подробно описано в мануале и вообще интуитивно понятно, особенно тому, кто имел дело с html/css-вёрсткой и/или разработкой в какой-либо визуальной среде (например, Delphi). Единственное, обратите внимание как я загрузил произвольное изображение в ImageView. В поле src указывается путь, начинающийся с символа @ и далее указываете адрес по дереву. В папке res я заблаговременно создал подпапку drawable и «закинул» туда логотип, а затем просто указал ImageView путь. Легко? По мне так очень.
Непосредственно код приложения располагается по пути src → «ваше название package» → «название приложения».java.
По-умолчанию создается «болванка» главного класса и от неё уже дальше можно плясать. Не буду останавливаться на тонкостях такого простого кода как у меня в примере, но поясню, что логика работы объясняется тремя простыми шагами:
Загрузить HTML-страницу со значениями температуры
С помощью регулярок «вытащить» температуру
Показать в TextView значение температуры
Заметьте, что когда приложению требуются какие-то системные разрешения, нужно указывать их в манифесте AndroidManifest.xml. В данном конкретном случае мы используем подключение к Интернет, соответственно добавляем строчку <uses-permission android:name=«android.permission.INTERNET»/> в указанный выше xml-файл.
Собственно сам код, реализующий указанную выше логику работы:
package app.test.ufatermometr;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.widget.Button;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.regex.*;
public class UfaTermometr extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final Button button = (Button) findViewById(R.id.refrbutton);
button.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) // клик на кнопку
{
RefreshTemper();
}
});
RefreshTemper(); // при запуске грузим температуру сразу
};
//----------------------------------------------------------------
public String GetTemper(String urlsite) // фукция загрузки температуры
{
String matchtemper = "";
try
{
// загрузка страницы
URL url = new URL(urlsite);
URLConnection conn = url.openConnection();
InputStreamReader rd = new InputStreamReader(conn.getInputStream());
StringBuilder allpage = new StringBuilder();
int n = 0;
char[] buffer = new char[40000];
while (n >= 0)
{
n = rd.read(buffer, 0, buffer.length);
if (n > 0)
{
allpage.append(buffer, 0, n);
}
}
// работаем с регулярками
final Pattern pattern = Pattern.compile
("<span style=\"color:#[a-zA-Z0-9]+\">[^-+0]+([-+0-9]+)[^<]+</span>[^(а-яА-ЯёЁa-zA-Z0-9)]+([а-яА-ЯёЁa-zA-Z ]+)");
Matcher matcher = pattern.matcher(allpage.toString());
if (matcher.find())
{
matchtemper = matcher.group(1);
}
return matchtemper;
}
catch (Exception e)
{
}
return matchtemper;
};
//----------------------------------------------------------------
public void RefreshTemper()
{
final TextView tTemper = (TextView) findViewById(R.id.temper);
String bashtemp = "";
bashtemp = GetTemper("http://www.bashkirenergo.ru/weather/ufa/index.asp");
tTemper.setText(bashtemp.concat("°")); // отображение температуры
};
}
* This source code was highlighted with Source Code Highlighter.
После того как приложение написано, можно уже его отлаживать и тестировать.
Запуск и тестирование приложения
Вспоминаем про нашу виртуальную машину и запускаем привычной кнопкой или менюшкой Run → Run
Вот такую картину мы можем затем созерцать:
Теперь, если вы хотите поделиться приложением, то нужно собрать apk-файл. Для этого воспользуемся меню File → Export и в списке Android → Export Android application. Далее выберите проект, затем создайте хранилище ключей keystore и ключ key, для этого нужно будет заполнить несколько полей с всякого рода справочной информацией. Получившийся apk-файл можно распространять и даже выложить в Android Market, но для этого придется зарегистрироваться и уплатить $25, что в общем-то немного, особенно для стоящего проекта. Но регистрация в Маркете, пожалуй, тема отдельной статьи.
Заключение
В заключении хотелось бы сказать, что безусловно разработка приложений для Android приятна, достаточно проста и интересна. Конечно, мы рассмотрели лишь верхушку айсберга, но я надеюсь, что в умах тех из вас, кто раньше не пробовал делать ничего подобного «загорелась лампочка» и вполне возможно, что когда-то вашим приложением будут пользоваться миллионы.
Благодарности, источники, ссылки
Хочу отблагодарить компанию Башкирэнерго за их сайт с онлайн-температурой с датчиков
В посте использованы материалы:
www.ibm.com
www.itblog.name
Википедия
APK-файл приложения
UPD: Устранение возможных ошибок
Defite:
1. Ошибка
ERROR: Unable to open class file C:\workspace\Test\gen\com\example\test\R.java: No such file or directory
решается очисткой проекта через меню Project → Clean или перезапуском Eclipse.
2. Когда возникает ошибка
emulator: ERROR: no search paths found in this AVD's configuration. Weird, the AVD's config.ini file is malformed. Try re-creating it
— это следствие того, что у Вас кириллица в имени пользователя. Решается: идем в Компьютер → Свойства системы → Дополнительные параметры системы → Переменные среды. Создаем новую переменную с именем ANDROID_SDK_HOME и значением – путем, где находится папка AVD (например, C:\Android\). Создаем, далее ищем там же переменную Path, открываем и в поле значений через точку с запятой добавляем путь до папки tools Android SDK (например, C:\Android\tools). Сохраняем. Запускаем Eclipse, запускаем программу.
Android планшет от МТС поступил в продажу
Android планшет от МТС поступил в продажу
Как и ожидалось, в декабре в продажу поступил планшет от МТС представленный летом на Петербургском экономическом форуме. Это всё тот же о Huawei SmaKit S7.
В спецификациях ничего не изменилось:
ОС: Android 2.1 с поддержкой магазина приложений Android Market
Процессор: Qualcomm Snapdragon MSM8250 1ГГц
Экран: 7 дюймов с разрешением 800 на 480
Интерфейсы: 3G(не залочен), Wi-Fi
Память: 4,5 Гб + microSD до 16 гигабайт.
Возможность играть видео 720p, док с HDMI и 2-мя USB. (Неизвестно есть ли док в комплекте)
Устройство поставляется с предустановленным набором приложений МТС, с помощью которых можно будет управлять мобильным счетом, смотреть ТВ-программы и другие.
В ближайшее время в розничной сети МТС появятся еще две новые модели планшетных компьютеров – Odeon TPC-10 A (на базе OC Windows) и ViewSonic ViewPAD 7” (на базе OC Android). В начале 2011 года МТС планирует выпустить на рынок новые модели брендированных планшетных компьютеров.
Цена 13990 рублей, непонятно почему, но цены везде по разному написаны. На сайте написано 14 490 рублей.
Завтра Билайн представит свой планшет, который называется М2. Пока известно только о экране 7,2 дюйма.
Подписаться на:
Комментарии (Atom)