Расписание занятий android studio

Содержание
  1. Создание расписания уроков для андроид устройств. Array Adapter для фрагментов.
  2. Описание макетов
  3. Код MainActivity
  4. Вторая активность — контейнер для фрагментов
  5. String-array в файле string.xml
  6. Array Adapter для фрагментов
  7. Cкачать архив для ознакомления — проект Расписание для уроков:
  8. Видео обзор Создание расписания уроков для андроид устройств:
  9. Android приложение с расписанием занятий
  10. Создание расписания уроков для андроид устройств. Часть 2. База данных SQLITE и фрагменты
  11. Создание базы данных в Excel
  12. Использование DB Browser for SQLite
  13. Создание директории assets
  14. Класс DatabaseHelper.java для работы с базой данных
  15. Настройки таблицы
  16. Работа с фрагментами
  17. Cкачать архив для ознакомления — проект Расписание для уроков:
  18. Создание расписания уроков для андроид устройств. Часть 2. База данных SQLITE и фрагменты + БОНУС :
  19. Планирование задач в Андроид
  20. Проблемы с сервисами
  21. Запланированный задачи во время жизненного цикла приложения
  22. Запланированные задачи при выключенном приложении
  23. Alarm Manager
  24. Job Scheduler
  25. GCM Network Manager
  26. Firebase Job Dispatcher
  27. Sync Adapter
  28. Упражнение
  29. Создание Job Service
  30. Создать объект JobInfo
  31. Запланированная задача
  32. Заключение

Создание расписания уроков для андроид устройств. Array Adapter для фрагментов.

Продолжим изучать использование фрагментов при написании программ для Android, и сегодня напишем приложение — расписание уроков для школы.

Описание макетов

Для создания нашего приложения я предлагаю использовать две активности и пять фрагментов. Aivity_main.xml будет содержать шесть кнопок, 6-11 классы, activity_main11.xml будет являться контейнером для фрагментов fragment_main11.xml -fragment_main15.xml.

Разметка fragment_main11.xml — fragment_main15.xml особо ничем не отличается друг от друга:

Код MainActivity

Для осуществления открытия второй активности, в MainActivity.java необходимо объявить переменные для кнопок, которые находятся в activity_main.xml

В функции onCreate свяжем кнопки с нашими переменными

Теперь напишем обработчики нажатия на кнопки, по желанию можно установить Toast уведомление, показывающее для какого класса открыто расписание

В этом коде для открытия контейнера фрагментов применим Intent, так же во вторую активность через new Bundle(), putString(«classID», «11») , intent.putExtras() мы передаем classID чтобы узнать, какая кнопка была нажата, это позволит загружать расписание для каждого класса по дням недели.

Вторая активность — контейнер для фрагментов

В этой активности мы будем принимать переданный параметр classID со значением номера класса в функции onCreate в одноименную переменную типа String, и выведем ее в заголовок активности для наглядности

Используем код из предыдущего урока «Создание фрагментов и использование вкладок для Android «, а функцию getItem для отображения фрагментов в активности

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

String-array в файле string.xml

Кто забыл где находится файл string.xml напоминаю «app\src\main\res\values»

Займемся заполнением строковых массивов String-array в файле string.xml, так как у нас шесть классов (11-6), а расписание предполагает пятидневную учебную неделю с понедельника по пятницу нам придется сделать 30 массивов, по 4 четыре урока в день,

имя массива uroki11_vt означает, что это 11 класс, день недели вторник.

Array Adapter для фрагментов

Итак, мы плавно подошли к завершающей фазе написания расписания уроков — это загрузка во фрагменты данных из массивов. У нас есть пять фрагментов, fragment_main11() означает, что в нем будет происходить загрузка данных для всех понедельников, fragment_main12() для вторников и так далее.

Снова будем использовать classID для понимания, какая кнопка была нажата и для какого класса отображать расписание. Опять объявим переменную тип String classID, и в функцию onCreate напишем код получения параметра

Объявим наш ListAdapter adapter, для сбора информации из массивов и, используя конструкцию switch (classID), получим для каждого класса отдельно расписание уроков понедельника во фрагмент fragment_main11.xml

Код следующих фрагментов будет отличаться только именем строкового массива, в fragment_main12() имена массивов будут заканчиваться не на _pn(понедельник) а на _vt(вторник) соответственно.

Итак, можно запускать эмулятор, нажав на кнопку с номером класса, вы увидите информацию о расписании уроков на неделю. Естественно, данный пример не обладает гибкостью и не предполагает внесения, изменения или удаления данных.

