Особенности программирования в Palm OS

Как большинству программистов вам вероятно приходилось писать приложения для настольных компьютеров таких как PC или Macintosh. Принцип написания программ для карманных компьютеров под управлением операционной системы Palm отличается от тех, что используются в программировании приложений для настольных систем, потому что портативные карманные компьютеры устроены иначе. Кроме того, пользователи взаимодействуют с такими устройствами иначе, чем с настольными компьютерами.

В этой главе объясняются основные отличия систем использующих Palm OS.

Разрешение экрана

Разрешение экрана большинства портативных компьютеров, работающих под управлением Palm OS, составляет всего 160 на 160 точек, а это значит, что объем информации, который вы можете отобразить на экране устройства, ограничен.

По этой причине вам следует тщательно продумывать организацию интерфейса с пользователем, используя другую систему приоритетов, чем та что применяется при программировании устройств имеющих экраны высокого разрешения. Постарайтесь найти верное соотношение между количеством выводимой на экран информации и количеством используемых приложением элементов управления. Подробнее тема организации интерфейса пользователя изложена в книге "Palm OS User Interface Guidelines".

Имейте в виду, что разрешение экрана устройств изменяется со временем при выходе новых моделей. Так модели от Sony и Palm на базе операционной системы Palm OS 5.x уже имеют разрешение экрана отличное от разрешения большинства других устройств работающих под управлением Palm OS, составляющее 320 на 320 и 320 на 480 точек. А модель HandEra 330 позволяет поворачивать экран на 90 градусов, а так же скрывать область ввода рукописного текста, и, если пользователь использует такую возможность, то приложение будет иметь больше места на экране, чем при стандартном расположении.

Быстрый доступ к приложениям и данным

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

В отличие от них пользователи карманных устройств обычно используют приложения по 15 - 20 раз в день, запуская некоторые из них всего на несколько секунд. Значит, в этом случае скорость работы приложения имеет очень большое значение. Однако кроме скорости выполнения есть ещё несколько значимых вещей, на которые надо обращать внимание во время разработки приложения. Общее время использования приложения складывается так же из удобства навигации, выбора и исполнения команд, и наиболее удачное сочетание этих составляющих может значительно повысить эффективность работы приложения. Следует так же помнить, что Palm OS не имеет на экране курсора, а значит вы не можете изменить его форму, чтобы показать пользователю, что запущенное приложение выполняет какую-то работу, как это обычно делается на настольных компьютерах.

Для того чтобы повысить эффективность работы приложения следует во время разработки интерфейса своего приложения сократить необходимость перехода между окнами, использование диалоговых окон, и т.д. Организация экрана приложения должна быть простой, позволяя пользователю получить результат выполнения приложения в кратчайшее время. Особенно важно следовать основным принципам организации интерфейса, определенных для устройств под управлением Palm OS. В этом случае пользователь, запустив ваше приложение, увидит уже знакомые ему элементы интерфейса и потратит меньше времени на обучение работе ним.

Группа разработчиков Palm OS определила основные требования к организации интерфейса приложений и следовала им при разработке стандартных приложений системы (таких как "Memo Pad", "Address Book", и т.д.). Эти требования собраны в книге "Palm OS User Interface Guidelines".

Обмен данными с настольным компьютером

Возможность обмена данными с настольными компьютерами представляем собой неотъемлемую стандартную возможность всех устройств работающих под управлением Palm OS. Все устройства поставляются со специальной подставкой-кредлом, одно из назначений которого - обмен данных с настольным компьютером. Кроме того, в комплект поставки входит специальное программное обеспечение для произведения резервного копирования данных с карманного устройства на настольном компьютере, а так же для пересылки новых данных в карманное устройство. Такой обмен данными называется синхронизацией.

Некоторые приложения для Palm OS имеют возможность обмена данными с схожими по назначению приложениями на настольном компьютере. Если вы пишете приложение такого типа и вам необходимо синхронизировать данные с программой на настольной системе, вам следует так же написать программу-кондуит. Кондуит представляет собой модуль для системы HotSyncR которая запускается после того как пользователь нажимает кнопку HotSynс, и производит синхронизацию данных. Чтобы написать кондуит следует воспользоваться инструментарием "Conduit SDK" распространяющимся со всей соответствующей документацией.

