rus | eng
PDF Печать RSS
Использование компаса в WP7.5 Mango  

Многие устройства на Windows Phone 7 имеют встроенный компас. В последнем обновлении инструментов разработчика для Windows Phone появился API для работы с компасом. В этой заметке я расскажу о нем.

В качестве базового объекта для работы с компасом используется сенсор Compass. Как можно увидеть, этот объект унаследован от SensorBase – базового объекта для всех сенсоров в Windows Phone 7. Не все устройства имеют компас, поэтому перед началом работы следует проверить, имеет ли данное устройство компас. Общая последовательность действий для работы с компасом такова:

  1. Проверка на наличие компаса в устройстве WP7. Если нет, то все остальные действия не выполняются.
  2. Создание объекта Compass.
  3. Подписка на событие изменения направления компаса.
  4. Запуск процесса считывания данных с сенсора.
  5. При необходимости можно также обрабатывать ситуации, когда требуется снять намагниченность устройства.

Для проверки доступности компаса в устройстве используется статическое свойство 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 e)
{
	Dispatcher.BeginInvoke(() =>
			                {
			                    info.Text = e.SensorReading.TrueHeading.ToString();
			                });
}
07.11.2011 16:00 UTC+4

Сергей Звездин

Сергей Звездин

Сергей Звездин: занимается разработкой программного обеспечения на платформе Microsoft .NET. Является обладателем статусов Microsoft MVP и Microsoft Regional Director.

Читать дальше →

Записи

  • Архив
  • Обсуждаемые

Twitter

Most Valuable Professional (MVP) Microsoft Regional Director