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

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

Жанры

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

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

Шрифт:

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

Затем нужно присоединить делегат к новому экземпляру события

Changed
:

sysState.Changed += new ChangeEventHandler(sysState_Changed);

А уже после этого можно перехватывать изменение состояния нужных параметров:

private void sysState_Changed(object sender, ChangeEventArgs args) {

 lblOwnerEmail.Text = SystemState.OwnerEmail;

}

Пример с электронным адресом был приведен лишь

для ознакомления. На самом деле, с помощью соответствующих свойств можно получить доступ более чем к ста системным настройкам. Наиболее внимательные читатели могут заметить, что State и Notifications Broker порой дублируют функциональность, которую можно воспроизвести при помощи других средств. Например, текущую ориентацию экрана можно узнать с помощью функции API
GetSystemMetrics
или с помощью вызова
Screen.PrimaryScreen.Bounds
. А информацию о заряде батареи можно узнать с помощью функции
GetSystemPowerStatusEx
.

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

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

Листинг 10.15

private void butGetInfo_Click(object sender, EventArgs e) {

 lstInfo.Items.Add("Название оператора: " + SystemState.PhoneOperatorName);

 lstInfo.Items.Add("Наличие радио: " + SystemState.PhoneRadioPresent);

 lstInfo.Items.Add("Наличие камеры: " + SystemState.CameraPresent);

 lstInfo.Items.Add("Ориентация экрана " + SystemState.DisplayRotation);

}

private void butBattery_Click(object sender, EventArgs e) {

 // Уровень заряда батареи

 BatteryLevel batteryLevel = SystemState.PowerBatteryStrength;

 BatteryState batteryState = SystemState.PowerBatteryState;

 string strBatteryLevel = "Уровень заряда";

 switch (batteryLevel) {

 case BatteryLevel.VeryLow:

strBatteryLevel = "Уровень заряда: Очень низкий (0-20%)";

break;

 case BatteryLevel.Low:

strBatteryLevel = "Уровень заряда: Низкий (21-40%)";

break;

 case BatteryLevel.Medium:

strBatteryLevel = "Уровень
заряда: Средний (41-60%)";

break:

 case BatteryLevel.High:

strBatteryLevel = "Уровень заряда: Высокий (61-80%)";

break;

 case BatteryLevel.VeryHigh:

strBatteryLevel = "Уровень заряда: Очень высокий (81-100%)";

break;

 }

 // Состояние батареи

 string strBatteryState = "Состояние батареи: ";

 if ((batteryState & BatteryState.Normal) == BatteryState.Normal)

strBatteryState += "Нормальное";

 if ((batteryState & BatteryState.NotPresent) == BatteryState.NotPresent)

strBatteryState += "Батарея отсутствует ";

 if ((batteryState & BatteryState.Charging) == BatteryState.Charging)

strBatteryState += "Заряжается ";

 if ((batteryState & BatteryState.Low) == BatteryState.Low)

strBatteryState += "Низкий заряд ";

 if ((batteryState & BatteryState.Critical) == BatteryState.Critical)

strBatteryState += "Критическое";

 MessageBox.Show(strBatteryLevel + "\n" + strBatteryState);

}

Мультимедиа

Система Windows Mobile 5.0 обеспечивает еще более глубокую поддержку мультимедиа, чем предыдущие версии операционных систем. Теперь разработчики имеют возможность напрямую работать с фотокамерой, встраивая в свои программы взаимодействие с камерой и обработку картинок и видеороликов. Технология Microsoft DirectShow дает возможность управлять потоковыми мультимедийными материалами. Программа Microsoft Windows Media Player 10 Mobile позволяет интегрировать функциональность музыкального плеера в собственные приложения. Технология Microsoft DirectDraw предоставляет доступ к графической системе на более высоком уровне, а библиотека Microsoft Direct3D позволяет создавать очень сложные динамические игры, используя управляемый код. Эти возможности стоит рассмотреть подробнее.

Выбор изображения

В операционной системе Windows Mobile 5.0 стало поразительно легко работать с коллекцией фотографий и рисунков. При помощи стандартного диалогового окна выбора рисунка можно легко выбрать нужный рисунок. Доступ к стандартному окну выбора рисунка осуществляется при помощи класса

Microsoft.WindowsMobile.Forms.SelectPictureDialog
.

Но лучше работу с диалоговым окном выбора картинки рассмотреть на примере. На форме надо разместить метку

lblSelectedPicture
и графическое поле
picSelectImage
. Не забудьте перед началом создания приложения установить ссылку на пространство имен
Microsoft.WindowsMobile.Forms
. Соответствующий код приведен в листинге 10.16.

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

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

Яманов Александр
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