Скачал компас на андроид не работает. Как откалибровать компас на андроиде

В прошлых уроках мы уже осваивали работу с некоторыми датчиками, которыми оборудованы современные Android устройства. Мы недавно уже сделали фонарик и можем отыскать дорожку в темном переулке, осталось только найти себе путь, куда идти, и сегодня мы над этим поработаем, создав программу Компас, работающую с датчиком ориентации. Наш будущий компас будет (как и полагается) указывать на север и при смене положения устройства в элементе TextView в интерфейсе программы будет в градусах показываться отклонение положения устройства от севера. Примечательно, что программа легко работает и на довольно старых устройствах 2010-х годов, о чем их владельцы могут и не догадываться (как я например). Помню, как владелец iPhone 4 хвастался наличием компаса на своем яблоке, а я со своим Galaxy Gio был в печали, думая, что мой аппарат такими возможностями не обладает. Но оказалось то, что обладает, всего то не было еще соответствующего распространенного ПО! И созданный здесь компас отлично работает и на нем в том числе.

Создаем новый проект, выбираем Blank Activity, минимальная версия Android 2.2. Приложение будет состоять из одного xml файла и одного java класса.

Настроим внешний вид нашего будущего компаса в файле activity_main.xml . Добавим сюда 2 элемента: TextView для отображения градуса отклонения от севера, а также ImageView , который будет отображать изображение компаса:

< LinearLayout xmlns: android= "schemas.android.com/apk/res/android" android: layout_width= "match_parent" android: layout_height= "match_parent" android: orientation= "vertical" android: background= "#FFFFFF" > < TextView android: id= "@+id/Header" android: layout_width= "wrap_content" android: layout_height= "wrap_content" android: layout_centerHorizontal= "true" android: layout_marginBottom= "40dp" android: layout_marginTop= "20dp" android: text= "Отклонение от севера: 0.0" android: layout_gravity= "center" / > < ImageView android: id= "@+id/CompassView" android: layout_width= "wrap_content" android: layout_height= "wrap_content" android: layout_below= "@+id/tvHeading" android: layout_centerHorizontal= "true" android: src= "@drawable/compass_rus" android: layout_gravity= "center" / > < / LinearLayout >

Картинка, которую я использовал для компаса:

Вы при желании можете использовать любое другое изображение и поместить его в папку res/drawable .

Теперь немного теории. Как было упомянуто в начале урока, работа компаса в этом приложении основана на использовании датчика ориентации Android устройства. Доступ к использованию функционала датчика происходит через использование объекта SensorManager . Через SensorManager программисты получают доступ ко всем установленным на устройство датчикам: гироскоп, акселерометр, датчик освещения, барометр, датчик магнитных полей и другие, которых в современных аппаратах просто уйма, ведь сейчас смартфоны научились уже даже измерять пульс владельца. Доступ к необходимому датчику осуществляется через команду .getDefaultSensor () ,в которой указывается тип датчика, к которому получается доступ. В нашем случае эта команда выглядит так:

.getDefaultSensor(Sensor . TYPE_ORIENTATION )

Также в приложении используется слушатель изменений показаний датчика (SensorEventListener ), поэтому наше приложение должно выполнять этот интерфейс:

public class MainActivity extends Activity implements SensorEventListener {

Сами датчики не понимают, когда им пора на упокой, поэтому необходимо использовать методы onResume () и onPause () , чтобы указывать, когда приложение должно работать, а когда датчики могут быть свободны:). Если это не сделать, то датчик будет усердно трудиться и при закрытии программы, что уменьшит время работы устройства на несколько часов по причине стремительного разряда батареи.

Метод onSensorChanged () фиксирует изменения показаний датчика ориентации при его отклонении от севера, которому мы присваиваем значение 0 градусов. При повороте устройства в любую сторону в элементе TextView будет динамически отображаться изменение положения устройства в пространстве по отношению к северу в градусах.

Открываем файл MainActivity.java и добавляем все, о чем было упомянуто выше:

