Версии android api. «Сердце робота»: Как использовать системный API Android в личных целях. Что такое уровень API

More information about how API levels work is available in What is API Level?

App Components

Isolated services

App stack navigation

Android 4.1 makes it much easier to implement the proper design patterns for Up navigation. All you need to do is add the android:parentActivityName to each element in your manifest file. The system uses this information to open the appropriate activity when the user presses the Up button in the action bar (while also finishing the current activity). So if you declare the android:parentActivityName for each activity, you don"t need the onOptionsItemSelected() method to handle click events on the action bar"s app icon—the system now handles that event and resumes or creates the appropriate activity.

This is particularly powerful for scenarios in which the user enters one of your app"s activities through a "deep dive" intent such as from a notification or an intent from different app (as described in the design guide for Navigating Between Apps). When the user enters your activity this way, your app may not naturally have a back stack of activities that can be resumed as the user navigates up. However, when you supply the android:parentActivityName attribute for your activities, the system recognizes whether or not your app already contains a back stack of parent activities and, if not, constructs a synthetic back stack that contains all parent activities.

Note: When the user enters a deep activity in your app and it creates a new task for your app, the system actually inserts the stack of parent activities into the task. As such, pressing the Back button also navigates back through the stack of parent activities.

When the system creates a synthetic back stack for your app, it builds a basic Intent to create a new instance of each parent activity. So there"s no saved state for the parent activities the way you"d expect had the user naturally navigated through each activity. If any of the parent activities normally show a UI that"s dependent on the user"s context, that context information will be missing and you should deliver it when the user navigates back through the stack. For example, if the user is viewing an album in a music app, navigating up might bring them to an activity that lists all albums in a chosen music genre. In this case, if the stack must be created, it"s necessary that you inform the parent activity what genre the current album belongs to so that the parent can display the proper list as if the user actually came from that activity. To deliver such information to a synthetic parent activity, you must override the method. This provides you with a TaskStackBuilder object that the system created in order to synthesize the parent activities. The TaskStackBuilder contains Intent objects that the system uses to create each parent activity. In your implementation of onPrepareNavigateUpTaskStack() , you can modify the appropriate Intent to add extra data that the parent activity can use to determine the appropriate context and display the appropriate UI.

If your app structure is more complex, there are several other APIs available that allow you to handle the behavior of Up navigation and fully customize the synthetic back stack. Some of the APIs that give you additional control include:

onNavigateUp() Override this to perform a custom action when the user presses the Up button. navigateUpTo(Intent) Call this to finish the current activity and go to the activity indicated by the supplied Intent . If the activity exists in the back stack, but is not the closest parent, then all other activities between the current activity and the activity specified with the intent are finished as well. getParentActivityIntent() Call this to get the Intent that will start the logical parent for the current activity. shouldUpRecreateTask(Intent) Call this to query whether a synthetic back stack must be created in order to navigate up. Returns true if a synthetic stack must be created, false if the appropropriate stack already exists. finishAffinity() Call this to finish the current activity and all parent activities with the same task affinity that are chained to the current activity. If you override the default behaviors such as onNavigateUp() , you should call this method when you create a synthetic back stack upon Up navigation. onCreateNavigateUpTaskStack Override this if you need to fully control how the synthetic task stack is created. If you want to simply add some extra data to the intents for your back stack, you should instead override onPrepareNavigateUpTaskStack()

However, most apps don"t need to use these APIs or implement onPrepareNavigateUpTaskStack() , but can can achieve the correct behavior simply by adding android:parentActivityName to each element.

Multimedia

Media codecs

You can handle encrypted media data in the codecs by calling queueSecureInputBuffer() in conjunction with the MediaCrypto APIs, instead of the normal queueInputBuffer() .

For more information about how to use codecs, see the MediaCodec documentation.

Record audio on cue

Audio effects

Note: It"s not guaranteed that all devices support these effects, so you should always first check availability by calling isAvailable() on the corresponding audio effect class.

Gapless playback

You can now perform gapless playback between two separate MediaPlayer objects. At any time before your first MediaPlayer finishes, call setNextMediaPlayer() and Android attempts to start the second player the moment that the first one stops.

