Освой Android играючи

Сайт Александра Климова

Шкодим

/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000

Что нового в Android

Что нового в Android 12
Что нового в Android 11
Что нового в Android 10 Q (API 29)
Что нового в Android Pie
Что нового в Android 8.1 Oreo
Что нового в Android 8.0 Oreo
Что нового в Android 7.1 (API 25)
Что нового в Android 7.0 Nougat
Android 6.0 Marshmallow
Android 5.0 Lollipop
Android 4.4 KitKat

Используем новые версии

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

Чтобы Lint не ругался на классы или методы, которые не поддерживаются в API, указанной в minSdkVersion, можно пометить их аннотацией @TargetApi() и в скобках указать поддерживаемую версию API.


@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
class FpsTimeListener implements TimeListener {
    // ...
}

Также в коде можно провести проверку на версию и выполнять код в зависимости от условия:


if (android.os.Build.VERSION.SDK_INT >= 19)
{
    // ...
}

Номера версий доступны на странице Build.VERSION_CODES | Android Developers

Что нового в Android 13

Летом 2021 года началась подготовка к новой версии Android 13 (рабочее название Tiramisu).

Что нового в Android 12

18 февраля 2021 года объявили о выходе новой версии Android 12 (Android S Preview, рабочее название Snow Cone).

Появилась удобная поддержка RenderEffect из коробки, применимая к компонентам: Blur, Desaturate, Color Filter....

Android 12 Developer Preview: готовим приложение к новым обновлениям

Что нового в Android 11

19 февраля 2020 года Гугл официально создала на сайте раздел для новой версии Android 11 (рабочее название Red Velvet Cake).

Что нового в Android 10

3 сентября 2019 года вышла финальная версия Android 10, которая в бета-версии называлась Android Q (рабочее название Quince Tart). Теперь разработчики отказались от сладких названий в пользу чисел. Оно и понятно, у котов девять жизней.

Запись в блоге

Больше нельзя запустить Activity, когда ваше приложение находится в фоновом режиме. Рекомендуемый подход: создавать уведомление, запускающее активность.

Отменён доступ к идентификаторам устройства, по которым можно было определить его уникальность. Так, Mac-адрес теперь рандомизирован, а IMEI (TelephonyManager.getDeviceId()) и серийный номер больше не доступны. Используйте сбрасываемые идентификаторы, такие как Advertising ID, Instance ID или Globally-unique ID (GUID).

Фоновое определение локации усложнилось. Система будет различать запросы местоположения, сделанные на переднем плане и в фоне. Запрос на разрешение доступа к местоположению теперь будет иметь 3 варианта: Разрешать все время, Разрешать только при использовании приложения (доступ только на переднем плане) и Запретить (нет доступа).

Что нового в Android 9 Pie

7 марта 2018 года вышла предварительная версия Android 9 P. 6 августа она получила полное название Pie (Пирог) Запись в блоге.

Indoor positioning with Wi-Fi RTT
Display cutout support
Improved messaging notifications
Multi-camera API
ImageDecoder for bitmaps and drawables
HDR VP9 Video, HEIF image compression, and Media APIs
Data cost sensitivity in JobScheduler
Neural Networks API 1.1
Autofill improvements
Open Mobile API for NFC payments and secure transactions

Что нового в Android 8.1 Oreo

25 октября 2017 вышла предварительная версия для разработчиков.

Поменялось пасхальное яйцо.

Android Go (для слабых устройств), Neural Networks API, Shared memory API.

Что нового в Android 8.0 Oreo

21 марта 2017 года впервые объявили о новой версии Android 8. 21 августа 2017 во время солнечного затмения вышла финальная версия.

Сначала была просто буква «O» в названии Android. Одно из основных предположений — популярное печенье Oreo. Предположение оправдалось.

Oreo

Ограничение фоновых задач: Для сторонних программ установлены дополнительные ограничения, которые помогут уменьшить вред для аккумулятора от плохих программ. Например, приложения смогут получать всего несколько обновлений местоположения в час.

При этом, эти ограничения не распространяются на приложения, если:

  • Приложение не в фоне
  • Приложение имеет активный Foreground-сервис
  • Другое Foreground-приложение имеет соединение с текущим (как через bind service, так и через content provider).

Получается, что пока для Foreground-приложений поведение будет таким же, как и раньше.

