Основы разработки приложений для мобильных устройств на платформе Windows Phone

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

Показывать лекцию целиком

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

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

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

  • Создать экземпляр класса задачи запуска.
  • Установить свойства полученного объекта.
  • Вызвать метод 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();
    }
    

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

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

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

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

  • Создать экземпляр класса задачи запуска.
  • Добавить обработчик события Completed.
  • Установить свойства полученного объекта.
  • Вызвать метод Show объекта.
  • Получить данные от задачи выбора в обработчике события 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.

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

  • Откройте в Visual Studio созданный в одной из предыдущих работ проект программы для Windows Phone или создайте новый проект.
  • Добавьте необходимый код для вызова одной из задач запуска с передачей параметров, введённых пользователем (например, создание нового сообщения).
  • Добавьте необходимый код для вызова одной из задач выбора (например, выбор записи из приложения Контакты) и использования информации о выбранном объекте в программе (например, вывода информации на экран или использование при создании задачи запуска).
  • Запустите программу и проверьте правильность её работы.
  • Составьте отчёт о проделанной работе. Включите в отчёт необходимые листинги программы.
  • Вернуться к учебному плану