Карта сайта Хакер в RSS Энциклопедия Хакера PDA версия сайта Почтовые рассылки Хакера    Хакер в Twitter Хакер в ВКонтакте Приложение Хакер для Facebook Хакер на Formspring.me
Журнал Новости Форум Видео Life Xakep Live (блоги)
Bugtrack Статьи Блог Поиск English
Трюки с phpinfo Трюки с phpinfo
Совсем недавно в паблике появилась информация о новом интересном подходе к эксплуатации уязвимостей класса LFI с помощью бесполезной на первый взгляд функции phpinfo() и временных загрузочных файлов. Берем на вооружение этот полезный прием....
Интервью с создателем NGINX Игорем Сысоевым Интервью с создателем NGINX Игорем Сысоевым
Легкий веб-сервер NGINX буквально только что вышел на 2 место по популярности в интернете. А незадолго до этого создатель NGINX привлек 3 млн. долларов инвестиций и основал одноименную компанию. В общем, поводов для общения с Игорем Сысоевым у нас была масса....

Разработка виджетов в Windows Mobile 6.5

Bookmark and Share

Весной компания Microsoft объявила о новой платформе Windows Mobile 6.5, которая должна прийти на смену Windows Mobile 6.1. Производители уже вовсю готовят новые модели под эту платформу и скоро пользователи увидят их на прилавках наших магазинов. А мы с вами поговорим о новинке, которая появится в данной платформе – поддержка виджетов. В последнее время поддержка виджетов стала модным течением для многих компаний, выпускающих программное обеспечение. Например, наш отечественный производитель Яндекс недавно выпустил свой API для создания виджетов для своей главной страницы. Microsoft также была замечена в этом деле. Вспомним о гаджетах для SideBar, которые появились в Windows Vista. Кстати, многие удивлялись, почему разработчики из Редмонда назвали свою новинку гаджетом, а не виджетом, как это сделали Google, Yahoo, Opera, Яндекс и др. Впрочем, мы не будем разбираться в правильности терминов. А рассмотрим лучше примеры создания виджетов для Windows Mobile 6.5.

Сначала чуть-чуть теории. Вы может рассматривать виджет, как мобильную версию веба. При этом виджет загружается как установочный пакет и запускается локально на мобильном устройстве. При запуске ведет себя как обычное приложение, написанное на C++, C# или VB. Устанавливается в списке программ, работает как в Professional (сенсорные экраны) так и в Standard (смартфоны с обычными экранами) версиях. Виджет обладает всеми возможностями веб-страницы: полная поддержка AJAX, плагинов типа Flash. Устанавливается в списке программ. Использование виджетов может значительно сократить трафик при получении данных из интернета по сравнению с обычным браузером, например, получать данные о товаре из интернет-магазин без дополнительной рекламы или прогноз погоды в нужном городе. На этом теория заканчивается.

Первая радостная весть с полей Родины – поддержка виджетов уже встроена в платформу Windows Mobile 6.5 и нам не придется уговаривать пользователей своего самого крутого виджета (а других виджетов мы разрабатывать не умеем), качать с сайтов Microsoft и устанавливать какие-то программные модули. Второе радостное событие – для создания виджета не нужно быть программистом языков высокого уровня типа C++, C# или Visual Basic. Вполне достаточно базовых знаний JavaScript и XML. Естественно, если вы обладаете более широкими знаниями в языке сценариев (например, AJAX), то и виджеты вы сможете создавать более профессиональными.

Если нам не нужно знать языки программирования, то мы можем обойтись даже без Visual Studio, а писать в любимом инструменте хакеров - обычном текстовом редакторе типа "Блокнот". Но с другой стороны, использование Visual Studio позволяет быстрее писать код, используя подсказки Intellisense и другие возможности интегрированной среды разработки. Мы совместим оба подхода. Сам виджет напишем в Блокноте, а для отладки воспользуемся Visual Studio.

Если вы уже имеете хоть небольшой опыт разработки приложений для устройств под управлением Windows Mobile (на страницах журнала  затрагивалась эта тема), то знаете, что для тестирования программ в Visual Studio используются эмуляторы устройств разных типов и размеров (КПК, смартфоны, коммуникаторы с разными разрешениями экранов).

В Visual Studio 2008 уже имеются эмуляторы для платформы Windows Mobile 5.0, но нам нужно скачать отдельно специальный SDK для Windows Mobile 6. Наверное, вы это уже давно сделали. А теперь внимание – недавно Microsoft выложила Developer ToolKit (DTK) для Windows Mobile 6.5. Не вдаваясь в технические подробности скажу, что DTK является что-то вроде дополнения к SDK. В нашем случае, в этот набор разработчика были добавлены новые эмуляторы для Windows Mobile, новые Gesture API и примеры. После установки данного набора вы сможете запускать свои старые проекты, написанные еще для Windows Mobile 5.0, на новых эмуляторах Windows Mobile 6.