Если foreground service отсутствует, то запрос геолокации будет изменен:

Fused Location Provider (FLP)
Для Background-приложений система будет определять новое местоположение только несколько раз в час, даже если приложение явно запросило больше обновлений. Для Foreground-приложений логика работы останется без изменений
Geofencing
Background-приложения смогут получать обновления от Geofencing API чаще, чем обновления от Fused Location Provider GNSS Measurements, GNSS Navigation Message. Для приложений, находящихся в фоне не будут приходить обновления для сервисов GnssMeasurement и GnssNavigationMessage
Location Manager
Для Background-приложений система будет определять новое местоположение только несколько раз в час.

Ограничение фоновых сервисов - После того как приложение перешло в background, у него есть «окно» в несколько минут, в течение которого сервисы могут запускаться и работать. После истечения этого интервала все сервисы останавливаются, а запуск новых будет приводить к падению приложения. Используйте JobScheduler и GcmNetworkManager.

В случае если необходимо выполнять длительные задачи в фоне, рекомендуется использовать foregroundService, который будет явно говорить пользователю, что приложение работает. Стоит обратить внимание, что после того как вызвали Context.startForegroundService() необходимо в течение 5 секунд вызвать startForeground(), в противном случае система может показать ANR.

Ограничение на регистрацию Broadcast в манифесте - оставлен небольшой список исключений, которым ещё можно использовать манифест. Остальным нужно вызывать Broadcast динамически.

Доработана система уведомлений. Уведомления от каждого приложения будут делиться на несколько каналов. То есть, если, например, приложение постоянно отправляет в шторку рекламу — ее можно будет отключить через системные настройки, а не копаясь в приложении. Также отдельное уведомление можно отложить. Оно убирается из шторки, но появится там через заданное время — полчаса, час и т. д.

Можно смотреть видео в маленьком окне. Также появились новые возможности работы с дополнительными дисплеями — удаленное управление и работа.

Новое изменение для лаунчеров — адаптивные иконки. Теперь миниатюрные изображения для приложений будут подстраиваться под выбранную пользователем тему и изменять свою форму с анимацией.

Появятся дополнительные возможности для разработчиков музыкальных приложений с помощью набора AAudio API. Обещают упростить работу с выводом и записью звука и повысить качество.

поддержка Bluetooth аудиокодека LDAC и технологии Wi-Fi Aware (ранее известная как Neighbor Awareness Networking), с помощью которой можно обмениваться информацией по Wi-Fi между устройствами без подключения к точке доступа.

API автозаполнения: пользователи теперь могут выбирать приложение для автозаполнения форм, аналогично тому, как они выбирают клавиатуру.

Ресурсы шрифтов в XML: шрифты теперь становятся полностью поддерживаемым типом ресурсом в Android O. Приложения могут использовать шрифты в XML-макетах, а также определять семейства шрифтов в XML – определяя стиль и весовой комплект шрифта вместе с файлами шрифтов.

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

Поддержка навигации на клавиатуре: более надёжная и предсказуемая модель навигации при использовании клавиш «стрелки» и «табуляция».

Улучшения для WebView (просмотр веб-страниц в Android приложениях).

Оптимизация API для Java 8 и время выполнения.

Autosizing TextViews

У класса View появился новый метод setToolTipText(), позволяющий задать подсказку (а также getToolTipText()). Также подсказка доступна через XML-атрибут android:tooltipText. Появляется подсказка при долгом нажатии на компоненте, либо при прохождении указателя над ним (не удалось увидеть).


<TextView
    android:id="@+id/textView"
    ...
    android:tooltipText="This is a tooltip" />

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

Ожидается поддержка в библиотеке поддержки через ToolTipCompat.

ProgressDialog объявлен устаревшим.

API Differences between 25 and o-dp1

API Differences between o-dp2 and 26

Что нового в Android 7.1 (API 25)

5 декабря 2016 объявили о выходе Android 7.1.1.

В октябре 2016 сообщили о выходе Android 7.1 Developer Preview. Название Nougat сохранилось, поменялся только номер API 25. Константа N_MR1

Добавлен новый виджет BottomNavigationView

App shortcuts API
Circular app icons support
Enhanced wallpaper metadata
Image keyboard support
Storage manager Intent
new APIs to support multi-endpoint calling and new telephony configuration options

Что нового в Android 7.0 Nougat (API 24)

