Что такое ориентация в телефоне и как её менять?

Что такое автоповорот?

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

Если говорить простым языком, при повороте экрана поворачивается и изображение вместе с ним.

Зачем нужно отключать автоповорот на телефоне?

  1. Экономия заряда батареи. Такой пустяк, а расходует заряд батареи. Дело в том, что в телефонах с Android 9 и выше программа не просто регулярно считывает положение экрана с помощью нескольких датчиков, но еще и анализирует поведение человека, чтобы не поворачивать экран тогда, когда это не нужно.
  2. Когда используется TalkBack или другие озвучивающие сервисы, например, читалка FBReader. При повороте экрана текст элементарно будет прерываться, что неудобно и начинает раздражать.
  3. При использовании телефона лежа на кровати. Ведь не так легко держать смартфон на вытянутых руках в течение нескольких часов, даже лежа. Поэтому всегда можно положить его на кровать ребром. Но вот проблема: моментально активируется ландшафтный режим. Чтобы этого не происходило, рекомендуется отключать автоповорот. Ведь это неудобно.

А как же ориентацию переключать?

Например, есть сайт, открытый в Chrome для Android. Этот браузер позволяет менять ориентацию со стандартной (вертикальной) на альбомную. Текста при альбомной ориентации будет помещаться больше, и читать его будет удобнее (шрифт также будет масштабнее) Но как поменять ориентацию при выключенном автоповороте?

Есть два способа. Первый — на время включить автоповорот, дождаться смены ориентации, выключить автоповорот.

Второй подойдет тем людям, у которых на телефоне стоит “чистый” Android версии 9 и выше. В таком случае при повороте экрана появляется маленькая кнопочка там же, где расположены кнопки навигации. Она и предлагает повернуть экран.

Как включить датчик автоповорота в настройках

Обычно автоповорот включается в шторке уведомлений, но иногда оттуда пропадает соответствующая иконка. Чтобы включить датчик, сделайте несколько простых шагов:

1. Зайдите в «Настройки» смартфона.
2. Выберите раздел «Экран».
3. Активируйте пункт «Автоповорот экрана».

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

Калибровка акселерометра

За поворот экрана отвечает акселерометр, работа которого иногда нарушается физическими или программными сбоями.

Иногда калибровка акселерометра слетает после обновления MIUI.

Чтобы откалибровать акселерометр:

 
1. Зайдите в номеронабиратель и наберите код *#*#6484#*#*, чтобы попасть в инженерное меню.
 
2. Найти пункт «Accelerator» или «Accelerometer sensor».

3. Наклонять телефон в разные стороны, пока на дисплее не высветятся стрелки.

 
4. Положить устройство на ровную горизонтальную поверхность и нажать кнопку «Calibration».

5. Дождаться, пока система отобразит надпись «Сalibration success».

6. После этих манипуляций автоповорот должен заработать.

На новых версиях MIUI в инженерном меню есть только теты для проверки работоспособности датчиков.

Перезагрузка

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

Попробуйте сбросить все настройки:

  1. Сохраните свои личные данные и файлы.
  2. Зайдите в «Настройки» и перейдите к «Расширенным настройкам».
  3. Выберите раздел «Восстановление и сброс».
  4. Нажмите пункт «Сброс настроек» и удалите все файлы на телефоне.

В самых сложных ситуациях помогает только перепрошивка.

Если вы продвинутый пользователь, прошейте смартфон привычным для вас способом (MiFlash, ADB и др.)

Остальные пользователи могут попробовать переустановить обновление MIUI через «три точки»:

  1. Зайдите в «Настройки» и выберите раздел «О телефоне».
  2. Откройте пункт «Обновление системы».
  3. Нажмите на три точки в правом верхнем углу дисплея и скачайте полную прошивку.

После переустановки последней версии MIUI проблема с автоповоротом часто исчезает.

Как поменять ориентацию экрана вручную

