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

ЖАНРЫ

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

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

Шрифт:

/// <summary>

/// Показывает присутствие клавиатуры в системе

/// </summary>

public const uint KBDI_KEYBOARD_PRESENT = 0x0001;

/// <summary>

/// Показывает доступность клавиатуры.

/// Данный бит может быть изменен функцией

/// EnableHardwareKeyboard

/// </summary>

public const uint KBDI_KEYBOARD_ENABLED = 0x0002;

/// <summary>

///
Показывает наличие на клавиатуре клавиш ENTER и ESC

/// </summary>

public const uint KBDI_KEYBOARD_ENTER_ESC = 0x0004;

/// <summary>

/// Показывает наличие клавиш с буквами и цифрами

/// </summary>

public const uint KBDI_KEYBOARD_ALPHA_NUM = 0x0008;

private void Form1_Load(object sender, EventArgs e) {

 MessageBox.Show("Наличие и доступность клавиатуры: " +

IsKeyboard.ToString);

}

private static bool IsKeyboard {

 uint flags = KBDI_KEYBOARD_ENABLED | KBDI_KEYBOARD_PRESENT;

 return ((GetKeyboardStatus & flags) == flags);

}

Виброзвонок

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

Vibrate
,
VibrateStop
и
VibrateGetDeviceCaps
.

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

Листинг 13.23

/// <summary>

/// Включает виброзвонок

/// </summary>

/// <returns>S_OK сообщает об успешном вызове функции. В случае

/// ошибки возвращается E_FAIL

///</returns>

[DllImport("aygshell")]

private static extern int Vibrate(int cvn, IntPtr rgvn, uint fRepeat,

 uint dwTimeout);

/// <summary>

/// Останавливает виброзвонок

/// </summary>

/// <returns>S_OK сообщает об остановке виброзвонка. В случае

/// ошибки возвращается EFAIL

/// </returns>

[DllImport("aygshell")]

private static extern int VibrateStop;

/// <summary>

/// Получает сведения о возможности использования виброзвонка

/// </summary>

/// <param name="caps">Перечисление VIBRATEDEVICECAPS,

///
определяющее возможности воспроизведения виброзвонка

/// устройством.

///</param>

[DllImport("aygshell")]

private static extern int VibrateGetDeviceCaps(VibrationCapabilities caps);

/// <summary>

/// Используется функцией VibrateGetDeviceCaps для определения

/// возможности воспроизведения виброзвонка.

/// </summary>

public enum VibrationCapabilities : int {

 VDC_Amplitude,

 VDC_Frequency,

}

private void mnuStopVibrate_Click(object sender, EventArgs e) {

 StopVibrate;

}

private void mnuVibrate_Click(object sender, EventArgs e) {

 StartVibrate;

}

/// <summary>

/// Включаем виброзвонок

/// </summary>

/// <returns>В успешном случае возвращается TRUE, в случае

/// ошибки - FALSE.</returns>

public static bool StartVibrate {

 int result = Vibrate(0, IntPtr.Zero, 0xffffffff, 0xffffffff);

 if (result != 0) {

return false;

 }

 return true;

}

/// <summary>

/// Останавливаем виброзвонок

/// </summary>

/// <returns>В успешном случае возвращается TRUE, в случае

/// ошибки - FALSE.</returns>

public static bool StopVibrate {

 int result = VibrateStop;

 if (result != 0) {

return false;

 }

 return true;

}

ВНИМАНИЕ

Приведенный код будет работать только на смартфонах. На форумах можно найти сообщения, что на устройствах под управлением PocketPC Phone Edition этот пример не работает, даже если указанное устройство поддерживает виброзвонок.

Глава 14

Кирпичики .NET Compact Framework

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

Поделиться с друзьями: