13
© 2016 Embarcadero Technologies, Inc. All rights reserved. Использование сервиса (AlarmManager) в FireMonkey на Андроиде RAD Studio RSX Будильник для Android в FireMonkey

13.07.2106 Будильник для Android в FireMonkey

Embed Size (px)

Citation preview

Page 1: 13.07.2106 Будильник для Android в FireMonkey

© 2016 Embarcadero Technologies, Inc. All rights reserved.

Использование сервиса (AlarmManager) в FireMonkey на Андроиде

RAD Studio

RSX

Будильник для Android в FireMonkey

Page 2: 13.07.2106 Будильник для Android в FireMonkey

© 2016 Embarcadero Technologies, Inc. All rights reserved. 2

EMBARCADERO – КОМПАНИЯ ДЛЯ РАЗРАБОТЧИКОВ

Embarcadero концентрируется на средствах разработки Инструменты БД теперь входят

в портфолио продуктов Idera

97% of Fortune 2000 –3.2+ миллиона пользователей

35+ Product Awards –постоянные инновации

Page 3: 13.07.2106 Будильник для Android в FireMonkey

© 2016 Embarcadero Technologies, Inc. All rights reserved.

РАЗРАБОТКА ДЛЯ РАЗНЫХ ПЛАТФОРМ

«Единый код» - нет запрета на использование особенностей платформы

Нативные приложения Это значит:

Компиляция в машинный уровень исполнения кода

Возможность использовать стандартные системные библиотеки и модули платформы

Page 4: 13.07.2106 Будильник для Android в FireMonkey

© 2016 Embarcadero Technologies, Inc. All rights reserved.

СООБЩЕСТВА ПОЛЬЗОВАТЕЛЕЙ/РАЗРАБОТЧИКОВ

Индекс TIOBE основан на оценке количества обсуждений.

DELPHI / RAD на 12 месте и поднимается – интерес растет

Page 5: 13.07.2106 Будильник для Android в FireMonkey

© 2016 Embarcadero Technologies, Inc. All rights reserved.

“MOST VALUABLE PERSON”

MVP может стать любой, кто делится опытом и знаниями

MVP получают преимущества Сегодняшний рассказ основан

на статьях Я.Бровина и А.Ефимова

Page 6: 13.07.2106 Будильник для Android в FireMonkey

© 2016 Embarcadero Technologies, Inc. All rights reserved.

ЗАДАЧА: БУДИЛЬНИК, СРАБОТАЮЩИЙ В УКАЗАННОЕ ВРЕМЯ

Будильник, в определенное время подающий звуковой сигнал

Решение с TTimer требует, чтобы приложение постоянно находилось в памяти и работало

Нужно, чтобы кто-то подал сигнал, чтобы запустить приложение и выполнить задачу

В Android уже есть специальный механизм – AlarmManager.

Как им воспользоваться?

Page 7: 13.07.2106 Будильник для Android в FireMonkey

© 2016 Embarcadero Technologies, Inc. All rights reserved.

РЕШЕНИЕ (В ANDROID)

Типичный алгоритм работы с сервисом

1. Создаем класс «задачи». Наследник от BroadcastReceiver. В метод OnReceive через параметр сервис, AlarmManager передаст заранее заготовленное сообщение с нашими параметрами.

2. Регистрируем наш ресивер в нашем приложении. Говорим системе, что у нас есть такой ресивер.

3. Формируем сообщение с нашими параметрами. Сообщение — это отложенное намерение PendingIntent.

4. Запрашиваем у системы сервис AlarmManager5. Отправляем задачу, указывая: время/интервал выполнения задачи,

отложенное намерение PendingIntent.

AlarmManager — это специальный системный сервис, позволяющий выполнить пользовательский код в определенный момент времени. Этот менеджер является частью системы Android и постоянно находится в памяти. Как только приходит положенное время, он извлекает помещенную в него заранее задачу и инициирует выполнение задачи

Page 8: 13.07.2106 Будильник для Android в FireMonkey

© 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 останется доступным для использования из других процессов…»

Page 9: 13.07.2106 Будильник для Android в FireMonkey

© 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

Page 10: 13.07.2106 Будильник для Android в FireMonkey

© 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.

Page 11: 13.07.2106 Будильник для Android в FireMonkey

© 2016 Embarcadero Technologies, Inc. All rights reserved.

Page 12: 13.07.2106 Будильник для Android в FireMonkey

© 2016 Embarcadero Technologies, Inc. All rights reserved.

ИТОГИ

RAD Studio дает универсальные и эффективные кросс-платформенные решения на основе «единого кода»

Это не исключает использования специальных средств, имеющихся в выбранной платформе

Иногда нужно знать детали работы с платформой Все инструменты есть в RAD Studio и SDK/NDK Расширяем сообщества разработчиков, становимся MVP Что дальше?

Page 13: 13.07.2106 Будильник для Android в FireMonkey

© 2016 Embarcadero Technologies, Inc. All rights reserved. 13

СПАСИБО ЗА ВНИМАНИЕ!

Вопросы?

Связаться с нами:+7 495 7084393

[email protected]