MaxEdu.ru
» » » Использование платформы j2me для мобильных телефонов при организации видеонаблюдений
Вернуться назад

Использование платформы j2me для мобильных телефонов при организации видеонаблюдений

Ключевые слова: видеонаблюдение, обнаружение движения, мидлет, платформа J2ME, Bluetooth, SMS-сообщение, MMS-сообщение, файловая система мобильного телефона, камера, библиотека LWUIT, FileConnectionAPIJSR-75, MobileMediaAPIJSR-135, BluetoothAPIJSR-82, WirelessMessagingAPIJSR-205.
Объект исследования: программирование мобильного телефона.
Методы исследования: платформа J2ME.
Цель дипломной работы: изучение принципов и возможностей использования ресурсов мобильного телефона при создании приложений на платформе J2ME.
Выводы: изучены возможности работы со следующими ресурсами телефона: файловая система, камера, Bluetooth, отправка SMS и MMS-сообщений. Разработано приложение для мобильного телефона на платформе J2ME, которое позволяет осуществлять видеонаблюдение.
Содержание
Введение
1. Обзор литературы
2. Платформа J2ME
2.1 Основные понятия
2.2 Библиотека LWUIT
2.3 Bluetooth
3. Проектирование приложения для мобильного телефона на основе платформы J2ME
3.1 Постановка задачи
3.2 Построение интерфейса
3.3 Передача данных по Bluetooth
3.4 Работа с файловой системой телефона
3.5 Отправка SMS и MMS-сообщений
3.6 Алгоритм обнаружения движения
Заключение
Список источников
Введение
Видеонаблюдение – процесс, осуществляемый с применением технических решений, предназначенных для визуального контроля за охраняемыми или наблюдаемыми территориями, объектами, субъектами. Главная задача видеонаблюдения – обеспечение безопасности объекта путем визуального наблюдения без передачи информации во внешние общедоступные сети.
Видеонаблюдение стало вполне обычным явлением современной повседневной жизни. Развлекательные и торговые объекты, автостоянки и гаражные комплексы, офисы, транспорт, общественные места, промышленные объекты, а также объекты банковского сектора снабжаются видеокамерами. Видеоконтроль обеспечивает предупреждение преступлений и их более быстрое раскрытие, выполняет контроль действий персонала.
В зависимости от типа используемого оборудования системы видеонаблюдения делятся на цифровые и аналоговые (традиционные). В любом случае оборудование состоит из видеокамер, устройств обработки, записывающего оборудования и устройств вывода изображения (монитор). Также в систему часто включаются дополнительные устройства типа кожухов, устройств управления, передачи на дальние расстояния и т.п.
Цифровая система видеонаблюдения обеспечивает:
- высокое качество воспроизводимой видеозаписи;
- высокую скорость доступа к видеоархиву;
- цифровое увеличение и масштабирование любого кадра;
- быстрый поиск и просмотр видеозаписи по камере, дате и времени;
- возможность интеграции с другими компьютерными системами безопасности;
- легкая и недорогая трансляция видеоархивов по каналам связи;
- возможность отправки тревожных сообщений по электронной почте и SMS;
- возможность экспорта видеоинформации на совместимые внешние носители.
Аналоговая система видеонаблюдения проста в настройке и работе и позволяет нанимать для обслуживания персонал меньшей квалификации. Минусы аналоговых систем видеонаблюдения следующие:
- ограниченность функций – обратная сторона высокой надежности;
- постоянное обслуживание – смена и архивация кассет, периодическая чистка и замена видеоголовок видеомагнитофона.
Аналоговые системы используют там, где необходимо организовать видеонаблюдение в небольшом числе помещений и информацию с видеокамер записывать на видеомагнитофон.
Учитывая широкое распространение сотовой связи, мобильные телефоны теперь используются во многих современных системах видеонаблюдения и позволяют просматривать данные от камер, а также получать SMS с уведомлением об обнаруженном движении.
Например, программа GOALmobile– это видеотелефон, осуществляющий одновременную трансляцию с одного телефона на другой. При этом нужно только, чтобы сотовый телефон поддерживал функцию GPRS. Количество одновременно транслируемых камер не ограничено. Переключение между ними производится на телефонной трубке. В составе системы безопасности данная технология позволяет получать тревожные сообщения с выводом на дисплей видеоизображения происходящего события или его записи, а также управлять исполнительными механизмами, подключенными к системе охраны. Например, при нажатии на кнопку звонка перед дверью квартиры на телефон поступит сигнал, и на дисплее будет выведена живая трансляция камеры-глазка. При этом есть возможность нажать кнопку 1 для открытия замка, кнопку 2 для включения сирены, кнопку 3 для выдачи голосового сообщения и т.д.
Кроме того, разработаны приложения для мобильных телефонов, которые используют камеру телефона для обнаружения движения. Например, Цюрихский Институт всепроникающей компьютеризации создал программу, позволяющую использовать встроенные камеры телефонов, находящихся в общей сети, в качестве системы видеонаблюдения.
Программа с названием Facet позволяет мобильным телефонам обмениваться данными с помощью Bluetooth, а благодаря специальным алгоритмам телефоны могут анализировать события, попадающие в объектив камеры. Смысл действия программы таков, что если закрепить пару телефонов, например, Nokia N6630, на потолке и включить программу Facet, то как только в поле обзора одной из камер будет попадать движущийся объект, телефон сразу же будет отсылать сигнал находящемуся рядом телефону, а также отсылать данные на компьютер через GPRS. Подобная система может использоваться в качестве охранной в тех случаях, когда полноценную систему наблюдения развернуть не представляется возможным.
Однако данные приложения дорогие и созданы в основном только для смартфонов и коммуникаторов. Поэтому актуальной задачей является создание аналогичного приложения на платформе J2ME, которая поддерживается большинством телефонов.
1 . Обзор литературы
В настоящее время сотовая связь – самая широко используемая из всех видов мобильной связи. Наиболее распространенными видами телефонов являются обычный телефон, смартфон, коммуникатор и КПК.
Смартфоны и коммуникаторы отличаются от обычных мобильных телефонов наличием достаточно развитой операционной системы, открытой для создания программного обеспечения сторонними разработчиками. Установка дополнительных приложений позволяет значительно улучшить функциональность смартфонов и коммуникаторов по сравнению с обычными мобильными телефонами.
В настоящее время не существует четкого разграничения между смартфонами и коммуникаторами, поскольку функциональность обоих классов устройств примерно одинакова. Часто применяется так называемый "исторический подход", который заключается в следующем: если устройство ведет свою родословную от КПК – это коммуникатор, а если от мобильных телефонов – это смартфон. В рамках этого подхода под коммуникаторами обычно подразумеваются устройства с сенсорным экраном (может быть дополнен клавиатурой), работающие под управлением операционной системы Windows Mobile. Устройства, использующие для ввода информации исключительно цифровую клавиатуру (аналог телефонной), называются смартфонами. Большинство устройств под управлением операционной системы Symbian традиционно относят к смартфонам (за исключением Nokia серии 9XXX, Nokia E90 и некоторых других). В остальных случаях позиционирование устройства зависит от производителя (обычно устройства с сенсорным экранам относят к коммуникаторам, а к смартфонам относят устройства без него), хотя большинство смартфонов работает на двух конкурирующих между собой операционных системах: Symbian и Windows Mobile Smartphone Edition. В мире Symbian наиболее известными платформами являются Nokia Series 60, 80, 90 и Sony Ericsson UIQ. В лагере Windows наиболее популярна платформа HTC.
Также часть специалистов разделяет коммуникаторы и смартфоны по наличию или отсутствию полноразмерной (QWERTY) клавиатуры (виртуальной или физической).
Современные телефоны (модели средней ценовой категории и выше) прекрасно справляются со многими задачами, выходящими за рамки телефонных: работа с электронной почтой, просмотр текстовых документов и электронных таблиц, работа с планировщиком задач и другими. Расширение функциональности телефонов возможно за счет J2ME-программ, которые поддерживаются практически всеми мобильными телефонами, смартфонами и коммуникаторами. Экран целого ряда мобильных телефонов не уступает большинству смартфонов (в последнее время телефоны оснащаются и сенсорными экранами), многие модели оснащены разъемом для карты памяти. Смартфоны в глазах данной категории пользователей выглядят более привлекательными за счет других факторов (частично обусловленных продвижением смартфонов и коммуникаторов производителями), таких как: расширенные мультимедийные функции (более качественная камера, расширенные возможности воспроизведения видеофайлов, улучшенные музыкальные способности), Wi-Fi, GPS и др.
Программы, написанные специально для операционной системы смартфона или коммуникатора, являются полноценными скомпилированными в двоичный код последовательностями низкоуровневых микропроцессорных команд. Так как во всех смартфонах установлены более мощные процессоры, чем в мобильных телефонах, возможности программиста по созданию таких приложений практически не ограничены. Специализированные приложения более функциональны и рациональней используют ресурсы процессора, чем "универсальные" J2ME-программы. Поэтому смартфоны пользуются большей популярностью среди разработчиков программного обеспечения.
Для операционной системы Symbian приложения разрабатываются на языке С++ с использованием следующих сред разработок: Visual Studio, IDE Metrowerks CodeWarrior Development Studio, Borland C++ BuilderX Mobile Edition, Carbide.C++.
В настоящее время получили большое распространение коммуникаторы и смартфоны, которые совмещают в себе функции КПК с функциями мобильного телефона. КПК обладают рядом недостатков по сравнению с коммуникаторами, основной из которых – меньшее время автономной работы. К началу 2008 года КПК были практически вытеснены смартфонами и коммуникаторами, объемы поставок КПК постоянно снижаются.
Android– недавно появившаяся платформа, основанная на Linux, разрабатываемая OHA. С использованием Android SDK и плагина для Eclipse ADT для платформы Androidможно создавать приложения на языке программирования Java, управляющие устройством через разработанные компанией Google библиотеки. Также есть возможность писать приложения на C и других языках программирования. Под управлением Android работают телефоны HTC G1, Samsung i7500 и др.
Выбор платформы J2ME для разработки обусловлен ее распространенностью и возможностью доступа к необходимым ресурсам телефона.
2. Платформа J2ME
2.1 Основные понятия
Платформа J2ME была разработана компанией Sun Microsystems с целью предоставления возможности создания Java-приложений для устройств с ограниченными ресурсами памяти и процессора, таких как сотовые телефоны, пейджеры, смарт-карты, органайзеры и миникомпьютеры.
Платформа J2ME является безопасной для использования, потому что при доступе в интернет, использовании других коммуникаций, отправке SMS, доступе к файловой системе пользователь обязательно будет об этом уведомлен и для продолжения использования функции необходимо его подтверждение. При корректной реализации спецификаций единственным вариантом несанкционированного доступа является программа троян, которая под видом необходимости выполнения полезной пользователю функции на самом деле будет использовать полученные права в своих целях.
Архитектура платформы J2ME представлена на рисунке 2.1.
Рисунок 2.1 – Архитектура платформы J2ME

