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

Автор работы: Пользователь скрыл имя, 01 Июня 2013 в 19:30, дипломная работа

Краткое описание

В дипломной работе освещены теоретические основы платформы J2ME, архитектуры Bluetooth и обработка видеоданных для обнаружения движения. Разработано приложение на платформе J2ME, которое позволяет осуществлять видеонаблюдение. В нем используются такие ресурсы мобильного телефона как файловая система, камера, Bluetooth, отправка SMS и MMS-сообщений. Изучена библиотека LWUIT, применяемая для построения графического интерфейса.

Содержание

Введение
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 Алгоритм обнаружения движения
Заключение
Список источников

Прикрепленные файлы: 1 файл

j2me.doc

— 1.18 Мб (Скачать документ)

Данная конфигурация содержит только базовые пакеты 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 – Создание формы

import com.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"); 

// 2. Установка LayoutManager  

// для определения способа размещения копонетов

mainForm.setLayout (new BorderLayout());  

// 3. Добавление Label в центр формы

mainForm.addComponent (BorderLayout.CENTER, new Label ("Hello World")); 

// 4. Добавление командной кнопки

mainForm.addCommand (new Command ("Run", 2)); 

// 5. Вывод формы на экран

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, которая включает в себя технологию радиосвязи, набор программ и профилей.

Технология названа в честь короля Дании Harold Bluetooth, жившем в 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 – это обычно слой, разделяющий программную и аппаратную реализацию стека протокола. Слои ниже the HCI, как правило, реализованы аппаратно, а слои выше – программно. Однако устройства с ограниченными ресурсами могут полностью реализовать всю функциональность аппаратно.

Applications – профили Bluetooth, которые определяют, как приложения должны использовать стек протоколов.

Telephony Control System (TCS) – обеспечивает телефонный сервис.

Service Discovery Protocol (SDP) – используется для поиска сервисов на удаленном Bluetooth-устройстве.

WAP и OBEX – предоставляют интерфейсы для верхнего слоя других протоколов связи.

RFCOMM – описывает RS-232 как последовательный интерфейс.

L2CAP – собирает данные от верхних слоев и преобразовывает их между пакетами разных размеров.

HCI – управляет связью между хостом и Bluetooth-модулем.

Link Manager Protocol – контролирует и конфигурирует связи с другими устройствами.

Baseband и Link Controller – управляют физическими связями, частотой хопов и сборкой пакетов.

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). Общий узел является разделяемым и в каждый момент времени может работать только в одной пикосети, что уменьшает трафик в два раза между ними.

 

Рисунок 2.5 – Взаимодействие двух пикосетей

 

В процессе поиска [8] рядом находящихся Bluetooth-устройств (inquiry) запрашивающее устройство будет получать Bluetooth-адреса и время всех обнаруженных устройств. Чтобы устройство было обнаружено, необходимо у него установить соответствующий режим доступности – IAC. IAC может принимать два значения: GIAC и LIAC. GIAC используется, когда необходимо разрешить устройству быть обнаруженным всегда, а LIAC – когда устройство должно быть доступно в течении ограниченного промежутка времени.

После обнаружения устройства можно  его просканировать на наличие доступных  сервисов. Для этого предназначен протокол Service Discovery Protocol.

Bluetooth-устройство хранит информацию обо всех своих сервисах в специальной базе данных – Service Discovery DataBase. Каждая запись в ней содержит атрибуты, определяющие один сервис. Атрибуты определяются 16-ричным идентификаторами.

Обязательными для каждой записи являются только два атрибута ServiceRecordHandle (ID 0x0000) и ServiceClassIDList (ID 0x0001). Различные атрибуты содержат данные разных типов. Поэтому используются специальные элементы данных для хранения этих значений, которые состоят из дескриптора типа данных, определяющего тип и размер, и самих данных.

Universally Unique IDentifier (UUID) – это тип данных для идентификации сервисов, протоколов, профилей и пр. Он представляет собой 128-битное число, которое является всегда уникальным. Bluetooth-технология использует UUID различной длины. Диапазон коротких UUID зарезервирован для наиболее часто используемых сервисов, протоколов и профилей.

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