Концепция приложения: Определение положения по сторонам света.
Состав приложения:
Материалы к проекту:
Настройка приложения
Приложение будет довольно минималистичным, поэтому настроек немного:
- Название приложения — Компас.
Для работы приложения понадобится картинка, указывающая на стороны света. Например, такая:

Можно взять любую другую, главное, чтобы были правильно расположены стороны света. Если вы планируете цветной фон всего приложения, то лучше, чтобы у картинки не было своего фона (т.е. фон был прозрачный). Эту же картинку можно использовать в качестве иконки приложения.
Дизайн-макет
Внешний вид приложения:

Компоненты:

Настроим Экран.
- Выравнивание по горизонтали и вертикали — Центр Центр.
- Ориентация экрана — Альбомный режим (т.е. вертикально).
- Отключаем показ статус-бара и заголовка.

Добавим Надпись. Она будет выводить букву направления, в какую сторону направлен телефон. Надпись должна быть заметка, поэтому сделаем её покрупнее.
- Жирный шрифт,
- Размер — 20,
- Текст — «С» (чтобы не оставлять поле пустым, предварительно заполним буквой, обозначающей Север),
- Остальные настройки — по желанию.

Добавим Холст. Здесь у нас будет вращаться сам компас. Настроим его.
- Высота — наполнить родительский.
- Ширина — наполнить родительский.

На холст добавим Изображение спрайта. Это будет сам компас. Его настройки:
- Высота — 200 пикселей,
- Ширина — 200 пикселей.
- Изображение — загруженная картинка компаса.
- Переместите спрайт так, чтобы он был посередине холста, координаты x и y подставятся автоматически. В режиме программирования мы еще выставим координаты в зависимости от размеров экрана, но в дизайнере также лучше поставить по центру макета, чтобы потом не запутаться.
- Важно установить центр спрайта, чтобы он мог корректно вращаться. Для этого нужно кликнуть на «Mark Origin» в настройках компонента, выбрать центр и нажать Ок.

При этом в настройках появятся координаты центра (зависят от параметров вашего изображения).
Обзор всех настроек спрайта:

И наконец добавим Сенсор Ориентации. Это невидимый компонент, и у него нет никаких предварительных настроек, кроме включения/отключения.

Дизайн готов. Можно переходить к программированию.
Программирование
Когда приложение запустится, нужно вычислить размер спрайта так, чтобы он полностью помещался на экране, а также разместить его строго в центре. Для этого, используем следующую конструкцию:

Ширина и высота спрайта будет ровно в половину от размеров экрана, но спрайт сохранит пропорции, т.к. это заложено в настройках. Координаты центра экрана вычисляются также — половина от размерностей экрана.
Теперь перейдет к самому компасу. Он должен производить измерение азимута каждый раз, когда телефон повернут, и спрайт должен также поворачиваться в том же направлении. С этого и начнем:

Азимут — это угол между направлением на север и направлением на интересующий объект, отсчитываемый по часовой стрелке в горизонтальной плоскости. Измеряется в градусах от 0° до 360°.
Но нам будет не очень понятно, когда на экране будут цифры, поэтому сделаем приложение более лояльным — приведем градусную меру в направление сторон света. Мы знаем, что:
- Север — 0°,
- Северо-Восток — 45°,
- Восток — 90°,
- Юго-Восток — 135°,
- Юг — 180°,
- Юго-Запад — 225°,
- Запад — 270°,
- Северо-Запад — 315°.

Но вряд ли телефон будет получать эти точные значения, они могут отличаться от четкого направления на несколько градусов. т.е. при строгом направлении на Север азимут может быть равен и 0°, и 355°, и 5°. Поэтому нужно разбить круг по секторам.
К примеру, Север будет определяться в пределах от 337° до 22° — это 45-градусный сектор круга. Когда значение азимута попадет в данный интервал, приложение должно нам показать букву стороны света. Для этого будем использовать условие Если:

Обратите внимание на логический оператор: здесь используется ИЛИ, так как невозможно, чтобы азимут был одновременно больше 337 и меньше 22. Аналогично нужно сделать для всех остальных сторон горизонта, но здесь уже использовать оператор И, т.к. должен быть именно промежуток.
- Северо-Восток — от 22° до 67°
- Восток — от 67° до 112°
- Юго-Восток -от 112° до 157°
- Юг — от 157° до 202°
- Юго-Запад — от 202° до 247°
- Запад — от 247° до 292°
- Северо-Запад — от 292° до 337°
В итоге у нас должен получится вот такой блок:

Приложение готово. Можно создавать apk-файл и тестировать. На эмуляторе протестировать не получится, т.к. требуется реальный сенсор телефона.
Во избежание ошибок работы приложения, при использовании держите его горизонтально.