Чтение онлайн

на главную - закладки

Жанры

Программирование КПК и смартфонов на .NET Compact Framework

Климов Александр Петрович

Шрифт:

Но самое интересное происходит в событии

Form_Load
. Как только устройство принимает SMS-сообщение, оно перехватывается приложением для дальнейшей обработки. Если сообщение начинается словом «Срочно», то пользователь предупреждается о прибытии важного сообщения, после чего это сообщение удаляется. Подобное поведение обеспечивает параметр
NotifyAndDelete
.

После запуска приложения на форме будут отображены текстовое поле и флажок. После ввода текста сообщения нужно нажать кнопку

Послать SMS
. Код отправки сообщения позаимствован из предыдущего примера. Система должна отреагировать на прибытие нового сообщения с помощью специального уведомления, которое мы видели при разборе предыдущего примера (см. рис. 10.7).

Теперь следует повторить операцию.

Только на этот раз надо взвести флажок
Пометить как срочное
. В этом случае при отправке сообщения в начало текста вставляется дополнительное слово «Срочно». После нажатия кнопки приложение должно перехватить прибытие SMS-сообщения, так как теперь оно содержит ключевое слово, которое определялось в параметре
StartWith
. Как только это произойдет, сообщение будет удалено, а пользователь получит уведомление о прибытии срочного сообщения (рис. 10.8). Но следует помнить, что для перехвата сообщения приложение должно быть запущено.

Рис. 10.8. Прием срочного сообщения

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

ВНИМАНИЕ

Для примеров, связанных с SMS-сообщениями, нужно использовать эмуляторы и устройства, имеющие возможность работы с SMS.

Телефония

Разработчик может использовать возможности телефонии при помощи класса

Miсrosoft.WindowsMobile.Telephony.Phone
. Используя метод этого класса
Talk
, можно программно набрать нужный телефонный номер. При использовании класса
Phone
перед началом работы нужно установить ссылку на сборку
Microsoft.WindowsMobile.Telephony
. Пример использования этого метода приведен в листинге 10.12.

Листинг 10.12

using Microsoft.WindowsMobile.Telephony;

// Объявляем переменную Phone

phone = new Phone;

// Набираем номер

// Перед набором запрашиваем подтверждение

phone.Talk("4255551212", true);

Обратите внимание на набираемый номер. С помощью данного номера разработчик может делать звонок на эмуляторе. Эмулятор сначала запросит подтверждение набора номера (рис. 10.9) и затем будет звонить по указанному номеру.

Рис. 10.9. Запрос набора указанного номера

После подтверждения будет установлено соединение с неизвестным абонентом 4255551212 (рис. 10.10).

Рис. 10.10. Соединение с абонентом

State and Notifications Broker

В Windows Mobile 5.0 появилась новая технология, получившая название State and Notifications Broker. Использование данной технологии позволяет управлять состоянием устройства. Раньше для доступа к системным настройкам приходилось использовать неуправляемый код. Но теперь можно использовать возможности технологии State and Notification Broker.

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

открывает широкие возможности для увеличения функциональности программ. Например, разработчик сможет определять силу сигнала от сотовой станции, значение текущего заряда батареи, узнать, подключен ли крэдл, отслеживать состояние ActiveSync, определять наличие подключаемой клавиатуры, фотокамеры и гарнитуры. Также с помощью этой технологии можно определять число Bluetooth-соединений, отображать список текущих сетевых соединений, получать информацию об ориентации экрана. Разработчик может получать информацию о следующей назначенной встрече (Appointment), обрабатывать информацию о проигрываемом музыкальном файле, получать информацию о контактах и количестве не прочитанных электронных писем, SMS-сообщений и пропущенных телефонных звонков.

Чтобы использовать возможности State and Notifications Broker в приложениях, надо добавить ссылку на сборку

Microsoft.WindowsMobile.Status
. Также необходимо добавить ссылку на сборку
Microsoft.WindowsMobile
. После этого программа готова использовать классы пространства имен
Microsoft.WindowsMobile.Status
.

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

