- Специальные возможности
- Использовать стало ещё удобнее
- Разработка с учетом специальных возможностей
- Новый способ общения
- Новый способ общения
- Специальные возможности при воспроизведении медиаконтента
- Специальные возможности при воспроизведении медиаконтента
- Фильтрация шумов и усиление нужных звуков
- Фильтрация шумов и усиление нужных звуков
- Специальные возможности
- Функции, позволяющие распознать каждое слово
- Прямая расшифровка
- Пользуйтесь расшифровкой разговоров в режиме реального времени
- Больше вариантов. Больше возможностей.
- Создание открытой мобильной платформы
- Снижение цен на устройства
- Ожидаемое снижение средней цены смартфонов по всему миру
- Развитие конкуренции и укрепление мобильной экосистемы
- Как работает Android, часть 1
- Немного фактов
- Android is Linux
- It’s all about apps
- Binder
Специальные возможности
Использовать стало ещё удобнее
Разработка с учетом специальных возможностей
Создавая любой продукт, мы с самого начала придаем большое значение специальным возможностям. Наши команды выясняют, как используются устройства, какие препятствия при этом могут возникнуть и как устроена повседневная жизнь людей с ограниченными возможностями. В итоге у нас получается не просто новое приложение или устройство. Используя инклюзивный подход, мы стремимся создать возможности для познания мира, которые будут доступны всем.
Новый способ общения
Новый способ общения
Благодаря приложению «Прямая расшифровка» у глухих и слабослышащих пользователей появилась возможность по-новому общаться с людьми без нарушений слуха.
Специальные возможности при воспроизведении медиаконтента
Специальные возможности при воспроизведении медиаконтента
В 2009 году мы добавили для видеороликов на YouTube новую функцию – автоматические титры. Теперь мы подумали: что если сделать ее доступной для контента за пределами YouTube?
Фильтрация шумов и усиление нужных звуков
Фильтрация шумов и усиление нужных звуков
Как технологии Android помогают людям лучше слышать.
Специальные возможности
Все используют устройства по-разному. Вот почему мы берем передовые технологии и спрашиваем себя: «Как это поможет реальному человеку решить ту или иную проблему?» Так мы создаем инструменты, которые позволяют людям узнавать больше об окружающем мире, и сервисы, упрощающие общение благодаря мгновенному преобразованию речи в текст. Мы не просто изучаем потребности пользователей, но и разрабатываем решения, которые помогают сделать жизнь немного лучше.
Функции, позволяющие распознать каждое слово
Прямая расшифровка
Пользуйтесь расшифровкой разговоров в режиме реального времени
Речь собеседников преобразуется в текст на экране прямо во время разговора. Приложение «Прямая расшифровка» умеет правильно распознавать слова даже в сложных случаях. Больше не нужно отвлекаться, чтобы понять, что произнес собеседник: «йоркширский терьер» или «нью-йоркский интерьер».
Прямая расшифровка позволяет сразу видеть на экране устройства то, что сказано вслух.
Источник
Больше вариантов.
Больше возможностей.
Android – операционная система с открытым исходным кодом, поэтому любой может бесплатно скачать ее, изменить и опубликовать свою версию. Даже конкуренты Android могут использовать эту операционную систему в своих целях. Мы сделали эту ОС открытой, чтобы мобильные технологии стали доступны большему числу людей.
Создание открытой мобильной платформы
К 2020 году смартфоны будут у 70% населения Земли
Поделиться
Вы помните, сколько людей могли похвастаться смартфонами в 2006 году? Сейчас в это трудно поверить, но тогда эти устройства были лишь у 1% населения Земли Business Insider, IDC — One In Every 5 People In The World Own A Smartphone, One In Every 17 Own A Tablet — December 2013 .
Первые смартфоны поражали своими возможностями, но дорого стоили. У производителей было всего два пути: купить лицензию на операционную систему либо потратить время и деньги на разработку собственной ОС. При этом большинство операционных систем были закрыты для сторонних компаний. Проще говоря, далеко не все могли позволить себе производство смартфонов.
Однако в 2007 году Google совместно с другими компаниями основала организацию Open Handset Alliance и разработала открытую операционную систему, которая получила название Android. Как и сейчас, любой мог бесплатно скачать ее код, изменить его и использовать для создания приложений, устройств и даже собственной ОС.
Преимущества Android сразу же стали очевидны. Производители устройств начали создавать уникальные телефоны и планшеты на базе нашей бесплатной ОС, а разработчики стали распространять приложения для Android по всему миру.
Благодаря Android мы на 30% уменьшили затраты на разработку и сократили ее цикл на 25%.
Так как производителям устройств не нужно было платить за лицензию или разработку своей ОС, они смогли сократить затраты на производство телефонов. Это привело к тому, что в период с 2011 по 2013 год средняя цена на смартфоны во всем мире упала на 25% BCG — The Growth of the Global Mobile Internet Economy (PDF) — February 2015 (page 7) . Она продолжает снижаться до сих пор, и постепенно смартфоны становятся доступными для всех.
Gigaset – немецкий производитель аппаратного обеспечения. В сентябре 2015 года компания выпустила свой первый смартфон на базе Android и сократила производственные затраты на 30%.
Снижение цен на устройства
За счет того, что Android распространяется бесплатно и находится в открытом доступе, в мире появляется все больше недорогих устройств. По данным 2015 года, устройства Android стоят в среднем 208 долларов, тогда как средняя цена телефона на базе закрытой платформы составляет 651 доллар KPCB — Internet Trends — June 2016 (Page 12) . В Индии и Африке компании при поддержке Google продают смартфоны высокого качества по цене ниже 100 долларов. А в Нигерии телефон Fero i401 стоит уже меньше 60 долларов Smartphonetobuy.com — Cheap Android Phones Under 15000 Naira In Nigeria .
Во многих развивающихся странах (например, на Филиппинах) местные производители устройств выпускают смартфоны Android стоимостью до 50 долларов США Tech in Asia — Smartphone Adoption in the Philippines — April 2014 .
Благодаря недорогим смартфонам у жителей развивающихся стран появляется доступ в Интернет. Они начинают публиковать видео, получать образование и создавать собственные компании онлайн. Новые возможности повышают качество их жизни.
Это объясняет, почему большая часть смартфонов в Индии Statista — Market share held by mobile operating systems in India from January 2012 to July 2015 — 2016 и Африке
Мы хотим, чтобы доступ в Сеть был у каждого человека. Люди, которые желают записаться на онлайн-курсы или начать свой бизнес в Интернете, есть в любой стране. И пока в мире появляются недорогие смартфоны, эта возможность есть у всех.
В таких странах, как Нигерия, Индонезия и Филиппины, компании при поддержке Google продают смартфоны высокого качества по цене ниже 100 долларов GSMA — Global Mobile Economy Report — 2015 (page 15) .
На Земле живут 7 млрд человек, и у большинства из них нет компьютеров, чтобы выходить в Сеть. Но благодаря Android в мире появляются недорогие смартфоны, и мобильный Интернет становится более доступным.
Средняя цена смартфона на базе ОС с закрытым исходным кодом KPCB — Internet Trends 2016 — June 2016 (Page 12)
Средняя цена смартфона на базе Android – ОС с открытым исходным кодом KPCB — Internet Trends 2016 — June 2016 (Page 12)
Ожидаемое снижение средней цены смартфонов по всему миру
Развитие конкуренции и укрепление мобильной экосистемы
В основе мобильной экосистемы лежат два компонента: конкуренция и инновации. Так как исходный код Android находится в открытом доступе, любой желающий может использовать его для создания собственного ПО, которое будет конкурировать с нашим. При этом не нужно ничего платить или заключать соглашения с Google.
Яркий пример – Fire OS. Она была разработана на платформе Android, и компании Amazon не пришлось платить за лицензию или тратить деньги на создание собственной ОС. Другие компании могут точно так же использовать Android для своих целей.
Производителям устройств Android необязательно предустанавливать приложения Google. Даже если кто-то решает установить их вместе с приложениями других компаний, последние извлекают из нашей платформы только выгоду. В таких странах, как Индия, приложение WhatsApp минимум раз в месяц используют 98% респондентов, а Google Hangouts – только 32% Ericsson ConsumerLab — Communication in the world of apps — June 2015 . У WhatsApp насчитывается более 1 млрд пользователей, и из них 730 млн – это владельцы Android VentureBeat — Three-quarters of WhatsApp users are on Android, 22%% on iOS (study) — August 2015 .
Производителям устройств Android необязательно предустанавливать приложения Google.
Даже Play Маркет предустановлен не на всех устройствах Android. И это неудивительно, ведь Android – единственная мобильная ОС, у которой есть несколько международных и региональных магазинов приложений, включая магазины Samsung, Lenovo, Orange и Telecom Italia Business of Apps — The Ultimate App Store List . Для сравнения: у закрытых платформ обычно есть только один магазин – их собственный.
Android помогла разработать и распространить приложение Lazzus, которое позволяет слабовидящим людям лучше ориентироваться в пространстве.
Поскольку все больше жителей развивающихся стран могут покупать устройства Android, приложения тоже должны становиться доступнее. В 2015 году мы понизили минимальную цену на приложения в Google Play (раньше она составляла 0,99 доллара). Теперь разработчики могут продавать свои приложения в странах, для которых прежняя минимальная цена была слишком высокой.
Таким образом Android создает условия для здоровой конкуренции. Благодаря этой платформе появляется все больше устройств и приложений для людей с самыми разными потребностями – от охотников за высокотехнологичными гаджетами до новичков в мире Интернета.
Источник
Как работает 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, о нескольких его предшественниках и о базовых механизмах обеспечения безопасности.
Источник