Очень хороший инструмент для ленивых создателей приложений под Android от MIT — App Inventor. Очень интересный датчик по измерению магнитного поля (было интересно — он у кого-нибудь есть? компас на нем основан?).
Никаких задач решать мне не надо было — просто решил посмотреть, что это за «Magnetic Field Sensor» есть в системе (и есть он вообще)…
В теории, в телефоне может быть Сенсор магнитного поля. Используем невидимый компонент «Magnetic Field Sensor» — расположен в «Сенсоры» (почему-то его не перевели на русский, поэтому — «как есть»).
Из короткого описания сенсора: Non-visible component that measures the ambient geomagnetic field for all three physical axes (x, y, z) in Tesla https://en.wikipedia.org/wiki/Tesla_(unit).
Вытаскиваем сенсор в Дизайнер:
В свойствах компонента надо не забыть его включить.
Простой пример — на экране надо показывать значение магнитного поля по всем трем осям (XYZ).
Сделаем на форме нужные нам надписи для отображения магнитного поля:
Переходим в Блоки. Ниже привожу рисунок, где показано как получается и отображается информация о магнитном поле при изменении его значения.
Используется событие «MagneticChanged». При выполнении его используются реквизиты значений поля по осям и общее (в форме добавил Надпись7, а на рисунке — забыл подправить) — именно из них «вытягивается» получить.xStrength и др.
Неплохо было бы проверить — а есть ли в телефоне нужный нам сенсор?
Проверка производится при запуске приложения (инициализации экрана). В случае, если датчик магнитного поля доступен (проверку обвел красным) — фон надписи Magnetic Field будет зеленым…
!!! При проверке оказалось, что в простеньком смартфоне АРК нет такого сенсора — красным светит…
PS Проверил программу на Xiaomi Redme 3S все сработало как надо: зеленым сказал, что все ОК и показал магнитное поле по всем осям и общее
.