Уровень API: 5
Android 2.0 — это основная версия платформы, которую можно будет развернуть на телефонах под управлением Android начиная с ноября 2009 года. Эта версия включает в себя новые функции для пользователей и разработчиков, а также изменения в API платформы Android.
Для разработчиков платформа Android 2.0 доступна в виде загружаемого компонента Android SDK. Загружаемая платформа включает в себя полностью совместимую библиотеку Android и образ системы, а также набор оболочек эмулятора, примеры приложений и многое другое. Загружаемая платформа полностью совместима и не содержит внешних библиотек.
Чтобы начать разработку или тестирование на платформе Android 2.0, используйте Android SDK и инструмент AVD Manager, чтобы загрузить платформу в свой SDK.
Основные характеристики платформы
Список новых пользовательских функций и особенностей платформы см. в документе «Основные характеристики платформы Android 2.0» .
Встроенные приложения
Образ системы, включенный в загружаемую платформу, предоставляет следующие встроенные приложения:
|
|
Места
Образ системы, включенный в загружаемую платформу, предоставляет множество встроенных языковых стандартов. В некоторых случаях для локалей доступны строки, специфичные для региона. В других случаях используется версия языка по умолчанию. Языки, доступные в образе системы Android 2.0, перечислены ниже (с языковым дескриптором языка _ страны/региона ).
|
Локализованные строки пользовательского интерфейса соответствуют языковым стандартам, доступным через настройки.
Скины Эмулятора
Загружаемая платформа включает в себя набор скинов эмулятора, которые вы можете использовать для моделирования вашего приложения на экранах разных размеров и разрешений. Скины эмулятора:
- QVGA (240x320, низкая плотность, небольшой экран)
- WQVGA (240x400, низкая плотность, обычный экран)
- FWQVGA (240x432, низкая плотность, обычный экран)
- HVGA (320x480, средняя плотность, обычный экран)
- WVGA800 (480x800, высокая плотность, обычный экран)
- WVGA854 (высокая плотность 480x854, обычный экран)
Дополнительную информацию о том, как разработать приложение, которое правильно отображается и работает на всех устройствах под управлением Android, см. в разделе «Поддержка нескольких экранов» .
Возможности разработчика
В разделах ниже представлена информация о новых функциях разработчиков, предлагаемых загружаемым компонентом платформы Android 2.0.
Поддержка муравьев
- Подписание приложений в режиме отладки и выпуска. Подписание в режиме выпуска включает встроенную поддержку оптимизации
zipalign
. Дополнительную информацию см. в разделе «Подписание приложений» . - Добавляет новую систему сборки Ant с поддержкой проектов инструментирования Emma (покрытие кода).
API платформы
В разделах ниже представлена информация об API платформы приложений, предоставляемом платформой Android 2.0.
уровень API
Платформа Android 2.0 предоставляет обновленную версию API платформы. Как и в предыдущих версиях, API Android 2.0 присвоен целочисленный идентификатор — 5 , который хранится в самой системе. Этот идентификатор, называемый «уровнем API», позволяет системе правильно определить, совместимо ли приложение с системой, до его установки.
Чтобы использовать API-интерфейсы, представленные в Android 2.0, в вашем приложении, вам необходимо установить правильное значение «5» в атрибутах элемента <uses-sdk>
в манифесте вашего приложения.
Дополнительные сведения о том, как использовать уровень API, см. в документе «Уровни API» .
Сводка изменений API
Bluetooth
- Включить/выключить Bluetooth
- Обнаружение устройств и служб
- Подключитесь к удаленному устройству с помощью RFCOMM и отправьте/получите данные.
- Рекламируйте услуги RFCOMM и прослушивайте входящее соединение RFCOMM
Адаптеры синхронизации
- Новые API для адаптеров синхронизации для подключения к любому серверу
Менеджер по работе с клиентами
- Централизованный API-интерфейс менеджера учетных записей для безопасного хранения и доступа к токенам/паролям аутентификации.
Контакты
- Новые API контактов, которые позволяют получать данные из нескольких учетных записей
- Новые API-интерфейсы платформы быстрого контакта позволяют разработчикам создавать значки контактов в своих приложениях. При нажатии на бейдж открывается окно со списком способов связаться с человеком в один клик.
Веб-представление
- Устаревшие классы: UrlInterceptHandler, Plugin, PluginData, PluginList, UrlInterceptRegistry.
Камера
- Новые параметры цветового эффекта, сюжетного режима, режима вспышки, режима фокусировки, баланса белого, вращения и других настроек.
- Новый интерфейс ZoomCallback для выполнения действий при изменении уровня масштабирования.
СМИ
- MediaScanner теперь создает миниатюры для всех изображений, когда они вставляются в MediaStore.
- Новый API миниатюр для получения миниатюр изображений и видео по запросу.
Другая структура
- Новые системные темы в стиле android.R.style позволяют легко отображать действия поверх текущих обоев системы или сохранять предыдущую активность видимой в фоновом режиме.
- Новый API WallpaperManager заменяет и расширяет API обоев, которые ранее находились в контексте, позволяя приложениям запрашивать и устанавливать системные обои.
- Новые API-интерфейсы служб, помогающие приложениям правильно обрабатывать жизненный цикл службы, в частности, в ситуациях с нехваткой памяти, когда служба может быть прекращена во время ее работы.
- Service.setForeground() устарел и теперь фактически не выполняет никаких операций. Его заменяет новый API startForeground(), который помогает (и требует) связать текущее уведомление с состоянием переднего плана.
- MotionEvent теперь может сообщать информацию об одновременном касании для устройств, которые его поддерживают. Одновременно можно отслеживать до трех указателей.
- KeyEvent имеет новые API-интерфейсы диспетчеризации клавиш, которые помогают реализовать поведение при нажатии и при нажатии, а также новый механизм отмены нажатий клавиш (для виртуальных клавиш).
- WindowManager.LayoutParams содержит новые константы, которые позволяют окну активировать экран при его отображении и показывать окно, даже если экран заблокирован. Это позволяет приложениям более аккуратно реализовывать такие функции, как будильники, которые должны разбудить устройство.
- Новые API-интерфейсы Intent, которые транслируют состояние стыковки устройства и позволяют приложениям запускать специальные действия, когда устройство помещено в настольную или автомобильную док-станцию.
Ключевые события, выполняемые при нажатии клавиши
Android 2.0 предназначен для работы на устройствах, которые используют виртуальные клавиши для ДОМОЙ, МЕНЮ, НАЗАД и ПОИСК, а не физические клавиши. Чтобы обеспечить наилучшее взаимодействие с пользователем на этих устройствах, платформа Android теперь выполняет эти кнопки при нажатии клавиши, для пары «нажатие/поднятие клавиши», а не при нажатии клавиши. Это помогает предотвратить случайные события кнопки и позволяет пользователю нажимать область кнопки, а затем перетаскивать ее, не создавая события.
Это изменение в поведении должно повлиять на ваше приложение только в том случае, если оно перехватывает события кнопок и выполняет действие при нажатии клавиши, а не при ее нажатии. Особенно, если ваше приложение перехватывает клавишу BACK, вам следует убедиться, что ваше приложение правильно обрабатывает ключевые события.
В общем, перехват клавиши BACK в приложении не рекомендуется, однако, если ваше приложение делает это и вызывает какое-то действие при нажатии клавиши, а не при ее нажатии, вам следует изменить свой код.
Если ваше приложение будет использовать API, представленные в Android 2.0 (API уровня 5), вы можете воспользоваться новыми API для управления парами ключ-событие:
- Если вы перехватываете клавишу BACK в действии или диалоге, просто реализуйте новый метод
onBackPressed()
. - Если вы перехватываете клавишу BACK в представлении, вам следует отслеживать событие нажатия клавиши (с помощью нового метода
startTracking()
), а затем вызывать действие при нажатии клавиши. Вот шаблон, который вы можете использовать:
Котлин
override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean { return when (keyCode) { KeyEvent.KEYCODE_BACK -> { if (event.repeatCount == 0) { event.startTracking() true } else { false } } ... else -> super.onKeyDown(keyCode, event) } } override fun onKeyUp(keyCode: Int, event: KeyEvent): Boolean { return when (keyCode) { KeyEvent.KEYCODE_BACK -> { if (event.isTracking && !event.isCanceled) { // *** DO ACTION HERE *** true } else { false } } ... else -> super.onKeyUp(keyCode, event) } }
Ява
public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { event.startTracking(); return true; } return super.onKeyDown(keyCode, event); } public boolean onKeyUp(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.isTracking() && !event.isCanceled()) { // *** DO ACTION HERE *** return true; } return super.onKeyUp(keyCode, event); }
Если вы хотите обновить устаревшее приложение, чтобы обработка клавиши НАЗАД работала правильно как для Android 2.0, так и для более старых версий платформы, вы можете использовать подход, аналогичный показанному выше. Ваш код может перехватывать событие целевой кнопки при нажатии клавиши, устанавливать флаг для отслеживания события клавиши, а затем также перехватывать событие при нажатии клавиши, выполняя желаемое действие, если установлен флаг отслеживания. Вам также нужно будет следить за изменениями фокуса и снимать флаг отслеживания при получении или потере фокуса.
Отчет о различиях API
Подробный обзор изменений API в Android 2.0 (API Level 5) по сравнению с предыдущей версией см. в отчете о различиях API .