Особенности ввода данных

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

Технологии Graffiti и Graffiti2 удобны для рукописного ввода небольших заметок, однако, они не предназначены для набора текста большого объема, что требует наличия полноценной клавиатуры. Таким образом, вы не должны требовать от пользователя вводить много данных вручную непосредственно на устройстве.

Сейчас многие устройства под управлением Palm OS имеют возможность подключать внешнюю клавиатуру. Но следует помнить, что такие клавиатуры не являются стандартными, а продаются отдельно за дополнительную плату, и следовательно не стоит рассчитывать на что, что она есть у пользователя.

Питание

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

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

Память

Карманные компьютеры обладают небольшим объемом памяти для хранения и выполнения приложений. В разных моделях суммарный объем памяти предназначенной для хранения и выполнения приложений варьируется от 512 килобайт до 32 мегабайт.

Устройства не оснащаются жестким диском для хранения данных, и не имеют возможности подключения PCMCIA устройств. В связи с этим вам необходимо оптимизировать создаваемые приложения в первую очередь по объему памяти требуемому для хранения результатов его работы, во вторую очередь по скорости выполнения и наконец по размеру самого приложения.

Файловая система

По причине небольшого объема памяти, а так же для того чтобы сделать обмен данными с настольным компьютером наиболее эффективным в Palm OS нет файловой системы в обычном смысле этого термина. Данные хранятся в памяти в виде блоков называемых записями (records), которые сгруппированы в базы данных (databases). Можно рассматривать базу данных в качестве аналога файлу. Главное отличие базы данных от файла заключается в том, что данные в ней хранятся в виде последовательности записей, а не одним непрерывным блоком. В целях экономии памяти базы данных редактируются по месту их хранения, т.е. в процессе работы они не копируются в оперативную память, чтобы после изменения быть скопированными обратно.

Обратная совместимость

В настоящее время используется большое количество Palm-совместимых устройств, внутри которых находятся разные версии операционной системы. Не все пользователи имеют возможность и желание производить обновление ОС до последней доступной версии, как это делают пользователи настольных компьютеров. Обновления операционной системы разработаны таким образом, что программы, предназначенные для работы на моделях со старой версией ОС будут работать с ними. Таким образом, вы получаете большое количество потенциальных пользователей ваших приложений. Подробнее об этой теме вы можете узнать из "Making Your Application Run on Different Devices".

Концепции программирования в Palm OS

В большинстве случаев приложения для Palm OS представляют собой однопоточные, событийно-ориентированные программы. Одновременно может выполняться только одна программа. Чтобы разрабатывать полноценные приложения для Palm ОС следует понимать, как устроена сама операционная система и как следует организовывать свои программы.

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

Основное назначение функции PilotMain() состоит в приеме кода запуска и выбора соответствующего метода реагирования на него (см. главу 2 "Application Start and Stop").

Palm OS - событийно-ориентированная операционная система, а, значит, каждое приложение содержит обработчик событий. Однако этот обработчик вызывается только при нормально запуске приложения. При других типах запуска ваше приложение может не выполнять обработку событий. В главе 3 "Event Loop" подробно описывается главный обработчик событий.

Большинство приложений для Palm OS имеет интерфейс, состоящий их форм. Эти формы можно рассматривать в качестве аналога окон операционных систем настольных компьютеров. Кроме форм интерфейс приложения может содержать как стандартные элементы взаимодействия с пользователем (иногда их называют UI-объектами) так и элементы самостоятельно созданные разработчиком приложения из стандартных элементов. Более подробно вы можете узнать об этом из главы 4 "User Interface".

Все приложения в своей работе должны использовать средства операционной системы для работы с оперативной памятью и базами данных. О работе с оперативной памятью рассказано в главе 5 Memory", а о использовании баз данных в главе 6 "Files and Databases".



Эта статья с сайта PalmQ Online
http://www.palmq.ru

URL этой статьи:
http://www.palmq.ru/sections.php?op=viewarticle&artid=99