Оцените презентацию от 1 до 5 баллов!
Тип файла:
ppt / pptx (powerpoint)
Всего слайдов:
29 слайдов
Для класса:
1,2,3,4,5,6,7,8,9,10,11
Размер файла:
1.16 MB
Просмотров:
65
Скачиваний:
1
Автор:
неизвестен
Слайды и текст к этой презентации:
№1 слайд![Broadcast receivers](/documents_6/d1fa6a1f04d9e0344240732dc1e58173/img0.jpg)
Содержание слайда: Broadcast receivers
№2 слайд![Создание гиперссылок](/documents_6/d1fa6a1f04d9e0344240732dc1e58173/img1.jpg)
Содержание слайда: Создание гиперссылок
XML-разметка:
https://git.io/vPpN6
№3 слайд![Вспомним про интенты](/documents_6/d1fa6a1f04d9e0344240732dc1e58173/img2.jpg)
Содержание слайда: Вспомним про интенты
Намерение (интент) - это механизм для описания одного действия – например, выбора фотографии, отправки письма, совершения звонка, запуска браузера с переходом по указанному адресу, запуска сервиса или другого активити в приложении, и тд. Сегодня мы рассмотрим применение интентов для трансляции сообщений по системе. Любое приложение способно зарегистрировать широковещательный приёмник (broadcast receiver) и отслеживать интенты с возможностью на них реагировать. Это позволяет создавать приложения, использующие событийную модель, в основе которой лежат внутренние, системные или сторонние события, передаваемые внешними программами.
№4 слайд![Примеры неявных интентов](/documents_6/d1fa6a1f04d9e0344240732dc1e58173/img3.jpg)
Содержание слайда: Примеры неявных интентов
№5 слайд![Виды интентов явный код](/documents_6/d1fa6a1f04d9e0344240732dc1e58173/img4.jpg)
Содержание слайда: Виды интентов: явный
// код первого активити
ArrayList<File> fileList = new ArrayList<>();
Intent intent = new Intent(MainActivity.this, SecondActivity.class); // явный вызов
intent.putExtra("FILES_LIST", fileList);
startActivity(intent);
// код второго активити
ArrayList<File> filelist = (ArrayList<File>)getIntent()
.getSerializableExtra("FILES_LIST");
№6 слайд![Виды интентов неявный Неявные](/documents_6/d1fa6a1f04d9e0344240732dc1e58173/img5.jpg)
Содержание слайда: Виды интентов: неявный
Неявные намерения — это механизм, позволяющий запрашивать компоненты приложений с помощью действий. Можно попросить систему запустить активити, выполняющее заданное действие, не зная ничего ни о самом активити, ни о приложении. Например, можно набрать телефонный номер, но не знать, какую программу дозвона выберет пользователь на своём телефоне. При создании неявного интента необходимо назначить действие, которое должно выполниться, а также при желании указать вспомогательный путь URI к тем данным, что нужно обработать.
№7 слайд![Действия неявных интентов](/documents_6/d1fa6a1f04d9e0344240732dc1e58173/img6.jpg)
Содержание слайда: Действия неявных интентов
ACTION_ANSWER
ACTION_CALL
ACTION_DELETE
ACTION_EDIT
ACTION_INSERT
ACTION_HEADSET_PLUG
ACTION_MAIN
ACTION_PICK
№8 слайд![Широковещательные сообщения В](/documents_6/d1fa6a1f04d9e0344240732dc1e58173/img7.jpg)
Содержание слайда: Широковещательные сообщения
В системе Android существует понятие широковещательных сообщений, которые можно как отправлять, так и принимать. Для отправки сообщений, предназначенных не какому-то отдельному приложению, объекту или компоненту, а всем подряд – применяются опять же таки интенты. И любая программа, оборудованная специальным рисивером, может поймать это сообщение и предпринять свои ответные действия на основе полученной информации.
№9 слайд![Создание сообщения Сообщения](/documents_6/d1fa6a1f04d9e0344240732dc1e58173/img8.jpg)
Содержание слайда: Создание сообщения
Сообщения может посылать операционная система, наше приложение или чужие приложения.
Для создания сообщения необходимо оформить объект-интент, установив ему дополнительные сведения (действие, данные и категорию). Строка действия должна быть уникальной, чтобы рисиверы смогли точно идентифицировать переданное сообщение. Обычно, строка-идентификатор действия составляется по правилам именования пакетов Java. Например, так:
public static final String MY_MESSAGE = "com.sunmeat.thirdproject.MESSAGE_1";
№10 слайд![Отправка сообщения Intent](/documents_6/d1fa6a1f04d9e0344240732dc1e58173/img9.jpg)
Содержание слайда: Отправка сообщения
Intent message = new Intent(); intent.setAction(MY_MESSAGE);
intent.putExtra("name", "Alex"); intent.putExtra("age", "28");
sendBroadcast(message);
№11 слайд![Пример кода MainActivity.java](/documents_6/d1fa6a1f04d9e0344240732dc1e58173/img10.jpg)
Содержание слайда: Пример кода
MainActivity.java и activity_main.xml:
https://git.io/vXvVj
№12 слайд![Нужен рисивер Сообщение-то](/documents_6/d1fa6a1f04d9e0344240732dc1e58173/img11.jpg)
Содержание слайда: Нужен рисивер
Сообщение-то отправлено, однако ушло оно в никуда, так как ни одно приложение в системе не оборудовано рисивером для него. Попробуем создать рисивер прямо в этом же приложении, и будем сами принимать свои же сообщения.
Рисивер представляет собой обычный Java-класс на основе BroadcastReceiver. Можно создать класс вручную и наполнить его необходимыми методами, но в студии есть готовый шаблон, который поможет немного сэкономить время.
№13 слайд![Создание рисивера](/documents_6/d1fa6a1f04d9e0344240732dc1e58173/img12.jpg)
Содержание слайда: Создание рисивера
№14 слайд![Прописка в манифесте](/documents_6/d1fa6a1f04d9e0344240732dc1e58173/img13.jpg)
Содержание слайда: Прописка в манифесте
№15 слайд![Отредактируем файлы](/documents_6/d1fa6a1f04d9e0344240732dc1e58173/img14.jpg)
Содержание слайда: Отредактируем файлы
№16 слайд![Системные сообщения На](/documents_6/d1fa6a1f04d9e0344240732dc1e58173/img15.jpg)
Содержание слайда: Системные сообщения
На практике, чаще встречается потребность принимать сообщения, а не отправлять их. В первую очередь это касается сообщений от системы.
Примерами таких сообщений могут быть:
Низкий заряд батареи
Нажатие на кнопку камеры
Установка нового приложения
№17 слайд![Способы создания приёмника](/documents_6/d1fa6a1f04d9e0344240732dc1e58173/img16.jpg)
Содержание слайда: Способы создания приёмника
Рисивер можно создать двумя способами - через манифест и программно через метод registerReceiver(). Между двумя способами есть существенная разница. Рисивер, заданный в манифесте, известен системе, которая сканирует файлы манифеста всех установленных приложений. Поэтому, даже если приложение не запущено, оно всё равно сможет отреагировать на поступающее сообщение. Рисивер, созданный программно, может работать только в том случае, когда активити приложения запущено. Некоторые системные сообщения могут обрабатываться только программными рисиверами. Это не лишено смысла, например, если приложение не запущено, ему нет смысла принимать сообщения о заряде батареи.
№18 слайд![Следим за уровнем громкости](/documents_6/d1fa6a1f04d9e0344240732dc1e58173/img17.jpg)
Содержание слайда: Следим за уровнем громкости
№19 слайд![Следим за питанием](/documents_6/d1fa6a1f04d9e0344240732dc1e58173/img18.jpg)
Содержание слайда: Следим за питанием
№20 слайд![Следим за вай-фаем](/documents_6/d1fa6a1f04d9e0344240732dc1e58173/img19.jpg)
Содержание слайда: Следим за вай-фаем
MyReceiver.java:
https://git.io/vXvF3
№21 слайд![Следим за смсками](/documents_6/d1fa6a1f04d9e0344240732dc1e58173/img20.jpg)
Содержание слайда: Следим за смсками
MyReceiver.java:
https://git.io/vXfeW
№22 слайд![Следим за входящими](/documents_6/d1fa6a1f04d9e0344240732dc1e58173/img21.jpg)
Содержание слайда: Следим за входящими
MyReceiver.java:
https://git.io/vXJU8
№23 слайд![Системный интент TIME TICK](/documents_6/d1fa6a1f04d9e0344240732dc1e58173/img22.jpg)
Содержание слайда: Системный интент TIME_TICK
Системное событие TIME_TICK срабатывает каждую минуту:
https://git.io/vXJLM
№24 слайд![Запуск после перезагрузки](/documents_6/d1fa6a1f04d9e0344240732dc1e58173/img23.jpg)
Содержание слайда: Запуск после перезагрузки
№25 слайд![Жизненный цикл рисиверов У](/documents_6/d1fa6a1f04d9e0344240732dc1e58173/img24.jpg)
Содержание слайда: Жизненный цикл рисиверов
У рисиверов только один колбэк-метод:
void onReceive(Context context, Intent intent);
Когда сообщение прибывает, Android вызывает метод onReceive() и передаёт в него интент, содержащий сообщение. Рисивер активен только во время выполнения этого метода. Выполняющийся в настоящее время код в методе onReceive() является приоритетным процессом и будет сохранён (защищён от уничтожения системой), кроме случаев критического недостатка памяти. Когда программа возвращается из метода onReceive(), рисивер становится неактивным – и такой процесс может быть уничтожен системой в любое время, когда память, которую он потребляет, будет необходима другим процессам.
№26 слайд![Другие действия для рисиверов](/documents_6/d1fa6a1f04d9e0344240732dc1e58173/img25.jpg)
Содержание слайда: Другие действия для рисиверов
Некоторые из встроенных действий, представленных как константы в классе Intent, которые используются для того, чтобы проследить изменения состояния устройства:
ACTION_DATE_CHANGED и ACTION_TIME_CHANGED — запускаются при ручном изменении пользователем даты или времени на устройстве
ACTION_SCREEN_OFF и ACTION_SCREEN_ON — передаются, когда экран выключается или включается
ACTION_TIMEZONE_CHANGED — передаётся при изменении текущего часового пояса
№27 слайд![Практика Создать рисивер в](/documents_6/d1fa6a1f04d9e0344240732dc1e58173/img26.jpg)
Содержание слайда: Практика
Создать рисивер в другом приложении. Сделать так, чтобы одно приложение отправляло сообщение, а другое – получало его.
№28 слайд![Практика Keep the screen on](/documents_6/d1fa6a1f04d9e0344240732dc1e58173/img27.jpg)
Содержание слайда: Практика
Keep the screen on:
https://developer.android.com/training/scheduling/wakelock.html#screen
№29 слайд![Практика Активити ставит себя](/documents_6/d1fa6a1f04d9e0344240732dc1e58173/img28.jpg)
Содержание слайда: Практика
Активити ставит себя на передний план каждые 5 секунд:
http://stackoverflow.com/questions/3801562/how-to-bring-an-activity-to-front-in-android