![Android 4.4 на телефоне и планшете](https://developer.android.com/static/images/kk-devices.png?authuser=9&hl=ru)
Добро пожаловать в Android 4.4 KitKat!
Android KitKat обеспечивает все самые инновационные, красивые и полезные функции Android на большем количестве устройств по всему миру.
Этот документ дает представление о том, что нового для разработчиков.
Узнайте больше о KitKat для потребителей на сайте www.android.com .
Делаем Android для всех
Android 4.4 разработан для быстрой, плавной и оперативной работы на гораздо более широком спектре устройств, чем когда-либо прежде, в том числе на миллионах устройств начального уровня по всему миру, имеющих всего 512 МБ оперативной памяти .
KitKat оптимизирует каждый основной компонент для сокращения использования памяти и представляет новые API и инструменты, которые помогут вам создавать инновационные, быстро реагирующие и эффективно использующие память приложения.
OEM-производители, создающие устройства Android следующего поколения, могут воспользоваться целевыми рекомендациями и опциями для эффективной работы Android 4.4 даже на устройствах с низким объемом памяти. Настройка кэша кода Dalvik JIT, объединение страниц ядра (KSM), переход на zRAM и другие оптимизации помогают управлять памятью. Новые параметры конфигурации позволяют OEM-производителям настраивать уровни нехватки памяти для процессов, устанавливать размеры графического кэша, управлять освобождением памяти и многое другое.
В самом Android изменения в системе улучшают управление памятью и уменьшают объем памяти. Основные системные процессы урезаны, чтобы использовать меньше кучи , и теперь они более агрессивно защищают системную память от приложений, потребляющих большие объемы оперативной памяти. При одновременном запуске нескольких служб (например, при изменении сетевого подключения) Android теперь запускает службы последовательно , небольшими группами, чтобы избежать пиковой нагрузки на память.
Android 4.4 помогает разработчикам создавать эффективные и отзывчивые приложения на всех устройствах. Новый API ActivityManager.isLowRamDevice() позволяет настроить поведение вашего приложения в соответствии с конфигурацией памяти устройства. При необходимости вы можете изменить или отключить функции большого объема памяти в зависимости от вариантов использования, которые вы хотите поддерживать на устройствах начального уровня. Узнайте больше об оптимизации приложений для устройств с низким объемом памяти здесь .
Новые инструменты также дают вам ценную информацию об использовании памяти вашим приложением. Инструмент procstats детализирует использование памяти с течением времени, включая время выполнения и объем памяти для приложений переднего плана и фоновых служб. Просмотр на устройстве также доступен в качестве новой опции для разработчиков. Инструмент meminfo усовершенствован, чтобы упростить выявление тенденций и проблем с памятью, а также выявляет дополнительные затраты памяти, которые ранее не были видны.
Новые возможности NFC благодаря эмуляции хост-карты
В Android 4.4 реализована поддержка новой платформы для безопасных транзакций на основе NFC посредством эмуляции карты хоста (HCE) для платежей, программ лояльности, доступа к картам, транзитных пропусков и других пользовательских услуг. Благодаря HCE любое приложение на устройстве Android может эмулировать смарт-карту NFC, позволяя пользователям инициировать транзакции с помощью приложения по своему выбору одним касанием — никакой подготовленный элемент безопасности (SE) на устройстве не требуется. Приложения также могут использовать новый режим чтения , чтобы действовать как считыватели карт HCE и других транзакций на основе NFC.
![Бесконтактный символ](https://developer.android.com/static/images/kk-contactless-card.png?authuser=9&hl=ru)
Android HCE эмулирует смарт-карты на основе ISO/IEC 7816, которые используют для передачи бесконтактный протокол ISO/IEC 14443-4 (ISO-DEP). Эти карты сегодня используются многими системами, включая существующую платежную инфраструктуру EMVCO NFC. Android использует идентификаторы приложений (AID), определенные в стандарте ISO/IEC 7816-4, в качестве основы для маршрутизации транзакций в правильные приложения Android.
Приложения объявляют поддерживаемые ими AID в своих файлах манифеста вместе с идентификатором категории, указывающим тип доступной поддержки (например, «платежи»). В тех случаях, когда несколько приложений поддерживают один и тот же AID в одной и той же категории, Android отображает диалоговое окно, которое позволяет пользователю выбрать, какое приложение использовать.
Когда пользователь нажимает кнопку оплаты на терминале в торговой точке, система извлекает предпочтительный AID и направляет транзакцию в нужное приложение. Приложение считывает данные транзакции и может использовать любые локальные или сетевые службы для проверки и последующего завершения транзакции.
Android HCE требует наличия на устройстве контроллера NFC. Поддержка HCE уже широко доступна на большинстве контроллеров NFC, которые предлагают динамическую поддержку транзакций HCE и SE. Устройства Android 4.4 , поддерживающие NFC, будут оснащены функцией Tap & Pay для удобной оплаты с помощью HCE.
Рамка для печати
Приложения Android теперь могут печатать любой тип контента через Wi-Fi или облачные сервисы, такие как Google Cloud Print. В приложениях с поддержкой печати пользователи могут находить доступные принтеры, изменять размеры бумаги, выбирать определенные страницы для печати и печатать практически любые документы, изображения или файлы.
В Android 4.4 реализована встроенная поддержка платформы для печати, а также API-интерфейсы для управления печатью и добавления новых типов поддержки принтеров. Платформа предоставляет диспетчер печати, который является посредником между приложениями, запрашивающими печать, и установленными службами печати, которые обрабатывают запросы на печать. Диспетчер печати предоставляет общие службы и системный пользовательский интерфейс для печати, предоставляя пользователям постоянный контроль над печатью из любого приложения. Диспетчер печати также обеспечивает безопасность контента при его передаче между процессами, от приложения к службе печати.
![Мобильный телефон в альбомной ориентации, показывающий функции поддержки принтера](https://developer.android.com/static/images/kk-print-land-n5.jpg?authuser=9&hl=ru)
Вы можете добавить поддержку печати в свои приложения или разработать службы печати для поддержки определенных типов принтеров.
Производители принтеров могут использовать новые API-интерфейсы для разработки собственных служб печати — подключаемых компонентов, которые добавляют специфичную для поставщика логику и службы для взаимодействия с конкретными типами принтеров. Они могут создавать сервисы печати и распространять их через Google Play, что упрощает пользователям поиск и установку их на свои устройства. Как и в случае с другими приложениями, вы можете обновлять службы печати по беспроводной сети в любое время.
Клиентские приложения могут использовать новые API для добавления возможностей печати в свои приложения с минимальными изменениями кода. В большинстве случаев вы добавляете действие печати на панель действий и пользовательский интерфейс для выбора элементов для печати. Вы также можете реализовать API для создания заданий на печать, запроса статуса у диспетчера печати и отмены заданий. Это позволяет печатать практически любой тип контента: от локальных изображений и документов до сетевых данных или изображений, отображаемых на холсте.
Для обеспечения максимальной совместимости Android использует PDF в качестве основного формата файлов для печати. Перед печатью вашему приложению необходимо создать правильно разбитую на страницы PDF-версию вашего контента. Для удобства API печати предоставляет собственные вспомогательные классы и классы WebView, позволяющие создавать PDF-файлы с использованием стандартных API рисования Android. Если ваше приложение умеет рисовать контент, оно может быстро создать PDF-файл для печати.
Большинство устройств под управлением Android 4.4 будут включать в себя предустановленный Google Cloud Print в качестве службы печати, а также несколько приложений Google, поддерживающих печать, включая Chrome, Drive, Gallery и QuickOffice.
Платформа доступа к хранилищу
Новая платформа доступа к хранилищу позволяет пользователям легко просматривать и открывать документы, изображения и другие файлы у всех предпочитаемых ими поставщиков хранилищ документов. Стандартный, простой в использовании пользовательский интерфейс позволяет пользователям единообразно просматривать файлы и получать доступ к последним данным в разных приложениях и поставщиках.
![Мобильная версия: открытая боковая панель в новой системе доступа к хранилищу](https://developer.android.com/static/images/kk-saf2-n5.jpg?authuser=9&hl=ru)
![Мобильная демонстрация интегрированных сервисов Box в новой системе доступа к хранилищу](https://developer.android.com/static/images/kk-saf1-n5.jpg?authuser=9&hl=ru)
Box и другие компании интегрировали свои сервисы в систему доступа к хранилищу, предоставляя пользователям легкий доступ к своим документам из приложений по всей системе.
Облачные или локальные службы хранения могут участвовать в этой экосистеме, реализуя новый класс поставщика документов, который инкапсулирует их услуги. Класс поставщика включает в себя все API, необходимые для регистрации поставщика в системе и управления просмотром, чтением и записью документов в поставщике. Поставщик документов может предоставить пользователям доступ к любым удаленным или локальным данным, которые могут быть представлены в виде файлов — от текста, фотографий и обоев до видео, аудио и многого другого.
Если вы создаете поставщика документов для облачной или локальной службы, вы можете доставлять его пользователям как часть существующего приложения для Android. После загрузки и установки приложения пользователи получат мгновенный доступ к вашему сервису из любого приложения, участвующего в платформе. Это может помочь вам привлечь внимание и привлечь пользователей, поскольку пользователям будет легче найти ваши услуги.
Если вы разрабатываете клиентское приложение , которое управляет файлами или документами, вы можете интегрироваться с платформой доступа к хранилищу, просто используя новые намерения CREATE_DOCUMENT или OPEN_DOCUMENT для открытия или создания файлов — система автоматически отображает стандартный пользовательский интерфейс для просмотра документов, включая всех доступных поставщиков документов. .
Вы можете единоразово интегрировать свое клиентское приложение для всех поставщиков без какого-либо кода для конкретного поставщика. Когда пользователи добавляют или удаляют поставщиков, они по-прежнему будут иметь доступ к предпочитаемым ими сервисам из вашего приложения без внесения изменений или обновлений в ваш код.
Платформа доступа к хранилищу интегрирована с существующим намерением GET_CONTENT , поэтому пользователи также имеют доступ ко всему своему предыдущему контенту и источникам данных из нового системного пользовательского интерфейса для просмотра. Приложения могут продолжать использовать GET_CONTENT как способ импорта данных пользователями. Платформа доступа к хранилищу и системный пользовательский интерфейс для просмотра упрощают пользователям поиск и импорт данных из более широкого круга источников.
Большинство устройств под управлением Android 4.4 будут включать в себя Google Диск и локальное хранилище, предварительно интегрированное в качестве поставщиков документов, а приложения Google, работающие с файлами, также используют новую платформу.
Датчики малой мощности
Дозирование датчиков
В Android 4.4 реализована поддержка платформы для аппаратного пакетирования датчиков — новая оптимизация, которая может значительно снизить энергопотребление при текущих действиях датчиков.
Благодаря пакетной обработке датчиков Android работает с аппаратным обеспечением устройства, эффективно собирая и доставляя события датчиков в пакетном режиме, а не индивидуально по мере их обнаружения. Это позволяет процессору приложений устройства оставаться в состоянии ожидания с низким энергопотреблением до тех пор, пока пакеты не будут доставлены. Вы можете запросить пакетные события от любого датчика, используя стандартный прослушиватель событий, и можете контролировать интервал получения пакетов. Вы также можете запросить немедленную доставку событий между пакетными циклами.
Пакетная обработка датчиков идеально подходит для маломощных и длительных задач, таких как фитнес, отслеживание местоположения, мониторинг и т. д. Это может сделать ваше приложение более эффективным и позволит непрерывно отслеживать события датчиков — даже когда экран выключен и система находится в спящем режиме.
Пакетная обработка датчиков в настоящее время доступна на Nexus 5, и мы работаем с нашими партнерами по набору микросхем, чтобы как можно скорее внедрить ее на большее количество устройств.
![Мобильная версия, демонстрирующая поддержку нового детектора шагов](https://developer.android.com/static/images/kk-sensors-moves-n5.jpg?authuser=9&hl=ru)
![Мобильная версия, демонстрирующая поддержку нового счетчика шагов](https://developer.android.com/static/images/kk-sensors-runtastic-n5.jpg?authuser=9&hl=ru)
Moves и Runtastic Pedometer используют аппаратный детектор шагов, чтобы предлагать долгосрочные услуги с низким энергопотреблением.
Детектор шагов и счетчик шагов
В Android 4.4 также добавлена поддержка платформы для двух новых составных датчиков — детектора шагов и счетчика шагов — которые позволяют вашему приложению отслеживать шаги, когда пользователь идет, бегает или поднимается по лестнице. Эти новые датчики реализованы аппаратно для обеспечения низкого энергопотребления.
Детектор шагов анализирует входные данные акселерометра, чтобы распознать, когда пользователь сделал шаг, а затем запускает событие при каждом шаге. Счетчик шагов отслеживает общее количество шагов с момента последней перезагрузки устройства и запускает событие при каждом изменении количества шагов. Поскольку логика и управление датчиками встроены в платформу и базовое оборудование, вам не нужно поддерживать в приложении собственные алгоритмы обнаружения.
Детектор шагов и датчики счетчика доступны на Nexus 5, и мы работаем с нашими партнерами по чипсетам, чтобы как можно скорее перенести их на новые устройства.
СМС-провайдер
Если вы разрабатываете приложение для обмена сообщениями, использующее SMS или MMS, теперь вы можете использовать общего поставщика SMS и новые API для управления хранением и получением сообщений вашего приложения. Новый поставщик SMS и API определяют стандартизированную модель взаимодействия для всех приложений, обрабатывающих сообщения SMS или MMS.
Наряду с новым поставщиком и API в Android 4.4 представлена новая семантика получения сообщений и записи поставщику. Когда сообщение получено, система направляет его непосредственно в приложение обмена сообщениями пользователя по умолчанию, используя новое намерение SMS_DELIVER . Другие приложения по-прежнему могут прослушивать входящие сообщения, используя намерение SMS_RECEIVED . Кроме того, система теперь позволяет только приложению по умолчанию записывать данные сообщения провайдеру, хотя другие приложения могут читать их в любое время. Приложения, которые не являются пользовательскими по умолчанию, все равно могут отправлять сообщения — система обрабатывает запись этих сообщений поставщику от имени приложения, чтобы пользователи могли видеть их в приложении по умолчанию.
Новый поставщик и семантика помогают улучшить взаимодействие с пользователем при установке нескольких приложений для обмена сообщениями, а также помогают создавать новые функции обмена сообщениями с помощью полностью поддерживаемых совместимых API-интерфейсов.
Новые способы создания красивых приложений
![Мобильный телефон с новой функцией режима погружения](https://developer.android.com/static/images/kk-immersive-n5.jpg?authuser=9&hl=ru)
Новый режим погружения позволяет приложениям использовать каждый пиксель экрана для отображения контента и регистрации событий касания.
Полноэкранный режим погружения
Теперь ваши приложения могут использовать каждый пиксель на экране устройства для демонстрации вашего контента и регистрации событий касания. В Android 4.4 добавлен новый полноэкранный режим погружения, который позволяет создавать полноценные пользовательские интерфейсы, простирающиеся от края до края на телефонах и планшетах, скрывая весь системный интерфейс, например строку состояния и панель навигации. Он идеально подходит для насыщенного визуального контента, такого как фотографии, видео, карты, книги и игры.
В новом режиме системный пользовательский интерфейс остается скрытым, даже когда пользователи взаимодействуют с вашим приложением или игрой — вы можете фиксировать события касания в любом месте экрана, даже в тех областях, которые в противном случае были бы заняты системными панелями. Это дает вам отличный способ создать более крупный, насыщенный и захватывающий пользовательский интерфейс в вашем приложении или игре, а также уменьшить визуальное отвлечение.
Чтобы пользователи всегда имели простой и последовательный доступ к системному пользовательскому интерфейсу из полноэкранного режима погружения, Android 4.4 поддерживает новый жест — в режиме погружения смахивание по краю сверху или снизу экрана теперь открывает системный интерфейс.
Чтобы вернуться в режим погружения, пользователи могут коснуться экрана за пределами границ панели или подождать некоторое время, пока панели автоматически скроются. Для обеспечения единообразия взаимодействия с пользователем новый жест также работает с предыдущими методами скрытия строки состояния.
Фреймворк переходов для анимации сцен
Большинство приложений структурируют свои потоки вокруг нескольких ключевых состояний пользовательского интерфейса, которые предоставляют различные действия. Многие приложения также используют анимацию, чтобы помочь пользователям понять, как они продвигаются в этих состояниях, а также действия, доступные в каждом из них. Чтобы упростить создание высококачественной анимации в вашем приложении, в Android 4.4 представлена новая структура переходов.
Платформа переходов позволяет определять сцены , обычно просматривать иерархии, и переходы, которые описывают, как анимировать или трансформировать сцены, когда пользователь входит в них или выходит из них. Вы можете использовать несколько предопределенных типов перехода для анимации сцен на основе определенных свойств, таких как границы макета или видимость. Существует также тип автоматического перехода, который автоматически затухает, перемещает и изменяет размеры изображений во время смены сцены. Кроме того, вы можете определить пользовательские переходы, которые анимируют свойства, наиболее важные для вашего приложения, и при необходимости подключить свои собственные стили анимации.
С помощью структуры переходов вы также можете анимировать изменения в своем пользовательском интерфейсе на лету , без необходимости определять сцены. Например, вы можете внести ряд изменений в иерархию представлений, а затем TransitionManager автоматически запустит отложенный переход для этих изменений.
После того как вы настроили переходы, их легко вызвать из вашего приложения. Например, вы можете вызвать один метод, чтобы начать переход, внести различные изменения в иерархию представлений, и в следующем кадре автоматически начнется анимация, которая анимирует указанные вами изменения.
![полупрозрачный системный интерфейс](https://developer.android.com/static/images/kk-home.jpg?authuser=9&hl=ru)
Приложения могут использовать новые стили окон для запроса полупрозрачных системных панелей.
Для индивидуального управления переходами между определенными сценами в потоке вашего приложения вы можете использовать TransitionManager. TransitionManager позволяет вам определить взаимосвязь между сценами и переходами, которые выполняются при определенных изменениях сцены.
Прозрачный стиль пользовательского интерфейса системы
Чтобы получить максимальную отдачу от вашего контента, теперь вы можете использовать новые стили и темы окон для запроса полупрозрачного системного пользовательского интерфейса , включая строку состояния и панель навигации. Чтобы обеспечить читаемость кнопок панели навигации или информации в строке состояния, за системными панелями отображаются тонкие градиенты. Типичным примером использования является приложение, которое должно отображаться на обоях.
Расширенный доступ к уведомлениям
Службы прослушивания уведомлений теперь могут видеть дополнительную информацию о входящих уведомлениях , созданных с помощью API-интерфейсов построителя уведомлений. Службы прослушивания могут получить доступ к действиям уведомления, а также к новым дополнительным полям — тексту, значку, изображению, прогрессу, хронометру и многим другим — для извлечения более четкой информации об уведомлении и представления информации другим способом.
Веб-представление Chrome
Android 4.4 включает совершенно новую реализацию WebView, основанную на Chromium . Новый Chromium WebView предоставляет вам новейшую поддержку стандартов, производительность и совместимость для создания и отображения вашего веб-контента.
Chromium WebView обеспечивает широкую поддержку HTML5, CSS3 и JavaScript. Он поддерживает большинство функций HTML5, доступных в Chrome для Android 30. Он также содержит обновленную версию движка JavaScript (V8), которая обеспечивает значительно улучшенную производительность JavaScript.
Кроме того, новый Chromium WebView поддерживает удаленную отладку с помощью Chrome DevTools . Например, вы можете использовать Chrome DevTools на своей машине разработки для проверки, отладки и анализа содержимого WebView в реальном времени на мобильном устройстве.
Новый Chromium WebView включен на все совместимые устройства под управлением Android 4.4 и выше. Вы можете сразу же воспользоваться преимуществами нового WebView с минимальными изменениями в существующих приложениях и контенте. В большинстве случаев ваш контент будет легко перенесен на новую реализацию.
Новые медиа-возможности
Запись экрана
Теперь создать высококачественное видео вашего приложения можно легко прямо с вашего Android-устройства. В Android 4.4 добавлена поддержка записи экрана и имеется утилита записи экрана , которая позволяет запускать и останавливать запись на устройстве, подключенном к среде Android SDK через USB. Это отличный новый способ создания пошаговых руководств и руководств для вашего приложения, материалов для тестирования, маркетинговых видеороликов и многого другого.
С помощью утилиты записи экрана вы можете записывать на видео содержимое экрана вашего устройства и сохранять видео в виде файла MP4 на устройстве. Вы можете записывать с любым разрешением и битрейтом, поддерживаемым устройством, при этом на выходе сохраняется соотношение сторон дисплея. По умолчанию утилита выбирает разрешение, равное или близкое к разрешению дисплея устройства в текущей ориентации. Когда вы закончите запись, вы можете поделиться видео прямо со своего устройства или перетащить файл MP4 на свой главный компьютер для постобработки.
Если ваше приложение воспроизводит видео или другой защищенный контент, который вы не хотите захватывать устройством записи экрана, вы можете использовать SurfaceView.setSecure(), чтобы пометить контент как безопасный.
Вы можете получить доступ к записи экрана с помощью инструмента adb, включенного в Android SDK, используя команду adbshell screenrecord . Вы также можете запустить его через logcat в Android Studio.
Переключение разрешения посредством адаптивного воспроизведения
Android 4.4 обеспечивает официальную поддержку адаптивного воспроизведения в медиа-инфраструктуре Android. Адаптивное воспроизведение — это дополнительная функция видеодекодеров MPEG-DASH и других форматов, которая обеспечивает плавное изменение разрешения во время воспроизведения . Клиент может начать подавать на вход декодера видеокадры нового разрешения, а разрешение выходных буферов изменится автоматически и без существенного разрыва.
Переключение разрешения в Android 4.4 позволяет мультимедийным приложениям значительно улучшить качество потокового видео. Приложения могут проверять поддержку адаптивного воспроизведения во время выполнения с помощью существующих API и реализовывать переключение разрешения с помощью новых API, представленных в Android 4.4 .
Общее шифрование для DASH
Android теперь поддерживает Common Encryption (CENC) для MPEG-DASH, предоставляя стандартную многоплатформенную схему DRM для управления защитой контента. Приложения могут использовать преимущества CENC через модульную структуру DRM Android и API-интерфейсы платформы для поддержки DASH.
HTTP-трансляция в прямом эфире
В Android 4.4 поддержка HTTP Live Streaming (HLS) платформы обновляется до расширенной версии 7 спецификации HLS (версия 4 протокола). Подробности смотрите в проекте IETF .
Аудио туннелирование в DSP
Для высокопроизводительного воспроизведения звука с низким энергопотреблением в Android 4.4 добавлена поддержка платформы для туннелирования звука к процессору цифровых сигналов (DSP) в наборе микросхем устройства. При туннелировании декодирование звука и выходные эффекты передаются на DSP, что снижает частоту пробуждения процессора приложений и снижает расход заряда батареи.
Туннелирование звука может значительно увеличить срок службы батареи в таких случаях, как прослушивание музыки через гарнитуру с выключенным экраном. Например, благодаря туннелированию звука Nexus 5 обеспечивает общее время воспроизведения звука вне сети до 60 часов, что более чем на 50 % больше, чем при использовании нетуннелированного звука.
Медиа-приложения могут использовать преимущества туннелирования звука на поддерживаемых устройствах без необходимости изменения кода. Система применяет туннелирование для оптимизации воспроизведения звука, когда оно доступно на устройстве.
![Визуализатор, показывающий звуковой эффект усилителя громкости](https://developer.android.com/static/images/kk-loudnessEnhancerAnnotated.png?authuser=9&hl=ru)
Визуализация того, как эффект LoudnessEnhancer может сделать речевой контент более слышимым.
Для туннелирования аудио требуется поддержка аппаратного обеспечения устройства. В настоящее время туннелирование звука доступно на Nexus 5, и мы работаем с нашими партнерами по чипсетам, чтобы как можно скорее сделать его доступным на большем количестве устройств.
Аудио мониторинг
Приложения могут использовать новые инструменты мониторинга в эффекте визуализатора, чтобы получать обновления о пиковых и среднеквадратичных уровнях любого звука, воспроизводимого в данный момент на устройстве. Например, вы можете творчески использовать это в музыкальных визуализаторах или для реализации измерения воспроизведения в медиаплеере.
Усилитель громкости
Приложения для воспроизведения мультимедиа могут увеличивать громкость разговорного контента с помощью нового эффекта LoudnessEnhancer, который действует как компрессор с постоянными времени, специально настроенными для речи.
Временные метки аудио для улучшенной синхронизации AV
Аудио платформа теперь может сообщать приложениям временные метки презентации из аудиовыхода HAL для лучшей синхронизации аудио и видео. Временные метки аудио позволяют вашему приложению определять, когда конкретный аудиокадр будет (или был) представлен пользователю за пределами устройства; вы можете использовать информацию о временных метках для более точной синхронизации звука с видеокадрами.
СЕРТИФИЦИРОВАННЫЙ Wi-Fi Miracast™
Устройства Android 4.4 теперь могут быть сертифицированы в соответствии со спецификацией дисплея Wi-Fi Alliance Wi-Fi как совместимые с Miracast. Чтобы облегчить тестирование, новая опция разработчика Wireless Display предоставляет расширенные элементы управления конфигурацией и настройки для сертификации Wireless Display. Вы можете получить доступ к этой опции в «Настройки» > «Параметры разработчика» > «Сертификация беспроводного дисплея» . Nexus 5 – это беспроводное устройство отображения, сертифицированное Miracast.
Вычисление RenderScript
![Диаграмма оптимизации рендерскрипта](https://developer.android.com/static/images/kk-rs-chart-versions.png?authuser=9&hl=ru)
Тесты производительности Android 4.4 по сравнению с Android 4.3 проводились на тех же устройствах (Nexus 7, Nexus 10).
Постоянное улучшение производительности
Когда ваши приложения используют RenderScript, они получают выгоду от постоянной настройки производительности в самой среде выполнения RenderScript без необходимости перекомпиляции. На диаграмме справа показан прирост производительности Android 4.4 на двух популярных чипсетах.
ускорение графического процессора
Любое приложение, использующее RenderScript на поддерживаемом устройстве, получает преимущества от ускорения графического процессора без изменения кода или перекомпиляции. С тех пор, как Nexus 10 впервые представил ускорение графического процессора RenderScript, поддержку добавили и другие аппаратные партнеры.
Теперь с Android 4.4 ускорение с помощью графического процессора доступно на Nexus 5, а также на Nexus 4, Nexus 7 (2013 г.) и Nexus 10, и мы работаем с нашими партнерами, чтобы как можно скорее внедрить его на большее количество устройств.
RenderScript в Android NDK
Теперь вы можете воспользоваться преимуществами RenderScript прямо из собственного кода . Новый API C++ в Android Native Development Kit (NDK) позволяет получить доступ к тем же функциям RenderScript, которые доступны через API-интерфейсы платформы, включая встроенные функции сценариев, пользовательские ядра и многое другое.
Если у вас есть большие задачи, требующие высокой производительности, которые нужно обрабатывать в собственном коде, вы можете выполнить эти задачи с помощью RenderScript и интегрировать их со своим собственным кодом. RenderScript обеспечивает отличную производительность на широком спектре устройств с автоматической поддержкой многоядерных процессоров, графических процессоров и других процессоров.
Когда вы создаете приложение, использующее RenderScript, через NDK, вы можете распространять его на любое устройство под управлением Android 2.2 или более поздней версии, как и в случае с библиотекой поддержки RenderScript, доступной для API-интерфейсов платформы.
Графика
GLES2.0 ПоверхностьФлингер
Android 4.4 обновляет SurfaceFlinger с OpenGL ES 1.0 до OpenGL ES 2.0.
Новая поддержка Hardware Composer для виртуальных дисплеев.
Последняя версия Android Hardware Composer, HWComposer 1.3, поддерживает аппаратную композицию одного виртуального дисплея в дополнение к основному внешнему (например, HDMI) дисплею и имеет улучшенную совместимость OpenGL ES.
Новые типы подключения
Новые профили Bluetooth
Android 4.4 поддерживает два новых профиля Bluetooth, что позволяет приложениям поддерживать более широкий спектр взаимодействий с низким энергопотреблением и мультимедиа. Bluetooth HID over GATT (HOGP) обеспечивает приложениям связь с малой задержкой и маломощными периферийными устройствами, такими как мыши, джойстики и клавиатуры. Bluetooth MAP позволяет вашим приложениям обмениваться сообщениями с находящимся поблизости устройством, например автомобильным терминалом для использования без помощи рук или другим мобильным устройством. В качестве расширения Bluetooth AVRCP 1.3 пользователи теперь могут устанавливать абсолютную громкость в системе со своих устройств Bluetooth.
Поддержка платформ HOGP, MAP и AVRCP основана на стеке Bluedroid Bluetooth, представленном Google и Broadcom в Android 4.2. Поддержка доступна сразу на устройствах Nexus и других Android-совместимых устройствах, поддерживающих совместимые функции Bluetooth.
ИК-бластеры
В Android 4.4 реализована поддержка платформы для встроенных ИК-передатчиков , а также новый API и системный сервис, позволяющий создавать приложения, использующие их преимущества.
Используя новый API, вы можете создавать приложения, которые позволят пользователям удаленно управлять близлежащими телевизорами, тюнерами, переключателями и другими электронными устройствами. API позволяет вашему приложению проверять, есть ли в телефоне или планшете инфракрасный излучатель, запрашивать его несущие частоты, а затем отправлять инфракрасные сигналы.
Поскольку API является стандартным для устройств Android под управлением Android 4.4 или более поздней версии, ваше приложение может поддерживать максимально широкий круг поставщиков без написания специального кода интеграции.
Поддержка Wi-Fi TDLS
В Android 4.4 реализован удобный способ более быстрой потоковой передачи мультимедиа и других данных между устройствами, уже подключенными к одной сети Wi-Fi, благодаря поддержке настройки Wi-Fi Tunneled Direct Link (TDLS).
Доступность
Общесистемные настройки субтитров
Android 4.4 теперь поддерживает улучшенную доступность приложений за счет добавления общесистемных настроек для скрытых субтитров. Пользователи могут перейти в «Настройки» > «Специальные возможности» > «Подписи» , чтобы установить глобальные настройки субтитров, например, показывать ли субтитры и какой язык, размер и стиль текста использовать.
Приложения, использующие видео, теперь могут получить доступ к настройкам субтитров пользователя и настроить презентацию в соответствии с предпочтениями пользователя . Новый API-интерфейс менеджера субтитров позволяет проверять и отслеживать предпочтения пользователя в отношении субтитров. Менеджер субтитров предоставляет вам предпочитаемое пользователем состояние субтитров, а также предпочтительный языковой стандарт, коэффициент масштабирования и стиль текста. Стиль текста включает цвета переднего плана и фона, свойства краев и гарнитуру.
![Мобильная версия в альбомной ориентации с отображением подписей в общесистемных настройках подписей](https://developer.android.com/static/images/kk-captions-n5.jpg?authuser=9&hl=ru)
Приложения теперь могут ссылаться на общесистемные настройки титров пользователя. Пример ожидаемого стиля отображения показан прямо в настройках.
Кроме того, приложения, использующие VideoView, могут использовать новый API для передачи потока субтитров вместе с видеопотоком для рендеринга. Система автоматически обрабатывает отображение титров на видеокадрах в соответствии с общесистемными настройками пользователя. В настоящее время VideoView поддерживает автоматическое отображение титров только в формате WebVTT.
Все приложения, отображающие субтитры, должны обязательно проверять общесистемные настройки субтитров пользователя и отображать субтитры как можно ближе к этим предпочтениям. Чтобы получить более полное представление о том, как должны выглядеть конкретные комбинации настроек, вы можете просмотреть предварительный просмотр подписей на разных языках, в разных размерах и стилях прямо в приложении «Настройки».
API расширенной доступности
Android 4.4 расширяет API специальных возможностей для поддержки более точного структурного и семантического описания и наблюдения за элементами на экране. С помощью новых API-интерфейсов разработчики могут улучшить качество доступной обратной связи, предоставляя службам специальных возможностей дополнительную информацию об элементах на экране.
В узлах доступности разработчики теперь могут определить, является ли узел всплывающим окном, получить его тип ввода и многое другое. Вы также можете использовать новые API для работы с узлами, содержащими информацию в виде сетки, например списки и таблицы. Например, теперь вы можете указать новые поддерживаемые действия, информацию о сборе, режимы текущего региона и многое другое.
Новые события доступности позволяют разработчикам более внимательно следить за изменениями, происходящими в содержимом окна, и теперь они могут прослушивать изменения в режиме сенсорного исследования на устройстве.
Поддержка международных пользователей
Возможность рисования зеркального отображения для локалей RTL
Если ваше приложение ориентировано на пользователей, использующих сценарии RTL, вы можете использовать новый API, чтобы объявить, что объект рисования должен автоматически зеркально отображаться, если языковой стандарт пользователя включает язык RTL.
Объявление объекта Drawable как автоматически зеркалируемого помогает предотвратить дублирование ресурсов в вашем приложении и уменьшает размер APK. Если у вас есть объекты Drawable, которые можно повторно использовать как для презентаций LTR, так и для RTL, вы можете объявить версии по умолчанию как автоматически зеркалируемые, а затем исключить эти объекты Drawable из ресурсов RTL.
![](https://developer.android.com/static/images/kk-pseudolocale-rtl.png?authuser=9&hl=ru)
Опция макета Force RTL упрощает тестирование локализации вашего приложения.
Вы можете объявить различные типы графических элементов как автоматически зеркально отображаемые в коде вашего приложения, такие как растровые изображения, девять патчей, слои, списки состояний и другие графические объекты. Вы также можете объявить объект Drawable автоматически зеркальным в ваших файлах ресурсов, используя новый атрибут.
Принудительный макет RTL
Чтобы упростить тестирование и отладку проблем с зеркальным отображением макета без переключения на язык RTL, Android включает новую опцию разработчика, позволяющую принудительно использовать направление макета RTL во всех приложениях.
Параметр «Принудительно использовать раскладку RTL» переключает устройство на раскладку RTL для всех языковых стандартов и отображает текст на текущем языке. Это может помочь вам обнаружить проблемы с макетом в вашем приложении без необходимости отображать приложение на языке с письмом справа налево. Вы можете получить доступ к этой опции в «Настройки» > «Параметры разработчика» > «Принудительное направление макета RTL» .
Улучшения безопасности
SELinux (принудительный режим)
Android 4.4 обновляет конфигурацию SELinux с «разрешительной» на «принудительную». Это означает, что потенциальные нарушения политики в домене SELinux, в котором применяется политика, будут заблокированы.
Улучшенные криптографические алгоритмы
Android еще больше улучшил свою безопасность, добавив поддержку еще двух криптографических алгоритмов. Эллиптическая кривая Algorithm Algorithm Algorithm (ECDSA) была добавлена к поставщику ключа, улучшающему безопасность цифровой подписи, применимых к таким сценариям, как подпись приложения или подключение к данным. Функция получения ключей скрипта реализована для защиты криптографических ключей, используемых для шифрования полного диска.
Другие улучшения
На многопользовательских устройствах VPN теперь применяются на одного пользователя. Это может позволить пользователю направлять весь сетевой трафик через VPN, не затрагивая других пользователей на устройстве. Кроме того, Android теперь поддерживает ortify_source Уровень 2, и весь код составлен с этими средствами защиты. Fortify_source был улучшен для работы с Clang.
Инструменты для анализа использования памяти
Закваски
Новый инструмент под названием Procstats помогает вам анализировать ресурсы памяти, которые использует ваше приложение, а также ресурсы, используемые другими приложениями и услугами, работающими в системе.
Procstats отслеживает , как приложения работают с течением времени , предоставляя данные о их продолжительности выполнения и использовании памяти, чтобы помочь определить, насколько эффективно они работают. Это наиболее важно для приложений, которые запускают сервисы, которые работают в фоновом режиме, поскольку они позволяют отслеживать, как долго они работают и сколько оперативной памяти они используют при этом. Procstats также собирает данные для приложений переднего плана об использовании памяти с течением времени, чтобы определить общий профиль памяти приложения.
Прочи могут помочь вам определить фоновые услуги, начатые вашим приложением. Вы можете отслеживать, как долго эти услуги продолжают работать и сколько оперативной памяти они используют при этом. Procstats также позволяет вам профилировать ваше приложение, пока оно находится на переднем плане, используя его память с течением времени, чтобы определить общий профиль памяти.
![](https://developer.android.com/static/images/kk-procstats.png?authuser=9&hl=ru)
Новый инструмент Procstats позволяет проверить использование памяти приложений и сервисов с течением времени.
![](https://developer.android.com/static/images/kk-meminfo.png?authuser=9&hl=ru)
Усовершенствованный инструмент Meminfo позволяет вам увидеть детали использования памяти для приложения.
Вы можете получить доступ к Procstats из инструмента ADB, включенного в Pocstats Adb Shell Shell Dillsys . Кроме того, для профилирования на грани, см. Параметр разработчика Process Stats, ниже.
Статус и профилирование памяти на границе
Android 4.4 включает в себя новую опцию разработчика, чтобы упростить анализ профиля памяти вашего приложения во время работы на любом устройстве или эмуляторе. Особенно полезно получить представление о том, как ваше приложение использует память и работает на устройствах с низкой оперативной памятью. Вы можете получить доступ к опции при настройках> Параметры разработчика> Статистика процесса
![Мобильная демонстрация новой статистики процесса](https://developer.android.com/static/images/kk-proc-device-overview-n5.jpg?authuser=9&hl=ru)
![Мобильные демонстрации детали использования в новой статистике процесса](https://developer.android.com/static/images/kk-proc-device-detail-n5.jpg?authuser=9&hl=ru)
Статистика процесса - это удобный способ проверить использование памяти вашего приложения. Вы можете увидеть, как ваше приложение сравнивается с другими приложениями и увеличивает конкретные данные о вашем приложении или его фоновых службах.
Опция «Статистика процесса» показывает вам различные показатели высокого уровня при использовании памяти вашего приложения на основе данных, собранных с использованием новой службы Procstats. На главном экране вы можете увидеть сводку состояния системной памяти. Зеленый указывает на относительное количество времени, проведенного с низким использованием оперативной памяти, желтый указывает на умеренное использование ОЗУ, а красный указывает на высокое (критическое) использование ОЗУ
Ниже резюме находится список, обобщающий загрузку памяти каждого приложения в системе . Для каждого приложения синяя полоса указывает на относительную вычисленную нагрузку памяти (время выполнения x avg_pss) своего процесса, а процентное число указывает относительное количество времени, проведенного в фоновом режиме. Вы можете отфильтровать список, чтобы показать только передний план, фон или кэшированные процессы, и вы можете включить или исключить системные процессы. Вы также можете изменить продолжительность данных, собранных на 3, 6, 12 или 24 часа, и вы можете включить или исключить память USS.
Чтобы поближе взглянуть на использование памяти конкретного приложения в изоляции, нажмите приложение. Для каждого приложения теперь вы можете увидеть резюме потребляемой памяти и процент интервала сбора, который использовалось приложением. Вы также можете увидеть среднее и максимальное использование в течение периода сбора, а также ниже услуг приложения и процент времени, когда они работали.
Анализ вашего приложения с использованием данных в статистике процесса может выявить проблемы и предложить возможную оптимизацию для вашего приложения. Например, если ваше приложение работает дольше, чем должно, или использует слишком много памяти в течение определенного периода времени, в вашем коде могут быть ошибки, которые вы можете решить для повышения производительности вашего приложения, особенно при запуске на устройстве с низкой оперативной памятью.