- Программирование под Android для начинающих. Часть 1
- Вспоминаем Android 1.0: первые шаги зеленого робота.
- Android 1.0: знакомый, но новый опыт
- Реальность и перспективы рынка IT‑профессий
- Субботний кофе №181
- Полный бак №16. Тест Audi Q8
- Ярмарка современного искусства Art Russia 2021. Технологии и не только
- «Для этого есть приложение» – а что было до того?
- Закладывая основы для будущего Android
- Пишем своё первое приложение на Android
- Предисловие
- Подготовка к разработке
- Создание Android-приложения
- Запуск и тестирование приложения
- Заключение
- UPD: Устранение возможных ошибок
Программирование под Android для начинающих. Часть 1
Здравствуйте. Сегодня на глаза попался пост о курсе программирования под Android на сайте Linux Foundation, а вместе с ним — и немало комментариев о том, что хотелось бы видеть и перевод этих уроков. Поскольку я сейчас, после четырех лет разработки под микроконтроллеры, начал изучать и программирование для мобильных устройств, то параллельно решил сделать перевод первой части урока.
Программирование под Android для начинающих. Часть 1
Смартфоны и планшеты на Android все чаше встречаются в наших сумках и карманах, и программирование под Android также становится все популярнее. Это отличная платформа для разработки — API прекрасно документирован и прост в использовании, да и просто интересно создать что-то, что вы cможете запустить на своем смартфоне. Изначально вы можете обойтись и без него, создав и протестировав код с помощью эмулятора на вашем Linux ПК. В первой из двух частей этого введения объясняется как создать простое приложение с таймером, а также даются начальные сведения о Android API. Курс подразумевает наличие начальных представлений о Java, XML и технологиях программирования, но тем не менее не стесняйтесь попробовать даже если вы имеете об этом очень смутное представление.
Начало работы и среда разработки
Немного о версиях: последней версией Android является 4.2 (Jelly Bean), но, как можно выдеть по этой диаграмме, она еще недостаточно распространена. Лучше всего начинать разработку под одну из версий: 4.0 (Ice Cream Sandwich) или 2.3 (Gingerbeard), особенно с учетом того, что версии Android поддерживают обратную совместимость (т.е. ваш код для версии 2.3 будет работать и на 4.2), а приложения, разработанные для более поздней версии, не всегда будут работать и на старой. Приведенный здесь код должен работать на версиях 4.0 и 2.3.
Простейший способ получить среду разработки — установить Android Bundle, который можно скачать здесь. Также вам понадобится JDK 6 (не только JRE). Не забудьте что Android не совместим с gcj. Если вы уже используете Eclipse или другую IDE, то вы можете попробовать настроить ее под Android. Как это сделать — описано здесь. Теперь создайте проект под именем Countdown с помощью Eclipse, или из командной строки. Я установил в настройках BuildSDK 4.0.3 и minimum SDK 2.2, и (в Eclipse) использовал шаблон BlankActivity.
Мой первый проект под Android: интерфейс
Первой нашей программой под Android будет таймер, показывающий обратный отсчет от 10 секунд после нажатия кнопки. Прежде чем писать код, нужно создать интерфейс — то, что пользователь увидит, запустив наше приложение. Нужно открыть res/layout/activity_countdown.xml и создать XML шаблон — с помощью редактора Eclipse или текстового/XML редактора ввести следующее:
Обратите внимание на string/start и string/__00_30. Их значения будут расположены в res/values/strings.xml:
Это общепринятый способ обращения к ресурсам в Android: лучше использовать ссылки на строковые переменные, чем жестко заданные строки.
Мой первый проект под Android: код
Теперь откроем в редакторе файл CountdownActivity.java — и мы готовы писать код нашего приложения. Вы должны увидеть автоматически сгенерированную «заглушку» метода onCreate(). Он всегда вызывается как только создается объект Activity, и в него вы можете поместить какие-либо функции, которые должны выполняться при запуске приложения. (Eclipse также может создать пустой метод onCreateOptionsMenu(), но мы пока не будем обращать на него внимания). Введите следующий код:
Вы видите как просто оказалось создать наш первый проект: Android API включает в себя CountDownTimer, который мы можем использовать. Мы объявили его и поле отображения обратного отсчета как закрытые (private) свойства класса Activity. В методе onCreate() мы использовали метод setContentView, чтобы подключить наш XML-шаблон. Такой R.foo.bar синтаксис — это стандартный способ обращения к XML-ресурсам в Android, и мы встретимся с ним еще много раз.
findViewById — это еще один метод, который вы будете часто использовать. Здесь он возвращает ссылки на поле вывода таймера и кнопку Start, описанные в XML-шаблоне. Для кнопки, чтобы мы могли обработать ее нажатие, должен быть задан «перехватчик» OnClickListener, и его метод onClick(). Здесь он просто вызывает метод showTimer() c заданным числом миллисекунд (сейчас жестко заданным в коде).
Итак, что делает showTimer():
Класс CountDownTimer делает за нас почти всю работу, что очень приятно. В начале мы проверяем, существует ли уже таймер, и, если он есть, то сбрасываем его. Далее мы создаем новый таймер с заданным числом миллисекунд для обратного отсчета (из параметра метода showTimer()) и с заданным числом миллисекунд между интервалами отсчета. По истечении времени между интервалами вызывается метод onTick().
CountDownTimer — абстрактный класс, и методы __onTick() и __onFinish() должны быть реализованы в его подклассе. Мы переопределяем метод onTick(), уменьшающий выводимое число на единицу по истечении каждого интервала, и метод onFinish(), выводящий на дисплей сообщение о окончании обратного отсчета. Потом start() запускает таймер.
С помощью команды «Run» в Eclipse вы можете запустить созданное приложение, при этом будет автоматически запущен эмулятор Android. Посмотрите документацию по Android если вы хотите узнать больше о настройке эмулятора, или о запуске приложений из командной строки.
Поздравляем, вы только что создали свое первое приложение под Android. Во второй части этого введения мы более подробно рассмотрим структуру Android-приложения, и сделаем некоторые улучшения нашей программы: ввод времени обратного отсчета, кнопку Stop и меню. Также мы запустим его на реальном устройстве, а не на эмуляторе.
Более подробную информацию вы можете найти в разделе Android Development Training сайта The Linux Foundation’s Linux training website.
Источник
Вспоминаем Android 1.0: первые шаги зеленого робота.
Нью Йорк, 23 сентября 2008 года, вторник. Руководители HTC, Google, T-Mobile и Deutsche Telekom выходят на сцену, чтобы представить Android 1.0, совершенно новую мобильную операционную систему, а также первый смартфон, который на ней работает, HTC Dream (он же G1 от T-Mobile).
Представители компаний долго говорили о том, как была открыта новая платформа, и делали упор на то, чтобы побудить сторонних разработчиков создавать приложения для Android. По их словам, они хотели «предоставить пользователям множество новых устройств, приложений и сервисов, чтобы люди могли пользоваться мобильным интернетом по всему миру».
Руководители Google Ларри Пейдж и Сергей Брин появились перед публикой на роликах. Брин, сам себя характеризующий как гика, продемонстрировал первое приложение, которое он написал для Android, оно подсчитывало время, которое G1, будучи подброшенным, проводил в воздухе. Эти двое были явно влюблены в новую платформу и взахлеб рассказывали о ее потенциале.
В тот день сочетание аппаратной и программной составляющей в новом продукте заложило основу для того Android, которым мы пользуемся сейчас.
Но каким был этот Android 1.0? Какими функциями обладал? Каких фишек ему не хватало? Платформа была на удивление полноценной и в то же время незавершенной. Давайте в честь недавней годовщины вспомним, какими были первые шаги Android.
Android 1.0: знакомый, но новый опыт
Реальность и перспективы рынка IT‑профессий
Какие профессии наиболее популярны и высокооплачиваемы?
Субботний кофе №181
Налейте чашку бодрящего субботнего кофе и познакомьтесь с новостями недели. Роскомнадзор выставил новые требования западным компаниям, Apple запустила SharePlay, Sony открыла предзаказ на Xperia PRO-I, а в декабре выходят новые «Ёлки».
Полный бак №16. Тест Audi Q8
Наступила суббота, а значит, самое время для нашей автомобильной рубрики. Сегодня поговорим про самый красивый на сегодня автомобиль в кузове кросс-купе – Audi Q8
Ярмарка современного искусства Art Russia 2021. Технологии и не только
Современное российское искусство на ярмарке в Гостином дворе – художники и их работы. Что было интересного…
Если мы перенесемся в прошлое, в осень 2008 года, то увидим, что в те времена между собой конкурировало множество мобильных операционных систем. Возраст iOS от Apple составлял всего год, и она уступала лидерам индустрии BlackBerry OS и Symbian по масштабу. Не будем забывать и про Windows Mobile и Palm OS. Google и разработчики Android комбинировали некоторые удачные элементы из уже развитых платформ плюс добавили ряд новых идей, которые и по сей день являются частью Android.
В Android 1.0 было три панели домашнего экрана. Центральная была основным домашним экраном, на котором размещались предустановленные приложения и виджеты. Можно было свайпнуть влево или вправо, чтобы добавить больше приложений и виджетов на другие экраны, – так можно делать и в современном Android. Использование виджетов в Android было новым для того времени. Тогдашние платформы, такие как Windows Mobile, которая управлялась единичными касаниями экрана, тоже включали в себя виджеты, но они не были настолько разнообразными и не настолько подлежали настройке под себя, как в Android.
В Android 1.0 была карусель приложений. В нее можно было попасть из активного окна по тапу на специальной кнопке в нижней части экрана. Впрочем, в основном функциональность списка приложений была такой же, какой осталась и сейчас. Меню настроек Android 1.0 было организовано похожим на современный Android образом, но меню быстрых настроек еще не существовало. Кстати, в iOS 2, на которой работали iPhones в 2008 году, не было карусели приложений, но зато ее подобие имелось на устройствах Windows Phone и BlackBerry.
Платформа была завязана на аппаратную составляющую. Те, кто пользовался Android с самого детства этой ОС, наверняка вспомнят все эти кнопки для управления ей, эти живучие «Назад», «Домой» и кнопки меню были необходимы для осуществления навигации и дополнительных действий. Не было даже экранной клавиатуры: в G1 требовалось использовать физическую QWERTY-клавиатуру для ввода любого текста. Сейчас платформа полностью переориентировалась на касания и жесты для тех же самых действий. Из всех доступных в 2008 платформ только iPhone полностью управлялся касаниями экрана. BlackBerry, Symbian и Windows, в свою очередь, очень зависели от физических кнопок.
Реализация уведомлений в Android 1.0 уже тогда была крайне удачной и легла в основу того, что представляют собой уведомления сегодня. То, как они ненадолго всплывали в строке уведомлений, повлияло на другие мобильные платформы, побудив разработчиков перенять эту идею.
Активная строка поиска Google была встроенной с самого начала и жива по сей день. И даже самая ранняя версия поискового инструмента включала в себя функцию автозаполнения текста.
А что там с безопасностью? У вас была возможность использовать графический ключ для разблокировки экрана, который вы, собственно, видите и сейчас в качестве одной из опций.
«Для этого есть приложение» – а что было до того?
Apple представила свой App Store вместе с iOS 2 в июле 2008 года, совсем незадолго до дебюта Android. В то время централизованный магазин приложений на устройстве был редкостью. Большинство тогдашних приложений покупались прямо у разработчика или у отдельных онлайн-дистрибьюторов. Хорошо, что Google последовала именно примеру Apple.
Первые приложения на Android 1.0 были примитивными, но функциональными. Среди первых доступных пользователям были собственные приложения Google, такие как Gmail, календарь, калькулятор, карты, а также YouTube. Сторонние приложения были доступны в Android Market, как изначально назывался Play Store. Android Market 1.0 был очень примитивным. Там можно было найти мало какие приложения, а также это был сплошь текст – лишь с небольшими вкраплениями графики и картинок.
Тогдашняя почта Gmail уже поддерживала такие важные вещи, как push-уведомления, IMAP/POP и SMTP, что давало ей преимущество перед почтой на других платформах. YouTube, напротив, причинял сплошную боль, поскольку тогдашние 3G-сети попросту не могли передавать видео. А браузер тогда еще не назывался Chrome. В его основе лежал WebKit, но изначально в нем не было поддержки Flash.
Приложение камеры впечатления не производило. Например, каждый раз, когда вы делали снимок, у вас всплывало окно, где спрашивалось, что вы хотите сделать – сохранить, настроить, поделиться или удалить фото. Каждый. Раз. Хуже того, у приложения камеры не было особо никаких функций и не было возможности записи видео.
Карты Google Maps были несомненным достоинством платформы. Несмотря на то, что они были доступны на ряде других платформ, таких как BlackBerry OS, карты для Android были очень продвинутыми. Они включали в себя Street View, возможность посмотреть на реальный облик искомого объекта. Кроме того, в них уже была поддержка панорамных видов, так что вы могли изучить местность еще до того, как окажетесь рядом с нужным объектом.
Закладывая основы для будущего Android
Нет никаких сомнений в том, что Android 1.0 был вполне достойным продуктом с самого начала. Он собрал множество идей под одним знаменем и уже на старте стал весьма многообещающей платформой. Но не все было так однозначно. В то время только оператор T-Mobile в США предлагал смартфон G1, а на другие рынки аппарат не выходил до начала 2009 года. В целом, устройства на Android не продавались в больших объемах, пока Verizon Wireless не представила Motorola Droid осенью 2009 года – через год после запуска платформы. К тому времени речь шла уже об Android 2.0.
Но важность эти первых шагов трудно переоценить, поскольку именно тогда закладывались основы развития Android. Google спешила рассказать о будущих версиях платформы, включая Cupcake и Donut, в которые, как обещала компания, со временем должны были добавить функций и исправить ошибки. Это способствовало появлению ожиданий, а также подталкивало к последующему распространению. Более того, Android быстро стал популярным среди сообщества разработчиков и моддеров, поскольку являлся открытым, в отличие от BlackBerry OS, iOS, PalmOS и Symbian.
В общем, этот путь был долгим, но в преддверии выхода Android 12 мы точно можем сказать, что не хотели бы, чтобы все сложилось иначе, правда? Поностальгируем?
Источник
Пишем своё первое приложение на Android
Предисловие
Подготовка к разработке
Установка среды разработки 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-картинку с прозрачным фоном размером в 72×72, в drawable-mdpi соответственно 48×48 и в drawable-ldpi самую маленькую размером 36×36. Делать это можно простым перетаскиванием файлов прямо на дерево. Следующим шагом будут элементы управления. В моей программе было необходимо всего три элемента интерфейса: ImageView (просто картинка логотип приложения), Button (обновить значение температуры) и TextView (вывод значения температуры). Все эти элементы управления нужно описать в специальном xml-файле. В дереве он расположен по адресу res → layout → main.xml. Во-многом разметка элементов управления сходна с вёрсткой веб-страниц, тут есть и padding, и margin, и аналог align. Код main.xml моего приложения:
xml version =«1.0» encoding =«utf-8» ? >
LinearLayout xmlns:android =«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 >
Подробно останавливаться на разметке элементов управления не буду, так как это всё достаточно подробно описано в мануале и вообще интуитивно понятно, особенно тому, кто имел дело с html/css-вёрсткой и/или разработкой в какой-либо визуальной среде (например, Delphi). Единственное, обратите внимание как я загрузил произвольное изображение в ImageView. В поле src указывается путь, начинающийся с символа @ и далее указываете адрес по дереву. В папке res я заблаговременно создал подпапку drawable и «закинул» туда логотип, а затем просто указал ImageView путь. Легко? По мне так очень.
Непосредственно код приложения располагается по пути src → «ваше название package» → «название приложения».java.
По-умолчанию создается «болванка» главного класса и от неё уже дальше можно плясать. Не буду останавливаться на тонкостях такого простого кода как у меня в примере, но поясню, что логика работы объясняется тремя простыми шагами:
- Загрузить HTML-страницу со значениями температуры
- С помощью регулярок «вытащить» температуру
- Показать в TextView значение температуры
Заметьте, что когда приложению требуются какие-то системные разрешения, нужно указывать их в манифесте AndroidManifest.xml. В данном конкретном случае мы используем подключение к Интернет, соответственно добавляем строчку в указанный выше 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
( » [^-+0]+([-+0-9]+)[^ [^(а-яА-ЯёЁ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( «be.bashkirenergo.ru/weather/ufa» );
tTemper.setText(bashtemp.concat( «°» )); // отображение температуры
>;
>
После того как приложение написано, можно уже его отлаживать и тестировать.
Запуск и тестирование приложения
Вспоминаем про нашу виртуальную машину и запускаем привычной кнопкой или менюшкой Run → Run
Вот такую картину мы можем затем созерцать:
Теперь, если вы хотите поделиться приложением, то нужно собрать apk-файл. Для этого воспользуемся меню File → Export и в списке Android → Export Android application. Далее выберите проект, затем создайте хранилище ключей keystore и ключ key, для этого нужно будет заполнить несколько полей с всякого рода справочной информацией. Получившийся apk-файл можно распространять и даже выложить в Android Market, но для этого придется зарегистрироваться и уплатить $25, что в общем-то немного, особенно для стоящего проекта. Но регистрация в Маркете, пожалуй, тема отдельной статьи.
Заключение
В заключении хотелось бы сказать, что безусловно разработка приложений для Android приятна, достаточно проста и интересна. Конечно, мы рассмотрели лишь верхушку айсберга, но я надеюсь, что в умах тех из вас, кто раньше не пробовал делать ничего подобного «загорелась лампочка» и вполне возможно, что когда-то вашим приложением будут пользоваться миллионы.
Источники, ссылки
UPD: Устранение возможных ошибок
ERROR: Unable to open class file C:\workspace\Test\gen\com\example\test\R.java: No such file or directory
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, запускаем программу.
UPD 05.10.2011, во что превратилось данное приложение можно лицезреть на следующих скринах:
Это результат развития той самой болванки, которая выше дана в качестве примера.
Разработка и создание Android-приложений
Создание сайтов
Источник