войти зарегистрироваться

Mobile Development whois

индекс
69,13

Программирование для мобильных платформ (КПК)

Введение.
Сейчас КПК и другие мобильные прибамбасы есть уже наверное у каждого десятого. То есть у многих. А раз есть КПК — значит, нужны и программы к ним ). Также очень часто встречается ситуация, что нужная программка для наладонника есть, но она платная). А еще может быть, что Вам самим захочется добавить какие-нибудь функции для Вашего любимого девайса. В этом Вам поможет наш небольшой обзор. Писать будем на языке С# в всенародно любимой Visual Studio 2005. Вы увидите, что писать такие приложения совсем несложно и процесс не очень отличается от написания программ для обычных компьютеров x86.

Эмулятор Pocket PC.

Прежде всего уясним, что наши приложения будут написаны для платформы Windows Mobile. Чтобы сделать жизнь разработчика проще и приятнее, в VS2005 включили эмулятор мобильного детища майкрософт). С его помощью разработка приложений под мобильные платформы происходит почти так же, как под обычные x86-компьютеры. В состав Visual Studio 2005 входит эмулятор Windows Mobile 2003, поэтому наши приложения будут написаны именно под нее. Сейчас уже вышли Windows Mobile версии 5.0 и 6.0, поэтому при программировании под современные КПК могут быть небольшие отличия.
В общем, приступим). Вот так выглядит окно эмулятора Pocket PC:


Создаём приложение для КПК.

Запускаем Visual Studio и создаем новое приложение.

Перед нами появится форма приложения. Т.к. в Windows Mobile нет возможности произвольно задавать размер окна, форма приложения занимает весь экран наладонника.
Разместим на форме компоненты:
  1. 2 Label'a
  2. 2 TextBox'a
  3. 1 MainMenu
  4. 1 PictureBox

Дадим им новые названия, и в итоге получится вот такая форма:

Теперь добавим какие-нибудь функции в наше приложение. Что интересно, можно сделать обработку нажатия всех клавиш ). И все они будут работать внутри приложения). Если Вы не сделаете обработку каких-либо клавиш, они просто будут иметь дефолтное значние. Для изменения функции клавиш достаточно нажать на одну из кнопок КПК на форме, и вы сразу можете писать свой код обработки нажатия клавиши.

Вот пример кода для программирования кнопок на КПК:
private void Form1_KeyDown(object sender, KeyEventArgs e)
    {
      if ((e.KeyCode == System.Windows.Forms.Keys.Up))
      {
        // Rocker Up
        // Up
      }
      if ((e.KeyCode == System.Windows.Forms.Keys.Down))
      {
        // Rocker Down
        // Down
      }
      if ((e.KeyCode == System.Windows.Forms.Keys.Left))
      {
        // Left
      }
      if ((e.KeyCode == System.Windows.Forms.Keys.Right))
      {
        // Right
      }
      if ((e.KeyCode == System.Windows.Forms.Keys.Enter))
      {
        // Enter
      }
    }
* This source code was highlighted with Source Code Highlighter.

На кнопку “Enter” можете прописать код типа вот такого:
//Обработка события по нажатию клавишы «Enter»
if ((e.KeyCode == System.Windows.Forms.Keys.Enter))
    {
     MessageBox.Show(«Это текст сообщения», «Сообщение!»);
    }
* This source code was highlighted with Source Code Highlighter.

Далее скомпилируем приложение, нажав на клавишу F5. При нажатии на кнопку Enter мы увидим сообщение.
Теперь задействуем ранее добавленные нами кнопки. Дважды кликнув на форме на кнопку PushMe!, приступим к написанию обработчика для нее:
    private void button1_Click(object sender, EventArgs e)
    {
      //Если в поле введены верные данные то выведем сообщение об этом
      if (LoginTb.Text == «Login» && PasswordTb.Text == «Password»)
      {
        MessageBox.Show(«Вы успешно авторизованы!»,«Information»);
      }
      //Иначе
      else
      {
        MessageBox.Show(«Не верный Логин/Пароль!!!», «Information»);
      }
    }
* This source code was highlighted with Source Code Highlighter.
Снова скомпилируем программу и посмотрим на результаты. Теперь, если ввести в графы Login и Password те самые слова «Login» и «Password» (оба слова с большой буквы), мы получим сообщение «Вы успешно авторизованы».После компиляции в папке Debug появляется exe-файл.

Заключение.