Но наша цель – разработка собственного виджета. Давайте для начала запустим новый эмулятор. Есть несколько способов, я расскажу о своем привычном способе, который использует разработчик для мобильных устройств. Я поступил следующим образом. Нашел на своем компьютере проект для Smart Device и в Visual Studio 2008 вызвал менеджер эмуляторов через меню Tools | Device Emulator Manager...

В менеджере эмуляторов выберите любой из WM 6.5-эмуляторов и в контекстном меню выберите пункт Connect. Для своего примера я решил выбрать USA Windows Mobile 6.5 Professional WVGA Emulator, у которого разрешение экрана составляет 800 на 480 пикселей.

В результате у вас должен запуститься эмулятор. Для удобства мы настроим эмулятор следующим образом. В меню самого эмулятора выберите File | Configure... и на вкладке General найдите поле Shared folder:. Выберите любую папку на вашем компьютере, которая будет играть роль карточки памяти. В этой папке мы будет создавать примеры виджетов и нам не придется мучиться переносом файлов с компьютера на эмулятор. На этом наши приготовления закончены, и мы можем приступать к разработке виджета. Напоминаю, что писать код мы будем в Блокноте, хотя это можно делать и в Visual Studio или в другом удобном для вас инструменте.

Разработки виджета состоит из трех частей.

Первая часть - написание кода для виджета. Напишем простейший пример html-документа (widget.htm):

<html>
<head>
<link href="xakep.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="convert.js"></script>
<title>Наш первый хакерский виджет!</title>
</head>

<body>
<h2>Хакер</h2>

<p>Наш первый хакерский виджет для Windows Mobile 6.5, который позволяет
узнать, сколько рублей содержится в долларах и евро.</p>

<table>
<tr>
<td><input type="text" id="fromVal"" style="width:80px" onfocus="watchChanges()" onblur="watchChanges()" />
</td>
<td>
<select id="fromSystem" onchange="convert()" />
<option selected="selected" value="ru">рублей</option>
<option value="do">долларов</option>
<option value="eu">евро</option>
</select>
</td>
</tr>
<tr>
<td colspan="2" align="center">=</td>
</tr>
<tr>
<td><input type="text" disabled="true" id="toVal" style="width:80px"/></td>
<td>
<select id ="toSystem" onchange="convert()" />
<option value="ru">рубли</option>
<option value="eu">евро</option>
<option selected="selected" value="do">доллары</option>
</select>
</td>
</tr>
</table>

</body>
</html>

Создание html-документа для виджета ничем не отличается от стандартных веб-страниц для сайта. Вы также можете использовать внешние файлы для каскадных стилей CSS и сценариев JavaScript, как это сделано в моем примере. Исходный код для примера можно скачать отдельно.

Сохраните все документы в одной папке и переходите ко второму этапу. Следующим шагом будет создание установочного пакета для распространения виджета. Для этого необходимо создать манифест-файл используя стандарт W3C Widget Standard (Windows Mobile 6.5 поддерживает драфт от 22 декабря 2008). Приятно отметить, что Microsoft не стала изобретать велосипед и придумывать свой стандарт, а использовала общепринятый стандарт для создания виджетов. Для упрощения нашей задачи, воспользуемся следующим небольшим манифестом (скопируйте текст в config.xml и поместите в ту же папку, что и widget.htm):

<?xml version="1.0" encoding="utf-8" ?>
<widget version="1.0"
xmlns="http://www.w3.org/ns/widgets"
id="">
<name>Хакерский виджет</name>
<author href="developer.alexanderklimov.ru" email="terminator2@mail.ru">Александ Климов</author>
<content src="widget.htm" type="text/html" />
<access network="true" />
<icon src="icon.png"/>
<description>Хакерский виджет, специально разработанный для журнала Хакер</description>
</widget>

Не забудьте поместить в папку с виджетом файл значка под названием icon.png.

Итак, у нас уже имеется 5 файлов (config.xml, icon.png, widget.htm, xakep.css, convert.js), которые нам необходимо запаковать. Выделите файлы в проводнике, нажмите правую кнопку мыши и выберите Отправить | Сжатая Zip-папка. Имейте в виду, что запаковывать необходимо именно файлы, а не папку с ними, так как важно, чтобы config.xml находился в корне zip-контейнера. Полученный zip-файл просто переименуйте в widget.wgt. Естественно, вы можете воспользоваться другими ZIP-архиваторами, к которым вы привыкли, например WinRAR.

Последняя часть - установка и запуск виджета. Откройте проводник в эмуляторе и войдите в папку Storage Card. Так как мы уже настроили эмулятор таким образом, что папка с примерами является по совместительству карточкой памяти для эмулятора, то нам нужно просто найти свой файл widget.wgt и щелкнуть на нем мышью. Соответственно, на реальном устройстве вам нужно переместить файл удобным вам способом (записать на карточку, передать через Bluetooth, скачать через интернет).