9 марта 2016 вышла превью-версия Android 7.0 с названием N. 22 августа 2016 вышла финальная версия, которая получила название Nougat.

В этой системе появилась замечательная игра-пасхалка, в которой нужно собирать котов!

Поддержка Java 8 - лямбда, вискас и прочие плюшки языка.

Платформа Android 7.0 получила поддержку языка Java 8, которая требуют наличия нового компилятора Jack. Последняя версия Jack поддерживается только в Android Studio 2.1. Поэтому если вы хотите использовать возможности языка Java 8, вам понадобится Android Studio 2.1 и выполнить обновление до JDK 8.

Чтобы скомпилировать ваше приложение для платформы Android 7.0, необходимо использовать Java 8 Developer Kit (JDK 8), а для использования некоторых инструментов с Android Studio 2.1 необходимо установить Java 8 Runtime Environment (JRE 8).

Откройте проект в Android Studio, откройте окно Project Structure, выбрав File | Project Structure.

В левой панели окна щелкните SDK Location. В поле JDK Location укажите расположение Java 8 JDK (нажмите кнопку справа для просмотра своих файлов), затем нажмите OK.

Для использования API-интерфейсов Android 7.0 ваш проект должен быть сконфигурирован соответствующим образом.

Использование новых возможностей языка Java 8 не является обязательным требованием при разработке приложений для платформы Android 7.0. Если вы не хотите писать код с использованием возможностей языка Java 8, можно указать Java 7 в качестве значения совместимости для проекта, однако все-равно необходимо будет выполнить компиляцию с JDK 8 для осуществления сборки на платформе Android N.

В настоящее время Android поддерживает не все возможности языка Java 8. Однако при разработке приложений для Android 7.0 доступны следующие функции.

Кроме того, доступны следующие API-интерфейсы для реализации возможностей языка Java 8.

API-интерфейсы отражения и языковых функций:
java.lang.FunctionalInterface;
java.lang.annotation.Repeatable;
java.lang.reflect.Method.isDefault();
а также API-интерфейсы отражения, связанные с повторяющимися примечаниями, например, AnnotatedElement.getAnnotationsByType(Class).

Вспомогательные API:
java.util.function.

В Android 7.0 реализация лямбда-выражений выполнена с помощью анонимных классов. Данный подход обеспечивает их обратную совместимость и возможность выполнения в предыдущих версиях Android. При тестировании лямбда-выражений в предыдущих версиях перейдите в файл build.gradle и установите для параметров compileSdkVersion и targetSdkVersion значения 23 или ниже.

Чтобы использовать возможности языка Java 8 и набор инструментов Jack для проекта, добавьте в файл модуля build.gradle следующий код:


android {
  ...
  defaultConfig {
    ...
    jackOptions {
      enabled true
    }
  }
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}

Обновление существующего проекта

Откройте файл build.gradle для своего модуля и укажите в нем следующие значения:


android {
  compileSdkVersion 'android-N'
  buildToolsVersion '24.0.0-rc1'
  ...

  defaultConfig {
     minSdkVersion 'N'
     targetSdkVersion 'N'
     ...
  }
  ...
}

Создание нового проекта

Чтобы создать новый проект разработки с использованием Android N Preview SDK выполните следующие действия.

Выберите File | New Project и выполняйте указания, пока не перейдете на страницу "Target Android Devices". На этой странице выберите вариант Phone and Tablet. В разделе Phone and Tablet перейдите в список Minimum SDK и выберите N: Android API 23, N Preview (Preview).

В Android N удалены три неявных широковещательной рассылки с целью оптимизации потребления памяти и энергии: CONNECTIVITY_ACTION, ACTION_NEW_PICTURE и ACTION_NEW_VIDEO.

Приложения для Android N не получают широковещательные рассылки CONNECTIVITY_ACTION, даже если в их манифесте указаны требования получения уведомлений об этих событиях. Приложения в активном режиме могут следить за событиями CONNECTIVITY_CHANGE в своем основном потоке, если они запрашивают уведомление через BroadcastReceiver.

Приложения не могут отправлять или получать широковещательные рассылки ACTION_NEW_PICTURE и ACTION_NEW_VIDEO. Эта оптимизация влияет на все приложения, включая те, которые не предназначены для Android N.

Здесь подробно описано

