Опубликован: 01.11.2011 | Доступ: свободный | Студентов: 1412 / 60 | Оценка: 3.84 / 3.44 | Длительность: 15:38:00
Специальности: Программист
Практическая работа 27:

Новые возможности, появившиеся в Windows Phone 7.1

Аннотация: Одной из интересных особенностей Windows Phone 7.1 является возможность объединения в одном приложении программных интерфейсов и Silverlight и XNA.

Дополнительные материалы к занятию можно скачать здесь.

36.1. Интеграция Silverlight и XNA

Вложенные файлы в архив дополнительных материалов к занятию - MyLittleTeaPot.zip

Одной из интересных особенностей Windows Phone 7.1 является возможность объединения в одном приложении программных интерфейсов и Silverlight и XNA. Данное обстоятельство расширяет список возможных сценариев разработки приложений. Например, можно встроить в игру веб-браузер, или работать в социальных сетях, пользуясь аппаратной акселерацией двухмерного и трехмерного контента.

На сайте MSDN (http://msdn.microsoft.com/en-us/library/ff431744(VS.92).aspx) приводится несколько примеров, демонстрирующих возможности интеграции обеих технологий. Рассмотрим некоторые из них.

Упражнение 1. Трехмерная модель заварочного чайника

В данном приложении объединяются возможности анимации и работы с жестами Silverlight. Трехмерная модель чайника была разработана Мартином Ньювелом и Джимом Блинном в 1975-м году. Эта модель состоит из десяти кубических участков Безье. Участки образуют поверхность, образованную кривыми, которую можно использовать для создания треугольников разной степени детализации. Использование поверхностей, построенной на основе кривых, позволяет формировать интересные хорошо узнаваемые формы, затратив на их создание очень небольшое количество данных. Модель заварочного чайника стала излюбленным объектом исследователей в области трехмерной графики.

Скачайте с сайта http://msdn.microsoft.com/en-us/library/ff431744(VS.92).aspx файл MyLittleTeaPot.zip, разархивируйте его. Запустите проект в Visual Studio 2010 Express for Windows Phone. Убедитесь, что чайник можно поворачивать в режиме "трекбола".


Воспользуйтесь инструментами, позволяющими менять цвет чайника, подберите оптимальный для себя оттенок.


36.2. Фоновое воспроизведение звука

Вложенные файлы: BackgroundAudioPlayerSample.zip

В Windows Phone 7.1. Mango появилась возможность воспроизводить звук в фоновом режиме. Это фоновое приложение запускается, когда телефон находится в режиме блокировки. Существует две разновидности приложений фонового воспроизведения аудио. Приложения первого типа воспроизводят файлы, расположенные локально, другие приложения воспроизводят поток данных. Предлагаемое приложение предназначено для воспроизведения файлов, расположенных локально с помощью агента воспроизведения аудио.

Зайдите на сайт http://msdn.microsoft.com/en-us/library/ff431744(VS.92).aspx и скачайте файл BackgroundAudioPlayerSample.zip. Разархивируйте архив, запустите в Visual Studio 2010.


Попробуйте русифицировать интерфейс приложения.

36.3. Получение данных от сенсоров

Вложенные файлы: RawSensorDataSample.zip

В данном примере мы покажем, как получать данные от компаса, акселерометра и гироскопа.

Windows Phone поддерживает множество сенсоров, позволяющих определять ориентацию и перемещение устройства в пространстве. Эти сенсоры позволяют разрабатывать приложения, в которых само физическое устройство означает пользовательский ввод. Данную возможность можно использовать для игр, контролируемых перемещением и для расширенной реальности. Простейшим способом разработки подобных приложений является объединенный программный интерфейс. Этот API объединяет и обрабатывает ввод со всех сенсоров движения и ориентации. Windows Phone предоставляет API для получения данных от всех индивидуальных сенсоров. Каждый из сенсорных API основан на классе SensorBase<TSensorReading> и следует стандартизированной идеологии получения данных от сенсоров

Сенсорные API не могут работать в режиме блокировке экрана, их нельзя использовать в качестве фоновых агентов.

Рассмотрим каждый из сенсоров отдельно.

Акселерометр

Акселерометр измеряет силы, действующие на телефон в данный момент времени. Эти силы можно использовать для определения направления, в котором движется устройство. Величина ускорения выражена в виде трехмерного вектора, представляющего компоненты ускорения по осям X,Y,Z в гравитационных единицах. Ориентация ускорения выбрана таким образом относительно устройства, что -1g применяется по оси Z когда устройство лежит лицом вверх на поверхности стола, а -1g применяется к оси Y когда устройство размещено перпендикулярно поверхности стола. Сенсор Accelerometer определяет силу гравитации вдоль любой силы, результирующей движение телефона. Объединенная API перемещения, доступная через класс Motion, использует множество сенсорных устройств для выделения вектора гравитации из ускорения устройства и позволяет легко определить текущее положение (крен, рыскание и тангаж) устройства.

Компас

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

Гироскоп

Сенсор Gyroscope используется для определения скорости вращения устройства по каждой из осей. Приложение может использовать данные, полученные от гироскопа для определения положения устройства в пространстве. Так как гироскоп измеряет скорость вращения, а не угол, то имеется некоторый дрейф. Если нужно измерять положение устройства (крен, тангаж и рыскание), то вместо API гироскопа лучше применять класс Motion. Сенсор гироскопа не обязателен для всех устройств Windows Phone, это нужно учитывать при разработке приложений.

Объединенное движение

Существуют физические ограничения, затрудняющие определение истинного положения и перемещения устройства на основе исходных данных, полученных от сенсоров Windows Phone. Например, Считывание с акселерометра включает в себя силу гравитации, примененную к устройству в добавление к силам, результирующим из движения устройства. Сенсор гироскопа измеряет скорость вращения, но не положение, обладая при этом некоторым дрейфом. Также требуются сложные геометрические расчеты для того чтобы получить истинное положение устройства на основании исходных данных от этих сенсоров. Класс Motion выполняет низкоуровневую обработку сенсорной информации и позволяет приложению легко получать положение устройства в пространстве (крен, тангаж и рыскание), ускорение вращения и линейное ускорение, вызванное как гравитацией, так и движением пользователя. Для типичных приложений, использующих данные такого типа, например, расширенную реальность, рекомендуется использовать класс Motion. Если планируется использовать заказной сенсор или производить вычисления по собственному алгоритму, то придется разрабатывать индивидуальные классы для считывания данных с каждого сенсора. Motion API может использовать две различные конфигурации сенсоров. Normal Motion используется для компаса и акселерометра, а менее точный Enhanced Motion использует компас, акселерометр и гироскоп. Если вы планируете использовать Enhanced Motion, то нужно проверить поддерживает ли приложение гироскоп.

Ход выполнения работы:

Скачайте с сайта http://msdn.microsoft.com/en-us/library/ff431744(VS.92).aspx файл RawSensorDataSample.zip, разархивируйте его, запустите приложение, попробуйте его русифицировать.


Эварист Аминев
Эварист Аминев
Россия, Уфа, Башкирский государственный университет, 1986
Олег Корсак
Олег Корсак
Латвия, Рига