Начнётся несложный процесс установки.

Сразу же после установке наш виджет запустится и появится на экране. Поздравляю, вы сделали это!

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

Если вы решите удалить виджет, то это можно через команду Start | Settings | System | Remove Programs.

Мы рассмотрели простейший пример виджета. Для написания более сложных примеров вам придется изучить документацию по Widget API. Я расскажу о некоторых дополнительных возможностях, которые вас могут заинтересовать. Обратите внимание, что помимо стандартной объектной модели JavaScript, виджеты поддерживают дополнительный объект widget со своими специфичными свойствами. Например, через данный объект можно получить доступ к данным манифест-файла. Скажем, свойство authorEmail позволяет получить электронный адрес разработчика виджета, который указан в атрибуте email элемента <author> файла config.xml. Вот пример, как получить из манифеста описание виджета:

<div id="divData"></div>
<script type="text/javascript">
divData.innerHTML = "Описание виджета: " + widget.description;
</script>

Кроме того, есть еще интересный объект SystemState со следующими свойствами:

CradlePresent
DisplayRotation
PhoneHomeService
PhoneOperatorName
PhoneRoaming
PhoneSignalStrength
PowerBatteryState
PowerBatteryStrength

Программисты с опытом разработки для мобильных устройств несомненно узнают в этих свойствах знакомые элементы SNAPI (брокер состояний и оповещений). Желающие ознакомиться с подробностями этой технологии, могут прочитать о ней в моей книге "Программирование для мобильных устройств под управлением Windows Mobile", выпущенной издательством Питер.

Дополнительные материалы (создание собственного меню, работа с AJAX и т.д.) можно найти на специальной странице MSDN по адресу http://msdn.microsoft.com/en-us/library/dd721906(loband).aspx, а также на моей странице http://developer.alexanderklimov.ru/winmobile/widget.php.

Удачи в создании собственных виджетов!



Теги: Windows Mobile , программирование , смартфон





СЛЕДУЮЩИЕ СТАТЬИ
Ударь копирайтом по работодателю: возвращаем финансы, честно заработанные на служебных произведениях
Руткит в сетевухе: фантазии программиста о создании непобедимого руткита
Чемпионаты по программированию и не только
Алгоритмическая симфония из одной строчки кода
Kinect: разбираемся с новым девайсом и учимся писать для него приложения
Программное обеспечение: поглощая мир
SMS-похититель для Android: Sсriрting Layer for Android - интересная среда разработки для мобильного телефона
13 утилит для безопасной разработки: инструменты от Microsoft для написания надежного кода
Silverlight: защита и нападение
Кроссплатформенный кодинг для мобильных платформ: покоряем iOS, Android, Bada, Symbian и WM с помощью AirPlaySDK
ПРЕДЫДУЩИЕ СТАТЬИ
Конь в яблоках: пишем троян для Apple iPhone
Термальная угроза: мифы и реальность №1
Куда податься телефонному кодеру: полный гид по мобильным платформам для программиста
Проникновение в BIOS ROM: осваиваем SPI Flash №2
Проникновение в BIOS ROM: осваиваем SPI Flash №1
Зло-кодинг под Symbian
CUDA мы катимся: технология NVIDIA CUDA
Один в поле не воин: средства для совместной работы онлайн
Еще одна аппаратная угроза или проникновение в SPD ROM №2
Еще одна аппаратная угроза или проникновение в SPD ROM №1
ОБСУЖДЕНИЕ СТАТЬИ
Логин:
Пароль:
Если у вас есть форумный логин - вы можете использовать его, иначе анонимный гостевой доступ.

Для оставления комментария вы можете зарегистрироваться по упрощенной процедуре.

Обсуждение этой статьи на forum.xakep.ru
Для отправки сообщения введите код, указанный на картинке
Сообщение

UserГость
29.07.2009 16:09:26
Ответить Ссылка
Вот теперь все по крутому будет, виджет это тоже самое web - приложение с широкими возможностями... Суперская статья...
UserГость
30.07.2009 10:03:38
Ответить Ссылка
прикольно
UserГость
06.08.2009 10:39:39
Ответить Ссылка
А можно файлик convert.js в студию - для разбора, а тоя пока не так хорошо кодю
UserГость
22.10.2009 20:21:00
Ответить Ссылка
имеется небольшой вопрос к автору статьи Александру Климову ..........если можна хотелось бы получить контактную инфу для переписки.




Keywords: zPOSTz zSOFTz, zHOWz, zINFOz, zYANDEXz z48996z
Для Авторов: edit Lock delete Lock



    Rambler's Top100