import android.app.Activity ; import android.hardware.Sensor ; import android.hardware.SensorEvent ; import android.hardware.SensorEventListener ; import android.hardware.SensorManager ; import android.os.Bundle ; import android.view.animation.Animation ; import android.view.animation.RotateAnimation ; import android.widget.ImageView ; import android.widget.TextView ; public class MainActivity extends Activity implements SensorEventListener { //Объявляем картинку для компаса private ImageView HeaderImage ; //Объявляем функцию поворота картинки private float RotateDegree = 0f ; //Объявляем работу с сенсором устройства private SensorManager mSensorManager; //Объявляем объект TextView TextView CompOrient ; @Override protected void onCreate (Bundle savedInstanceState ) { super. onCreate(savedInstanceState); setContentView(R . layout. activity_main); //Связываем объект ImageView с нашим изображением: HeaderImage = (ImageView ) findViewById(R . id. CompassView ); //TextView в котором будет отображаться градус поворота: CompOrient = (TextView ) findViewById(R . id. Header ); //Инициализируем возможность работать с сенсором устройства: mSensorManager = (SensorManager ) getSystemService(SENSOR_SERVICE ); } @Override protected void onResume () { super. onResume(); //Устанавливаем слушателя ориентации сенсора mSensorManager. registerListener(this, mSensorManager. getDefaultSensor(Sensor . TYPE_ORIENTATION ), SensorManager . SENSOR_DELAY_GAME ); } @Override protected void onPause () { super. onPause(); //Останавливаем при надобности слушателя ориентации //сенсора с целью сбережения заряда батареи: mSensorManager. unregisterListener(this); } @Override public void onSensorChanged (SensorEvent event ) { //Получаем градус поворота от оси, которая направлена на север, север = 0 градусов: float degree = Math . round(event. values); CompOrient . setText("Отклонение от севера: " + Float . toString(degree) + " градусов" ); //Создаем анимацию вращения: RotateAnimation rotateAnimation = new RotateAnimation (RotateDegree , - degree, Animation . RELATIVE_TO_SELF , 0.5f , Animation . RELATIVE_TO_SELF , 0.5f ); //Продолжительность анимации в миллисекундах: rotateAnimation. setDuration(200 ); //Настраиваем анимацию после завершения подсчетных действий датчика: rotateAnimation. setFillAfter(true ); //Запускаем анимацию: HeaderImage . startAnimation(rotateAnimation); RotateDegree = - degree; } @Override public void onAccuracyChanged (Sensor sensor , int accuracy ) { //Этот метод не используется, но без него программа будет ругаться } }

Все, давайте скомпилируем проект и протестируем приложение (можно и не компилировать, а протестировать через реальное устройство, подключенное к Android Studio). Запускаем и видим:

Работает, надеюсь у вас все также получилось, удачи!

Зачастую бывает, что некоторые датчики на устройстве под управлением Android перестают работать вовсе, либо делают это некорректно. К примеру, в момент звонка и приближения девайса к уху, экран не гаснет, при включенной авторегулировке яркости на солнце или в помещении дисплей останется одинаковой яркости и таких примеров можно привести масса. За каждое подобное действие отвечает собственный сенсор (датчик), который располагается в определенной части устройства. Сегодня мы постараемся рассказать, как выполнить калибровку сенсорных датчиков, чтобы избежать различных проблем, связанных с их работой.

Как проверить работу датчика освещённости/приближения

Прежде чем начать процедуру калибровку вам стоит заглянуть в инженерное меню вашего устройства. К сожалению, не все модели смартфонов/планшетов имеют данный раздел. Именно поэтому стоит воспользоваться полезной программой под названием - . С её помощью мы и будем проводить все операции.

Как сделать калибровку (сброс) датчика освещённости/приближения

Для этого стоит воспользоваться полезной программой « ». Скачать, которую можно с нашего сайта.

Как выполнить калибровку акселерометра

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

Как выполнить калибровку компаса

Компас является полезным инструментом для путешественников и охотников, которые не хотят заблудиться в лесу и могут спокойно ориентироваться с его помощью. Но что делать если компас не работает или показывает направление неверно? Выход прост! Достаточно сделать калибровку используя программу .

Для проверки всех датчиков на работоспособность вам следует загрузить и установить программу . Зайти в основное меню, нажав на верхний левый угол и выбрать «Диагностика датчиков» . Напротив, каждого из датчика будет стоять либо зеленая галочка, свидетельствующая об исправности, либо красный восклицательный знак, символизирующий о возможной неисправности конкретного датчика.


Инструкции, представленные в данной статье могут помочь тем, кто столкнулся с неисправными датчиками на своих устройствах. Если у вас есть какие-либо вопросы, мы будем рады ответить на них в комментариях под статьей.

Современные смартфоны оснащены GPS-чипом, который значительно упрощает наши путешествия или поиски определенного адреса. Однако нередки случаи, когда GPS плохо работает. И не всегда в этом виновата недостаточно хорошая сборка смартфона. Зачастую можно улучшить функционирование навигационного модуля, покопавшись в настройках.

У многих автомобилистов имеется полноценный GPS-навигатор. У некоторых таких устройств на задней стенке или боковом торце располагается разъем для антенны. Это позволяет усилить прием сигнала в несколько раз - нужно лишь раздобыть соответствующую антенну.

Что касается современных смартфонов, то спешим вас разочаровать. В их составе вы никогда не найдете специальный разъем для антенны. Улучшить прием GPS на Андроиде можно только программными методами. Если они не сработали, то вам придется смириться с текущим положением дел. Как несложно догадаться, хуже всего с GPS-спутниками работают бюджетные аппараты. Объясняется это тем, что они оснащаются наиболее дешевыми и старыми навигационными чипами, имеющие низкую скорость работы и слабый приемник сигнала.

Посещение раздела с настройками

Во многих смартфонах и планшетах GPS-чип по умолчанию вовсе отключен. В таком случае аппарат определяет местоположение по сотовым вышкам и сетям Wi-Fi. Чтобы включить навигационный чип, нужна настройка девайса. Для этого совершите следующие действия:

Шаг 1. Зайдите в раздел «Настройки ».

Шаг 2. Здесь вас должен заинтересовать пункт «Местоположение ».

Шаг 3. На разных устройствах данный пункт может иметь другое наименование. Например, на планшетах Samsung нужно выбрать вкладку «Подключения » и нажать на пункт «Геоданные », заодно активировав соответствующий переключатель.

Шаг 4. В этом разделе вам необходимо включить высокую точность определения местоположения. Аппарат должен использовать для этого все источники - спутники GPS, сети Wi-Fi и данные с сотовых вышек.

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

Калибровка компаса

Если усилить прием сигнала на смартфонах нельзя, то улучшить работу цифрового компаса никто не помешает. Дело в том, что на некоторых устройствах он не откалиброван, в результате чего навигационная программа не может вовремя понять, в какую именно сторону света направлен ваш смартфон. Вам же в этот момент кажется, что девайс не ловит GPS.

Для калибровки компаса вам потребуется приложение GPS Essentials . Скачайте и установите его, после чего совершите следующие действия:

Шаг 1. Запустите программу.

Шаг 2. Зайдите в режим Compass .

Шаг 3. Если компас работает стабильно, то проблема заключается не в нём. Если компас отказывается правильно показывать стороны света, то совершите его калибровку.

Шаг 4. Сначала повращайте смартфон вокруг своей оси экраном кверху. Далее переверните его снизу вверх. Ну а потом переверните слева направо. Это должно помочь. В некоторых версиях приложения сначала необходимо выбрать пункт Calibrate в настройках раздела.

Просмотр количества видимых GPS-спутников

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

Сброс GPS-данных

Распространенной проблемой некоторых устройств является долгая привязка к конкретным GPS-спутникам, даже когда те успели уйти из зоны видимости. Помочь в таком случае может приложение GPS Status & Toolbox . Оно сбросит GPS-данные, после чего подключение к спутникам совершится с нуля.

Шаг 1. Скачайте и установите утилиту.

Шаг 2. Запустите установленное приложение, согласившись с условиями лицензионного соглашения.

Шаг 3. На главном экране программы вы увидите показания разных датчиков, а также информацию о количестве GPS-спутников над головой.

Шаг 4. Нажмите в любом месте дисплея, после чего вы сможете слева вытащить шторку с основным меню. Здесь вы можете откалибровать компас, если это не удалось сделать при помощи рассмотренного ранее приложения. Но сейчас вам нужно нажать на пункт «Управление состояниями A-GPS ».

Шаг 5. Во всплывающем меню необходимо нажать кнопку «Сбросить ».

Шаг 6. После завершения сброса вернитесь к этому всплывающему меню, нажав в нём кнопку «Загрузить ».

На что обращать внимание при покупке нового смартфона?

Теперь вы знаете ответ на вопрос «Как настроить GPS на Андроид?». Но вам всё это не очень сильно поможет, если вы хотите использовать свой смартфон в качестве GPS-навигатора на постоянной основе. Лучше для этих целей обзавестись добротным современным смартфоном. При его выборе обязательно ознакомьтесь с полными техническими характеристиками. В них необходимо найти упоминание о поддержке технологии A-GPS - она здорово снижает энергопотребление. Идеальным же смартфоном для вас станет тот, который работает ещё и со спутниками ГЛОНАСС . К счастью, поддержкой российской навигационной системы обладают практически все аппараты, которые ввозятся в нашу страну на протяжении последнего года. Но, опять же, заглянуть в спецификации устройства перед его приобретением всё же нужно.