Опубликован: 12.02.2013 | Уровень: для всех | Доступ: платный
Самостоятельная работа 16:

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

Аннотация: Цель работы: изучение возможностей использования системных функций телефона в приложениях для Windows Phone.

Основные теоретические сведения

Задачи запуска

Для того, чтобы использовать любую из задач запуска разработчику необходимо выполнить следующие шаги:

  1. Создать экземпляр класса задачи запуска.
  2. Установить свойства полученного объекта.
  3. Вызвать метод Show объекта.

Разработчику доступны следующие задачи запуска:

  • 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 в выбранных социальных сетях.

Создайте новый проект из шаблона Windows Phone Application, как мы это уже делали в первой части и назовите его ExploreLaunchers. Обратите внимание, что весь код, для простоты, будем вставлять в страницу MainPage.xaml внутрь элемента Grid:

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"></Grid>

Добавьте код в XAML файл, чтобы он выглядел следующим образом:

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
  <StackPanel Orientation="Horizontal">
    <StackPanel Width="240">
      <Button Name="EMailMe" Width="190" Height="75" Content="E-mail"
          Click="EMailMe_Click"/>
      <Button Name="AppDetails" Width="190" Height="75" Content="Программа"
          Click="AppDetails_Click"/>
      <Button Name="MarketHub" Width="190" Height="75" Content="Рынок"
          Click="MarketHub_Click" />
      <Button Name="MarketSearch" Width="190" Height="75" Content="Поиск по ..."
          Click="MarketSearch_Click"/>
      <Button Name="MediaPlayer" Width="190" Height="75" Content="Плеер"
          Click="MediaPlayer_Click"/>
    </StackPanel>  
    <StackPanel Width="240">
      <Button Name="PhoneCall" Width="190" Height="75" Content="Звонок"
          Click="PhoneCall_Click"/>
      <Button Name="Search" Width="190" Height="75" Content="Искать"
          Click="Search_Click"/>
      <Button Name="SendSms" Width="190" Height="75" Content="SMS"
          Click="SendSms_Click"/>
      <Button Name="WebBrowse" Width="190" Height="75" Content="Веб"
          Click="WebBrowse_Click"/>
    </StackPanel>
  </StackPanel>
</Grid>

Добавьте в блок using следующий модуль:

using Microsoft.Phone.Tasks;

Сразу после конструктора MainPage добавьте следующий код:

private void EMailMe_Click(object sender, RoutedEventArgs e)
{
    EmailComposeTask compose = new EmailComposeTask();
    compose.To = "rush4apps@microsoft.com";
    compose.Body = " Я хочу участвовать в акции";
    compose.Show();
}
 
private void AppDetails_Click(object sender, RoutedEventArgs e)
{
    MarketplaceDetailTask marketDetails = new MarketplaceDetailTask();
    marketDetails.ContentType = MarketplaceContentType.Applications;
    marketDetails.ContentIdentifier = "введите идентификатор приложения";
    marketDetails.Show();
}
 
private void MarketHub_Click(object sender, RoutedEventArgs e)
{
    MarketplaceHubTask marketHub = new MarketplaceHubTask();
    marketHub.ContentType = MarketplaceContentType.Applications;
    marketHub.Show();
}
 
private void MarketSearch_Click(object sender, RoutedEventArgs e)
{
    MarketplaceSearchTask marketSearch = new MarketplaceSearchTask();
    marketSearch.ContentType = MarketplaceContentType.Applications;
    marketSearch.SearchTerms = "GPSInfo";
    marketSearch.Show();
}
 
private void MediaPlayer_Click(object sender, RoutedEventArgs e)
{
    MediaPlayerLauncher player = new MediaPlayerLauncher();
    player.Controls = MediaPlaybackControls.Stop;
    player.Media = "укажите URI, с которого будет воспроизводиться контент";
    player.Show();
}
 
private void PhoneCall_Click(object sender, RoutedEventArgs e)
{
    PhoneCallTask call = new PhoneCallTask();
    call.DisplayName = "Главному разработчику";
    call.PhoneNumber = "+7 555 555 5555";
    call.Show();
}
 
private void Search_Click(object sender, RoutedEventArgs e)
{
    SearchTask search = new SearchTask();
    search.SearchQuery = "rush4apps";
    search.Show();
}
 
private void SendSms_Click(object sender, RoutedEventArgs e)
{
    SmsComposeTask sms = new SmsComposeTask();
    sms.Body = "Windows Phone 7 - отличная платформа!";
    sms.Show();
}
 
private void WebBrowse_Click(object sender, RoutedEventArgs e)
{
    WebBrowserTask web = new WebBrowserTask();
    web.Uri = new Uri("http://msdn.com/ru-ru/");
    web.Show();
}

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

Запустите приложение и посмотрите, как работают задачи запуска.

Задачи выбора

Для того, чтобы использовать любую из задач выбора разработчику необходимо выполнить следующие шаги:

  1. Создать экземпляр класса задачи запуска.
  2. Добавить обработчик события Completed.
  3. Установить свойства полученного объекта.
  4. Вызвать метод Show объекта.
  5. Получить данные от задачи выбора в обработчике события Completed.