Устройства, на которых сможет работать J2ME-приложение (мидлет), определяются поддерживаемой конфигурацией и профилем платформы [2]. Конфигурация определяет самые базовые классы, такие как класс System, Runtime, Thread и т.д., то есть является фундаментом платформы. Над каждой конфигурацией надстраиваются свои профили. Профиль определяет требования к аппаратной части устройства, а также может включать минимальный набор API.
Выделяют 2 конфигурации: CLDC и CDC. CDC предназначена для устройств, имеющих постоянное сетевое соединение, таких как двунаправленные пейджеры, телевизионные приставки, автомобильные системы навигации, интеллектуальные коммуникаторы. Такие устройства характеризуются более мощными системными ресурсами, например, как минимум 2 мегабайтами памяти.
Над конфигурацией CDCмогут быть надстроены профили FoundationProfile, PersonalBasisProfileи PersonalProfile.
Foundation Profile не имеет функциональности для работы с GUI. Предназначен для встраиваемых устройств.
Personal Basis Profile содержит основные элементы GUI. Является надстройкой над Foundation Profile.
Personal Profile содержит графический интерфейс пользователя, основанный на AWT. Является надстройкой над Personal Basis Profile.
Конфигурация CLDC предназначена для устройств с ограниченным объемом памяти и вычислительной мощностью (телефоны, органайзеры, КПК). Для этих мобильных устройств характерны следующие параметры:
- процессор 16 или 32-разрядный;
- память от 160 до 512 килобайт;
- беспроводное сетевое соединение;
- питание от аккумуляторов.
Данная конфигурация содержит только базовые пакеты java.lang.*, java.io.*, java.util.*, javax.microedition.io.* и добавленный в версии 1.1 пакет java.lang.ref.*. Пакеты, совпадающие с J2SE, содержат минимальный набор классов, необходимых для создания приложений.
По реализации пересекающихся с J2SE классов версии байт-кода CLDC 1.0 соответствует JDK 1.1, CLDC 1.1 – JDK 1.3. Иногда к названию конфигурации добавляют HI, что означает HotSpot Implementation (виртуальная машина с улучшенными алгоритмами оптимизации выполняемого кода в целом и часто выполняемых кусков кода в частности, для J2SE она стала виртуальной машиной по умолчанию с версии 1.3).
MIDP– единственный профиль для конфигурации CLDC. Он содержит пакеты для работы с графикой, звуком, взаимодействия с консолью (клавиатура и экран), базовый набор классов для отображения стандартных экранов и элементов управления. Существуют две основные версии MIDP API – 1.0 и 2.0 (самих версий MIDP больше, но в них изменения касаются безопасности и не затрагивают само API).
Профиль MIDP задает следующие технические характеристики:
- разрешение экрана минимум 96х54 пикселя;
- 32 килобайта динамической памяти;
- 128 килобайт под компоненты MIDP;
- 8 килобайт для хранения постоянных данных;
- беспроводная сеть;
- питание от аккумулятора.
Дальнейшие возможности устройств с точки зрения разработчика обуславливаются поддержкой дополнительных пакетов. Например, для работы с мультимедиа используется MMAPI (JSR-135).
Необходимой составляющей CDLC является KVM, которая из-за компактности имеет ряд недоступных свойств:
- не поддерживаются операции с дробными числами;
- нельзя создать класс-загрузчик для динамической загрузки классов во время выполнения;
- отсутствует механизм отражения – набор средств для получения полной и исчерпывающей информации о каком-либо классе во время выполнения программы;
- не реализован Java Native интерфейс – возможность обращения из Java-программ к программам, реализованным на других языках программирования, так называемым native-методам;
- не поддерживается финализация;
- отсутствует поддержка групповых потоков.
Основным классом написания приложений для мобильных устройств является MIDlet. Жизненный цикл мидлета основан на методах startApp(), pauseApp(), destroyApp() и представлен на рисунке 2.2.
Рисунок 2.2 – Жизненный цикл мидлета
Все экранные формы расширяют абстрактный класс Displayable. Этот класс описывает экранную форму, которая может иметь заголовок, бегущую строку, несколько команд и слушатель событий. Отображаемое содержимое формы определяется подклассами. Существует шесть классов, которые представляют собой различные типы экранных форм [3]:
- List позволяет выбрать пользователю элементы из списка. Каждый элемент в списке представляется строчкой и может иметь Image;
- TextBox позволяет пользователю вводить и редактировать текст;
- Alert можно сравнить с диалоговым окном, оповещающим о какой-то произошедшей ситуации;
- Form может содержать комбинацию элементов, которые могут представлять строчки, изображения, поля ввода, списки;
- Canvas позволяет приложению самому обеспечивать отрисовку, переопределив метод paint (Graphics g);
- TextBox – представляет собой многострочное поле для ввода и редактирования текста.
Подсветка экрана, вибратор, звук в MIDP 1.0 отсутствуют (они появились только в MIDP 2.0). Однако, не смотря на все эти ограничения, можно наблюдать огромное количество мобильных телефонов, в которых есть такие возможности. Происходит это потому, что производители добавляют свой собственный API, реализующий данные возможности. В связи с этим мидлет, сделанный для одного телефона, может не работать на другом.
J2ME-приложение состоит из двух файлов: jad и jar. Jad-файл – это дескриптор приложения, текстовый файл, в котором указаны атрибуты приложения. Jar-файл – это сама программа, это пакет мидлетов (Midlet Suite).
2.2 Библиотека LWUIT
Библиотека LWUIT [4] базируется на профиле MIDP 2.0 и предназначена для быстрой разработки пользовательских интерфейсов, которые будут одинаково выглядеть на телефонах различных производителей. Например, на смартфонах Nokia элемент StringItem (строковый элемент формы) ставит после себя символ перевода строки, а на смартфонах Sony Ericsson – нет. На Nokia элемент Ticker (бегущая строка) закрывает заголовок формы, на других телефонах – нет, а на третьих Ticker может вообще не поддерживаться. Такая портабельность достигается за счет реализации собственного слоя поверх системной канвы и разработанных собственных элементов графического интерфейса.
LWUIT создана по образу Swing и реализует простую графику и модель пользовательского интерфейса с небольшими начальными требованиями к ресурсам и умеренными требованиями к производительности. В ней используется интеграция графики SVG и механизм MVC.
Данная библиотека входит в состав Sun J2ME SDK 3.0 и предоставляет следующие основные возможности:
- поддержка окон;
- пользовательские стили;
- анимация;
- сенсорная навигация.
Базовым классом для всех элементов графического интерфейса является Component. Все элементы добавляются в контейнеры, прежде чем они будут отображены на экране. Контейнеры также могут быть вложены друг в друга. Самым основным контейнером является Form, который представляет собой экранную форму. В общем случае у него есть строка заголовка сверху, строка меню с командами внизу и по центру располагается ContentPane – контейнер для элементов графического интерфейса. Далее приводится листинг 2.1 создания простого приложения с использованием данной библиотеки, которое выводит приветствие и содержит одну кнопку.
Листинг 2.1 – Создание формы
importcom.sun.lwuit. Display;
import com.sun.lwuit. Form;
import com.sun.lwuit. Label;
import com.sun.lwuit.layouts. BorderLayout;
import com.sun.lwuit.plaf.UIManager;
import com.sun.lwuit.util. Resources;
public class HelloMidlet extends javax.microedition.midlet.MIDlet {
public void startApp() {
// инициализациябиблиотеки
Display.init(this);
// Установкапользовательскойтемы
try {
Resources r = Resources.open ("/myresources.res");
UIManager.getInstance().setThemeProps (r.getTheme (
r.getThemeResourceNames() [0]));
} catch (java.io.IOException e) {
System.out.println ("IOException "+e.getMessage());
}
// 1. Созданиеформы
Form mainForm = new Form ("Form Title");
// для определения способа размещения копонетов
mainForm.setLayout (newBorderLayout());
mainForm.addComponent (BorderLayout.CENTER, new Label ("HelloWorld"));
// 4. Добавлениекоманднойкнопки
mainForm.addCommand (new Command ("Run", 2));
mainForm.show();
}
public void pauseApp() {
}
public void destroyApp (boolean unconditional) {
}
}
Далее рассматриваются основные элементы графического интерфейса [5].
Label может отображать строчку текста и / или картинку.
Button представляет собой кнопку и помещается на ContentPane. Может содержать рисунок.
Чтобы обработать нажатие кнопки, необходимо реализовать интерфейс ActionListener. Далее приводится программный код простого обработчика нажатия кнопки (листинг 2.2).
Листинг 2.2 – Обработканажатиякнопки
final Button button = new Button ("Old Text");
button.addActionListener (new ActionListener() {
public void actionPerformed (ActionEvent evt) {
button.setText ("New Text");
}
});
RadioButton– радиокнопка, является наследником Button.
ButtonGroup позволяет объединять радиокнопки в группы, чтобы в любой момент была выбрана только одна из них.
CheckBox является наследником RadioButton и представляет собой флажок.
ComboBox – это выпадающий список. К нему можно применить все возможности прорисовки, как и для элементов списка List. В выпадающем списке ComboBox могут содержаться не только строчки текста, но и радиокнопки, флажки, кнопки и другие списки.
TextArea предоставляет возможность редактировать текст в текстовом редакторе телефона – это значит, что возможно использование более сложных методов ввода (например, T9).
TabbedPane – это контейнер, который позволяет переключаться между различными группами компонентов, расположенными на вкладках.
2.3 Bluetooth
Bluetooth– это недорогая технология, позволяющая электронным устройствам обмениваться информацией посредствам радиоканала. Радиус действия Bluetooth-передатчиков, как правило, не превышает 15-ти метров. Для связи используется частота 2.45 GHz. В настоящее время доступна технология Bluetooth версии 1.1, которая включает в себя технологию радиосвязи, набор программ и профилей.
Технология названа в честь короля Дании HaroldBluetooth, жившем в X веке, который объединил и правил Норвегией и Данией.
Первое Bluetooth-устройство появилось на рынке в 1999. Разработчиком Bluetooth является Bluetooth Special Interest Group. Всоставэтойорганизациивходяттакиекомпании, какSony Ericsson, Intel, IBM, Toshiba, Nokia, Microsoft, 3COM, Motorola.
Цель спецификации [6] протокола Bluetooth– обеспечить взаимодействие устройств различных производителей, поэтому она определяет целый стек протоколов, а не только радиосистему (рисунок 2.3).

