Андроид: начало работы с устройством
Знакомство с новым мобильным устройством очень интересный процесс, особенно если это ваш первый смартфон или планшет. Во-первых, убедитесь в том, что вы знакомы с интерфейсом вашего устройства и умеете выполнять основные задачи, включая экран, встроенные приложения и т.д. Затем вы можете перейти к некоторым другим основным задачам, таких как подключение к Интернету с помощью Wi-Fi.
Аккаунт Google
Первый раз, когда вы включите устройство, вам будет предложено настроить несколько функций, такие как предпочитаемый вами язык, дата и время, и (самое главное) ваш аккаунт Google. Если у вас нет учетной записи Google, то вы можете создать в процессе установки.
Почему аккаунт Google является столь важным? потому что ваш аккаунт Google является «вашей личностью на вашем устройстве». Он не только соединит вас с Облаком (Cloud), где сохранены фото и контакты, но также дает вам доступ к Play Маркет, где вы можете скачать и приобретать различные приложения.
Также он дает доступ к другим сервисам Google, такие как Gmail, Chrome, Google Drive и YouTube. Для получения более подробной информации ознакомьтесь с нашими уроками Аккаунт Google.
Знакомство с устройством
После первичной настройки телефона вы увидите простой экран с несколькими иконками, кнопками и другими различными функциями. Это одна из самых важных частей вашего устройства, это главный экран — где будут отображаться иконки всех ваших любимых приложений.
Как мы уже говорили, каждое Android устройство является уникальным. (Мы говорили об этом в предыдущем уроке Введение в Android устройство). Это означает, что работа устройства и выполнение некоторых задач тоже может немного отличаться в зависимости от вашего телефона или планшета. К счастью вы можете многому научиться, сравнивая ваше устройство с нашим (LG Nexus 5 с которого мы делаем скриншоты и показываем на наших уроках Основы Андроид).
На изображении ниже отмечены элементы интерфейса, главного экрана и других особенностей. Описание этих элементов вы можете прочитать под изображением.
1. Уведомления
Уведомления это сигналы об уведомлениях, которые позволяют вам знать о действиях, предложениях, изменениях, обновлениях и т.д.
Чтобы просмотреть уведомления проведите пальцем вниз от верхней части экрана. Оттуда, вы можете увидеть более подробную информацию о каждом уведомлении.
2. Строка состояния
Область в правом верхнем углу отображает текущую информацию о вашем устройстве (уровень сигнала, статус Wi-Fi, ресурс аккумулятора, и время). В нашем примере есть значок указывающий на то, что телефон находиться в режиме вибрации.
3. Google Now
Многие новые устройства поставляются с инструментом под названием Google Now. Он дает легкий доступ к некоторым из его особенностей.
Например, если вы нажмете на значок микрофона, вы можете сделать быстрый голосовой поиск или голосовую команду. Также в строке Google можете быстро найти любую информацию через интернет.
4. Виджеты
Это пример виджета, который можно добавить к вашему устройству. В принципе, виджеты, это как мини-версии ваших приложений: они конденсируются с определенными функциями, поэтому вы можете получить к ним доступ непосредственно с главного экрана.
Например, виджет на изображении позволяет управлять важными параметрами, такие как Wi-Fi и яркость экрана. У вас могут быть разные виджеты на устройстве, или их вообще может не быть — это зависит от марки и модели устройства.
5. Приложения
Иконки, которые вы видите на главном экране являются ярлыками приложений. Все что вам нужно чтобы открыть приложение, это нажать на нужное приложение и оно откроется.
Вы можете добавлять и изменять местоположения приложений по своему желанию.
6. Главный экран
Этот район дисплея является главным экраном. Там хранятся ярлыки всех ваших приложений, чтобы вы могли получить к ним доступ всего в одно касание.
При желании или необходимости, вы всегда можете создать несколько главных экранов, чтобы организовать и сгруппировать приложения. Чтобы перемещаться между экранами, проведите пальцем по экрану влево или вправо.
7. Избранные
Панель в нижней части экрана называется Избранные. Там есть ярлыки наиболее часто используемых приложений, таких как камера или веб-браузер по умолчанию, но вы всегда можете настроить его по вашему усмотрению.
8. Кнопки навигации
Каждое Андроид устройство имеет набор кнопок навигации. Обычно они являются частью программного обеспечения, но они также могут быть частью оборудования (т.е., встроенный в память устройства).
Две наиболее важные кнопки: Домой — возвращает к главному экрану и Назад. На новых устройствах имеется кнопка Недавние приложения. Эта функция позволяет перемещаться между открытыми приложениями, так же, как в примере ниже.
Основные приложения
Об основных приложениях мы обсудим в деталях в течении следующих нескольких уроков. А сейчас просто посмотрите на своем устройстве Основные встроенные приложения. Их названия могут немного различаться, в зависимости от телефона или планшета, но их иконки должны дать вам некоторое представление о приложении.
- Приложение со значком Телефон предназначен для совершения звонков.
- Сообщения для обмена текстовыми сообщениями, или Hangouts для обмена текстовыми сообщениями через Google плюс чат.
- Email для управления электронной почтой или Gmail, если у вас есть аккаунт Gmail.
- Контакты для создания и хранения контактов людей.
- Chrome для просмотра веб-страниц (можно также называть Интернет или Браузер).
- Камера для съемки фотографий и видео.
- Play Store или Play Маркет для загрузки приложений.
- Настройки для настройки параметров.
Некоторые из этих приложений могут быть уже установлены на главном экране. Если нет, можете посмотреть все ваши приложения, нажав на кнопку просмотра приложений в нижней части главного экрана.
Основные жесты
Это жесты, которые вы будете использовать для взаимодействия с сенсорным экраном устройства. Это аналогично тому, как вы нажимаете что-то на экране монитора мышкой. А на устройстве вы просто коснетесь экрана пальцем.
- Нажмите (коснитесь), чтобы запустить приложение или выбрать кукую-то опцию.
- Нажмите (коснитесь) и удерживайте, чтобы получить доступ к другим возможностям (это как «правая кнопка мыши»)
- Перетащите для прокрутки вверх и вниз, влево и вправо, или в любое другое направлении на экране
- Проведите пальцем влево или вправо, чтобы «пролистать» страницы на главном экране, фотографии или страницы в электронной книге
- Дважды нажмите, чтобы увеличить или уменьшить масштаб в определенных приложениях, таких как карты или Chrome.
- Нажмите и удерживайте на пустом месте, чтобы увеличить или уменьшить масштаб практически в любом месте.
Доступ в Интернет
Устройство может подключаться к Интернету практически в любом месте, будь то мобильная передача данных (3G / 4G или LTE) или поблизости от Wi-Fi. Так в чем их различие? Большинство сотовых тарифных планов даст вам только определенное количество мегабайтов в месяц, а с Wi-Fi, вы можете пользоваться интернетом безлимитно.
Для подключения к Wi-Fi (опционально):
Есть вы находитесь в зоне сети Wi-Fi (например, дома или на работе), вы можете легко подключиться к нему, используя приведенные ниже шаги. К сети Wi-Fi нужно подключиться только один раз. В следующий раз когда вы будете в этой зоне, вы будете подключены к сети автоматически, если включите функцию Wi-Fi на устройстве.
- Чтобы включить Wi-Fi проведите пальцем вниз от верхней части экрана. Ваше изображение может отличаться от нашего в зависимости от марки устройства и версии андроид.
- Нажмите на значок настройки в правом верхнем углу.
- Затем найдите функцию Wi-Fi и нажмите на нее.
- Сдвиньте переключатель на вкл,чтобы включить Wi-Fi. Откроется список всех доступных сетей.
- Чтобы присоединиться к сети, просто нажмите на ту, которая вам нужна. Если сеть защищена, вам необходимо ввести пароль для подключения к ней.
- Когда вы закончите, ваше устройство запомнит подробности сети (в том числе пароль, если есть). Это означает что ваше устройство автоматически будет подключаться к сети всякий раз когда вы будете в зоне этой сети. Если вы когда-нибудь захотите изменить эти настройки, нажмите и удерживайте имя сети, а затем выберите изменить.
Если сеть, к которому вы подключаетесь не защищена паролем, то вы можете получить к нему доступ без пароля.
Советы по использовании клавиатуры
Вы уже, наверняка, пользовались виртуальной клавиатурой на устройстве. Он автоматически открываться, когда вы пишете письмо, ищете информацию в Интернете, или заполняете какую-нибудь форму.
Эта клавиатура меньше, чем традиционная клавиатура, но имеет очень удобные ярлыки для быстрого набора текста как символы, цифры и заглавные буквы. Чтобы получить доступ к функциям клавиатуры, вы просто должны знать где их искать.
На изображении ниже отмечены элементы клавиатуры. Описание этих элементов вы можете прочитать под изображением.
1. Курсор
Курсор указывает на место, где появится текст.
2. Предложения
На некоторых клавиатурах свои предложения или исправления ошибок в правописании при вводе. Чтобы выбрать один из вариантов, просто нажмите на тот, который вам нужен.
3. Ввод теста по голосу диктовки
Эта удобная функция позволяет вводить текст без использования клавиатуры. Просто нажмите микрофон (либо на клавиатуре или в текстовом поле), и вы можете продиктовать то, что хотите напечатать.
4. Основные клавиши
Основная часть клавиатуры включает в себя буквенные клавиши, клавиши пробела, а иногда и некоторые основные знаки препинания. Используйте эти кнопки, чтобы напечатать текст.
5. Клавиша Shift
Нажмите клавишу Shift, чтобы включить заглавные буквы. На большинстве устройств, двойной щелчок включает Caps Lock.
6. Удаление
Нажмите клавишу Х, чтобы удалить предыдущий символ. Чтобы удалить целые слова или фразы, нажмите и удерживайте клавишу.
7. Цифры и специальные символы
Нажмите, чтобы перейти к цифрам и специальным символам.
Если вы не нашли тот символ который ищете, нажмите на = \
Источник
Как работает 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, о нескольких его предшественниках и о базовых механизмах обеспечения безопасности.
Источник