В будущих выпусках Android могут быть отменены другие неявные широковещательные рассылки, а также отменена привязка некоторых фоновых служб. Поэтому следует избегать зависимостей (или удалить их) в виде объявленных в манифесте получателей неявных широковещательных рассылок или фоновых служб.

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

Разрешение GET_ACCOUNTS теперь считается устаревшим. Система игнорирует это разрешение для приложений, разработанных для Android N.

Масштабирование экрана

Android N позволяет пользователям установить параметр Display size, который увеличивает или уменьшает все элементы на экране, делая таким образом устройство более удобным для пользователей со слабым зрением. Пользователи не могут масштабировать экран до ширины менее sw320dp (ширина экрана Nexus 4, обычного телефона среднего размера).

При изменении плотности экрана устройства система уведомляет запущенные приложения следующим способами.

Если приложение предназначено для API уровня 23 или ниже, система автоматически завершает все его фоновые процессы. Это означает, что если пользователь переходит из такого приложения на экран Settings и изменяет параметр Display size, то система завершает работу приложения таким же образом, как в случае нехватки памяти. Если у приложения имеются процессы, работающие в активном режиме, система уведомляет эти процессы об изменении конфигурации согласно описанию в документе Обработка изменений в режиме выполнения, как в случае изменения ориентации устройства.

Если приложение разработано для Android N, все его процессы (активные и фоновые) уведомляются об изменении конфигурации, как это описано в документе Обработка изменений в режиме выполнения.

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

В Android N появились настройки Vision Settings на экране приветствия, где пользователи могут установить следующие параметры специальных возможностей на новом устройстве: Magnification gesture, Font size, Display size и TalkBack. В результате этого изменения становятся более заметными ошибки, связанные с различными настройками экрана. Чтобы оценить влияние этой функции, следует протестировать свое приложение, включив эти настройки на экране Settings > Accessibility.

Процесс приложения, запущенного под Android N, но разработанного для API более низкого уровня, завершается, если пользователь изменяет размер экрана. Приложение должно корректно обработать такой сценарий. В противном случае оно завершится с ошибкой, если пользователь запустит его с экрана последних задач.

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

Приложения для N и последующих версий Android не завершаются автоматически при изменении плотности экрана, однако они могут плохо реагировать на изменения конфигурации.

Приложения для Android N должны уметь корректно обрабатывать изменения конфигурации и не должны завершаться с ошибкой при последующих запусках. Вы можете проверить поведение приложения, изменив размер шрифта (Setting > Display > Font size) и перезапустив затем приложение с экрана последних задач.

Android N обеспечивает расширенную поддержку многоязычных пользователей, позволяя им выбирать в настройках из нескольких языковых стандартов. Эта возможность реализована в Android N за счет значительного увеличения числа поддерживаемых языковых стандартов и изменения способа разрешения ресурсов в системе. Подробнее об этом

В Android N приложения могут использовать новые API-интерфейсы для запроса доступа к конкретным каталогам внешнего хранилища, включая каталоги на съемных носителях, таких как SD-карты. Новые API-интерфейсы значительно упрощают доступ к стандартным каталогам внешнего хранилища, таким как Pictures. Например, приложения, работающие с фотографиями, могут использовать эти API-интерфейсы вместо READ_EXTERNAL_STORAGE, который разрешает доступ ко всем каталогам хранилища или платформы Storage Access Framework, благодаря чему выполняется переход к указанному каталогу. Кроме того, новые API-интерфейсы упрощают процедуру предоставления доступа к внешнему хранилищу для приложения. Если вы применяете новые API, система использует простой интерфейс разрешений, в котором четко указаны каталоги, к которым приложение запрашивает доступ. Дополнительная информация содержится в документации для разработчиков Доступ к выделенным каталогам.

Поддержка многооконного режима | Android Developers

Уведомления | Android Developers

Запись ТВ | Android Developers

Multi-window - новый атрибут манифеста android:resizableActivity со значением true позволяет запускать активность в специальном режиме разбиения экрана. Вы можете указать минимальный размер. Также появился ещё один атрибут android:supportsPictureInPicture для режима Картинка-в-картинке.

Direct reply notifications: RemoteInput notification API впервые появились в Android Wear. Теперь доступно для телефонов и планшетов.

Bundled notifications - можно использовать новый метод Notification.Builder.setGroup() для группировки уведомлений.

Что нового в Android 6.0 Marshmallow

