"My cat, as it
turns out, is an excellent debugger, and she has helped me solve a number of
nasty bugs when I talked to her about them."
John Robbins, Debugging Applications, Microsoft Press, 2000
/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить
проблему ей - и все становится ясно. */
Разработка виджетов в Windows Mobile 6.5
С выходом Windows Mobile 6.5 Developer Toolkit у разработчиков появилась возможность создавать виджеты для мобильных устройств под управлением Windows Mobile 6.5. После установки указанного набора инструментов можно приступать к разработке.
Запустите нужный эмулятор удобным вам способом. Например, вы можете запустить отдельный эмулятор (Пуск | Все программы | Windows Mobile 6 SDK | Standalone Emulator Images | US English | WM 6.5 Professional (или любой другой из группы WM 6.5)). Также можно запустить менеджер эмуляторов (C:\Program Files\Microsoft Device Emulator\1.0\dvcemumanager.exe). Я поступил следующим образом. Нашел на своем компьютере проект для Smart Device и в Visual Studio 2008 вызвал менеджер эмуляторов через меню Tools | Device Emulator Manager....
В менеджере эмуляторов выберите любой из WM 6.5-эмуляторов (в моем примере это USA Windows Mobile 6.5 Professional VGA Emulator) и в контекстном меню выберите пункт Connect.
В результате у вас должен запуститься эмулятор. Для удобства мы настроим эмулятор следующим образом. В меню самого эмулятора выберите File | Configure... и на вкладке General найдите поле Shared folder:. Выберите любую папку на вашем компьютере, которая будет играть роль карточки памяти. В этой папке мы будет создавать примеры виджетов и нам не придется мучаться переносом файлов с компьютера на эмулятор. На этом наши приготовления закончены и мы можем приступать к разработке виджета.
Разработки виджета состоит из трех частей:
Первая часть - написание кода для виджета. Напишем простейший пример html-документа (widget.htm):
<html>
<head>
<title>Наш первый виджет!</title>
</head>
<body>
Наш первый виджет для Windows Mobile 6.5
</body>
</html>
Следующим шагом будет создание установочного пакета для распространения виджета. Для этого необходимо создать манифест-файл, используя стандарт W3C Widget Standard. Для упрощения нашей задачи, воспользуемся следующим небольшим манифестом (скопируйте текст в config.xml и поместите в ту же папку, что и widget.htm):
<?xml version="1.0" encoding="utf-8" ?>
<widget version="1.0"
xmlns="http://www.w3.org/ns/widgets"
id="">
<name>My first widget</name>
<content src="widget.htm" type="text/html" />
<access network="true" />
<icon src="icon.png"/>
<description>Это наш первый виджет,
у нас все получится!</description>
</widget>
Подробнее о файле-манифесте рассскажем чуть ниже.
Не забудьте поместить в папку с виджетом файл значка под названием icon.png.
Итак, у нас уже имеется 3 файла (config.xml, icon.png и widget.htm), которые нам необходимо запаковать. Выделите файлы в проводнике, нажмите правую кнопку мыши и выберите Отправить | Сжатая Zip-папка. Имейте в виду, что запаковывать необходимо именно файлы, а не папку с ними, так как важно, чтобы config.xml находился в корне zip-контейнера. Полученный zip-файл просто переименуйте в widget.wgt. Естественно, вы можете воспользоваться другими ZIP-архиваторами, к которым вы привыкли, например WinRAR.
Последняя часть - установка и запуск виджета. Откройте проводник в эмуляторе и войдите в папку Storage Card. Найдите там свой файл widget.wgt и щелкните на нем мышью.
Начнётся несложный процесс установки,
После установки вы можете найти свой виджет на экране через кнопку Пуск!
Примечание: Чтобы не устанавливать виджет снова и снова, можно воспользоваться папкой Program Files\Widgets\User\<WidgetID> в эмуляторе. Идентификатор виджета генерируется при установке и получается автоинкрементом последнего установленного виджета. Вы можете изменять файлы в этом каталоге по своему усмотрению. Чтобы изменения вступили в силу, нужно закрыть виджет и запустить его снова.
Теперь достаточно щелкнуть на нашем виджете для запуска и полюбоваться своим творением.
Удалить виджет можно через Start | Settings | System | Remove Programs.
Также вы можете найти доклад на TechDays MBL302 Windows Mobile Web and Widgets: Leveraging web technologies to build experiences for Windows Mobile, где рассказывается об API и некоторых возможностях фреймворка.
Дополнительные сведения
Для разных экранов устройств рекомедуется создавать значки по следующей таблице (размер значка@DPI):
Устройства Windows Mobile Standard не поддерживают значки формата JPG и PNG, поэтому используйте формат ICO. В тоже время другие устройства не поддерживают формат ICO. Для решения этой проблемы используйте в манифесте две строчки (значок PNG должен быть первым):
<icon src="icon.png/>
<icon src="icon.ico"/>
На текущий момент виджеты можно установить только в основную память.
Спецификация манифеста
Рассмотрим подробнее манифест виджета, который представляет собой XML-файл, детально описывающий характеристики виджета для Windows Mobile. Манифест позволяет системе понять при загрузке, что нужно делать с виджетом. Вото почему, правильное описание манифеста исключительно важно.
Виджеты в Windows Mobile 6.5 базируются на стандарте (Windows Mobile 6.5 поддерживает версию от 22 декабря 2008). Самое главное – файл
манифеста должен называться config.xml. Формально манифест виджета может быть пустым, и при этом что-то даже будет установлено,
поскольку все элементы файла config.xml не являются обязательными. В начале статьи был приведен пример простого манифеста.
Давайте создадим более сложный вариант:
<?xml version="1.0" encoding="utf-8" ?>
<widget version="1.0"
xmlns="http://www.w3.org/ns/widgets"
id="http://yoursite.com/YourUniqueWidgetID">
<name>Мой первый виджет</name>
<content src="widget.htm" type="text/html" />
<access network="true" />
<icon src="icon.png"/>
<icon src="icon.ico"/>
<author href="http://developer.alexanderklimov.ru"
email="developer@alexanderklimov.ru">Александр Климов</author>
<description>Это наш первый виджет,
у нас все получится!</description>
<license>
Copyright (c) 2009 Meow Corp.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND...
</license>
</widget>
Элемент widget
<widget> - родительский элемент для всех остальных элементов конфигурации. Он может быть определен только один раз. Данный элемент
может содержать множество атрибутов, полное описание которых можно найти в документации на сайте MSDN. Рассмотрим парочку атрибутов.
version="1.0" - Этот атрибут задает номер версии виджета и используется при установке нового виджета с
тем же самым id, для проверки – следует ли разрешить обновление приложения или нет.
id="http://yourSite.com/YourUniqueWidgetID" - важный атрибут, содержащий уникальный идентификатор виджета, который используется фреймворком для идентификации установленных виджетов. Значением атрибута должен быть корректный URL, однако, этот URL не обязательно должен быть
работающим.
Элемент content
Поговорим о элементе, который очень важен – это <content src="widget.htm" type="text/html" />.
Он сообщает системе, какой исходный файл следует загрузить для запуска виджета. Несмотря на то, что в атрибуте type указан
MIME-тип, в Windows Mobile 6.5 поддерживается только тип "text/html"
Элемент icon
Следующая интересная группа дочерних элементов – это <icon src="icon.png"/>, позволяющая задать один или несколько значков для виджета. Однако существует несколько ограничений, о которых создателям виджетов следует знать. Windows Mobile Professional поддерживает значки в формате PNG и JPG, но, Windows Mobile Standard поддерживает значки только в формате ICO. Поэтому, чтобы виджет нормально выглядел на обеих платформах, необходимо включить значки во всех форматах, но первыми указать файл PNG или JPG.
Элемент access
<access network="true" /> является необязательным элементом, но если вы хотите получить доступ к ресурсам сети,
элемент должен быть определен, и атрибуту network должно быть присвоено значение "true". В противном случае, элемент можно пропустить, но имейте в виду, что доступа к сотовой сети у виджета не будет, и к звонкам, соответственно, тоже.
Доступ к манифесту из виджета
Вы можете программно обращаться к данным манифеста из самого виджета, используя API метаданных виджета через объект javascript widget. Ниже перечислены наиболее важные свойства, с помощью которых можно получать нужную информацию из манифеста:
widget.version
widget.identifier
widget.name
widget.description
widget.authorEmail
widget.authorName
widget.authorURL
widget.height
widget.width
widget.locale
Также вы можете на эту тему (на англ.), где показаны основные приемы программирования виджетов.
Виджеты для Samsung
Обратите внимание, что Samsung предлагает использовать виджеты для своих телефонов под Windows Mobile 6.1, не дожидаясь версии 6.5.
Учитывая тот факт, что виджеты от Samsung также используют стандартные спецификации, вы можете почерпнуть оттуда полезную информацию. Подробнее
о разработке виджетов для телефонов Samsung можно прочитать на странице