Мы рассмотрим область применения, архитектуру и основные особенности такой известной операционной системы как Android. Также расскажем о процессе создания мобильного приложения TulaDev, о проблемах с которыми мы столкнулись и о способах их решения. Вы можете найти приложение для Android <a>на Google Play</a>
Применение нейронных сетей и генетических алгоритмов при торговле на бирже.
Лекция Android
1. ОС Android и специфика
мобильной разработки
Киреев Артем, Codemasters International
akireev@codemastersintl.com
www.codemastersintl.com
2. План
• Что такое Android?
• Основные компоненты приложения и
их взаимодействие
• Опыт разработки приложения
TulaDev: веб-сервисы, GCM (C2DM).
3. OS Android
• ОС для смартфонов и встраиваемых
систем
• Разработка началась в 2003
• Первый проданный телефон HTC Dream
2008
• Open Source
• ARM, MIPS, x86
7. Размеры экранов
Размер Плотность
Самый популярный размер:
470dip x 320 dip =
WVGA800
(480x800)
8. Как работать с
множеством
экранов?
ldpi: 1 dip = 0,75px
mdpi: 1 dip = 1px
hdpi: 1 dip = 2px
1 dip = 1,5px
xhdpi:
px - пиксели
in, mm, pt - дюймы, миллиметры, точки (1/72
дюйма)
dip - Абстрактные пиксели, зависящие от
плотности экрана
sp - Похожи на dip, но в данном случае
учитывается размер шрифта, который установил
пользователь.
9. Из чего состоит
приложение?
Manifest
-имя JAVA пакета
-разрешения для
приложения
- Activity, Services..
-Связанные библиотеки
-Минимальный уровень API
Классы (src)
Ресурсы (res)
10. Верстка UI
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="I am a TextView" />
<Button android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="I am a Button" />
</LinearLayout>
Linear Layout Relative Layout
Позволяет определить
Элементы внутри расположение
расположены в ряд элементов относительно
или в столбец друг друга (Элемент A
находится слева от B)
11. Изолированность
приложения Android
Sandbox
• Каждое приложение имеет свой Linux
user Id
• Для каждого приложения запускается
своя Dalvik VM
• Любой компонент приложения, будет
запускаться в своем Linux процессе
12. Рабочие лошадки
приложения
Activity Service
• малосвязанные • работают в фоне (backgroud)
• не подходят для длительных операций • подходят для длительных операций
17. Разработка приложения
TulaDev для Android
Use cases:
• Видеть информацию о следующей встрече
• Видеть архив прошедших встреч
• Получать новости и анонсы
• Голосовать за будущие темы
• Отмечаться на встрече (розыгрыш призов)
• Смотреть слайды оффлайн
21. Откуда брать данные.
Схема 2. Activity шлет запрос и
сохраняет в базе
REST API
ListActivity
SQLite
22. Откуда брать данные.
Схема 3 Используем сервис
REST API
3 http GET /events
BroadcastReceiver
DownloadService
ListActivity
4 storeEventsInDb()
SQLite
23. Разработка приложения
TulaDev для Android
Вопрос 2. Как часто обновлять
данные?
При каждом запуске приложения
При смене табов
По расписанию
По требованию пользователя
Когда данные обновятся на сервере
24. Разработка приложения
TulaDev для Android
По требованию пользователя
Когда данные обновятся на сервере
Http pooling web sockets
25. Google Cloud Messaging
GCM анонсирован 26 июня 2012 года, пришел на
замену C2DM
Увеличивает время жизни батареи (все приложения
используют один общий канал)
Сервер обрабатывает запрос на рассылку за 4.7
миллисекунды его обновления данных и для поста
Мы используем
новостей
26. Как работает GCM
Обновление данных
Content-
Type:application/jsonAuthorizatio
n:key=AIzaSyB-1uEai2...{
“registration_ids” :
[“APA91bHun4MxP5eg..., ...]
“collapse_key”: “data_update”
“data” : { “Action” : “updateData”}}
Server
27. Как работает GCM
Уведомления (новости)
Content-
Type:application/jsonAuthorizatio
n:key=AIzaSyB-1uEai2...{
“registration_ids” :
[“APA91bHun4MxP5eg..., ...]
“data” :
{ “Action” : “updateData”,
“Data”: “Не проспите завтра
наш доклад об Android ”}}
Server
29. Как работает GCM
Features. Time To Live
Сообщениям можно задать время жизни от 0
секунд до 4 недель
Сообщения с TTL = 0, не хранятся в GCM
По умолчанию TTL = 4 недели
30. Как работает GCM
Features. Message
Multicasting
Запрос
до1000
Ответ
31. Как работает GCM
Features. Collapse Key
Запросы
только 1 сообщение
32. Как работает GCM
Features. Throttling
Нотификация об изменении
данных на сервере
DoS
Server
33. Google Play
Регистрация в качестве разработчика = 25$
Время от подачи заявки до появления в Google Play ~
4h
No Problem with Google Play
34. Итоги
• Android - OpenSource операционная
система с Dalvik VM
• Приложение: Манифест + ресурсы +
Activity + Service
• GCM (Google Cloud Messaging) -
канал доставки данных.
• Google Play - 25$ and no problem