Версия Android 6.0 (API 23) получила название Marshmallow. Одна японская фирма выпускает сладости из marshmallow в виде котиков, которых кладут в кофе. Учитывая, что логотипом Java является кружка с кофе, можно сделать вывод, что новая версия Android по-прежнему дружит с Java.

О новой превью-версии объявили 28 мая 2015 года на Google I/O. Финальная версия прилетела мне на Nexus 7 11 ноября 2015 года, пока котик спал.

Новая модель разрешений в Android 6.0

App Links

Автоматические бэкапы

Doze и продвинутые алгоритмы энергосбережения

Android Pay и отпечатки пальцев

Для внедрения платёжной системы Android Pay требовалось два компонента, работающих на уровне системы: NFC, внедренный версии Android 2.3, и эмуляция банковских карт, которая появилась в версии Android 4.4. Появился Fingerprints API — еще один компонент безопасной и простой системы, который позволяет работать с биометрическими данными на уровне ОС.

Вместе Android 6 и Android Pay позволяют пользователям подтверждать покупки (как в розничных сетях, так и в Google Play) одним прикосновением к сканеру отпечатков пальцев. С добавлением поддержки отпечатков на системном уровне в Android M пользователи смогут обезопасить себя от несанкционированных покупок, разблокировать телефон и отдельные приложения; а разработчики — использовать универсальные системные API для работы с биометрической авторизацией в своих приложениях, причём работать это будет на всех поддерживаемых системой устройствах и сканерах.

Android 6.0 Marshmallow позволит разработчикам использовать системные API для работы со всевозможными датчиками биометрической авторизации, а разработчикам приложений обращаться к данным датчикам с помощью этих API и не городить велосипеды из костылей. Зачем вводить сложный пароль, когда можно просто приложить палец?

С помощью класса android.hardware.fingerprint.FingerprintManager проверяем наличие в устройстве сенсора isHardwareDetected(), запрашиваем разрешение USE_FINGERPRINT, и если у пользователя есть откатанные пальчики hasEnrolledFingerprints(), показываем стандартный диалог авторизации по отпечатку authentificate().

Confirm Credentials

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

Расширение памяти

Некоторые пользователи сталкивались с ситуацией, когда их устройство сообщало о недостатке памяти на накопителе, не смотря на то, что SD-карта имеет ещё достаточное количество свободного места. Теперь Android 6 умеет монтировать SD-карты как «продолжение» встроенного накопителя, тем самым избавляя пользователей от необходимости вручную переносить приложения, кэши тяжелых игрушек или ещё какой-нибудь контент на карту памяти. Кроме того, файлы, которые хранятся на SD-карте в режиме Flex Storage зашифрованы, и могут быть прочитаны только на том устройстве, к которому была привязана карта памяти. Безопасность и удобство.

Text Selection

Теперь контекстное меню для действий с выделенным текстом появляется непосредственно рядом с кареткой. Для добавления своих действий мы так же можем воспользоваться меню, описанным в menu.xml, и добавить его с помощью метода startActionMode(Callback, ActionMode.TYPE_FLOATING).

Встроенный перевод Google Translate

Пользователи, у которых установлено приложение Google Translate, получат возможность перевода на 90 языков внутри некоторых приложений на любом устройстве под управлением Android 6.0, Marshmallow.

Приложения, которые используют встроенную функцию выделение текста (см. выше), встроенный перевод будет уже включен по умолчанию, поэтому никаких дополнительных шагов делать не нужно. Разработчикам, которые реализовали собвственное выделение текста для своих приложений, могут легко реализовать функцию встроенного перевода, выполнив следующие шаги:

Создать намерение.


private Intent createProcessTextIntent() {
    return new Intent()
            .setAction(Intent.ACTION_PROCESS_TEXT)
            .setType("text/plain");
}

Просканировать с помощью PackageManager все пакеты, которые имеют фильтр PROCESS_TEXT (например: com.google.android.apps.translate — если он установлен).


private List getSupportedActivities() {
    PackageManager packageManager =
            mTextView.getContext().getPackageManager();
    return
            packageManager.queryIntentActivities(createProcessTextIntent(),
            0);
}

Добавить их в качестве MenuItems в окно выбора у TextView.


