Смекни!
smekni.com

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

Для операционной системы 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 (