Если вы хотите управлять сменой шаблона вручную, Вам необходимо воспользоваться методами, предоставляемыми классом Configuration. Объект этого класса передается в качестве параметра в метод onConfigurationChanged, который вызывается при изменении одного из параметров, определенного атрибутами Activity в файле AndroidManifest.xml. Чтобы перехватывать смену ориентации Вам нужно задать атрибут android:configChanges в знаение orientation в файле манифеста. Если этого не сделать, то метод onConfigurationChanged не будет вызываться при смене ориентации устройства.

Блокировка ориентации экрана

Иногда нам требуется запретить смену ориентации. Например, для длинного списка предпочтительной является книжная ориентация, поскольку в этом случае на экране уместится большее количество информации. Вы можете ограничить ориентацию эерана для своей activity с помощью атрибута android:screenOrientation. Этот атрибут можно указать в AndroidManifest.xml. android_screenOrientation=”landscape” – альбомная ориентация, android_screenOrientation=”portrait” – книжная ориентация. Если Вы ограничиваете свое приложение одной ориентацией, то шаблон должен располагаться в папке res/layout.

Вступление

Когда создавались первые портативные устройства – КПК и смартфоны, то за основу бралась настольная операционная система и допиливалась под мобильное устройство. Лишние функции удалялись, а некоторые функции добавлялись. Но при этом как-то совсем упустили из виду, что в отличие от громоздких мониторов и экранов ноутбуков, карманные устройства можно вращать в руках. Первые устройства не умели менять ориентацию экрана. Некоторые программисты самостоятельно стали создавать программы, которые умели переключаться в разные режимы. Затем эту возможность стали включать в настройки аппарата. Позже аппараты научились самостоятельно определять ориентацию экрана.

Всего существует два режима – портретный и альбомный. На большинстве телефонов используется по умолчанию портретный режим (как на паспорте). Альбомный режим знаком нам по обычным мониторам.

Рассмотрим следующий случай. Предположим, у нас в приложении имеется одно текстовое поле и шесть кнопок. Вроде всё нормально.

Но стоит нам повернуть устройство на 90 градусов (для эмулятора нужно нажать комбинацию клавиш Ctrl+F11), как сразу обнаруживаются проблемы. Пятая кнопка видна частично, а шестая вообще оказалась за пределами видимости. Непорядок!

Чтобы избежать такой проблемы, необходимо как-то по другому скомпоновать кнопки. Например, расположить их не подряд друг за другом, а разбить на пары. Воспользуемся контейнером TableLayout. С его помощью мы можем разбить кнопки на две колонки и поместить их в три ряда.

Для этой операции нам понадобится сделать несколько важных шагов. Сначала нужно создать новую подпапку в папке res. Выделяем папку res, вызываем из него контекстное меню и последовательно выбираем команды New | Android resource directory. В диалоговом окне из выпадающего списка Resource type: выбираем layout. В списке Available qualifiers: находим элемент Orientation и переносим его в правую часть Chosen qualifiers: с помощью кнопки с двумя стрелками. По умолчанию у вас появится имя папки layout-port в первой строке Directory Name:. Но нам нужен альбомный вариант, поэтому в выпадающем списке Screen orientation выбираем Landscape. Теперь название папки будет layout-land.

Можно обойтись без помощи мастера, создав папку сразу через меню New | Directory. Этот способ годится для опытных разработчиков, которые знают, как следует назвать папку. Важно запомнить, что имя даётся не произвольно, а именно в таком виде layout-land. По суффиксу -land система понимает, что речь идет о новом режиме. Теперь нам осталось создать в созданной папке новый XML-файл activity_main.xml. Вызываем контекстное меню у папки layout-land и выбираем команды New | Layout Resource File. В диалоговом окне присваиваем имя activity_main.xml, которое должно совпадать с именем существующего файла. Во втором поле вводим LinearLayout, по мере ввода появится подсказка, облегчающая выбор.