public void onInitializeMenu(Menu menu) {
    // Start with a menu Item order value that is high enough
    // so that your "PROCESS_TEXT" menu items appear after the
    // standard selection menu items like Cut, Copy, Paste.
    int menuItemOrder = 100;
    for (ResolveInfo resolveInfo : getSupportedActivities()) {
        menu.add(Menu.NONE, Menu.NONE,
                menuItemOrder++,
                getLabel(resolveInfo))
                
.setIntent(createProcessTextIntentForResolveInfo(resolveInfo))
                .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
    }
}

Метки для каждого элемента можно получить через код:


resolveInfo.loadLabel(mPackageManager);

Намерение для каждого элемента можно создать, используя фильтр


private Intent createProcessTextIntentForResolveInfo(ResolveInfo info) {
    return createProcessTextIntent()
            .putExtra(Intent.EXTRA_PROCESS_TEXT_READONLY, !
            mTextView.isTextEditable())
            .setClassName(info.activityInfo.packageName, 
            info.activityInfo.name);
}

Добавление параметра перевода в меню выбора текста вашего приложения (если вы не используете поведение выделения текста в Android по умолчанию ) делается просто и занимает всего несколько дополнительных строк кода. В процессе перевода, ваше приложение должно удерживать выделение текста, пока Google Translate работает.

Voice Interaction

Приложение, будучи запущенным из Google Now, может вести диалог с пользователем с помощью класса android.app.VoiceInteractor.

Устаревшее

Если вы используете устаревший Apache Http client, то нужно добавить в build.gradle:


android { 
    useLibrary 'org.apache.http.legacy'
}

Из SDK удалили OpenSSL: libcrypto.so и libssl.so заменены на BoringSSL.

Удалён старый метод для уведомлений notification.setLatestEventInfo(), используйте Notification.Builder.

Из Android Keystore provider убрали поддержку DSA-шифрования.

Разное

Доступ к мак-адресам устройств в округе теперь возможен только при сканировании методами WifiManager.getScanResults(), BluetoothLeScanner.startScan() и при запрошенных разрешениях ACCESS_FINE_LOCATION или ACCESS_COARSE_LOCATION. А вот методы WifiInfo.getMacAddress() и BluetoothAdapter.getAddress() вернут всегда значения 02:00:00:00:00:00. Это сделано в целях повышения безопасности пользователя.

Теперь состояния WifiConfiguration-объектов наши приложения могут менять только, если они сами их создали.

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

Ссылка для стартового изучения: hhttp://developer.android.com/intl/ru/about/versions/marshmallow/index.html

  • App Linking
  • Auto Backup for Apps
  • Authentication
  • Fingerprint Authentication
  • Direct Share
  • Voice Interactions
  • Assist API
  • Notifications
  • Bluetooth Stylus Support
  • Improved Bluetooth Low Energy Scanning
  • Hotspot 2.0 Release 1 Support
  • 4K Display Mode
  • Themeable ColorStateLists
  • Audio Features
  • Video Features
  • Camera Features
  • Flashlight API
  • Reprocessing API
  • Android for Work Features

Изменения в API

TypeAdditionsChangesRemovalsTotal
Packages4522884
Classes and Interfaces12123627384
Constructors3025
Methods51012328661
Fields4038139523
Total10414921241657

Что нового в Android 5.0 Lollipop

12 ноября 2014 года официально вышла новая версия Android 5.0 под кодовым названием Lollipop.

Lollipop

Ещё во время конференции Google I/O, компания заявила, что Lollipop (Леденец) - это самый масштабный релиз для Android: разработчиков ожидает более 5000 новых API. Lollipop разработана для пользователя, который постоянно пользуется несколькими устройствами: телефоном, планшетом, телевизором и т. д. С новой ОС переключение с одного экрана на другой будет происходить незаметно: запустит последнее из открытых приложений, позволит продолжить поиск, начатый на другом устройстве Android и т.д.

Интерфейс Lollipop получил название Material Design. Также можно самостоятельно установить ограничение доступности, чтобы принимать звонки только от определенных людей и видеть только важные уведомления (они будут появляться даже на заблокированном экране).

В новой ОС предусмотрен режим экономии аккумулятора, который может продлить его заряд еще на 90 минут. А чтобы личные данные пользователя всегда оставались в безопасности, в Android Lollipop есть функция входа с нескольких аккаунтов, а также гостевой режим. Более того, можно дополнительно защитить свое устройство с помощью ПИН-кода, пароля или графического ключа, а также связав его с другим устройством, например, часами или автомобилем (функция Smart Lock).