Media router. The new APIs MediaRouter, MediaRouteActionProvider, and MediaRouteButton provide standard mechanisms and UI for choosing where to play media.

Camera

Auto focus movement

Connectivity

Android Beam

Android Beam™ now supports large payload transfers over Bluetooth. When you define the data to transfer with either the new setBeamPushUris() method or the new callback interface NfcAdapter.CreateBeamUrisCallback , Android hands off the data transfer to Bluetooth or another alternate transport to achieve faster transfer speeds. This is especially useful for large payloads such as image and audio files and requires no visible pairing between the devices. No additional work is required by your app to take advantage of transfers over Bluetooth.

When using the callback interface, the system calls the interface"s createBeamUris() method when the user executes a share with Android Beam so that you can define the URIs to share at share-time. This is useful if the URIs to share might vary depending on the user context within the activity, whereas calling setBeamPushUris() is useful when the URIs to share are unchanging and you can safely define them ahead of time.

Network service discovery

Android 4.1 adds support for multicast DNS-based service discovery, which allows you to find and connect to services offered by peer devices over Wi-Fi, such as mobile devices, printers, cameras, media players, and others that are registered on the local network.

Before you can start discovering services on local devices, you also need to call addServiceRequest() . When the WifiP2pManager.ActionListener you pass to this method receives a successful callback, you can then begin discovering services on local devices by calling discoverServices() .

When local services are discovered, you"ll receive a callback to either the WifiP2pManager.DnsSdServiceResponseListener or WifiP2pManager.UpnpServiceResponseListener , depending on whether you registered to use Bonjour or Upnp. The callback received in either case contains a WifiP2pDevice object representing the peer device.

Network usage

Accessibility services can also perform actions on behalf of the user, including clicking, scrolling and stepping through text using performAction and setMovementGranularities . The performGlobalAction() method also allows services to perform actions such as Back, Home, and open Recent Apps and Notifications.

Customizable app navigation

When building an Android app, you can now customize navigation schemes by finding focusable elements and input widgets using findFocus() and focusSearch() , and set focus using setAccessibilityFocused() .

More accessible widgets

The new android.view.accessibility.AccessibilityNodeProvider class allows you to surface complex custom views to accessibility services so they can present the information in a more accessible way. The android.view.accessibility.AccessibilityNodeProvider allows a user widget with advanced content, such as a calendar grid, to present a logical semantic structure for accessibility services that is completely separate from the widget’s layout structure. This semantic structure allows accessibility services to present a more useful interaction model for users who are visually impaired.

Copy and Paste

Copy and paste with intents

Renderscript

Renderscript computation functionality has been enhanced with the following features:

  • Support for multiple kernels within one script.
  • Support for reading from allocation with filtered samplers from compute in a new script API rsSample .
  • Support for different levels of FP precision in #pragma .
  • Support for querying additional information from RS objects from a compute script.
  • Numerous performance improvements.

New pragmas are also available to define the floating point precision required by your compute Renderscripts. This lets you enable NEON like operations such as fast vector math operations on the CPU path that wouldn’t otherwise be possible with full IEEE 754-2008 standard.

Note: The experimental Renderscript graphics engine is now deprecated.

Animation

Activity launch animations

Remote views

  • "sans-serif" for regular Roboto
  • "sans-serif-light" for Roboto Light
  • "sans-serif-condensed" for Roboto Condensed

Vibrate for input controllers

If connected input devices have their own vibrate capabilities, you can now control the vibration of those devices using the existing Vibrator APIs simply by calling getVibrator() on the InputDevice .

Permissions

...

This feature defines "television" to be a typical living room television experience: displayed on a big screen, where the user is sitting far away and the dominant form of input is be something like a d-pad, and generally not through touch or a mouse/pointer-device.

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

  • API Android SDK - APIбиблиотеки Android, предоставляемые для разработки приложений.
  • Документация SDK- включает обширную справочную информацию, детализирующую, что включено в каждый пакет и класс и как это использовать при разработке приложений.
  • AVD (Android Virtual Device)- интерактивный эмулятор мобильного устройства Android. Используя эмулятор, можно запускать и тестировать приложения без использования реального Androidycтpoйcтвa.
  • Development Tools - SDK включает несколько инструментальных средств для разработки, которые позволяют компилировать и отлаживать создаваемые приложения.
  • Sample Code - Android SDK предоставляет типовые приложения, которые демонстрируют некоторые из возможностей Android, и простые программы, которые показывают, как использовать индивидуальные особенности API в вашем коде.