Откроем созданный файл и модифицируем его следующим образом.

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout  android_layout_width="match_parent" android_layout_height="match_parent" android_orientation="vertical"> <LinearLayout android_orientation="vertical" android_layout_height="wrap_content" android_layout_width="match_parent" android_layout_gravity="center" android_paddingLeft="20dp" android_paddingRight="20dp"> <EditText android_layout_height="wrap_content" android_id="@+id/editText" android_layout_width="match_parent"/> <TableLayout android_layout_height="wrap_content" android_layout_width="wrap_content" android_layout_gravity="center" android_stretchColumns="*"> <TableRow> <Button android_id="@+id/button1" android_layout_height="wrap_content" android_layout_width="match_parent" android_text="Первая кнопка"/> <Button android_id="@+id/button2" android_layout_height="wrap_content" android_layout_width="match_parent" android_text="Вторая кнопка"/> </TableRow> <TableRow> <Button android_id="@+id/button3" android_layout_height="wrap_content" android_layout_width="match_parent" android_text="Третья кнопка"/> <Button android_id="@+id/button4" android_layout_height="wrap_content" android_layout_width="match_parent" android_text="Четвёртая кнопка"/> </TableRow> <TableRow> <Button android_id="@+id/button5" android_layout_height="wrap_content" android_layout_width="match_parent" android_text="Пятая кнопка"/> <Button android_id="@+id/button6" android_layout_height="wrap_content" android_layout_width="match_parent" android_text="Шестая кнопка"/> </TableRow> </TableLayout> </LinearLayout> </LinearLayout> 

Запускаем приложение и проверяем. Отлично, теперь видны все кнопки. Поздравляю, вы гений!

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

Проблемы с автоповоротом

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

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

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

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

Повторная активация

Вызовите шторку уведомлений, в которой появится быстрое меню. Найдите в нём пункт «Ориентация». Если он закрашен синим цветом, значит, заблокирован. Нажмите, чтобы он стал бледным, в этом положении автоповорот должен работать.
Для уверенности нажмите на иконку несколько раз подряд с паузой около одной секунды. Проверьте работоспособность.

Установка прошивки

В редких случаях поломка автоповорота в MIUI 11 происходит в результате ошибочной установки новой версии прошивки. Вам необходимо установить полную версию.

Не волнуйтесь, операция произойдёт автоматически без потери данных, вам лишь нужно убедиться, что интернет позволит беспрепятственно скачать около 2 Гб данных и убедитесь, что аккумулятор заряжен более чем на 70%.

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

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

Как временное решение возможно использовать приложение Rotation Control. Оно не сможет вращать дисплей автоматически, но даст вам возможность делать это нажатием специальной кнопки.

Пример android приложения

Давайте создадим проект, в котором продемонстрируем различные способы изменения шаюлона экрана при смене ориентации. Приложение судет состоять из трех кнопок, при нажатии на которые будет открываться activity, в которой будет реализован тот или иной способ работы с ориентацией. Внутри шаблона приложения с помощью атрибута android:onClick объявим методы, которые будут вызываться при нажатии на кнопки.

Шаблон нашего приложения имеет вид:
activity_main.xml

<LinearLayout >:android="http://schemas.android.com/apk/res/android" >:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <Button android:id="@+id/btAutomatic" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/bt_automatic_orientation" android:onClick="autoOrientationDetection" tools:context=".MainActivity" /> <Button android:id="@+id/btDynamic" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/bt_dynamic_orientation" android:onClick="dynamicOrientationDetection" tools:context=".MainActivity" /> <Button android:id="@+id/btRestricted" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/bt_restricted_orientation" android:onClick="restrictedOrientation" tools:context=".MainActivity" /> </LinearLayout>

Внутри класса MainActivity определим эти методы.

package com.code4reference.orientationspecificlayout import android.app.Activity import android.content.Intent import android.os.Bundle import android.view.View publicclass MainActivityextends Activity{ @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) } /** * Запускаем activity в которой реализована * автоматическая смена шаблона. * @param view */ public void autoOrientationDetection(View view){ Intent intent=new Intent(this, AutomaticOrientation.class) startActivity(intent) } /** * Запускаем activity в которой реализована * динамическая смена шаблона. * @param view */ public void dynamicOrientationDetection(View view){ Intent intent=new Intent(this, DynamicOrientationDetection.class) startActivity(intent) } /** * Запускаем activity в которой реализована * блокировка смены шаблона. * @param view */ public void restrictedOrientation(View view){ Intent intent=new Intent(this, RestrictedOrientation.class) startActivity(intent) } }

