Опубликован: 12.02.2013 | Доступ: свободный | Студентов: 791 / 47 | Длительность: 17:51:00
Специальности: Программист
Лекция 9:

Использование системных функций в приложениях

22.3. Задачи запуска и задачи выбора

В приложениях для Windows Phone можно вызывать системные функции телефона. Эта возможность реализована с помощью программных объектов, называемых задачи запуска и задачи выбора. Задачи запуска позволяют вызывать функции телефона, которые не возвращают данных. Задачи выбора позволяют выбирать какие-либо объекты в функциях телефона и обрабатывать возвращаемые функциями значения.

Задачи запуска и задачи выбора при их вызове автоматически деактивируют программу, поскольку при этом происходит переход к другой программе. По завершении задачи программа возобновляет свою работу.

Использование задач запуска

Существует множество задач запуска, которые вызывают различные функции телефона. Классы для работы с задачами объявлены в пространстве имён Microsoft.Phone.Tasks:

  • PhoneCallTask — запускает приложение Телефон и задаёт номер телефона и отображаемое имя. При этом, программа не может инициировать звонок — это должен сделать пользователь;
  • EmailComposeTask — запускает приложение электронной почты и создаёт новое письмо, которое пользователь может отправить;
  • SmsComposeTask — запускает приложение Сообщения и выводит на экран новое SMS-сообщение, которое пользователь может отправить;
  • SearchTask — запускает приложение Поиск в Интернете и задаёт поисковый запрос;
  • WebBrowserTask — запускает веб-браузер и выводит на экран заданный URL;
  • MediaPlayerLauncher — запускает медиапроигрыватель и воспроизводит заданный файл мультимедиа;
  • MarketplaceReviewTask — запускает клиентское приложение Windows Phone Marketplace и отображает страницу обзора для указанного программного продукта;
  • MarketplaceDetailTask — запускает клиентское приложение Windows Phone Marketplace и отображает страницу подробной информации для указанного программного продукта;
  • MarketplaceHubTask — запускает клиентское приложение Windows Phone Marketplace;
  • MarketplaceSearchTask — запускает клиентское приложение Windows Phone Marketplace и отображает результаты поиска по указанному запросу;
  • BingMapsDirectionsTask — запускает приложение Bing Maps и задаёт начальный и конечный пункты маршрута;
  • BingMapsTask — запускает приложение Bing Maps и выводит на экран карту по текущему или заданному расположению;
  • ConnectionSettingsTask — позволяет пользователям изменять настройки подключения телефона;
  • ShareStatusTask — позволяет отображать сообщение о состоянии, которое пользователь может отправить в выбранные социальные сети;
  • ShareLinkTask — позволяет пользователю опубликовать URL в выбранных социальных сетях.

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

Рассмотрим пример использования задачи запуска для отправки сообщений электронной почты (рис. 22.2).

Окно приложения для отправки электронной почты

Рис. 22.2. Окно приложения для отправки электронной почты

При нажатии на кнопку отправить пользователь может отправить введённый текст в качестве сообщения электронной почты:

private void mailButton_Click(object sender, RoutedEventArgs e)
{
    sendMail("Сообщение из программы", mailTextBox.Text);
}

При нажатии на кнопку отправить обработчик события передаёт текст из текстового поля в метод sendMail метод для его отправки по электронной почте. Код метода sendMail может быть таким:

private void sendMail(string subject, string body)
{
    EmailComposeTask email = new EmailComposeTask();

    email.Body = body;
    email.Subject = subject;
    email.Show();
}

Это метод создаёт экземпляр класса EmailComposeTask, присваивает свойствам Body и Subject заданные значения параметров. Если в телефоне настроен клиент электронной почты, то при вызове метода Show открывается окно, в котором отображается новое сообщение электронной почты, и пользователь может его отправить.

Использование задач выбора

Приложениям телефона доступны следующие задачи выбора:

  • CameraCaptureTask — запускает приложение Камера и позволяет пользователю создавать фотографии в приложении;
  • EmailAddressChooserTask — запускает приложение Контакты и позволяет пользователю выбирать адрес электронной почты контакта;
  • PhoneNumberChooserTask — запускает приложение Контакты и позволяет пользователю выбирать номер телефона контакта;
  • PhotoChooserTask — запускает приложение Выбор фотографий и позволяет пользователю выбирать фотографии;
  • SaveEmailAddressTask — запускает приложение Контакты и позволяет пользователю сохранять указанный адрес электронной почты в новый или существующий контакт;
  • SavePhoneNumberTask — запускает приложение Контакты и позволяет пользователю сохранять указанный номер телефона в новый или существующий контакт;
  • AddressChooserTask — запускает приложение Контакты и позволяет пользователю выбирать адрес контакта;
  • GameInviteTask — позволяет пользователю приглашать игроков для совместной игры;
  • SaveContactTask — предоставляет методы и события для запуска приложения Контакты и позволяет пользователю сохранять контакты;
  • SaveRingtoneTask — запускает приложение мелодий звонков и позволяет пользователю сохранять аудиофайл в список системных мелодий телефона.

Задачи выбора выполняются так же, как и задачи запуска, но есть одно отличие: задача выбора возвращает в вызвавшее её приложение результат. Обработка результата в приложении осуществляется в методе-обработчике события окончания выполнения задачи.

Рассмотрим пример использования задачи выбора для выбора пользователем изображения из библиотеки телефона и его вывода на экран. Связанный с задачей объект создаётся в конструкторе приложения:

PhotoChooserTask photoChooser;

// конструктор
public MainPage()
{
    InitializeComponent();

    photoChooser = new PhotoChooserTask();

    photoChooser.Completed += new EventHandler<PhotoResult>(photoChooser_Completed);
}

В этом коде создаётся новый экземпляр класса PhotoChooserTask и обработчик события, которое происходит при завершении выполнения задачи. Код обработчика выводит полученное изображение на экран.

void photoChooser_Completed(object sender, PhotoResult e)
{
    if (e.TaskResult == TaskResult.OK)
    {
        selectedImage.Source = new BitmapImage(new Uri(e.OriginalFileName));
    }
}

Этот метод создаёт новый экземпляр класса BitmapImage, используя адрес файла с выбранным пользователем изображением, и указывает его в качестве источника для визуального элемента selectedImage. Обратите внимание, что свойство TaskResult позволяет программе определить, выбрал ли пользователь какое-то изображение.

Вызвать задачу выбора изображения можно в обработчике нажатия на кнопку загрузить:

private void loadButton_Click(object sender, RoutedEventArgs e)
{
    photoChooser.Show();
}

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