Версии SDK и Android API Level

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

Уровень API - целочисленное значение, которое однозначно определяет версию API платформы Android. Платформа обеспечивает структуры API, которые приложения могут использовать для взаимодействия с системой Android. Каждая следующая версия платформы Android может включать обновления API.

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

Уровень API, который использует приложение для Android, определяется целочисленным идентификатором, который указывается в файле конфигурации каждого Android-приложения.

Таблица определяет соответствие уровня API и версии платформы Android.

Соответствие версии платформы и уровня АРI

Инструменты для разработки и отладки приложений

Кроме эмулятора, SDK также включает множество других инструментальных средств для отладки и установки создаваемых приложений. Если вы разрабатываете приложения для Android с помощью IDE Eclipse, многие инструменты командной строки, входящие в состав SDK, уже используются при сборке и компиляции проекта. Однако кроме них SDK содержит еще ряд полезных инструментов для разработки и отладки приложений:

  • android - важный инструмент разработки, запускаемый из командной строки, который позволяет создавать, удалять и конфигурировать виртуальные устройства, создавать и обновлять Androidпроекты (при работе вне среды Eclipse) и обновлять Android SDK новыми платформами, дополнениями и документацией;
  • Dalvik Debug Monitor Service (DDMS) - интегрированный с Dalvik Virtual Machine, стандартной виртуальной машиной платформы Android, этот инструмент позволяет управлять процессам и на эмуляторе ил и устройстве, а также помогает в отладке приложений. Вы можете использовать этот сервис для завершения процессов, выбора определенного процесса для отладки, генерирования трассировочных данных, просмотра "кучи" или информации о пото ках, делать скриншоты эмулятора ил и устройства и многое другое;
  • Hierarchy Viewer - визуальный инструмент, который позволяет отлаживать и оптимизировать пользовательский интерфейс разрабатываемого приложения. Он показывает визуальное дерево иерархии представлений, анализирует быстродействие перерисовки графических изображений на экране и может выполнять еще много других функций для анализа графического интерфейса приложений;
  • Layoutopt - инструмент командной строки, который помогает оптимизировать схемы разметки и иерархии разметок в создаваемом приложении. Необходим для решения проблем при создании сложных графических интерфейсов, которые могут затрагивать производительность приложения;
  • Draw 9-patc h - графический редактор, который позволяет легко создавать NinеРаtсhграфику для графического интерфейса разрабатываемых приложений;
  • sqlite3 - инструмент для доступа к файлам данных SQLite, созданных и используемых приложениями для Android;
  • Traceview - этот инструмент выдает графический анализ трассировочных логов, которые можно генерировать из приложений;
  • mksdcard - инструмент для создания образа диска, который вы можете использовать в эмуляторе для симуляции наличия внешней карты памяти (например, карты SD).
  • Наиболее важный из них- эмулятор мобильного устройства , однако в состав SDK входят и другие инструменты для отладки, упаковки и инсталляции ваших приложений на эмулятор.

Android Virtual Device

Android Virtual Device (Виртуальное устройство Android )- это эмулятор, который запускается на обычном компьютере. Эмулятор используется для проектирования, отладки и тестирования приложений в реальной среде выполнения.

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

Создавать эмулятор устройства можно двумя способами:

  1. В командной строке утилитой android, доступной в каталоге, куда вы установили Android SDK, в папке tools.
  2. Визуально с помощью Android SDK and AVD Manager в IDE Eclipse , выбрав пункт меню Window | Android SDK and AVD Manager. Появится окно Android SDK and AVD Manager, с помощью которого можно создавать и конфигурировать эмуляторы мобильного устройства, а также загружать обновления Android SDK.

Окно Android SDK and AVD Manager также появится, если в командной строке вызвать android.exe без параметров.