Реализация автоматической ориентации экрана

Создайте файл шаблона activity_automatic.xml в папке res/layout-land. Этот файл определяет вид экрана при альбомной ориентации.
layout-land/activity_automatic.xml

<RelativeLayout >:android="http://schemas.android.com/apk/res/android" >:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:padding="@dimen/padding_medium" android:text="@string/landscape_orientation" android:textColor="#000808" android:textSize="20dp" android:textStyle="bold|italic" tools:context=".AutomaticOrientation"/> </RelativeLayout>

Аналогичный файл для книжной ориентации создадим в папке res/layout-port. Обратите внимание, что TextView имеет разные цвета.

<RelativeLayout >:android="http://schemas.android.com/apk/res/android" >:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"> layout-port/activity_automatic.xml <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:padding="@dimen/padding_medium" android:text="@string/portrait_orientation" android:textColor="#FA00FA" android:textSize="20dp" android:textStyle="bold|italic" tools:context=".MainActivity"/> </RelativeLayout>

Для реализации автоматического изменения шаблона создадим класс AutomationOrientation. Внутри класса мы просто связываем с activity xml файл.
AutomaticOrientation.java

package com.code4reference.orientationspecificlayout import android.app.Activity import android.os.Bundle publicclass AutomaticOrientationextends Activity{ @Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState) setContentView(R.layout.activity_automatic) } }

Samsung Galaxy 4

  1. Откройте панель уведомлений. Для этого проведите по экрану сверху вниз. В верхней части экрана откроется панель быстрых настроек с соответствующими значками.
  2. Коснитесь «Поворот экрана». Когда эта опция отключена, ориентация экрана не поменяется, если повернуть устройство.

Устройства с оригинальной (без изменений) системой Android

  1. Запустите приложение «Настройки» и коснитесь «Экран».
  2. Коснитесь «Автоповорот экрана». Передвиньте ползунок в положение «Включить» или «Выключить». Когда эта опция отключена, ориентация экрана не поменяется, если повернуть устройство.

HTC One, HTC One M8 и другие сенсорные UI-смартфоны

  1. Откройте панель быстрых настроек. Для этого двумя пальцами проведите по экрану сверху вниз. В верхней части экрана откроется панель быстрых настроек с соответствующими значками.
  2. Коснитесь «Автоповорот». Когда эта опция отключена, ориентация экрана не поменяется, если повернуть устройство.

Приложение Set Orientation

  1. Откройте Play Маркет. Нажмите на значок в виде разноцветного треугольника.
  2. В строке поиска (вверху экрана) введите «Set Orientation».
  3. Нажмите «Установить». Нажмите «Принять», и приложение Set Orientation будет установлено на устройство.
  4. Запустите приложение. Теперь в меню выберите нужную ориентацию экрана. Чтобы перейти в приложение, проведите по экрану сверху вниз и коснитесь «Orientation» (Ориентация).

Заключение

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

Источники

  • https://zen.yandex.com/media/technosovet/3-prichiny-po-kotorym-nujno-otkliuchit-avtopovorot-na-telefone-i-kak-eto-sdelat-5e71ff99c2f7601621cfb79a
  • https://phoneoff.ru/instruktsii/ne-rabotaet-avtopovorot-jekrana-na-xiaomi
  • http://www.mobilab.ru/androiddev/androidorientation.html
  • http://developer.alexanderklimov.ru/android/orientation.php
  • https://ctroim-vce.ru/telephones/orientatsiya-v-xiaomi-redmi.php
  • https://mi-check.ru/avtopovorot-miui-11-xiaomi/
  • https://ru.wikihow.com/%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B8%D1%82%D1%8C-%D0%BE%D1%80%D0%B8%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D1%8E-%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0-%D0%B2-Android

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Все об устройствах на Windows, Android, iOS
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: