- Как раскрыть весь потенциал на Андроиде — 21 скрытая возможность вашего устройства
- 1. Быстрый доступ к настройкам на панели уведомлений
- 2. Отображать места касания пальца на экране
- 3. Взглянуть на мир глазами дальтоника
- 4. Запретить фоновый обмен данных для выбранных программам
- 5. Сохранение страницы сайта в PDF-файл
- 6. Удобная навигация в браузере Chrome
- 7. Быстрое переключение между вкладками
- 8. Просмотр файлов на устройстве через браузер
- 9. Играйте в скрытую игру про динозавра в Chrome
- 10. Используйте кнопку включения для прерывания звонков
- 11. Защитить телефон пин-кодом
- 12. Перезагрузка в безопасном режиме
- 13. Smart Lock
- 14. Устанавливайте курсор в нужное место с помощью пробела
- 15. ОК Google
- 16. Приближайте карты двойным касанием
- 17. Информация для экстренных случаев
- 18. Управление WiFi в спящем режиме
- 19. Режим гостя
- 20. Поиск и блокировка потерянного устройства
- 21. Просматривайте историю уведомлений
- Как работает Android, часть 1
- Немного фактов
- Android is Linux
- It’s all about apps
- Binder
Как раскрыть весь потенциал на Андроиде — 21 скрытая возможность вашего устройства
Несмотря на то, что Android является очень простой и популярной мобильной операционной системой в мире, она весьма мощная в плане функционала и имеет ряд скрытых возможностей, о существовании которых простой пользователь может даже не подозревать. В этой статье вы узнаете некоторые из таких секретов.
1. Быстрый доступ к настройкам на панели уведомлений
Обычно для доступа к настройкам на панели уведомлений требуется два действия одним пальцем. Сначала стягиваем свайпом верхнюю панель вниз, а далее либо используем кнопку развертывания настроек, либо повторным свайпом раскрываем их.
Но мало кто знает, что с помощью свайпа двумя пальцами можно сразу перейти к настройкам телефона на панели уведомлений.
Вместо двух действий надо совершить одно, но двумя пальцами. Это проще и быстрее, чем делать два.
2. Отображать места касания пальца на экране
На некоторых видео с инструкциями о том, как пользоваться теми или иными возможностями телефона или какого-либо приложения вы могли заметить кружки, которыми отмечаются места касания пальца по экрану.
Если хотите сделать у себя так же, то включите в настройках разработчика опцию «Визуальный отклик» в разделе «Ввод теста». Если активировать еще и «Рисовать касания», то вы увидите на экране полосы, которые будут оставаться от вашего последнего касания.
Чтобы получить доступ в раздел разработчика, нужно 12 раз нажать на номер сборки в разделе информации о системе.
3. Взглянуть на мир глазами дальтоника
В настройках разработчика так же можно найти режимы имитации аномалий, которые позволяют переключить экран в черно-белый режим, а также имитировать недостатки зрения (дальтонизм) различных форм.
Примечательно, что при включении такой эмуляции вы сможете увидеть мир, каким видят его люди с таким недугом – включите камеру и просто посмотрите на экран.
4. Запретить фоновый обмен данных для выбранных программам
Если ваш телефон быстро садиться, но вам не хочется удалять множество программ, то вы можете запретить им фоновую передачу данных. В этом случае приложения будут синхронизироваться в обмениваться данными через интернет только тогда, когда вы их запустите.
Отдельным приложениям такие процедуры просто необходимы. Другим же можно и не включать. Прожорливость программ можно посмотреть в статистике потребления интернета в настройках вашего телефона.
5. Сохранение страницы сайта в PDF-файл
Если вам понравилась какая-то страница и вы хотели бы ее сохранить себе в архив или же передать кому-то, но не в виде ссылки, а целиком, то можете воспользоваться сохранением страницы в PDF.
Для этого на нужной странице откройте меню и выберите пункт «Поделиться…» В появившемся всплывающем меню выберите пункт «Печать». В качестве принтера нужно будет выбрать «Сохранить как PDF».
6. Удобная навигация в браузере Chrome
Если вы пользуетесь браузером Chrome на своем телефоне, то не забывайте переключаться между вкладками, нажимая на цифру справа от адресной строки, а также закрывать ненужные вкладки, смахивая в любую сторону их за заголовки.
Так вы избавитесь от ненужных вкладок, что сильно упростит навигацию. Это особенно удобно, когда вам нужно переключаться между разными вкладками для сбора данных.
7. Быстрое переключение между вкладками
Есть еще один быстрый способ переключаться между вкладками – свайпом (смахиванием) влево и вправо за адресную строку можно мгновенно переключаться на соседние вкладки.
Это особенно удобно, когда у вас уже нет ненужных вкладок (см. пункт выше).
8. Просмотр файлов на устройстве через браузер
Наберите в браузере file:///sdcard/ и вы увидите список папок и файлов на вашем устройстве.
Оттуда можно запускать некоторые файлы и просматривать их. Весьма удобная штука, если у вас нет файлового менеджера.
9. Играйте в скрытую игру про динозавра в Chrome
Когда нет интернета, браузер Chrome предлагает поиграть в игрушку.
Все что надо делать – бежать и прыгать в нужный момент времени, перепрыгивая препятствия. Все очень просто. Для старта игры надо нажать на динозавра.
10. Используйте кнопку включения для прерывания звонков
В настройках можно включить опцию, которая позволит использовать кнопку включения (Power) для прерывания звонков.
В этом случае не надо будет нажимать кнопку завершения звонка на экране, а просто нажать на «Выключить», чтобы прервать звонок.
11. Защитить телефон пин-кодом
Если вы опасаетесь, что кто-то может получить доступ к вашему устройству, то можете зашифровать свое устройство и защитить пин-кодом, который будет запрашиваться при попытке разблокировать телефон.
Если у вас на телефоне есть сканер отпечатков пальцев, то разблокировка будет максимально удобной, ведь для этого потребуется просто прикоснуться к сканеру пальцем.
12. Перезагрузка в безопасном режиме
Если зажать и держать кнопку питания, то появится меню, которое позволит выключить или же перезагрузить устройство. Если удерживать палец на пункте перезагрузки, то система предложит перезагрузиться в безопасном режиме.
В этом режиме будут заблокированы все сторонние программы.
13. Smart Lock
Одна из самых удобных фишек операционной системы Android. Позволяет не устанавливать блокировку, когда вы находитесь в доверенных местах (дома или на даче, например).
При этом в остальных местах телефон будет блокироваться и запрашивать пин-код для разблокировке. Это позволят существенно экономить время, не занимаясь разблокировкой устройства в тех местах, где в этом нет никакой необходимости.
Если вы скрываете содержимое своего телефона от братьев/сестер или родителей, то эта функция будет явно не для вас.
14. Устанавливайте курсор в нужное место с помощью пробела
При редактировании текста то и дело надо установить курсор в нужное положение, но он встает не туда, куда бы вам хотелось.
В этом случае поможет клавиша пробел на стандартной клавиатуре Google. Чтобы перемещать курсор с ее помощью, поводите влево или вправо на клавише пробела – курсор будет перемещаться туда, куда вы будете перемещать палец. Это позволит точно установить его в то место, которое вам необходимо.
15. ОК Google
Управляйте телефоном с помощью голоса. За рулем или в других случаях, когда заняты руки, это бывает очень полезно. Стоит сказать «ОК Google» и попросить его сделать то, что вам необходимо.
Так можно не только куда-то позвонить, узнать погоду, проложить маршрут до места, но и отправить текстовое сообщение через мессенджер.
16. Приближайте карты двойным касанием
Если вам надо приблизить масштаб на карте, то просто дважды стукните пальцем по экрану в том месте (действие называется «двойной тап»).
Этот способ можно использовать место классического жеста приближения или отдаления двумя пальцами.
17. Информация для экстренных случаев
Телефон весьма полезная штука еще и в экстренных случаях. Если с вами что-то случится, вы можете оставить информацию в телефоне, с помощью которой вам могут спасти жизнь и связаться с вами родственниками.
В настройках телефона в разделе «Пользователи» можно зайти в раздел «Данные для экстренных случаев». Там вы можете указать свое имя, группу крови, адрес, аллергические реакции, принимаемые медицинские препараты, доноров органов, другую медицинскую информацию (например, хронические заболевания).
Также там можно выбрать контакты, которым можно будет звонить в случае экстренных ситуаций, когда вы не сможете самостоятельно набрать номер телефона. Туда можно добавить близких родственников или близких друзей, кому вы доверяете.
Вся эта информация будет доступна без разблокировки телефона и воспользоваться ею смогут врачи скорой помощи, спасатели или просто неравнодушные граждане, которые захотят вам помочь в случае экстренной ситуации, либо если найдут ваш телефон где-то и захотят вернуть.
18. Управление WiFi в спящем режиме
В настройках WiFi можно задать правила работы WiFi в спящем режиме. Если вы не хотите, чтобы ваш гаджет потреблял трафик в спящем режиме, то выберите соответствующий пункт в настройках.
Это позволит не только контролировать трафик, но экономить заряд аккумулятора. При этом, конечно, нужно помнить и о том, что у вас может быть включен мобильный интернет, который будет использоваться в случае, когда WiFi недоступен.
19. Режим гостя
Чтобы скрывать приватные данные от посторонних глаз, когда вы даете кому-то на время телефон, лучше использовать режим гостя.
Его параметры можно увидеть в настройках, в разделе «Пользователи».
20. Поиск и блокировка потерянного устройства
В случае утери устройства можно попробовать его найти и заблокировать.
Для этого используется специальный сервис Google, который прямо на карте покажет местоположение вашего устройства и позволит его заблокировать. Также на него можно будет позвонить в случае необходимости.
21. Просматривайте историю уведомлений
Уведомления в телефоне приходят постоянно и случайно можно удалить нужное, которое хочется вернуть обратно и посмотреть, что же там такое было.
Для этого на домашнем экране нажмите и удерживайте палец на пустом месте, пока не появятся кнопки управления «Виджеты», «Настройки», «Обои» и выберите пункт «Виджеты». Поместите на рабочий стол «Настройки» и в момент, когда вы переместите иконку на домашний экран, выберите «Журнал уведомлений» в появившемся списке.
Источник
Как работает Android, часть 1
В этой серии статей я расскажу о внутреннем устройстве Android — о процессе загрузки, о содержимом файловой системы, о Binder и Android Runtime, о том, из чего состоят, как устанавливаются, запускаются, работают и взаимодействуют между собой приложения, об Android Framework, и о том, как в Android обеспечивается безопасность.
Немного фактов
Android — самая популярная операционная система и платформа для приложений, насчитывающая больше двух миллиардов активных пользователей. На ней работают совершенно разные устройства, от «интернета вещей» и умных часов до телевизоров, ноутбуков и автомобилей, но чаще всего Android используют на смартфонах и планшетах.
Android — свободный и открытый проект. Большинство исходного кода (который можно найти на https://source.android.com) распространяется под свободной лицензией Apache 2.0.
Компания Android Inc. была основана в 2003 году и в 2005 году куплена Google. Публичная бета Android вышла в 2007 году, а первая стабильная версия — в 2008, с тех пор мажорные релизы выходят примерно раз в год. Последняя на момент написания стабильная версия Android — 7.1.2 Nougat.
Android is Linux
По поводу такой формулировки было много споров, так что сразу поясню, что именно я имею в виду под этой фразой: Android основан на ядре Linux, но значительно отличается от большинства других Linux-систем.
Среди исходной команды разработчиков Android был Robert Love, один из самых известных разработчиков ядра Linux, да и сейчас компания Google остаётся одним из самых активных контрибьюторов в ядро, поэтому неудивительно, что Android построен на основе Linux.
Как и в других Linux-системах, ядро Linux обеспечивает такие низкоуровневые вещи, как управление памятью, защиту данных, поддержку мультипроцессности и многопоточности. Но — за несколькими исключениями — вы не найдёте в Android других привычных компонентов GNU/Linux-систем: здесь нет ничего от проекта GNU, не используется X.Org, ни даже systemd. Все эти компоненты заменены аналогами, более приспособленными для использования в условиях ограниченной памяти, низкой скорости процессора и минимального потребления энергии — таким образом, Android больше похож на встраиваемую (embedded) Linux-систему, чем на GNU/Linux.
Другая причина того, что в Android не используется софт от GNU — известная политика «no GPL in userspace»:
We are sometimes asked why Apache Software License 2.0 is the preferred license for Android. For userspace (that is, non-kernel) software, we do in fact prefer ASL 2.0 (and similar licenses like BSD, MIT, etc.) over other licenses such as LGPL.
Android is about freedom and choice. The purpose of Android is promote openness in the mobile world, and we don’t believe it’s possible to predict or dictate all the uses to which people will want to put our software. So, while we encourage everyone to make devices that are open and modifiable, we don’t believe it is our place to force them to do so. Using LGPL libraries would often force them to do just that.
Само ядро Linux в Android тоже немного модифицировано: было добавлено несколько небольших компонентов, в том числе ashmem (anonymous shared memory), Binder driver (часть большого и важного фреймворка Binder, о котором я расскажу ниже), wakelocks (управление спящим режимом) и low memory killer. Исходно они представляли собой патчи к ядру, но их код был довольно быстро добавлен назад в upstream-ядро. Тем не менее, вы не найдёте их в «обычном линуксе»: большинство других дистрибутивов отключают эти компоненты при сборке.
В качестве libc (стандартной библиотеки языка C) в Android используется не GNU C library (glibc), а собственная минималистичная реализация под названием bionic, оптимизированная для встраиваемых (embedded) систем — она значительно быстрее, меньше и менее требовательна к памяти, чем glibc, которая обросла множеством слоёв совместимости.
В Android есть оболочка командной строки (shell) и множество стандартных для Unix-подобных систем команд/программ. Во встраиваемых системах для этого обычно используется пакет Busybox, реализующий функциональность многих команд в одном исполняемом файле; в Android используется его аналог под названием Toybox. Как и в «обычных» дистрибутивах Linux (и в отличие от встраиваемых систем), основным способом взаимодействия с системой является графический интерфейс, а не командная строка. Тем не менее, «добраться» до командной строки очень просто — достаточно запустить приложение-эмулятор терминала. По умолчанию он обычно не установлен, но его легко, например, скачать из Play Store (Terminal Emulator for Android, Material Terminal, Termux). Во многих «продвинутых» дистрибутивах Android — таких, как LineageOS (бывший CyanogenMod) — эмулятор терминала предустановлен.
Второй вариант — подключиться к Android-устройству с компьютера через Android Debug Bridge (adb). Это очень похоже на подключение через SSH:
Из других знакомых компонентов в Android используются библиотека FreeType (для отображения текста), графические API OpenGL ES, EGL и Vulkan, а также легковесная СУБД SQLite.
Кроме того, раньше для реализации WebView использовался браузерный движок WebKit, но начиная с версии 7.0 вместо этого используется установленное приложение Chrome (или другое; список приложений, которым разрешено выступать в качестве WebView provider, конфигурируется на этапе компиляции системы). Внутри себя Chrome тоже использует основанный на WebKit движок Blink, но в отличие от системной библиотеки, Chrome обновляется через Play Store — таким образом, все приложения, использующие WebView, автоматически получают последние улучшения и исправления уязвимостей.
It’s all about apps
Как легко заметить, использование Android принципиально отличается от использования «обычного Linux» — вам не нужно открывать и закрывать приложения, вы просто переключаетесь между ними, как будто все приложения запущены всегда. Действительно, одна из уникальных особенностей Android — в том, что приложения не контролируют напрямую процесс, в котором они запущены. Давайте поговорим об этом подробнее.
Основная единица в Unix-подобных системах — процесс. И низкоуровневые системные сервисы, и отдельные команды в shell’е, и графические приложения — это процессы. В большинстве случаев процесс представляет собой чёрный ящик для остальной системы — другие компоненты системы не знают и не заботятся о его состоянии. Процесс начинает выполняться с вызова функции main() (на самом деле _start ), и дальше реализует какую-то свою логику, взаимодействуя с остальной системой через системные вызовы и простейшее межпроцессное общение (IPC).
Поскольку Android тоже Unix-подобен, всё это верно и для него, но в то время как низкоуровневые части — на уровне Unix — оперируют понятием процесса, на более высоком уровне — уровне Android Framework — основной единицей является приложение. Приложение — не чёрный ящик: оно состоит из отдельных компонентов, хорошо известных остальной системе.
У приложений Android нет функции main() , нет одной точки входа. Вообще, Android максимально абстрагирует понятие приложение запущено как от пользователя, так и от разработчика. Конечно, процесс приложения нужно запускать и останавливать, но Android делает это автоматически (подробнее я расскажу об этом в следующих статьях). Разработчику предлагается реализовать несколько отдельных компонентов, каждый из которых обладает своим собственным жизненным циклом.
In Android, however, we explicitly decided we were not going to have a main() function, because we needed to give the platform more control over how an app runs. In particular, we wanted to build a system where the user never needed to think about starting and stopping apps, but rather the system took care of this for them… so the system had to have some more information about what is going on inside of each app, and be able to launch apps in various well-defined ways whenever it is needed even if it currently isn’t running.
Для реализации такой системы нужно, чтобы приложения имели возможность общатся друг с другом и с системными сервисами — другими словами, нужен очень продвинутый и быстрый механизм IPC.
Этот механизм — Binder.
Binder
Binder — это платформа для быстрого, удобного и объектно-ориентированного межпроцессного взаимодействия.
Разработка Binder началась в Be Inc. (для BeOS), затем он был портирован на Linux и открыт. Основной разработчик Binder, Dianne Hackborn, была и остаётся одним из основных разработчиков Android. За время разработки Android Binder был полностью переписан.
Binder работает не поверх System V IPC (которое даже не поддерживается в bionic), а использует свой небольшой модуль ядра, взаимодействие с которым из userspace происходит через системные вызовы (в основном ioctl ) на «виртуальном устройстве» /dev/binder . Со стороны userspace низкоуровневая работа с Binder, в том числе взаимодействие с /dev/binder и marshalling/unmarshalling данных, реализована в библиотеке libbinder.
Низкоуровневые части Binder оперируют в терминах объектов, которые могут пересылаться между процессами. При этом используется подсчёт ссылок (reference-counting) для автоматического освобождения неиспользуемых общих ресурсов и уведомление о завершении удалённого процесса (link-to-death) для освобождения ресурсов внутри процесса.
Высокоуровневые части Binder работают в терминах интерфейсов, сервисов и прокси-объектов. Описание интерфейса, предоставляемого программой другим программам, записывается на специальном языке AIDL (Android Interface Definition Language), внешне очень похожем на объявление интерфейсов в Java. По этому описанию автоматически генерируется настоящий Java-интерфейс, который потом может использоваться и клиентами, и самим сервисом. Кроме того, по .aidl -файлу автоматически генерируются два специальных класса: Proxy (для использования со стороны клиента) и Stub (со стороны сервиса), реализующие этот интерфейс.
Для Java-кода в процессе-клиенте прокси-объект выглядит как обычный Java-объект, который реализует наш интерфейс, и этот код может просто вызывать его методы. При этом сгенерированная реализация прокси-объекта автоматически сериализует переданные аргументы, общается с процессом-сервисом через libbinder, десериализует переданный назад результат вызова и возвращает его из Java-метода.
Stub работает наоборот: он принимает входящие вызовы через libbinder, десериализует аргументы, вызывает абстрактную реализацию метода, сериализует возвращаемое значение и передаёт его процессу-клиенту. Соответственно, для реализации сервиса программисту достаточно реализовать абстрактные методы в унаследованном от Stub классе.
Такая реализация Binder на уровне Java позволяет большинству кода использовать прокси-объект, вообще не задумываясь о том, что его функциональность реализована в другом процессе. Для обеспечения полной прозрачности Binder поддерживает вложенные и рекурсивные межпроцессные вызовы. Более того, использование Binder со стороны клиента выглядит совершенно одинаково, независимо от того, расположена ли реализация используемого сервиса в том же или в отдельном процессе.
Для того, чтобы разные процессы могли «найти» сервисы друг друга, в Android есть специальный сервис ServiceManager, который хранит, регистрирует и выдаёт токены всех остальных сервисов.
Binder широко используется в Android для реализации системных сервисов (например, пакетного менеджера и буфера обмена), но детали этого скрыты от разработчика приложений высокоуровневыми классами в Android Framework, такими как Activity, Intent и Context. Приложения могут также использовать Binder для предоставления друг другу собственных сервисов — например, приложение Google Play Services вообще не имеет собственного графического интерфейса для пользователя, но предоставляет разработчикам других приложений возможность пользоваться сервисами Google Play.
Подробнее про Binder можно узнать по этим ссылкам:
В следующей статье я расскажу о некоторых идеях, на которых построены высокоуровневые части Android, о нескольких его предшественниках и о базовых механизмах обеспечения безопасности.
Источник