Однако, данный пример может быть использован для передачи информации, которая либо не меняется, либо меняется крайне редко и обновление данных будет происходить глобально, вместе с приложением через PlayMarket.
К примеру, вместо кнопок на главной форме может быть перечень заболеваний, а во фрагментах, связанных с этим пунктом могут загружаться симптомы, лекарства, рекомендации и тому подобное. Все зависит от вашей фантазии и назначения.

Читайте также:  Обновление системы андроид lenovo p1ma40

В следующих статьях я вернусь к этому приложению и продемонстрирую, как вместо Array Adapter и массивов использовать базу данных SQLite3, вносить корректировки и добавлять, изменять записи.

Cкачать архив для ознакомления — проект Расписание для уроков:

Видео обзор Создание расписания уроков для андроид устройств:

Рекомендуем смотреть видео в полноэкранном режиме, в настойках качества выбирайте 1080 HD, не забывайте подписываться на канал в YouTube, там Вы найдете много интересного видео, которое выходит достаточно часто. Приятного просмотра!

Источник

Android приложение с расписанием занятий

Добрый вечер. У меня пока нет опыта в создании полноценных приложений и как первый «серьезный» проект хотела бы сделать приложение под мобильные на платформе андроид с расписанием занятий в моем вузе.
Мои знания: java на базовом уровне, включая jdbc, начинала работать с android studio (хотела бы его освоить в процессе создания проекта ), MySQL, капельку PHP, остальное скорее уровня «встречалась но не трогала»

В связи с чем появилось несколько вопросов:
1) Сами данные для расписания хранятся на сайте, следовательно необходимо как-то организовать парсинг, подскажите пожалуйста как и с помощью чего это лучше сделать?
2) Далее данные размещать в бд я так понимаю используя SQLite?
3) Правильно ли я понимаю что далее уже можно данные из базы размещать в самом приложении, добавив после gui часть в студии?

Совсем мало опыта и знаний пока, вот решила пойти методом проб и ошибок. Буду очень благодарна за помощь.

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

Как загружать файлы (расписание занятий в формате xml) в приложение?
Добрый день, скажите пожалуйста, как загружать файлы (расписание занятий в формате xml) в.

Как приложение Android написать на С++ в Android NDK, чтоб получить *.apk? Нужен мануал
Уже не в первый раз задаю вопрос. Молчание. В лучшем случае — «RTFM» и точка. Так вот.

1) Я бы использовал библиотеку Jsoup
2) Тут больше зависит от того как вы именно представляете себе структуру работы приложение
3) Не совсем понял часть вопроса «добавив после gui часть в студии», но скорее всего ответ «да» )

Если расписание постоянно меняется, мне кажется нет смысла загружать данные в БД. Просто подключились к серверу и отобразили в активити информацию (это простой вариант). А если сложный, то подключились к серверу, пропарсили данные, загрузили в БД и отобразили в активити.

Приложение вылетает на android 6.0 и ниже, сделанное в Android Studio
На андроиде 7.0 и выше все работает. А на 6ом андроиде и ниже вылетает без ошибок. В интернете.

Не могу запустить Android приложение. «Unable to resolve target ‘android-8′»
Не могу запустить Android приложение. Вроде всё установил, кучу всяких проблем решил загуглив, как.

Android приложение
Как сделать так что бы при нажатии на кнопку «описание» из первой картинки появилась информация как.

Источник

Создание расписания уроков для андроид устройств. Часть 2. База данных SQLITE и фрагменты

В этом уроке продолжим модифицировать наше приложение Расписания уроков для андроид устройств, и изменим принцип загрузки данных во фрагменты.

В предыдущей версии информация поступала из строковых массивов, которые были созданы в файле String.xml, посредником между данными и приложением являлся Array Adapter, а сегодня сделаем загрузку из базы данных SQLite.

Она будет находиться в apk файле, вместе с самим приложением, так что никаких настроек или манипуляций не нужно будет делать. Установил, открыл — работает.

Кто не читал статью «Создание расписания уроков для андроид устройств. Array Adapter для фрагментов» переходите по ссылке, в ней вы сможете скачать файл проекта, который будем редактировать.

Создание базы данных в Excel

В прошлой статье я не оговорился, сказав, что базу данных будем делать в Excel. Давайте создадим таблицу с расписанием уроков, по классам, дням недели и перечнем занятий.
Для этого в новой книге дадим названия полей таблицы:

  • class — номер класса(11-6)
  • day — день недели(1-5)
  • urok_id- порядок уроков
  • urok — название предмета.

На втором листе книги напишем номер предмета и название, с помощью функции на первом листе в столбец urok введем формулу =СЛУЧМЕЖДУ(1;13) так как на втором листе 13 предметов, а в соседнюю ячейку =ВПР(D2,Лист2!A:B;2;0) для получения списка пердметов.

Читайте также:  Match 3 quest android

Использование DB Browser for SQLite

