Пошаговое описание создания простого приложения для Samsung Bada. Пошаговое описание создания простого приложения для Samsung Bada Программы для бада самсунг за последние месяца

Здравствуйте. Хотелось бы прежде всего поздравить всех с наступившим Новым Годом и сразу перейти к делу. Эта статья будет посвящена вопросу создания простых программ для Bada - операционной системы для мобильных устройств, которые выпускает корейская Samsung. Заранее хочу сказать, что под катом простой рецепт изготовления простого приложения без пространных рассуждений о оптимальности и стройности кода.
На Хабре уже есть довольно обстоятельные статьи, которые посвящены Bada, например эта и эта , но вот пошагового описания создания приложения для новичков нет. Кому интересно - прошу под кат.


Тема для написания возникла случайно - знакомый активно занимается установлением границ земельных участков при помощи GPS в геодезической фирме; специфика работы (откуда взялась - хороший вопрос) состоит в том, что получаемые геодезические координаты (позволю себе пояснить, что имеется ввиду широта и долгота) надо переводить в прямоугольные прямо после их получения. На фирме ноутбуков, способных выдержать 8 часовой рабочий день нет и не планируется, зато знакомый недавно купил себе активно продвигаемый в Украине смартфон от Samsung с операционной системой Bada, далее последовал вопрос - если можно скачать игры для телефона, то нет ли приложения, способного решить описанную чисто инженерную задачу? Такого приложения, конечно, не нашлось, и я получил любезное предложение такое написать за известную плату.

Инструментарий
Для разработки приложений для Bada используется Bada SDK 1.2.0, скачать который можно, зарегистрировавшись на сайте для разработчиков Bada . В этом процессе нет ничего сложного, но вот на этапе выбора файлов для загрузки я, честно сказать, «протупил», скачав только SDK, а так называемый языковой пакет (language pack) нет, понадеявшись, что, как написано на сайте, его загрузка произойдет после установки SDK автоматически. Однако, на этапе установки что-то шло не так, установка продолжалась без загрузки языкового пакета, что в дальнейшем приводило к невозможности ни выполнить построение (build), ни, тем более, запустить приложение.
Загрузив SDK и языковой пакет, их следует положить в одном месте, и при установке SDK или при её модификации, установщик подхватит языковой пакет и выполнит инсталляцию его самостоятельно.
Собственно создание приложения

Среда разработки основана на Eclipse, используемый язык программирования С++. Начнем с того, что перейдем к созданию нового приложения очевидной командой File -> New -> bada Application Project. В появившемся окне следует определить название проекта в поле Project name, в списке Project Type выбрать тип приложения - bada Form Based Application.

Далее среда попросит определить технические параметры устройства, для которого будет предназначено приложение (разрешение экрана, наличие GPS и т.д.). Эти параметры определяются в специальном файле манифеста Manifest.xml, который можно выбрать среди файлов SDK, создать и загрузить с сайта Bada Developers или создать свой. Не мудрствуя лукаво, я использовал файл манифеста из папок с примерами Samples, которые устанавливаются вместе с SDK, поскольку мое приложение не требовало наличия «наворотов», а было важно только разрешение экрана.

Далее среда попросит указать корневую директорию SDK, с этим проблем возникнуть не должно. После выбора в списке появится название модели устройства и его API, которое будет использоваться в дальнейшем для программирования.

Следующий шаг - определение имени формы по умолчанию, которая появится сразу после запуска приложения. По этому имени будут сгенерированы *.h и *.cpp файлы.

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

Следующее звено в длинной цепочке настроек - определение Application ID, для удостоверения функций приложения, если ему требуется выполнять чтение и запись в защищенные папки. Мне это не требовалось, поэтому я этот шаг опустил.

Почти конец - определение очевидных свойств приложения Name, Vendor и Description.

И вот уже почти почти конец - это определение необходимых конфигураций для разработки: рекомендую оставить все по умолчанию, а сейчас наиболее важной конфигурацией является Simulator-Debug - это возможность отладки кода на симуляторе устройства, Target-Release - конфигурация для компилирования приложения пред выгрузкой его на реальное устройство.

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

После финала настроек будущее приложение появляется в Project Explorer, щелчок по которому приводит к раскрытию файлов ресурсов в окне Resources и появлению следующего окна:

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

Я сразу перенес уже готовую кнопку, которую любезно сгенерировала среда, пониже и написал на ней Calculate. Располагая GUI Editor легко получить следующий интерфейс, который хорошо подходит для моей задачи (полагаю, что процесс переноса элементов управления на форму и установки их свойств никаких затруднений не вызывает); в качестве подписей к полям ввода использован очевидный Label, в качестве полей ввода - EditField; для показа результата вычислений также использованы Label, поскольку их редактирование не предусмотрено:

Теперь собственно кодирование.

Выполняющееся приложение проходит несколько этапов (Помощь очень подробная, там можно узнать детали), сейчас в первую очередь нас интересует этап иницализации приложения, за который отвечает метод OnInitializing(void) класса формы, который можно найти в файле <ВАША_ФОРМА>.cpp в папке src проекта.

По умолчанию этот метод выглядит следующим образом:

Result Form1::OnInitializing(void) { result r = E_SUCCESS; // TODO: Add your initialization code here // Get a button via resource ID __pButtonOk = static_cast