Рисунок 2.3 – Стек протоколов Bluetooth
HCI– это обычно слой, разделяющий программную и аппаратную реализацию стека протокола. Слои ниже theHCI, как правило, реализованы аппаратно, а слои выше – программно. Однако устройства с ограниченными ресурсами могут полностью реализовать всю функциональность аппаратно.
Applications– профили Bluetooth, которые определяют, как приложения должны использовать стек протоколов.
TelephonyControlSystem (TCS) – обеспечивает телефонный сервис.
ServiceDiscoveryProtocol (SDP) – используется для поиска сервисов на удаленном Bluetooth-устройстве.
WAPи OBEX– предоставляют интерфейсы для верхнего слоя других протоколов связи.
RFCOMM– описывает RS-232 как последовательный интерфейс.
L2CAP– собирает данные от верхних слоев и преобразовывает их между пакетами разных размеров.
HCI– управляет связью между хостом и Bluetooth-модулем.
LinkManagerProtocol– контролирует и конфигурирует связи с другими устройствами.
Basebandи LinkController– управляют физическими связями, частотой хопов и сборкой пакетов.
Radio– модулирует и демодулирует данные для передачи и приема по воздуху.
Технология Bluetooth [7] использует технический прием FHSS. Радиодиапазон делится на 79 подканалов. В каждый момент времени используется только один из этих подканалов. Переключение между ними (хоп) происходит каждые 625 микросекунд (1600 хопов за секунду). Такое частое переключение необходимо, чтобы уменьшить интерференцию, вызываемую другими рядом расположенными Bluetooth-устройствами и другими устройствами, использующими тот же самый диапазон частот (например, микроволновая печь или Wi-Fi).
Если устройство взаимодействует через Bluetooth и Wi-Fi одновременно, то применяется механизм AFH.
Каждому Bluetooth-устройству назначается уникальный 48-битный адрес, который используется для идентификации и синхронизации хопов, а также для генерации ключей в процедурах безопасности Bluetooth.
Пикосеть – это форма Bluetooth-сети (рисунок 2.4). Она состоит из одного мастера и нескольких (не более 7) подчиненных устройств (slaves).