На этой странице будет собираться новая информация, которая пригодится разработчикам.

  1. A New Design - Material Design
  2. A New Runtime - ART (Android Runtime)
  3. Enhanced Notifications
  4. Project Volta- Increased Efficiency
  5. Support for OpenGL ES 3.1
  6. Android Extension Pack
  7. Camera API for advanced camera capabilities
  8. Storage - Directory selection
  9. Multiple network connections
  10. Bluetooth broadcasting
  11. NFC enhancements
  12. Scheduling jobs - Пример
  13. Enterprise - Managed provisioning
  14. Render PDF as bitmap
  15. Testing and accessibility improvements
  16. Easier switching between input languages

Изменения в API

TypeAdditionsChangesRemovalsTotal
Packages843051
Classes and Interfaces872320319
Constructors842086
Methods4086917494
Fields754221777
Total341368181727

Новые пакеты

  • android.app.job
  • android.bluetooth.le
  • android.hardware.camera2
  • android.hardware.camera2.params
  • android.media.session
  • android.media.tv
  • android.service.voice
  • android.system

Добавлена новая ADB-команда dumpsys batterystats:


adb shell dumpsys batterystats --charged <package-name>

Появились новые виды уведомлений, которые можно выводить на экран блокировки через метод setVisibility(), используя константы.

  • VISIBILITY_PRIVATE - базовый случай: значок, не показывая содержимое уведомления
  • VISIBILITY_PUBLIC - показывает содержимое уведомления
  • VISIBILITY_SECRET - ничего не показывает

Экран недавно запущенных программ переименовали в Overview и добавили API для управления своей программой в этом экране.

Компонент WebView теперь использует движок Chromium и может обновляться без обновления самой системы, а при обновлении браузера.

Новый API android.media.browse позволяет просматривать медиа-содержимое других приложений. Класс MediaBrowserService позволяет использовать медиа совместно с классом MediaBrowser.

Появились два новых класса для управления проигрыванием. Класс MediaSession заменил RemoteControlClient. Класс MediaController позволяет создать свой контроллер.

Два новых сенсора: Tilt Detector и Heart Rate Sensor.

На устройстве стал возможен режим киоска.

Захват экрана для скриншотов доступен через android.media.projection. Используйте VirtualDisplay.

У камеры появились новые возможности в новом пакете android.hardware.camera2.

Поддержка Bluetooth Low Energy доступна через android.bluetooth.le.

Улучшена работа с NFC.

Класс PdfRendered позволяет рендерить Bitmap из PDF-документов.

А не козёл ли, пользователь?

Переработан метод isUserAGoat(). Подробнее читайте в моей статье А не козёл ли ты, пользователь?

В коде при использовании новых возможностей делайте проверку.


// Check if we're running on Android 5.0 or higher
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    // Call some material design APIs here
} else {
    // Implement this feature without material design
}

Для старых устройств доступна библиотека совместимости для работы с Material Design и поддержки компонентов CardView и RecyclerView.

Обнаружен секретный пакет com.android.internal.telephony.cat, содержащий различные классы для работы с котами, например CatService. Из студии пакет недоступен. Свободу кошакам!

Полезные ссылки

Android 5.0 Lollipop SDK and Nexus Preview Images

API Differences between 20 and 21

Что нового в Android 4.4 KitKat

Вышла новая версия Android 4.4 под кодовым названием KitKat. А счастье было так близко (((.

На самом деле планировалось название Kitekat (корм для энергичных кошек), но секретарша-дура сделала опечатку в документах. А когда заметили ошибку, то было уже поздно исправлять. Но мы-то с вами знаем правду.

KitKat

Новый Toast. Теперь банановый закруглённый. Ничего менять не надо.

Toast в KitKat

Добавлены новые флаги для скрытия системных панелей в новом режиме погружения.

Новые способы анимаций для компонентов - Android: Transition в Android 4.4

Scene

Появилась возможность сделать системные панели полупрозрачными.

Новый механизм взаимодействия с контент-провайдерами для работы с документами - Storage Access Framework

В Android 4.4 компонент WebView использует новый движок от Chromium. Прирост производительности впечатляет. От 5 до 354%.

Теперь можно создать PDF-файл встроенными средствами системы.

Появилось понятие программы по умолчанию для работы с SMS и MMS.

Реклама