Таиланд, thai |
Использование системных функций в приложениях
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).
При нажатии на кнопку отправить пользователь может отправить введённый текст в качестве сообщения электронной почты:
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, поскольку он не содержит библиотеку изображений. Для правильной работы созданного приложения необходимо запустить его в физическом устройстве.