Рисунок 2.4 – Пикосеть
Устройство, инициирующее соединение, автоматически становится мастером. Подчиненные устройства могут только предавать данные в выделенное им время. Все взаимодействия между подчиненными устройствами осуществляются не напрямую, а через мастера. При подключении нового устройства к пикосети возможен обмен ролями.
Две пикосети могут существовать в пределах радиодиапазона друг друга. Частота хопов не синхронизируется между пикосетями, поэтому всегда будут возникать конфликты на одной и той же частоте.
Две взаимодействующие пикосети образуют рассеянную сеть – scatternet (рисунок 2.5). Общий узел является разделяемым и в каждый момент времени может работать только в одной пикосети, что уменьшает трафик в два раза между ними.

Внимание, отключите Adblock

Вы посетили наш сайт со включенным блокировщиком рекламы!
Ссылка для скачивания станет доступной сразу после отключения Adblock!

Скачать полную версию
Дипломные работы по информатике Ключевые слова: видеонаблюдение, обнаружение движения, мидлет, платформа J2ME, Bluetooth, SMS-сообщение, MMS-сообщение, файловая система мобильного
Оценок: 419 (Средняя 5 из 5)

Специалисты RetsCorp работают в digital-сфере более 7 лет. За это время мы разработали более 500+ успешных проектов. Основываясь на своем опыте и знании рынка, мы с уверенностью можем сказать, что будет работать, а что — нет. Заказывая создание лендинга для бизнеса в нашей студии, вы получаете работающие решения, необходимые именно вашему бизнесу.

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

© 2014 - 2022 MaxEdu.ru