Затем скопируем как значения получившийся список на новый лист и сохраним его как CSV(разделитель — запятые).

Далее нам понадобится программа DB Browser for SQLite (я пользуюсь версией 3.5.1), в которой создадим новую базу данных(New Database), назавем ее 1.sqlite.

Нажмем File->Import->Table from CSV file. укажем путь к сохраненной ранее книге, присвоим название таблице myrasp, поставим галочку Column name in first line, кодировка Other — CP1251, разделитель «;» и нажмем Ok.

Модифицируем таблицу myrasp, нажав ПКМ, добавим новое поле(Add field) «_id» с типом text или integer, отметим галочками PK(первичный ключ) и AI(автоинкремент). Поле «_id» можно поднять выше в списке полей таблицы.

Создание директории assets

Вернемся в Android Studio и создадим папку assets для хранения нашей базы данных SQLite, нажав в проекте ПКМ: New->Folder->Asset Folder. Если вы скопируете 1.sqlite то можно сразу в эту папку вставить файл, я же в Total Comander переименую в rasp.sqlite и скопирую в проект в папку assets. Когда мы перейдем в среду разработки Android Studio, то в папке будет видна наша база.

Изменения не коснутся файлов MainActivity.java и MainActivity11.java, будем использовать код из предыдущего проекта. В файле fragment_main11.java, отвечающем за отображение уроков понедельника уберем конструкцию switch(classId)<> целиком, удалим переменную ListAdapter adapter.

Класс DatabaseHelper.java для работы с базой данных

Создадим новый класс DatabaseHelper.java, он понадобится для связи с базой данных, открытия, чтения данных.

Данный код универсален для любых проектов, в настройках можно менять названия переменных DB_NAME, TABLE, COLUMN_.

Настройки таблицы

Напишем название базы данных и таблицы в переменные

Присвоим поля таблицы myrasp переменным

Хочу обратить ваше внимание на переменную DB_PATH, которую я для упрощения написал просто «/data/data/»+название пакета+»/database/». В моем случае название пакета — ru.maxfad.myraspisanie, у вас может и будет отличаться для других приложений.

Работа с фрагментами

Теперь откроем fragment_main11.java, в который добавим метод onCreateView

Поскольку нам нужно получить доступ к фрагменту из активности напишем функцию, в которой свяжемся со слоем фрагмента fragment_main11.xml, а в переменную mList получим ListView для отображения уроков

Во fragment_main11.xml удалим секцию разметки TextView и переименуем id ListView

Добавим переменные для работы с базой данных

В метод onActivityCreate напишем новый экземпляр класса DatabaseHelper и создадим базу данных

Напишем метод onResume в котором и будет происходить выборка данных из таблицы myrasp, выполняться SQL запрос и формироваться список уроков

Как вы можете обратить внимание, в строке » and day=1″ и заключается принцип загрузки данных по дням недели, в остальных фрагментах код будет отличаться только номером дня.

При запуске приложения в эмуляторе по нажатию на кнопку в фрагменты будет грузиться информация о расписании уроков, происходит деление по дням недели.

Архив с кодом проекта можно скачать по ссылке ниже, обязательно посмотрите видеоролик по материалам статьи, в нем есть БОНУС: на примере этого приложения я покажу, как работать в Android Studio с макетом с помощью BluePrint+Design.

А на сегодня все, делитесь этой статьей в соцсетях и подписывайтесь на канал YouTube.

Cкачать архив для ознакомления — проект Расписание для уроков:

Создание расписания уроков для андроид устройств. Часть 2. База данных SQLITE и фрагменты + БОНУС :

Рекомендуем смотреть видео в полноэкранном режиме, в настойках качества выбирайте 1080 HD, не забывайте подписываться на канал в YouTube, там Вы найдете много интересного видео, которое выходит достаточно часто. Приятного просмотра!

Источник

Планирование задач в Андроид

Привет Хабр! Предлагаю вашему вниманию свободный перевод статьи «Schedule tasks and jobs intelligently in Android» от Ankit Sinhal.

В современной разработке приложений очень часто выполняются задачи асинхронно, и их объем выходит за пределы жизненного цикла приложения. В некоторых ситуациях мы также должны выполнять некоторые работы, но это не обязательно делать прямо сейчас. Чтобы запланировать фоновые работы, Android представила несколько API, которые мы можем грамотно использовать в наших приложениях.

Выбор подходящего планировщика может улучшить производительность приложений и время автономной работы устройства.

Для планирования задач на Android доступно несколько API:

  • Alarm Manager
  • Job Scheduler
  • GCM Network Manager
  • Firebase Job Dispatcher
  • Sync Adapter

Проблемы с сервисами

Сервисы позволяют выполнять длительные операции в фоновом режиме. Запуск сервисов в фоновом режиме очень негативно влияет на заряд батареии.

