Андроид 2.0, выпуск 1

Уровень 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» .

Встроенные приложения

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

  • Будильник
  • Браузер
  • Калькулятор
  • Видеокамера
  • Камера
  • Контакты
  • Пользовательская локаль (приложение для разработчика)
  • Инструменты разработчика (приложение для разработчиков)
  • номеронабиратель
  • Электронная почта
  • Галерея
  • Конструктор жестов
  • IME для ввода текста на японском языке
  • Обмен сообщениями
  • Музыка
  • Настройки
  • Запасные части (приложение для разработчиков)

Места

Образ системы, включенный в загружаемую платформу, предоставляет множество встроенных языковых стандартов. В некоторых случаях для локалей доступны строки, специфичные для региона. В других случаях используется версия языка по умолчанию. Языки, доступные в образе системы Android 2.0, перечислены ниже (с языковым дескриптором языка _ страны/региона ).

  • Китайский, КНР (zh_CN)
  • Китайский, Тайвань (zh_TW)
  • Чешский (cs_CZ)
  • Голландский, Нидерланды (nl_NL)
  • Голландия, Бельгия (nl_BE)
  • Английский, США (en_US)
  • Английский, Великобритания (en_GB)
  • Английский, Канада (en_CA)
  • Английский, Австралия (en_AU)
  • Английский, Новая Зеландия (en_NZ)
  • Английский, Сингапур(en_SG)
  • Французский, Франция (fr_FR)
  • Французский, Бельгия (fr_BE)
  • Французский, Канада (fr_CA)
  • Французский, Швейцария (fr_CH)
  • Немецкий, Германия (de_DE)
  • Немецкий, Австрия (de_AT)
  • Немецкий, Швейцария (de_CH)
  • Немецкий, Лихтенштейн (de_LI)
  • Итальянский, Италия (it_IT)
  • Итальянский, Швейцария (it_CH)
  • японский (ja_JP)
  • Корейский (ko_KR)
  • Польский (pl_PL)
  • Русский (ru_RU)
  • испанский (es_ES)
  • Локализованные строки пользовательского интерфейса соответствуют языковым стандартам, доступным через настройки.

    Скины Эмулятора

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

    • 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 .