iAndroid SDK and AVD Manager

Окно Android SDK and AVD Manager

В правой части панели List of existing Android Virtual Devices нажмите кнопку New, при этом откроется окно Create new AVD.

В этом окне задайте нужную конфигурацию для создаваемого эмулятора устройства:

  • Name - имя создаваемого устройства;
  • Target - версия Android SDK, поддерживаемая устройством. Устройство имеет обратную совместимость со старыми версиями SDK, т. е. если выбрана версия Android 2.0, эмулятор будет поддерживать версии SDK 1.6, 1.5, 1.1;
  • SD Card - устанавливает виртуальную карту SD;
  • Skin -тип экрана устройства. Загружаемая платформа включает ряд скинов для эмулятора, которые можно использовать для моделирования работы приложения в устройствах с разными размерами и разрешением экрана. Набор скинов для эмулятора в зависимости от установленной версии SDK, указанной в поле Target, содержит различные типы и размеры экрана, например:
  • HVGA (Halfsize VGA Video Graphics Array ), размер 320x480, средняя плотность, нормальный экран;
  • WVGA800 (Wide Video Graphics Array ), размер 480x800, высокая плотность, нормальный экран;
  • WVGA854 (Wide Video Graphics Array ), 480x854, высокая плотность, нормальный экран;
  • QVGA (Quarter Video Graphics Array ), размер 240x320, низкая плотность, малый экран;
  • WQVGA (Wide Quarter Video Graphics Array ), размер 240x400, низкая плотность, нормальный экран;

  • Hardware - имитация оборудования, установленного на устройстве. При необходимости нажатием кнопки New можно вызвать окно для добавления дополнительного виртуального оборудования.

Окно для добавления дополнительного виртуального оборудования

После задания конфигурации и нажатия кнопки Create AVD менеджер создаст новое виртуальное устройство, название и версия API которого появятся в списке List of existing Android Virtual Devices .

Для более тонкой настройки лучше использовать инструмент командной строки andnoid.exe. Он имеет более широкие возможности, чем визуальный AVD Мапа9ег, и удобен для конфигурации сети, портов и виртуального оборудования эмулятора. К сожалению, изза ограниченного объема книги нет возможности рассмотреть подробнее этот инструмент.

В зависимости от поддерживаемой версии API внешний вид виртуального устройства будет отличаться.

Окно эмулятора оформлено в виде телефона с дополнительной клавиатурой. После загрузки системы появляется Home screen - рабочий стол Android. Для доступа к нему используется кнопка со значком домика. Эмулятор также имитирует сенсорный экран реального мобильного устройства- в эмуляторе на экран нажимают левой кнопкой мыши.

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

Внешний вид AVD версии 1.5

Внешний вид AVD версии 2.0

Для тестирования внешнего вида создаваемого приложения при разных положениях экрана комбинацией клавиш + можно изменять расположение экрана с вертикального на горизонтальный и наоборот.

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

Маркер внизу экрана позволяет открыть окно запуска установленных в системе приложений- Application Launcher. Окно выдвигается при нажатии на маркер.

Эмулятор, тем не менее, не поддерживает некоторые функциональности, доступные на реальных устройствах:

  • входящие и исходящие сообщения. Однако можно моделировать обращения по телефону через интерфейс эмулятора;

Панель запуска установленных приложений Application Launcher

  • соединение через USB;
  • видеокамера (однако есть имитатор работы видеокамеры);
  • подключение наушников;
  • определение статуса соединения;
  • определение уровня заряда аккумуляторной батареи; D определение вставки или изъятия карты SD;
  • соединение по Bluetooth.

Конечно, реальные телефоны несколько отличаются от эмулятора, но в целом AVD разработан очень качественно и близок по функциональности к реальному устройству.

СОДЕРЖИТСЯ В: ОПИСАНИЕ:

Позволяет указать совместимость приложения с одной или несколькими версиями платформы, с помощью уровней API. Несмотря на свое название, этот элемент используется для указания номера уровня API, а не номера версии SDK или версии платформы Android. Уровень API это одно целое число, он всегда связан с соответствующим номером платформы Android.

