Использование компаса в WP7.5 Mango
Многие устройства на Windows Phone 7 имеют встроенный компас. В последнем обновлении инструментов разработчика для Windows Phone появился API для работы с компасом.
В качестве базового объекта для работы с компасом используется сенсор Compass. Как можно увидеть, этот объект унаследован от SensorBase
– базового объекта для всех сенсоров в Windows Phone 7. Не все устройства имеют компас, поэтому перед началом работы следует проверить, имеет ли данное устройство компас. Общая последовательность действий для работы с компасом такова:
- Проверка на наличие компаса в устройстве WP7. Если нет, то все остальные действия не выполняются.
- Создание объекта
Compass
. - Подписка на событие изменения направления компаса.
- Запуск процесса считывания данных с сенсора.
- При необходимости можно также обрабатывать ситуации, когда требуется снять намагниченность устройства.
Для проверки доступности компаса в устройстве используется статическое свойство IsSupported
объекта Compass
:
if (Compass.IsSupported == true)
Если компас доступен, то создается объект и запускается прослушивание сенсора. При каждом изменении значения сенсора генерируется событие CurrentValueChanged
. В обработчике этого события можно получить доступ к объекту CompassReading
, который содержит текущее направление компаса.
Следующий код выполняет описанные выше действия:
private Compass _compass;
public MainPage()
{
InitializeComponent();
if (Compass.IsSupported == true)
{
_compass = new Compass();
_compass.CurrentValueChanged += ComapssValueChanged;
_compass.Start();
}
else
MessageBox.Show("Compass is not supported.");
}
private void ComapssValueChanged(object sender, SensorReadingEventArgs<CompassReading> e)
{
Dispatcher.BeginInvoke(() =>
{
info.Text = e.SensorReading.TrueHeading.ToString();
});
}
Добавить комментарий