Разработка мобильных приложений для различных устройств
Это руководство стало вторым в серии, предназначенной для обучения разработчиков основам работы с MIDP и CDC. Перед изучением этого руководства настоятельно рекомендуется ознакомиться с Руководством для начинающих по MIDP. В дальнейшем будет продолжаться совершенствование проекта "MyHello", созданного в этом руководстве, и будет продемонстрировано развертывание на различных эмуляторах и адаптация кода под требования отдельных аппаратных сред. Следует отметить, что принципы и приемы, показанные в этом руководстве, относятся также и к приложениям для CDC, созданным в среде IDE.
Содержание
Требуемое программное обеспечение
Для разработки приложений для MIDP/CLDC на Java ME необходимо установить JDK 5 и среду IDE NetBeans Mobility Edition или Full Edition (загрузить). Для получения указаний по настройке системы см. указания по установке.
Добавление платформ эмуляторов
Платформы эмуляторов поставляются производителями мобильных телефонов. Таким образом, разработчики могут моделировать поведение определенных мобильных устройств при отладке разрабатываемых приложений. В пакет Mobility Pack для среды IDE NetBeans входит инструментарий Sun Java Wireless Toolkit, и поддерживаются многие другие аналогичные инструментарии для разработки программного обеспечения (SDK), которые можно загрузить с сайтов поставщиков, таких как Nokia, Sony Ericsson или Motorola. Список поддерживаемых эмуляторов MIDP приведен в разделе часто задаваемых вопросов по пакету NetBeans Mobility.
Добавление новой платформы эмулятора
- На основной панели инструментов выберите "Tools > Java Platforms".
- В диалоговом окне "Java Platform Manager" нажмите кнопку "Add Platform".
- На странице "Select Platform Type" выберите "Java ME MIDP Edition Platform Emulator". Нажмите кнопку "Next".
- На странице "Platforms" будут представлены все платформы Java ME, доступные в среде IDE. Платформы, совместимые со стандартом Unified Emulator Interface (UEI), проверяются и отображаются с флажком напротив имени платформы. Платформы, не являющиеся совместимыми с UEI, а также платформы, установить которые невозможно по другим причинам, выделяются в списке красным цветом. Мастер также определяет, какие платформы уже установлены. ПРИМЕЧАНИЕ: Для установки платформ, не являющихся совместимыми с UEI, нажмите кнопку "Back" и выберите "Custom Java Micro Edition Platform Emulator".
- На странице "Platforms" установите флажок напротив всех эмуляторов, которые должны быть установлены в среде. После обнаружения платформ выполняется их установка. Нажмите кнопку "Finish". Затем нажмите кнопку "Close".
- Выберите "File > "MyHello" Properties".
- Выберите узел "Platform", затем выберите имя новой платформы эмулятора (например, "Sun Java Wireless Toolkit 2.5.2") в раскрывающемся меню "Emulator Platform". Нажмите кнопку "OK".
Изменение устройства эмулятора по умолчанию
- Щелкните правой кнопкой мыши узел "MyHello Project" и выберите "Properties". В диалоговом окне "Properties" выберите узел "Platform". Здесь можно изменить устройство, используемое в варианте настройки по умолчанию.
- Щелкните раскрывающийся список "Device" и выберите "QwertyDevice". Нажмите кнопку "OK".
- Снова запустите приложение. Теперь приложение будет выполняться в эмуляторе
QwertyDevice.
Работа с вариантами настройки
Варианты настройки позволяют создать для проекта несколько наборов файлов JAR и Java Application Descriptor (JAD). Таким образом, один и тот же исходный код можно адаптировать для каждого целевого мобильного устройства.
Добавление варианта настройки
- Щелкните правой кнопкой мыши узел "MyHello Project" и выберите "Properties". В диалоговом окне "Properties" выберите "Add Configuration" в раскрывающемся списке "Project Configuration". Откроется диалоговое окно "Add Configuration".
- Введите имя варианта настройки в поле "Configuration Name". Имя должно идентифицировать целевую платформу, на которой будет развернут дистрибутив JAR/JAD, созданный для этого варианта настройки. В этом примере введите
BlackWhiteDisplay и нажмите кнопку "OK". Создан новый вариант настройки.
- Варианты настройки также можно добавлять с помощью кнопки "Manage Configurations" в диалоговом окне "Properties". При этом вызывается диалоговое окно "Project Configuration Manager", содержащее пункты для добавления, удаления или копирования вариантов настройки.
Изменение варианта настройки проекта
Разные типы вариантов настройки проектов создаются с помощью шаблонов в мастере создания проекта. Для быстрого переключения между вариантами настройки проекта используется раскрывающееся меню "Configuration" на основной панели инструментов.
Корректировка варианта настройки
К проекту можно добавить любое количество вариантов настройки. Параметры каждого добавленного варианта настройки можно изменить в диалоговом окне "Project Properties".
- Щелкните правой кнопкой мыши узел "MyHello Project" и выберите "Properties". В диалоговом окне "Properties" выберите узел "Platform".
- Выберите вариант настройки
BlackWhiteDisplay в поле списка "Configuration" в верхней части диалогового окна "Properties".
- Все элементы в диалоговом окне "Platform" будут деактивированы. Это вызвано тем, что в этом варианте настройки в настоящий момент используются значения, взятые из варианта по умолчанию для данной области. Снимите флажок "Use Values from "DefaultConfiguration" в верхней части области. Теперь все элементы на этом экране можно изменять.
- В поле "Device" выберите "DefaultGrayPhone".
- Разместите диалоговое окно "Project Configuration" над окном "Properties" и понаблюдайте за тем, как меняется пункт "Device" в зависимости от выбираемого варианта настройки. Этот способ определения требуемого варианта настройки можно использовать для каждой области (кроме общей) в этом диалоговом окне. Для сохранения изменений в варианте настройки и закрытия диалогового окна "Properties" нажмите кнопку "OK".
Создание характеристики
Характеристика – это специальный атрибут в варианте настройки проекта. Она может отражать физические особенности устройства (например, размер экрана), либо API или JSR, поддерживаемые вариантом настройки. Можно создать новую характеристику и связать ее с одним или несколькими вариантами настройки проекта. Далее с помощью блоков предварительной обработки с этой характеристикой можно связать некоторый исполняемый код. Это устраняет необходимость просмотра всего кода и связывания каждого последующего добавляемого или удаляемого варианта настройки с каждым требуемым блоком. Вместо этого необходимо только добавить к варианту настройки требуемую характеристику. После этого вариант настройки автоматически будет связан с любым блоком кода, указанным для этой характеристики.
- Щелкните правой кнопкой мыши узел проекта "MyHello" и выберите "Properties".
- В дереве меню "Category" выберите страницу "Abilities".
- Выберите вариант настройки в раскрывающемся меню "Project Configuration". Это действие создает привязку между характеристикой и вариантом настройки.
- При необходимости снимите флажок "Use Values from "DefaultConfiguration" (использование значений из варианта настройки по умолчанию).
- Нажмите кнопку "Add". Откроется диалоговое окно "Add Ability".
- В диалоговом окне "New Ability" можно ввести имя характеристики или выбрать одну из характеристик в раскрывающемся меню. Для характеристики также можно указать определенного значение (при необходимости). Нажмите кнопку "OK" для закрытия диалогового окна "New Ability". Теперь характеристика связана с выбранным вариантом настройки проекта.
Для связывания этой характеристики с другими вариантами настройки следует выбрать требуемый вариант в меню "Project Configuration" и нажать кнопку "Add".
Добавление кода предварительной обработки к определенным вариантам настройки
При помощи блоков предварительной обработки можно создавать и контролировать код, относящийся к одному из вариантов настройки или характеристик проекта. Этот код исполняется (или, соответственно, не исполняется) только в определенных вариантах настройки или при наличии указанных характеристик.
- В окне "HelloMIDlet.java Editor" щелкните правой кнопкой мыши строку исходного кода, в которой создается текстовое поле (
helloTextBox = new javax.microedition.lcdui.TextBox(null, "Make my day",120, 0x0);).
- Щелкните правой кнопкой мыши эту строку и выберите "Preprocessor Blocks > Create If/Else Block". В первом (розовом) разделе добавьте слово "Color" к строке "Hello World". Во втором (сером) разделе добавьте "Gray" к строке "Make my day".
- Код, отмеченный директивой
//#if, будет исполняться каждый раз при соответствии активного варианта настройки значению директивы (в данном случае это "DefaultConfiguration".) Код, обрамленный директивой //#else, исполняется в том случае, если активный вариант настройки не соответствует значению для предварительной обработки. Другими словами, эмулятор отображает "Make my day Color", если активной платформой является "DefaultConfiguration", и "Hello World Gray" в случае любой другой активной платформы эмулятора. Директива //#endif завершает блок предварительной обработки.
Код предварительной обработки можно протестировать путем запуска MIDlet на различных платформах эмуляторов, как описано в разделе Смена платформы эмулятора.
Выполнение вариантов настройки
Варианты настройки можно собирать и выполнять либо одновременно, либо по отдельности.
- Щелкните правой кнопкой мыши узел "MyHelloMIDlet Project" и выберите "Run".
- Выберите вариант настройки "BlackWhiteDisplay" в поле списка на панели инструментов. Снова выберите "Run".
- Появятся два эмулятора, цветной и серый. В сером эмуляторе отображается текст "Make my day Gray", а в цветном – "Make my day Color".
-
Для создания нескольких вариантов настройки одновременно щелкните проект правой кнопкой мыши и выберите "Batch Build". В открывшемся диалоговом окне установите флажок рядом с каждым вариантом, который требуется собрать.
-
Для немедленного тестирования на устройстве щелкните правой кнопкой мыши проект и выберите "Run With". В открывшемся диалоговом окне выберите платформу эмулятора и устройство, на котором будет исполняться код.
Дополнительная информация
На данный момент было создано несложное приложение, которое было запущено на различных эмуляторах, и в которое был добавлен код, адаптирующий его к развертыванию на различных устройствах. Следующий этап в обучении работе с MIDP и CLDC заключается в изучении дополнительных приемов разрешения проблем фрагментации устройств.