© 2016 Embarcadero Technologies, Inc. All rights reserved.
Использование сервиса (AlarmManager) в FireMonkey на Андроиде
RAD Studio
RSX
Будильник для Android в FireMonkey
© 2016 Embarcadero Technologies, Inc. All rights reserved. 2
EMBARCADERO – КОМПАНИЯ ДЛЯ РАЗРАБОТЧИКОВ
Embarcadero концентрируется на средствах разработки Инструменты БД теперь входят
в портфолио продуктов Idera
97% of Fortune 2000 –3.2+ миллиона пользователей
35+ Product Awards –постоянные инновации
© 2016 Embarcadero Technologies, Inc. All rights reserved.
РАЗРАБОТКА ДЛЯ РАЗНЫХ ПЛАТФОРМ
«Единый код» - нет запрета на использование особенностей платформы
Нативные приложения Это значит:
Компиляция в машинный уровень исполнения кода
Возможность использовать стандартные системные библиотеки и модули платформы
© 2016 Embarcadero Technologies, Inc. All rights reserved.
СООБЩЕСТВА ПОЛЬЗОВАТЕЛЕЙ/РАЗРАБОТЧИКОВ
Индекс TIOBE основан на оценке количества обсуждений.
DELPHI / RAD на 12 месте и поднимается – интерес растет
© 2016 Embarcadero Technologies, Inc. All rights reserved.
“MOST VALUABLE PERSON”
MVP может стать любой, кто делится опытом и знаниями
MVP получают преимущества Сегодняшний рассказ основан
на статьях Я.Бровина и А.Ефимова
© 2016 Embarcadero Technologies, Inc. All rights reserved.
ЗАДАЧА: БУДИЛЬНИК, СРАБОТАЮЩИЙ В УКАЗАННОЕ ВРЕМЯ
Будильник, в определенное время подающий звуковой сигнал
Решение с TTimer требует, чтобы приложение постоянно находилось в памяти и работало
Нужно, чтобы кто-то подал сигнал, чтобы запустить приложение и выполнить задачу
В Android уже есть специальный механизм – AlarmManager.
Как им воспользоваться?
© 2016 Embarcadero Technologies, Inc. All rights reserved.
РЕШЕНИЕ (В ANDROID)
Типичный алгоритм работы с сервисом
1. Создаем класс «задачи». Наследник от BroadcastReceiver. В метод OnReceive через параметр сервис, AlarmManager передаст заранее заготовленное сообщение с нашими параметрами.
2. Регистрируем наш ресивер в нашем приложении. Говорим системе, что у нас есть такой ресивер.
3. Формируем сообщение с нашими параметрами. Сообщение — это отложенное намерение PendingIntent.
4. Запрашиваем у системы сервис AlarmManager5. Отправляем задачу, указывая: время/интервал выполнения задачи,
отложенное намерение PendingIntent.
AlarmManager — это специальный системный сервис, позволяющий выполнить пользовательский код в определенный момент времени. Этот менеджер является частью системы Android и постоянно находится в памяти. Как только приходит положенное время, он извлекает помещенную в него заранее задачу и инициирует выполнение задачи
© 2016 Embarcadero Technologies, Inc. All rights reserved.
СИСТЕМНЫЕ ЭЛЕМЕНТЫ ИЗ ANDROID
Intent, PendingIntent, http://developer.android.com/intl/ru/reference/android/content/Intent.html
AlarmManager, http://developer.android.com/intl/ru/reference/android/app/AlarmManager.html
«Собственно PendingIntent - это просто ссылка на маркер, поддерживаемый системой, описывающий исходные данные, используемые для его получения. Это означает, что, даже если процесс приложения-владельца будет завершен, сам PendingIntent останется доступным для использования из других процессов…»
© 2016 Embarcadero Technologies, Inc. All rights reserved.
КАК УСТРОЕНО ПРИЛОЖЕНИЕ ANDROID
Delphi приложение с точки зрения исполняемого кода состоит из двух главных частей
1. Нативная библиотека .so с кодом на языке Delphi
2. Исполняемый код приложения —classes.dex. Именно этот файл содержит
стартовую активность. Именно этот файл загружает нативную so-библиотеку с кодом приложения. Именно этот файл содержит java- реализацию дополнительных классов, требующихся для работы FireMonkey.
Чтобы применить ваш собственный java-класс, его нужно добавить в файл classes.dex. Это делается при помощи специальных утилит идущих в поставке с Android SDK
AlarmReceiverDemo.apk
© 2016 Embarcadero Technologies, Inc. All rights reserved.
ОБЩИЙ АЛГОРИТМ ДОБАВЛЕНИЯ СВОИХ JAVA-КЛАССОВ
1. Создаем файлы с классами на java.2. Компилируем java классы java компилятором javac и
получаем class файлы3. Пакуем ваши class файлы в jar файл (архив со специальной
внутренней структурой, манифестом и т.д.)4. Получаем .dex файл из jar5. Смешиваем полученный dex файл c dex файлом
Embarcadero. (Результирующий файл содержит старые классы и ваши новые.)
6. Заменяем dex файл Embarcadero новым через Deployment Manager.
© 2016 Embarcadero Technologies, Inc. All rights reserved.
© 2016 Embarcadero Technologies, Inc. All rights reserved.
ИТОГИ
RAD Studio дает универсальные и эффективные кросс-платформенные решения на основе «единого кода»
Это не исключает использования специальных средств, имеющихся в выбранной платформе
Иногда нужно знать детали работы с платформой Все инструменты есть в RAD Studio и SDK/NDK Расширяем сообщества разработчиков, становимся MVP Что дальше?
© 2016 Embarcadero Technologies, Inc. All rights reserved. 13
СПАСИБО ЗА ВНИМАНИЕ!
Вопросы?
Связаться с нами:+7 495 7084393