Разработчику доступны следующие задачи выбора:

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

Создайте новый проект из шаблона Windows Phone Application, как мы это уже делали в первой части и назовите его ExploreChoosers. Обратите внимание, что весь код, для простоты, будем вставлять в страницу MainPage.xaml внутрь элемента Grid:

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"></Grid>

Добавьте код в XAML файл, чтобы он выглядел следующим образом:

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
  <StackPanel>
    <Button Width="190" Height="75" Name="Camera" Content="Камера"
        Click="Camera_Click"/>
    <Button Width="190" Height="75" Name="Email" Content="EMail" Click="Email_Click"/>
    <Button Width="190" Height="75" Name="Phone" Content="Телефон"
        Click="Phone_Click"/>
    <Button Width="190" Height="75" Name="ChoosePhoto" Content="Фото"
        Click="ChoosePhoto_Click"/>
    <Button Width="190" Height="75" Name="SaveEMail" Content="Сохр. EMail"
        Click="SaveEMail_Click"/>
    <Button Width="190" Height="75" Name="SavePhone" Content="Сохр. тел."
        Click="SavePhone_Click"/>
  </StackPanel>
</Grid>

Добавьте в блок using следующий модуль.

using Microsoft.Phone.Tasks;

Сразу после конструктора MainPage добавьте следующий код:

private void Camera_Click(object sender, RoutedEventArgs e)
{
    CameraCaptureTask camera = new CameraCaptureTask();
    camera.Completed += new EventHandler<PhotoResult>(camera_Completed);
    camera.Show();
}

void camera_Completed(object sender, PhotoResult e)
{
    if (e.TaskResult == TaskResult.OK)
        MessageBox.Show("Имя файла:" + e.OriginalFileName);
}

private void Email_Click(object sender, RoutedEventArgs e)
{
    EmailAddressChooserTask email = new EmailAddressChooserTask();
    email.Completed += new EventHandler<EmailResult>(email_Completed);
    email.Show();
}

void email_Completed(object sender, EmailResult e)
{
    if (e.TaskResult == TaskResult.OK)
        MessageBox.Show(e.Email);
}

private void Phone_Click(object sender, RoutedEventArgs e)
{
    PhoneNumberChooserTask phone = new PhoneNumberChooserTask();
    phone.Completed += new EventHandler<PhoneNumberResult>(phone_Completed);
    phone.Show();
}

void phone_Completed(object sender, PhoneNumberResult e)
{
    if (e.TaskResult == TaskResult.OK)
        MessageBox.Show(e.PhoneNumber);
}

private void ChoosePhoto_Click(object sender, RoutedEventArgs e)
{
    PhotoChooserTask photo = new PhotoChooserTask();
    photo.Completed += new EventHandler<PhotoResult>(photo_Completed);
    photo.Show();
}

void photo_Completed(object sender, PhotoResult e)
{
    if (e.TaskResult == TaskResult.OK)
        MessageBox.Show(e.OriginalFileName);
}

private void SaveEMail_Click(object sender, RoutedEventArgs e)
{
    SaveEmailAddressTask saveEmail = new SaveEmailAddressTask();
    saveEmail.Completed += new EventHandler<TaskEventArgs>(saveEmail_Completed);
    saveEmail.Email = "rush4apps@microsoft.com";
    saveEmail.Show();
}

void saveEmail_Completed(object sender, TaskEventArgs e)
{
    if (e.TaskResult == TaskResult.OK)
        MessageBox.Show("EMail сохранен!");
}

private void SavePhone_Click(object sender, RoutedEventArgs e)
{
    SavePhoneNumberTask savePhone = new SavePhoneNumberTask();
    savePhone.Completed += new EventHandler<TaskEventArgs>(savePhone_Completed);
    savePhone.PhoneNumber = "+7 495 555 5555";
    savePhone.Show();
}

void savePhone_Completed(object sender, TaskEventArgs e)
{
    if (e.TaskResult == TaskResult.OK)
        MessageBox.Show("Номер сохранен!");
}

Мы добавили кнопок по количеству демонстрируемых задач выбора и в обработчике соответствующей кнопки регистрируем обработчик события Completed и вызываем интерфейс задачи выбора.

Запустите приложение и посмотрите, как работают задачи выбора.

Дополнительные материалы

Windows Phone 7.5 Training Kit: Labs\LaunchersAndChoosers\LaunchersAndChoosers.html\html\ DocSet_default.html.

Задание к работе

  1. Откройте в Visual Studio созданный в одной из предыдущих работ проект программы для Windows Phone или создайте новый проект.
  2. Добавьте необходимый код для вызова одной из задач запуска с передачей параметров, введённых пользователем (например, создание нового сообщения).
  3. Добавьте необходимый код для вызова одной из задач выбора (например, выбор записи из приложения Контакты) и использования информации о выбранном объекте в программе (например, вывода информации на экран или использование при создании задачи запуска).
  4. Запустите программу и проверьте правильность её работы.
  5. Составьте отчёт о проделанной работе. Включите в отчёт необходимые листинги программы.
park mr
park mr
Таиланд, thai
An Nguyen
An Nguyen
Вьетнам, 30/9 Thong Nhat street, ward 13, Go Vap district