Уровень API: 9
Для разработчиков платформа Android 2.3 ( GINGERBREAD
) доступна в виде загружаемого компонента Android SDK. Загружаемая платформа включает в себя библиотеку Android и образ системы, а также набор скинов эмулятора и многое другое. Чтобы начать разработку или тестирование для Android 2.3, используйте Android SDK Manager, чтобы загрузить платформу в свой SDK.
Обзор API
�� разделах ниже представлен технический обзор того, что нового для разработчиков в версии 2.3, включая новые функции и изменения в API платформы по сравнению с предыдущей версией.
VoIP на базе SIP
Платформа теперь включает в себя стек протоколов SIP и API-интерфейс платформы, которые позволяют разработчикам создавать приложения для интернет-телефонии. Используя API, приложения могут предлагать функции голосовых вызовов без необходимости управлять сеансами, связью на транспортном уровне или аудио — они прозрачно обрабатываются SIP API и службами платформы.
SIP API доступен в пакете android.net.sip
. Ключевой класс — SipManager
, который приложения используют для настройки профилей SIP и управления ими, а затем инициации аудиовызовов и приема аудиовызовов. После установления аудиовызова приложения могут отключать звук вызовов, включать режим громкой связи, отправлять сигналы DTMF и многое другое. Приложения также могут использовать SipManager
для создания стандартных SIP-соединений.
Базовый стек и услуги SIP платформы доступны на устройствах по усмотрению производителя и соответствующего оператора связи. По этой причине приложения должны использовать метод isApiSupported()
чтобы проверить, доступна ли поддержка SIP, прежде чем предоставлять пользователям функции вызова.
Чтобы использовать SIP API, приложения должны запросить разрешение у пользователя, объявив <uses-permission android:name="android.permission.INTERNET">
и <uses-permission android:name="android.permission.USE_SIP">
в своих файлы манифеста.
Кроме того, разработчики могут запросить фильтрацию в Google Play, чтобы их приложения не были видны пользователям, чьи устройства не включают стек и сервисы SIP платформы. Чтобы запросить фильтрацию, добавьте в приложение <uses-feature android:name="android.software.sip" android:required="true">
и <uses-feature android:name="android.software.sip.voip">
манифест.
Для получения дополнительной информации прочтите руководство разработчика SIP .
Связь ближнего радиуса действия (NFC)
Android 2.3 включает в себя стек NFC и API-интерфейс платформы, который позволяет разработчикам считывать теги NDEF, которые обнаруживаются, когда пользователь прикасается к устройству с поддержкой NFC, для маркировки элементов, встроенных в наклейки, интеллектуальные плакаты и даже другие устройства.
Платформа предоставляет базовые службы NFC, которые работают с аппаратным обеспечением устройства для обнаружения тегов, когда они попадают в зону действия. При обнаружении тега платформа уведомляет приложения путем широковещательной передачи намерения, добавляя сообщения NDEF тега к намерению в качестве дополнительных элементов. Приложения могут создавать фильтры намерений для распознавания и обработки целевых тегов и сообщений. Например, после получения тега по намерению приложения извлекают сообщения NDEF, сохраняют их, оповещают пользователя или обрабатывают их другими способами.
API NFC доступен в пакете android.nfc
. Ключевые классы:
-
NfcAdapter
, который представляет оборудование NFC на устройстве. -
NdefMessage
, который представляет сообщение данных NDEF, стандартный формат, в котором «записи», содержащие данные, передаются между устройствами и тегами. Приложения могут получать эти сообщения изACTION_TAG_DISCOVERED
Intents. -
NdefRecord
, доставленный вNdefMessage
, который описывает тип совместно используемых данных и содержит сами данные.
Связь NFC опирается на беспроводную технологию в аппаратном обеспечении устройства, поэтому поддержка функций NFC платформы на конкретных устройствах определяется их производителями. Чтобы определить поддержку NFC на текущем устройстве, приложения могут вызвать isEnabled()
для запроса NfcAdapter
. Однако NFC API присутствует всегда, неза��исимо от базовой аппаратной поддержки.
Чтобы использовать NFC API, приложения должны запросить разрешение у пользователя, объявив <uses-permission android:name="android.permission.NFC">
в своих файлах манифеста.
Кроме того, разработчики могут запросить фильтрацию в Google Play, чтобы их приложения не были видны пользователям, чьи устройства не поддерживают NFC. Чтобы запросить фильтрацию, добавьте <uses-feature android:name="android.hardware.nfc" android:required="true">
в манифест приложения.
Чтобы просмотреть пример приложения, использующего NFC API, см. NFCDemo .
Гироскоп и другие датчики
В Android 2.3 добавлена поддержка платформы и API для нескольких новых типов показаний датчиков — гироскопа, вектора вращения, линейного ускорения, гравитации и барометра. Разработчики могут использовать показания новых датчиков для создания приложений, которые быстро и плавно реагируют на точные изменения положения и движения устройства. API датчика сообщает об изменениях гироскопа и других датчиков заинтересованным приложениям, независимо от того, работают ли они в платформе приложения или в собственном коде.
Обратите внимание, что конкретный набор аппаратных датчиков, доступных на каждом конкретном устройстве, варьируется по усмотрению производителя устройства.
Разработчики могут запросить фильтрацию в Google Play, чтобы их приложения не были видны пользователям, чьи устройства не оснащены датчиком гироскопа. Для этого добавьте <uses-feature android:name="android.hardware.sensor.gyroscope" android:required="true">
в манифест приложения.
Подробности API см. в Sensor
.
Поддержка нескольких камер
Приложения теперь могут использовать любые камеры, доступные на устройстве, для фото- или видеосъемки. Camera
позволяет приложениям запрашивать количество доступных камер и уникальные характеристики каждой.
- Новый класс
Camera.CameraInfo
хранит характеристики положения камеры (ориентация, фронтальная или задняя сторона). - Новые методы
getNumberOfCameras()
иgetCameraInfo()
в классеCamera
позволяют приложениям запрашивать доступные камеры и открывать нужную камеру. - Новый метод
get()
позволяет приложениям получатьCamcorderProfile
для конкретной камеры. - Новый
getJpegEncodingQualityParameter()
позволяет приложениям получать уровень качества захвата неподвижных изображений для конкретной камеры.
Чтобы просмотреть пример кода для доступа к фронтальной камере, см. CameraPreview.java в примере приложения ApiDemos.
API камеры также добавляет:
- Новые параметры для камер, включая расстояние фокусировки, режим фокусировки и максимальную/минимальную частоту кадров предварительного просмотра. Новые
getFocusDistances()
,getPreviewFpsRange()
иgetSupportedPreviewFpsRange()
для получения параметров камеры, а такжеsetPreviewFpsRange()
для установки частоты кадров предварительного просмотра.
Микшируемые звуковые эффекты
Медиа-структура платформы добавляет поддержку новых звуковых эффектов для каждой дорожки или глобальных, включая усиление басов, виртуализацию наушников, эквалайзер и реверберацию.
- Новый пакет
android.media.audiofx
предоставляет API для доступа к аудиоэффектам. - New
AudioEffect
— это базовый класс для управления звуковыми эффектами, предоставляемыми звуковой платформой Android. - Новый идентификатор аудиосеанса, который позволяет приложению связать набор звуковых эффектов с экземпляром
AudioTrack
илиMediaPlayer
. - Новый конструктор класса
AudioTrack
, который позволяет создаватьAudioTrack
с определенным идентификатором сеанса. Новые методыattachAuxEffect()
,getAudioSessionId()
иsetAuxEffectSendLevel()
. - Новые методы
attachAuxEffect()
,getAudioSessionId()
,setAudioSessionId(int)
иsetAuxEffectSendLevel()
и поддерживаемые типы.
Чтобы просмотреть пример кода для звуковых эффектов, см. AudioFxDemo.java в примере приложения ApiDemos.
Медиа-структура также добавляет:
- Новая поддержка тега высоты в метаданных EXIF для файлов JPEG. Новый метод
getAltitude()
для получения значения тега высоты EXIF. - Новый метод
setOrientationHint()
позволяет приложению сообщатьMediaRecorder
об ориентации во время захвата видео.
Менеджер загрузок
Платформа включает в себя новую системную службу DownloadManager
, которая обраба��ывает длительные загрузки по HTTP. Приложения могут запросить загрузку URI в определенный целевой файл. DownloadManager
будет выполнять загрузку в фоновом режиме, заботясь о взаимодействии HTTP и повторяя загрузку после сбоев или при изменении подключения и перезагрузке системы.
- Приложения могут получить экземпляр класса
DownloadManager
, вызвавgetSystemService(String)
и передавDOWNLOAD_SERVICE
. Приложения, которые запрашивают загрузку через этот API, должны зарегистрировать широковещательный приемник дляACTION_NOTIFICATION_CLICKED
, чтобы соответствующим образом обрабатывать, когда пользователь нажимает на выполняемую загрузку в уведомлении или в пользовательском интерфейсе загрузок. - Класс
DownloadManager.Request
позволяет приложению предоставлять всю информацию, необходимую для запроса новой загрузки, например URI запроса и место назначения загрузки. URI запроса — единственный обязательный параметр. Обратите внимание, что местом назначения загрузки по умолчанию является общий том, где система может удалить ваш файл, если ей потребуется освободить место для использования системой. Для постоянного хранения загрузки укажите место назначения загрузки во внешнем хранилище (см.setDestinationUri(Uri)
). - Класс
DownloadManager.Query
предоставляет методы, которые позволяют приложению запрашивать и фильтровать активные загрузки.
Строгий режим
Чтобы помочь разработчикам отслеживать и улучшать производительность своих приложений, платформа предлагает новую системную функцию под названием StrictMode
. При реализации в приложении StrictMode перехватывает и уведомляет разработчика о случайной активности диска или сети, которая может снизить производительность приложения, например, о действиях, происходящих в основном потоке приложения (где принимаются операции пользовательского интерфейса и также происходит анимация). Разработчики могут оценивать проблемы использования сети и диска, возникающие в StrictMode, и при необходимости ��справлять их, сохраняя основной поток более отзывчивым и предотвращая показ диалоговых окон ANR пользователям.
-
StrictMode
— это базовый класс и основная точка интеграции с системой и виртуальной машиной. Класс предоставляет удобные методы для управления потоками и политиками виртуальной машины, применимыми к экземпляру. -
StrictMode.ThreadPolicy
иStrictMode.VmPolicy
содержат политики, которые вы определяете и применяете к экземплярам потоков и виртуальных машин.
Дополнительные сведения о том, как использовать StrictMode для оптимизации приложения, см. в документации класса и примере кода на android.os.StrictMode
.
Платформа пользовательского интерфейса
- Поддержка чрезмерной прокрутки
- Новая поддержка чрезмерной прокрутки в представлениях и виджетах. В представлениях приложения могут включать/отключать избыточную прокрутку для данного представления, устанавливать режим избыточной прокрутки, управлять расстоянием избыточной прокрутки и обрабатывать результаты избыточной прокрутки.
- В виджетах приложения могут управлять такими характеристиками прокрутки, как анимация, пружинение и расстояние прокрутки. Дополнительные сведения см.
android.view.View
иandroid.widget.OverScroller
. -
ViewConfiguration
также предоставляет методыgetScaledOverflingDistance()
иgetScaledOverscrollDistance()
. - Новые атрибуты
overScrollMode
,overScrollFooter
иoverScrollHeader
для элементов<ListView>
для управления поведением чрезмерной прокрутки.
- Поддержка сенсорной фильтрации
- Новая поддержка сенсорной фильтрации, которая позволяет приложению повысить безопасность представлений, обеспечивающих доступ к конфиденциальным функциям. Например, сенсорная фильтрация подходит для обеспечения безопасности действий пользователя, таких как предоставление запроса на разрешение, совершение покупки или нажатие на рекламу. Подробности смотрите в документации класса View .
- Новый атрибут
filterTouchesWhenObscured
для элементов представления, который определяет, следует ли фильтровать прикосновения, когда окно представления закрыто другим видимым окном. Если установлено значение"true"
, представлени�� не будет получать касания всякий раз, когда над окном представления появляется всплывающее сообщение, диалоговое окно или другое окно. Подробности см. в разделе «Просмотр документации по безопасности» .
Чтобы просмотреть пример кода для сенсорной фильтрации, см. SecureView.java в примере приложения ApiDemos.
- Улучшенное управление событиями
- Новый базовый класс для событий ввода,
InputEvent
. Класс предоставляет методы, которые позволяют приложениям определять значение события, например, путем запроса устройства ввода, из которого возникло событие.KeyEvent
иMotionEvent
являются подклассамиInputEvent
. - Новый базовый класс для устройств ввода,
InputDevice
. Класс хранит информацию о возможностях конкретного устройства ввода и предоставляет методы, позволяющие приложениям определять, как интерпретировать события от устройства ввода.
- Новый базовый класс для событий ввода,
- Улучшенные события движения
- API
MotionEvent
расширен за счет включения информации «идентификатора указателя», которая позволяет приложениям отслеживать отдельные пальцы при их движении вверх и вниз. Класс добавляет множество методов, которые позволяют приложению эффективно работать с событиями движения. - Система ввода теперь имеет логику для генерации событий движения с новой информацией об идентификаторе указателя, синтезируя идентификаторы по мере того, как новые указатели не работают. Система отслеживает несколько идентификаторов указателей отдельно во время события движения и обеспечивает правильную непрерывность указателей, оценивая расстояние между последним и следующим набором указателей.
- API
- Элементы управления выделением текста
- Новый метод
setComposingRegion
позволяет приложению помечать область текста как составляющую текст, сохраняя текущий стиль. МетодgetSelectedText
возвращает выделенный текст приложению. Эти методы доступны вBaseInputConnection
,InputConnection
иInputConnectionWrapper
. - Новые атрибуты
textSelectHandle
,textSelectHandleLeft
,textSelectHandleRight
иtextSelectHandleWindowStyle
для<TextView>
для ссылки на элементы рисования, которые будут использоваться для отображения привязок выделения текста и стиля содержащего их окна.
- Новый метод
- Элементы управления активностью
-
ActivityInfo
добавляет новые константы для управления ориентацией активности:SCREEN_ORIENTATION_FULL_SENSOR
,SCREEN_ORIENTATION_REVERSE_LANDSCAPE
,SCREEN_ORIENTATION_REVERSE_PORTRAIT
,SCREEN_ORIENTATION_SENSOR_LANDSCAPE
иSCREEN_ORIENTATION_SENSOR_PORTRAIT
. - Новая константа
IMPORTANCE_PERCEPTIBLE
для поляimportance
вActivityManager.RunningAppProcessInfo
. Значение указывает, что конкретный процесс выполняет что-то, что считается активно заметным для пользователя. Примером может служить приложение, выполняющее фоновое воспроизведение музыки. - Метод Activity.setPersistent(boolean), позволяющий пометить действие как постоянное, устарел, и его реализация не используется.
-
- Стили текста и значков уведомлений
- Новые
TextAppearance.StatusBar.EventContent
,TextAppearance.StatusBar.EventContent.Title
,TextAppearance.StatusBar.Icon
иTextAppearance.StatusBar.Title
для управления стилем уведомлений.
- Новые
- Добавляет оставшиеся методы OpenGL ES 2.0
glDrawElements()
иglVertexAttribPointer()
в классandroid.opengl.GLES20
. - Добавляет поддержку формата пикселей
YV12
, пл��ского формата YCrCb 4:2:0. - Новый класс поставщика
AlarmClock
для установки будильника или его обработки. Поставщик содержит действие намеренияACTION_SET_ALARM
и дополнительные функции, которые можно использовать для запуска действия для установки нового будильника в приложении будильника. Приложения, которые хотят получить намерениеSET_ALARM
, должны создать действие, для которого требуется разрешение SET_ALARM. Приложения, которые хотят создать новый будильник, должны использоватьContext.startActivity()
, чтобы у пользователя была возможность выбрать, какое приложение будильника использовать. -
MediaStore
поддерживает новое действие Intent,PLAY_FROM_SEARCH
, которое позволяет приложению выполнять поиск музыкальных носителей и автоматически воспроизводить контент из результата, когда это возможно. Например, приложение может активировать это намерение в результате команды распознавания голоса для прослушивания музыки. -
MediaStore
также добавляет новый флагMEDIA_IGNORE_FILENAME
, который сообщает сканеру мультимедиа игнорировать медиафайлы в содержащем каталоге и его подкаталогах. Разработчики могут использовать это, чтобы избежать появления графики в галерее, а также предотвратить отображение звуков и музыки приложений в приложении «Музыка». - Поставщик
Settings
добавляет новые действия активностиAPPLICATION_DETAILS_SETTINGS
иMANAGE_ALL_APPLICATIONS_SETTINGS
, которые позволяют приложению отображать экран сведений для определенного приложения или отображать экран управления приложениями. - Поставщик
ContactsContract
добавляет тип данныхContactsContract.CommonDataKinds.SipAddress
для хранения адреса SIP (интернет-телефонии) контакта. -
LocationManager
теперь отслеживает запросы приложений, которые приводят к блокировке пробуждения или блокировке Wi-Fi, в соответствии сWorkSource
— управляемым системой классом, который идентифицирует приложение.LocationManager
отслеживает всех клиентов, запрашивающих периодические обновления, и сообщает о них своим поставщикам в виде параметраWorkSource
при установке минимального времени обновления. Поставщик сетевого определения используетWorkSource
для отслеживания блокировок пробуждения и Wi-Fi, инициированных приложением, и добавляет их к расходу батареи приложения, указанному в разделе «Управление приложениями». -
LocationManager
добавляет несколько новых методов, которые позволяют регистрировать активность для получения периодических или разовых обновлений местоположения на основе заданных критериев (см. ниже). - Новый класс
Criteria
позволяет приложению указывать набор критериев для выбора поставщика местоположения. Например, поставщики могут быть упорядочены по точности, энергопотреблению, способности сообщать высоту, скорость и пеленг, а также по денежной стоимости. - В Android 2.3 добавлен новый
StorageManager
, который поддерживает файлы OBB (Opaque Binary Blob). Хотя поддержка платформы OBB доступна в Android 2.3, инструменты разработки для создания файлов OBB и управления ими будут доступны только в начале 2011 года. - Платформа Android 2.3 добавляет официальную поддержку устройств, в которых нет SD-карт (хотя она обеспечивает виртуальный раздел SD-карты, когда физическая SD-карта недоступна). Удобный метод
isExternalStorageRemovable()
позволяет приложениям определять, присутствует ли физическая SD-карта. - Новые константы для объявления аппаратных и программных функций. См. список в разделе «Константы новых функций» ниже.
-
PackageInfo
добавляет новые поляfirstInstallTime
иlastUpdateTime
, в которых хранится ��ремя ��стан��вк�� п��кет�� и последнего обновления. - Новый метод
getProviderInfo()
для получения всей информации, известной о конкретном классе поставщика контента. -
TelephonyManager
добавляет константуNETWORK_TYPE_EVDO_B
для указания типа сети CDMA EVDO Rev B. - Новый метод
getPsc()
возвращает основной код скремблирования обслуживающей соты в сети UMTS. -
NativeActivity
— это новый тип класса Activity, обратные вызовы жизненного цикла которого реализованы непосредственно в машинном коде.NativeActivity
и его базовый собственный код выполняются в системе так же, как и другие действия — в частности, они запускаются в системном процессе приложения Android и выполняются в основном потоке пользовательского интерфейса приложения, и они получают те же обратные вызовы жизненного цикла, что и другие действия. - Новый класс
InputQueue
и интерфейс обратного вызова позволяют собственному коду управлять очередью событий. - Новый интерфейс
SurfaceHolder.Callback2
позволяет собственному коду управлятьSurfaceHolder
. - Новые методы
takeInputQueue
иtakeSurface()
вWindow
позволяют собственному коду управлять событиями и поверхностями. -
dalvik.system
удаляет несколько классов, которые ранее считались устаревшими. - Основные библиотеки Dalvik:
- Новые коллекции:
ArrayDeque
,NavigableMap
,ConcurrentSkipListMap
,LinkedBlockingDeque
- Новые утилиты
Arrays
:binarySearch()
,copyOf()
,copyOfRange()
и другие. -
CookieManager
дляHttpURLConnection
. - Более полные сетевые API:
InterfaceAddress
,NetworkInterface
иIDN
- Элементы управления чтением и записью
File
-
String.isEmpty()
-
Normalizer
иNormalizer.Form
- Улучшены сокеты сервера
javax.net.ssl
.
- Новые коллекции:
- Новый атрибут
xlargeScreens
для элемента<supports-screens>
, указывающий, поддерживает ли приложение форм-факторы очень большого экрана. Подробности см. в разделе «Поддержка нескольких экранов» . - Новые значения атрибута
android:screenOrientation
элемента<activity>
:-
"reverseLandscape"
— Активность хотела бы, чтобы экран был в альбомной ориентации, повернут в сторону, противоположную обычной альбомной ориентации. -
"reversePortrait"
— Действию хотелось бы, чтобы экран был в книжной ориентации, повернут в сторону, противоположную обычной портретной ориентации. -
"sensorLandscape"
— Активность хотела бы, чтобы экран был в альбомной ориентации, но может использовать датчик, чтобы изменить направление, в котором смотрит экран. -
"sensorPortrait"
— Активность хотела бы, чтобы экран был в книжной ориентации, но может использовать датчик, чтобы изменить направление, в котором смотрит экран. -
"fullSensor"
— ориентация определяется датчиком физической ориентации: дисплей будет вращаться в зависимости от того, как пользователь перемещает устройство. Это позволяет осуществлять любой из 4 возможных поворотов, независимо от того, что обычно делает устройство (например, некоторые устройства обычно не используют поворот на 180 градусов).
-
-
com.android.permission.SET_ALARM
— позволяет приложению транслировать намерение установи��ь будильник для пользователя. Это разрешение должно потребоваться для действия, которое обрабатывает действие намеренияSET_ALARM
. -
android.permission.USE_SIP
— позволяет приложению использоватьSIP API
для совершения или приема интернет-вызовов. -
android.permission.NFC
— позволяет приложению использоватьNFC API
для чтения тегов NFC. -
android.hardware.audio.low_latency
— приложение использует аудиоконвейер с малой задержкой на устройстве и чувствительно к задержкам или задержке ввода или вывода звука. -
android.hardware.camera.front
— приложение использует фронтальную камеру устройства. -
android.hardware.nfc
— приложение использует функции радио NFC в устройстве. -
android.hardware.sensor.barometer
— приложение использует барометр устройства. -
android.hardware.sensor.gyroscope
— приложение использует датчик гироскопа устройства. -
android.software.sip
— приложение использует SIP API на устройстве. -
android.software.sip.voip
— приложение использует на устройстве службу VoIP на основе SIP. -
android.hardware.touchscreen.multitouch.jazzhand
— приложение использует расширенные возможности многоточечного мультитач на экране устройства для полностью независимого отслеживания пяти или более точек.
Очень большие экраны
Платформа теперь поддерживает очень большие размеры экрана, например те, которые можно найти на планшетных устройствах. Разработчики могут указать, что их приложения предназначены для поддержки очень больших размеров экрана, добавив элемент <supports screens ... android:xlargeScreens="true">
в свои файлы манифеста. Приложения могут использовать новый квалификатор ресурса xlarge
для пометки ресурсов, специфичных для очень больших экранов. Подробную информацию о поддержке очень больших и других размеров экрана см. в разделе «Поддержка нескольких экранов» .
Графика
Поставщики контента
Расположение
Хранилище
Менеджер пакетов
Телефония
Собственный доступ к жизненному циклу активности, Windows
Android 2.3 предоставляет широкий набор API-интерфейсов для приложений, использующих собственный код. Классы фреймворка, представляющие интерес для таких приложений, включают:
Полную информацию о работе с собственным кодом или загрузке NDK см. на странице Android NDK .
Среда выполнения Далвика
Новые элементы и атрибуты манифеста
Новые разрешения
Новые константы функций
Платформа добавляет несколько новых аппаратных функций, которые разработчики могут объявить в манифестах своих приложений как необходимые для своих приложений. Это позволяет разработчикам контролировать фильтрацию их приложений при публикации в Google Play.
Полную информацию о том, как объявлять функции и использовать их для фильтрации, см. в документации <uses-feature>
.
Отчет о различиях API
Подробное описание всех изменений API в Android 2.3 (уровень API 9) см. в отчете о различиях API .
Уровень API
Платформа Android 2.3 предоставляет обновленную версию API платформы. API Android 2.3 присвоен целочисленный идентификатор — 9 , который хранится в самой системе. Этот идентификатор, называемый «уровнем API», позволяет системе правильно определить, совместимо ли приложение с системой, до его установки.
Чтобы использовать API-интерфейсы, представленные в Android 2.3, в вашем приложении, вам необходимо скомпилировать приложение с помощью библиотеки Android, предо��т��вляемой н�� ��латформе Android 2.3 SDK. В зависимости от ваших потребностей вам также может потребоваться добавить атрибут android:minSdkVersion="9"
к элементу <uses-sdk>
в манифесте приложения. Если ваше приложение предназначено для работы только на Android 2.3 и выше, объявление атрибута не позволит установить приложение на более ранние версии платформы.
Для получения дополнительной информации прочитайте «Что такое уровень API?».