В прошлых уроках мы уже осваивали работу с некоторыми датчиками, которыми оборудованы современные 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). Запускаем и видим:

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

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

На самом деле, калибровка компаса смартфона очень проста. Исходя из того, что на вашем телефоне есть Google Maps, откройте приложение и выполните такие несложные действия:

  • Держите смартфон, как вы его держите обычно. Держа девайс перед собой, наклоните его верхнюю часть вперед (от вас) и затем назад (к вам);
  • Теперь придайте устройству вертикальное положение, чтобы дисплей был обращен к вам. Поверните телефон сначала влево, потом вправо;
  • Снова придайте смартфону вертикальное положение. Наклоните девайс в сторону (например, сначала в левую, потом – в правую) на 90° – аналогично тому, как вы переключаетесь в ландшафтный режим.

Нарисуйте телефоном цифру «8» в воздухе для калибровки компаса

Если указанный выше способ вам не помог, тогда вы можете попробовать нарисовать девайсом «восьмерку» в воздухе. Вам нужно открыть приложение Google Maps и выполнить движения, как показано на этом видео – это очень просто, хотя вы можете выглядеть немного глупо, делая это в общественном месте.

Сторонние приложения

Вы также можете установить приложение из Play Store, чтобы узнать состояние вашего компаса и других датчиков, и определить, нуждаются ли они в калибровке. Одним из таких приложений является GPS Essentials .

У вас возникли вопросы? Задайте их нам в комментариях.

Описание приложения

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

  1. Modern – черный.
  2. Golden – серебристый с голубой серединой.
  3. Nice – золотистый с синей серединой.

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

Плюсы и минусы

Из плюсов отмечу следующее:

  • эту утилиту можно для Андроид скачать бесплатно;
  • поддерживает GPS, можно увидеть свои координаты.

Минусы же такие:

  • наличие рекламы;
  • неполноценная русификация программы;
  • отсутствие возможности увидеть свое положение на карте.

Скачать

3D Compass Plus

Скриншоты приложения

Компас Сталь 3D

Скриншоты приложения

Описание приложения

Данная программа представляет собой компас 3D, причем довольно точный компас. Сразу после запуска утилита предлагает провести калибровку, прилагая графическую инструкцию для этого. Затем пользователь увидит непосредственно компас, который при смене положения смартфона тоже вращается, продолжая указывать на магнитный север.
В настройках можно изменить курс на истинный, после чего станет доступна функция указания направления на Солнце и Луну. Цвет компаса здесь тоже можно изменить в настройках программы на неон черный, сталь красный, сталь синий, сталь черный и сталь золото.
При желании можно оставлять экран постоянно включенным и включить режим низкой мощности. В нижней части экрана расположена информация о напряженности магнитного поля.

Плюсы и минусы

Положительное в этом приложение:

  • скачивание ее на Андроиде бесплатное;
  • красивая визуализация благодаря эффекту 3D;
  • возможность получить информацию о направлении Солнца и Луны;
  • все здесь полностью на русском языке.

Не порадовало меня здесь то, что включение курса на истинный север так и не вышло и в этом режиме на моем устройстве не работает компас. Также здесь невозможно увидеть свое местоположение на карте.

Скачать

При необходимости знать свое местоположение с учетом сторон света подойдет любой из электронных компасов. Ни один из них не требует подключения к сети Интернет. По комфортности и функциональности предпочтительнее программа 3D Compass Plus.

Современные смартфоны оснащены 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 - она здорово снижает энергопотребление. Идеальным же смартфоном для вас станет тот, который работает ещё и со спутниками ГЛОНАСС . К счастью, поддержкой российской навигационной системы обладают практически все аппараты, которые ввозятся в нашу страну на протяжении последнего года. Но, опять же, заглянуть в спецификации устройства перед его приобретением всё же нужно.



Эта статья также доступна на следующих языках: Тайский

  • Next

    Огромное Вам СПАСИБО за очень полезную информацию в статье. Очень понятно все изложено. Чувствуется, что проделана большая работа по анализу работы магазина eBay

    • Спасибо вам и другим постоянным читателям моего блога. Без вас у меня не было бы достаточной мотивации, чтобы посвящать много времени ведению этого сайта. У меня мозги так устроены: люблю копнуть вглубь, систематизировать разрозненные данные, пробовать то, что раньше до меня никто не делал, либо не смотрел под таким углом зрения. Жаль, что только нашим соотечественникам из-за кризиса в России отнюдь не до шоппинга на eBay. Покупают на Алиэкспрессе из Китая, так как там в разы дешевле товары (часто в ущерб качеству). Но онлайн-аукционы eBay, Amazon, ETSY легко дадут китайцам фору по ассортименту брендовых вещей, винтажных вещей, ручной работы и разных этнических товаров.

      • Next

        В ваших статьях ценно именно ваше личное отношение и анализ темы. Вы этот блог не бросайте, я сюда часто заглядываю. Нас таких много должно быть. Мне на эл. почту пришло недавно предложение о том, что научат торговать на Амазоне и eBay. И я вспомнила про ваши подробные статьи об этих торг. площ. Перечитала все заново и сделала вывод, что курсы- это лохотрон. Сама на eBay еще ничего не покупала. Я не из России , а из Казахстана (г. Алматы). Но нам тоже лишних трат пока не надо. Желаю вам удачи и берегите себя в азиатских краях.

  • Еще приятно, что попытки eBay по руссификации интерфейса для пользователей из России и стран СНГ, начали приносить плоды. Ведь подавляющая часть граждан стран бывшего СССР не сильна познаниями иностранных языков. Английский язык знают не более 5% населения. Среди молодежи — побольше. Поэтому хотя бы интерфейс на русском языке — это большая помощь для онлайн-шоппинга на этой торговой площадке. Ебей не пошел по пути китайского собрата Алиэкспресс, где совершается машинный (очень корявый и непонятный, местами вызывающий смех) перевод описания товаров. Надеюсь, что на более продвинутом этапе развития искусственного интеллекта станет реальностью качественный машинный перевод с любого языка на любой за считанные доли секунды. Пока имеем вот что (профиль одного из продавцов на ебей с русским интерфейсом, но англоязычным описанием):
    https://uploads.disquscdn.com/images/7a52c9a89108b922159a4fad35de0ab0bee0c8804b9731f56d8a1dc659655d60.png