Label
. Этого вполне достаточно для работы примера. Также необходимо добавить ссылки на сборки
Microsoft.WindowsMobile
и
Microsoft.WindowsMobile.Status
при помощи команды меню
Project►Add Reference
. Нас интересует изменение электронного адреса владельца устройства. Для этого используется код, приведенный в листинге 10.13.

Листинг 10.13

using Microsoft.WindowsMobile.Status;

private SystemState sysState;

sysState = new SystemState(SystemProperty.OwnerEmail, true);

sysState.Changed += new ChangeEventHandler(sysStateChanged);

private void sysState_Changed(object sender, ChangeEventArgs args) {

 lblOwnerEmail.Text = SystemState.OwnerEmail;

}

Протестируем пример. После запуска приложения с ним не нужно ничего делать. Следует нажать кнопку

Пуск
и выбрать пункт меню
Настройка
. На вкладке
Личные
нужно активировать пиктограмму
Данные о владельце
. В соответствующем текстовом поле
Эл.почта
следует изменить указанный адрес электронной почты. Если теперь вернуться к приложению, то можно будет увидеть, что изменилось содержимое надписи
lblOwnerEmail
. Таким образом, программа автоматически отреагировала на изменение данных в настройках системы. Конечно, можно получать данные об электронном адресе владельца в принудительном порядке. Для этого используется код, приведенный в листинге 10.14.

Листинг 10.14

private void butGetEmail_Click(object sender, EventArgs e) {

 //Получим email владельца устройства

 lblOwnerEmail.Text = SystemState.OwnerEmail;

}

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

Но стоит вернуться к примеру уведомления об изменении электронного адреса владельца устройства. Отслеживанием изменений в системе занимается класс

SystemState
. Данный класс содержит множество статичных свойств для получения различных настроек системы. Но кроме этого класс
SystemState
содержит очень важное событие
Changed
. Для обработки данного события нужно сначала создать экземпляр класса
SystemState
и передать ему соответствующее свойство:

Поделиться:
Популярные книги

Сын Тишайшего

Яманов Александр
1. Царь Федя
Фантастика:
попаданцы
альтернативная история
фэнтези
5.20
рейтинг книги
Сын Тишайшего

"Искажающие реальность" Компиляция. Книги 1-14

Атаманов Михаил Александрович
Искажающие реальность
Фантастика:
боевая фантастика
космическая фантастика
киберпанк
рпг
5.00
рейтинг книги
Искажающие реальность Компиляция. Книги 1-14

Школа. Первый пояс

Игнатов Михаил Павлович
2. Путь
Фантастика:
фэнтези
7.67
рейтинг книги
Школа. Первый пояс

Невеста на откуп

Белецкая Наталья
2. Невеста на откуп
Фантастика:
фэнтези
5.83
рейтинг книги
Невеста на откуп

Убивать чтобы жить 2

Бор Жорж
2. УЧЖ
Фантастика:
героическая фантастика
боевая фантастика
рпг
5.00
рейтинг книги
Убивать чтобы жить 2

Вперед в прошлое!

Ратманов Денис
1. Вперед в прошлое
Фантастика:
попаданцы
5.00
рейтинг книги
Вперед в прошлое!

Аргумент барона Бронина 4

Ковальчук Олег Валентинович
4. Аргумент барона Бронина
Фантастика:
попаданцы
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Аргумент барона Бронина 4

Измена. (Не)любимая жена олигарха

Лаванда Марго
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. (Не)любимая жена олигарха

Измена. Право на обман

Арская Арина
2. Измены
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. Право на обман

Бастард Императора. Том 7

Орлов Андрей Юрьевич
7. Бастард Императора
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бастард Императора. Том 7

Жаба с кошельком

Донцова Дарья
19. Любительница частного сыска Даша Васильева
Детективы:
иронические детективы
8.26
рейтинг книги
Жаба с кошельком

Бастард Императора. Том 11

Орлов Андрей Юрьевич
11. Бастард Императора
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бастард Императора. Том 11

Академия чаросвет. Тень

Ярошинская Ольга
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Академия чаросвет. Тень

Наследие Маозари 4

Панежин Евгений
4. Наследие Маозари
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Наследие Маозари 4