Читайте также:  Чистка вирусов для андроид

Сервисы особенно вредны, когда они постоянно использует ресурсы устройства, даже если не выполняет полезные задачи.

Запланированный задачи во время жизненного цикла приложения

Когда приложение запущено, и мы хотим запланировать или запустить задачу в определенное время, рекомендуется использовать класс Handler вместе с Timer и Thread.

Запланированные задачи при выключенном приложении

Alarm Manager

AlarmManager обеспечивает доступ к службам уведомлений. Это дает возможность выполнять любые операции за пределами жизненного цикла вашего приложения. Таким образом, вы можете инициировать события или действия, даже если ваше приложение не запущено. AlarmManager может запустить сервис в будущем.

Мы должны использовать API AlarmManager только для задач, которые должны выполняться в определенное время

Пример использования: предположим, что мы хотим выполнить задачу через 1 час или каждый час. В этом случае AlarmManager нам поможет.

Job Scheduler

Это главный из всех упомянутых вариантов планирования и очень эффективный с фоновыми работами. JobScheduler API, который был представлен в Android 5.0 (API уровня 21).

Этот API позволяет выполнять задания, когда у устройства больше доступных ресурсов или при соблюдении правильных условий. Все условия могут быть определены при создании задания. Когда объявленные критерии будут выполнены, система выполнит это задание в JobService вашего приложения. JobScheduler также отменяет выполнение, если необходимо, чтобы соблюдать ограничения режима Doze и App Standby.

GCM Network Manager

GCM (Google Cloud Messaging) Network Manager имеет все функции расписания из JobScheduler. GCM Network Manager также предназначен для выполнения многократной или одноразовой, неминуемой работы при сохранении времени автономной работы.

Он используется для поддержки обратной совместимости и может также использоваться под Android 5.0 (API уровня 21). Начиная с уровня API 23 или выше, GCM Network Manager использует JobScheduler для платформы. GCM Network Manager использует механизм планирования в службах Google Play, поэтому этот класс будет работать только в том случае, если на устройстве установлены сервисы Google Play.

Google настоятельно рекомендовал пользователям GCM перейти на FCM и вместо этого использовать диспетчер заданий Firebase для планирования любых задач.

Firebase Job Dispatcher

Firebase JobDispatcher также является библиотекой для планирования фоновых заданий. Он также используется для поддержки обратной совместимости (ниже API 21) и работает во всех последних версиях Android (API 9+).

Эта библиотека также будет работать, если на устройстве нет установленных сервисов Google Play. В этом состоянии эта библиотека внутренне использует AlarmManager. Если на устройстве доступно приложение Google Play, он использует механизм планирования в службах Google Play.

Sync Adapter

Sync adapters разработаны специально для синхронизации данных между устройством и облаком. Он должен использоваться только для этого типа задач. Синхронизация может быть вызвана изменениями данных в облаке или на устройстве или по истекшему времени.
Система будет пытаться синхронизировать только тогда, когда устройство подключено к сети.

Упражнение

Мы обсудили достаточно теории, поэтому теперь посмотрим, как использовать планировщик заданий Android.

Создание Job Service

Создайте JobSchedulerService extends JobService, который требует, чтобы были созданы два метода onStartJob (параметры JobParameters) и onStopJob (параметры JobParameters).

Метод onStartJob вызывается, когда JobScheduler решает запустить вашу работу. JobService работает в основном потоке, поэтому любая логика должна выполняться в отдельном потоке. Метод onStopJob вызывается, если система решила, что вы должны прекратить выполнение своей работы. Метод вызывается до jobFinished (JobParameters, boolean).

Вам также необходимо зарегистрировать свою службу в AndroidManifest.

Создать объект JobInfo

Чтобы построить объект JobInfo, передайте JobService в JobInfo.Builder (), как показано ниже. Этот конструктор заданий позволяет установить множество различных параметров управления при выполнении задания.

Запланированная задача

Теперь у нас есть JobInfo и JobService, поэтому пришло время планировать нашу работу. Все, что нам нужно сделать, это запланировать работу с требуемой JobInfo, как показано ниже:

Заключение

При планировании задания вам нужно тщательно подумать о том, когда и что должно вызвать вашу задачу, и что должно произойти, если она по какой-то причине не сработает. Вы должны быть очень осторожны с производительностью вашего приложения, а также с другими аспектами, такими как заряд батареи.

JobScheduler легко реализуется и обрабатывает большую часть за вас. При использовании JobScheduler наши запланированные задания сохраняются, даже если система перезагружается. В настоящий момент единственным недостатком JobScheduler является то, что он доступен только для 21 уровня api (Android 5.0).

Источник

Оцените статью