Как вы убедились, программирование приложений для обычных компьютеров и для КПК ничем особенным не отличается. В случае КПК все может быть даже проще из-за того, что требования для таких приложений менее серьезные, чем для приложений для «обычной» Windows. В общем, это стоит попробовать, особенно если у вас есть свой наладонник :). Далее вы можете написать любое приложение, на сколько вам хватит фантазии и сил:)Enjoy!

Исходник: скачать
Оригинал статьи — http://coderszone.info/305-programmirovanie-dlja-mobilnykh.html

комментарии (45)

  • интересная статья, про программирование для WM еще не встречал статей на хабре
    значит, с почином вас.

    я кстати тоже как-то делал программу, только для WM smartphone edition
    надо сказать, .net на мобильных платформах несколько ограничен, но удовольствие от процесса получил, достаточно полезный опыт даже для тех, кто не пишет для мобильных устройств
    • Очень хорошо всё визуализировано, наверно это то за что я ценю Visual Studio всё просто и понятно. Думаю кто решить написать под WM получить больше удовольствие:)
      • согласен, эмуляторы устройств сделаны качественно
  • будет продолжение? интересно как например чтонибудь с графикой для кпк программировать…
    • Да я думаю будет, т.к по статье думаю Вы заметили что это вроде введения.
      P.S — извиняюсь за большое количество скриншотов.
  • пишите еще, и скриншоты — это очень даже хорошо, т.к. наглядно
  • Пусть меня заминусуют, но свое ХО я выскажу :-) Пользуюсь мобильными компьютерами более 5 лет, начиная с палмов. И вот какие программы я ненавижу, так это сделанные на .Net Мнение как программиста — замечательная вещь, писать легко и удобно, многое уже реализованно, мнение как пользователя — ненавижу. Эти монстры еле шевелятся и жрут память, плюс заставляют грузить этого монстра .net фреймворк. Для одной программы одного монстра, для другой — другого.
    • В принципе это и понятно т.к кушают приложения не мало. Вообщем тут от ситуации смотреть надо:)
    • в чем то вы правы
      но нужно понимать, что в отличии от java платформа .net не предустанавливается, поэтому изначально .net находится в проигрыше
      на самом деле я не думаю, что java- и .net- программы чем-то друг-друга лучше или хуже, наверняка и памяти жрут одинаково и места съедают
      • В WM6 (да и в WM5 кажется тоже) .net framework предустановлен. А для java нужен эмулятор (производители как правило его включают в набор стандартных программ, но не всегда).
      • что вы! господь с вами, какая ява! такой же монстр. я таки приверженец «чистых» программ. кстати легкий вход в мир программирования при помощи .net с одной стороны дает разнообразие программ, с другой — большинство из них сделано чайниками, в результате получается большая навозная куча с жемчужиной внутри.
        • Java2 Micro Edition (J2ME) довольно-таки сильно отличается от стандартной редакции (J2SE). Так что про «монстра» это вы загнули.

          Кроме того, в J2ME много иных интерфейсов и API, которые не применяются в J2SE в силу своей специфичности. Скорость приложений J2ME сопоставима с нативными, так как давно уже в мобильниках применяется аппаратный сопроцессор Java-байткода.
          Почитать статьи о программировании мобильных устройств можно по этой ссылке:
          www.mobilab.ru/articles/index2.php? cat=3

          А вот AWT-приложения на Java 1.1 вполне портабельны на КПК (в рамках J2ME CDC/PersonalProfile и отдельной виртуальной машины, например, IBM J9). Такие вполне «полноценные» приложения разрабатывать можно в стандартной среде (в Eclipse или NetBeans, подключив Sun JDK 1.1.8), и тормозить такие приложения будут не меньше, как на большом компьютере, а может и больше. :)
          • Писал я малость на J2ME так что представление имею, и когда среда рантайм соотвествует архитектуре приложения (например упомянутый вами аппаратный ява процессор) или просто нет альтернатив, то нет и никаких возражений. Да на самом деле не было бы никаких возражений и против дот нета, и против явы и против черта с поварешкой :-) если бы сама среда исполнения потребляла бы адекватное сложности приложения количество ресурсов (памяти/процессорного времени), была качественной и не вносила бы своим присутсвием помех в работу ОС(а уж какие чудеса с памятью дотнет может вытворять… впору анекдоты писать).
            Ставил я на днях програмку, небольшого размера, да и по функциональности два диалога на всю програмку, в общем ничего запредельного в ней нет. Запускаю инсталлятор, он радостно говорит — погодь, загружу необходимое, грузит ссука 80метров дотнетов, ставит их не спрашивая все три — 1,2,3 и потом спрашивает, ну что мне тут полтора метра для установки надо, дашь? поехали?
            Так что не люблю я их — ни дотнеты ни яву, тем более на покетах.
            • >Запускаю инсталлятор, он радостно говорит — погодь, загружу необходимое, грузит ссука 80метров дотнетов, ставит их не спрашивая все три…

              Ну, не знаю — я никогда не втречался с таким поведением Java-среды. Вот Дотнет, это да… «высокоинтеллектуальный» образец самоавтоматизации.
      • вы неправы. с PPC 2003 .net 1.0 или 1.1 предустанавливается на все покеты.
        • и на смартфоны тоже? я только с ними дела имел и по моему на motorola mpx220 .net не было… там 2003 se стоит
          могу ошибаться
        • У меня тоже на HP небыло .NET предустановленного.
          Возможно его начали предустанавливать начиная с какого-то года, но даже и на WM5 не всех есть .NET
          • В WM5 есть на всех, причем .Net 2.0.
            • НЛО прилетело и опубликовало эту надпись здесь.
        • у меня 2003se на одном из покетов, могу вас уверить дот нета там нет и не будет :-)
    • вы абсолютно правы. насколько я знаю, среди 100 самых продаваемых программ для покетов нет ни одной на .net.
  • Хочу таких статеек для iPhone SDK. Собираюсь заняться, но всё никак не собирусь, если будут — это будет хорошим стимулом, да и легче всё в разы с подсказками на родном языке.
    • Мне данную тему уже предлогали:) Надо будет покопать сегодня, если что получится напишу статью.
    • Так елки, это же супер повод вам самому детальнее разобраться и написать серию статей по этой теме :) Если найдется время на все это.
      В общем, попробуйте пойти от обратного, количество знаний получите не в пример больше, чем с готовой статьи.
  • НЛО прилетело и опубликовало эту надпись здесь.
    • что-то останавливает? пишите! :)
      • НЛО прилетело и опубликовало эту надпись здесь.
        • повысил карму, смотрите, теперь не будет статьи — карма уменьшится в два раза
          :)
          • НЛО прилетело и опубликовало эту надпись здесь.
          • НЛО прилетело и опубликовало эту надпись здесь.
  • Вот неплохая книга на эту тему.
    myppc.ru/2007/02/10/aklimov_programmirovanie_kpk_i_smartfonov_na_net_compact_framework.html

  • Мне кажется быдлокодерством использование if для программирования клавиш. Я для этого использую switch-case.
    • правильно, мало того что долго, так еще и плохо различимо
    • Да, Вы правы спасибо за замечание.
      Но, дело в том что студия сама данный код сгенерировала, я уже данный код править не стал.
  • Это именно то, что я искал! Спасибо! Жду продолжения :)
    Желательно, на примере простого клиент-серверного приложения…
  • Было бы совсем хорошо, если бы Вы, так же хорошо проилюстрировав, описали процесс создания установщика.
    • Могу отдельно оформить статью, точнее уже будет не как статья, а как типс.
  • Да, я согласен с тем, что для простых программ, написанных для себя, .Net и Си-шарп подходят очень хорошо. В нём все достаточно просто и удобно с точки зрения разработчика. А если программа пишется для себя, то и сопутствующие недостатки, вроде невысокой скорости работы, скорее всего не будут остро восприниматься. А вот приложения предназначенные для массового использования, лучше всё-же писать на штатном С++ с использованием дополнительных библиотек, облегчающих разработку.
  • C++ и дедушка MFC — наше всё.
  • Может быть, стоит завести отдельный блог для программирования мобильных платформ?
  • Опечатка…
    //Обработка события по нажатию в меню пунка «Exit»
        private void button1_Click(object sender, EventArgs e)

    Видимо, всё-таки, пункт меню тут не при чём.
    • Большое спасибо даже не заметил!
  • Кнопочки и лабелы — это конечно хорошо, но были бы особо интересны примеры работы с начинкой и специфическими функциями, например, если это коммуникатор, то с GSM — модулем, сообщениями, батареей, дисплеем…
    • мне тоже как раз этого нехватает.
      я вообще в программировании не первый день, но про это я не знаю, было бы неплохо без всякого рассусоливания, тоесть на примерах, всё объяснять.
      не знаю хватит ли автора статей на 5, но его правда интересно читать…
Только авторизованные пользователи могут оставлять комментарии. Авторизуйтесь, пожалуйста.