АТРИБУТЫ: android:minSdkVersion

Целое число, указывающее на минимальный уровень API, который требуется приложению для работы. Система предотвращает установку приложения, если уровень API на устройстве ниже, чем указанный в данном атрибуте. Необходимо всегда использовать данный атрибут.

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

Android:targetSdkVersion

Целое число, указывающее версию API, на которую нацелено приложение. Если атрибут не указан, используется значение, эквивалентное minSdkVersion .

Атрибуте сообщает системе, что вы протестировали приложение в указанной версии и система не должна разрешать работать приложению в режиме совместимости. С выходом новых версий, меняется поведение и внешний вид системы. Однако, если уровень API платформы выше версии, указанной в данном атрибуте, система разрешает использовать режим совместимости, чтобы приложение работало так, как вы ожидаете. Вы можете отключить такое поведение, указав в качестве targetSdkVersion версию платформы, на которой работает приложение. Например, установка значения 11 и больше позволит системе применить тему Xono, при запуске на Android 3.0 и выше, а также отключает режим совместимости экрана при запуске на больших экранах (потому что API 11 неявно поддерживает большие экраны).

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

Добавлено в API 4.

Android:maxSdkVersion

Целое число, указывающее максимальный уровень API, в котором приложение может работать.

В Android 1.5, 1.6 и 2.0.1 система проверяла значение атрибута при установке и проверке приложения после обновления системы. В любом случае, если значение атрибута ниже, чем уровень API системы, система не позволит установить приложение. В случае проверки приложения после обновления системы и несоответствии версий, приложение удаляется с устройства.

Чтобы показать как атрибут влияет на приложение после обновления системы, рассмотрим следующий пример:

Для приложения значение атрибута maxSdkVersion=5 . Пользователь устройства с Android 1.6 (API 4) скачал и установил приложение. Через несколько недель пользователь обновил версию Android до 2.0 (API 5). После обновления система вновь проверяет атрибут и оставляет приложение на устройстве. Приложение нормально работает. Однако, спустя некоторое время, устройство обновляется до версии Android 2.0.1 (API 6). После обновления, система не может подтвердить работу приложения, поскольку уровень API системы (6) выше, чем установленный в качестве максимального для приложения (5). Система удаляет приложение.

Предупреждение: указание данного атрибута не рекомендуется! Во-первых, нет необходимости устанавливать атрибута как средство защиты от установки на новые версии Android по мере их выхода, поскольку новые версии имеют полную обратную совместимость. Приложение должно правильно работать с новыми версиями, при условии, что используется стандартное API. Во-вторых, обратите внимание, что в некоторых случаях указание атрибута может привести к удалению приложения после очередного обновления системы до более высокого уровня API. Большинство устройств периодически обновляют версию платформы по воздуху, поэтому вы должны учитывать этот факт, прежде чем указать данный атрибут.

Добавлено в API 4.

Android после версии 2.0.1 больше не проверяет атрибут maxSdkVersion во время установки приложения или после обновления системы. Google Play будет использовать атрибут для фильтрации приложений, чтобы предотвратить установку на несоответствующие устройства.

ДОБАВЛЕНО: уровень API 1

Что такое уровень API?

Уровень API это целое число, которое идентифицирует уникальную ревизию API платформы Android.

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

  • набор пакетов и классов ядра.
  • набор XML элементов и атрибутов для файла манифеста.
  • набор XML элементов и атрибутов для объявления ресурсов.
  • набор намерений.
  • набор разрешений, которые требуют приложения, а также включены в системы.

Каждая последующая версия Android может включать обновление системных приложений.

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

Фреймворк, который использует платформа Android задается с помощью целого числа, который называется уровень API. Каждая версия Android поддерживает ровно один уровень API, хотя он включает также все более ранние версии (вплоть до API 1). Первый выпуск Android соответствует API 1.

Platform Version API Level VERSION_CODE Notes
Android 5.0 LOLLIPOP Platform Highlights
Android 4.4W KITKAT_WATCH KitKat for Wearables Only
Android 4.4 KITKAT Platform Highlights
Android 4.3
Похожие публикации