Home | History | Annotate | Download | only in sdk
      1 page.title=Android 2.3.3 Platform
      2 sdk.platform.version=2.3.3
      3 sdk.platform.apiLevel=10
      4 
      5 
      6 @jd:body
      7 
      8 <div id="qv-wrapper">
      9 <div id="qv">
     10 
     11 <h2>In this document</h2>
     12 <ol>
     13   <li><a href="#relnotes">Revisions</a></li>
     14   <li><a href="#api">API Overview</a></li>
     15   <li><a href="#api-level">API Level</a></li>
     16   <li><a href="#apps">Built-in Applications</a></li>
     17   <li><a href="#locs">Locales</a></li>
     18   <li><a href="#skins">Emulator Skins</a></li>
     19 </ol>
     20 
     21 <h2>Reference</h2>
     22 <ol>
     23 <li><a
     24 href="{@docRoot}sdk/api_diff/{@sdkPlatformApiLevel}/changes.html">API
     25 Differences Report &raquo;</a> </li>
     26 </ol>
     27 
     28 <h2>See Also</h2>
     29 <ol>
     30   <li><a href="{@docRoot}sdk/adding-components.html">Adding SDK Components</a></li>
     31 </ol>
     32 
     33 </div>
     34 </div>
     35 
     36 <p>
     37 <em>API Level:</em>&nbsp;<strong>{@sdkPlatformApiLevel}</strong></p>
     38 
     39 <p>Android 2.3.3 is a small feature release that adds several improvements
     40 and APIs to the Android 2.3 platform.</p>
     41 
     42 <p>For developers, the Android {@sdkPlatformVersion} platform is available as a
     43 downloadable component for the Android SDK. The downloadable platform includes 
     44 an Android library and system image, as well as a set of emulator
     45 skins and more. The downloadable platform
     46 includes no external libraries.</p>
     47 
     48 <p>To get started developing or testing against Android
     49 {@sdkPlatformVersion}, use the Android SDK Manager to
     50 download the platform into your SDK. For more information,
     51 see <a href="{@docRoot}sdk/adding-components.html">Adding SDK
     52 Components</a>. If you are new to Android, <a
     53 href="{@docRoot}sdk/index.html">download the SDK Starter Package</a>
     54 first.</p>
     55 
     56 <p>For a high-level introduction to Android 2.3, see the <a
     57 href="{@docRoot}sdk/android-2.3-highlights.html">Platform Highlights</a>.</p>
     58 
     59 
     60 <h2 id="relnotes">Revisions</h2>
     61 
     62 <p>The sections below provide notes about successive releases of
     63 the Android {@sdkPlatformVersion} platform component for the Android SDK, as denoted by
     64 revision number. To determine what revision(s) of the Android
     65 {@sdkPlatformVersion} platforms are installed in your SDK environment, refer to
     66 the "Installed Packages" listing in the Android SDK and AVD Manager.</p>
     67 
     68 
     69 <div class="toggle-content opened" style="padding-left:1em;">
     70 
     71 <p><a href="#" onclick="return toggleContent(this)">
     72   <img src="{@docRoot}assets/images/triangle-opened.png"
     73 class="toggle-content-img" alt="" />
     74   Android {@sdkPlatformVersion}, Revision 2</a> <em>(July 2011)</em>
     75 </a></p>
     76 
     77 <div class="toggle-content-toggleme" style="padding-left:2em;">
     78 
     79 <dl>
     80 <dt>Dependencies:</dt>
     81 <dd>
     82 <p>Requires <a href="{@docRoot}sdk/tools-notes.html">SDK Tools r12</a> or
     83 higher.</p>
     84 </dd>
     85 <dt>Notes:</dt>
     86 <dd>
     87 <p>Improvements to the platform's rendering library to support the visual layout editor in the ADT
     88 Eclipse plugin. This revision allows for more drawing features in ADT and fixes several
     89 bugs in the previous rendering library. It also unlocks several editor features that were added in
     90 ADT 12.</p>
     91 </dd>
     92 </dl>
     93 
     94 </div>
     95 </div>
     96 
     97 <div class="toggle-content closed" style="padding-left:1em;">
     98 
     99 <p><a href="#" onclick="return toggleContent(this)">
    100   <img src="{@docRoot}assets/images/triangle-closed.png"
    101 class="toggle-content-img" alt="" />
    102   Android {@sdkPlatformVersion}, Revision 1</a> <em>(February 2011)</em>
    103 </a></p>
    104 
    105 <div class="toggle-content-toggleme" style="padding-left:2em;">
    106 <dl>
    107 <dt>Dependencies:</dt>
    108 <dd>
    109 <p>Requires SDK Tools r9 or higher.</p>
    110 </dd>
    111 </dl>
    112 
    113 </div>
    114 </div>
    115 
    116 
    117 <h2 id="api">API Overview</h2>
    118 
    119 <p>The sections below provide a technical overview of what's new for developers
    120 in {@sdkPlatformVersion}, including new features and changes in the framework
    121 API since the previous version.</p>
    122 
    123 <h3 id="nfc">Near Field Communications (NFC)</h3>
    124 
    125 <p>Android 2.3.3 provides improved and extended support for NFC, to allow
    126 applications to interact with more types of tags in new ways.</p>
    127 
    128 <p>A new, comprehensive set of APIs give applications read and write access
    129 to a wider range of standard tag technologies, including:</p>
    130 
    131 <ul>
    132 <li>NFC-A (ISO 14443-3A)</li>
    133 <li>NFC-B (ISO 14443-3B)</li>
    134 <li>NFC-F (JIS 6319-4)</li>
    135 <li>NFC-V (ISO 15693)</li>
    136 <li>ISO-DEP (ISO 14443-4)</li>
    137 <li>MIFARE Classic</li>
    138 <li>MIFARE Ultralight</li>
    139 <li>NFC Forum NDEF tags</li>
    140 </ul>
    141 
    142 <p>The platform also provides a limited peer-to-peer communication protocol
    143 and API. Foreground Activities can use the API to register an NDEF
    144 message that will get pushed to other NFC devices when they connect.</p>
    145 
    146 <p>Advanced tag dispatching now gives applications more control over how and
    147 when they are launched, when an NFC tag is discovered. Previously, the platform
    148 used a single-step intent dispatch to notify interested applications that a tag
    149 was discovered. The platform now uses a four-step process that enables the
    150 foreground application to take control of a tag event before it is passed to any
    151 other applications (<code>android.nfc.NfcAdapter.enableForegroundDispatch()</code>).
    152 
    153 The new dispatch process also lets apps listen for specific tag content and
    154 tag technologies, based on two new intent actions &mdash;
    155 <code>android.nfc.action.NDEF_DISCOVERED</code> and
    156 <code>android.nfc.action.TECH_DISCOVERED</code>.</p>
    157 
    158 <p>The NFC API is available in the {@link android.nfc} and 
    159 {@link android.nfc.tech} packages. The key classes are: </p>
    160 
    161 <ul>
    162 <li>{@link android.nfc.NfcAdapter}, which represents the NFC hardware on the device.</li>
    163 <li>{@link android.nfc.NdefMessage}, which represents an NDEF data message,
    164 the standard format in which "records" carrying data are transmitted between
    165 devices and tags. An NDEF message certain many NDEF records of different types.
    166 Applications can receive these messages from 
    167 {@link android.nfc.NfcAdapter#ACTION_NDEF_DISCOVERED NDEF_DISCOVERED},
    168 {@link android.nfc.NfcAdapter#ACTION_TECH_DISCOVERED TECH_DISCOVERED}, or
    169 {@link android.nfc.NfcAdapter#ACTION_TAG_DISCOVERED TAG_DISCOVERED} Intents.</li>
    170 <li>{@link android.nfc.NdefRecord}, delivered in an
    171 {@link android.nfc.NdefMessage}, which describes the type of data being shared
    172 and carries the data itself.</li>
    173 <li>{@link android.nfc.Tag}, which represents a tag scanned by the device.
    174 Multiple types of tags are supported, based on the underlying tag
    175 technology.</li>
    176 <li>{@link android.nfc.tech.TagTechnology}, an interface that gives applications
    177 access to tag properties and I/O operations based on the technologies present
    178 in the tag. For a full list of tag technologies supported in Android 2.3.3, see
    179 {@link android.nfc.tech}.</li>
    180 </ul>
    181 
    182 <p>NFC communication relies on wireless technology in the device hardware, and
    183 is not present in all Android devices. Android devices that do not support
    184 NFC will return a null object when
    185 {@link android.nfc.NfcAdapter#getDefaultAdapter(android.content.Context)
    186 getDefaultAdapter(Context)} is called, and
    187 <code>context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_NFC)</code>
    188 will return <code>false</code>. The NFC API is always present, however, regardless of
    189 underlying hardware support.</p>
    190 
    191 <p>To use the NFC API, applications must request permission from the user by
    192 declaring <code>&lt;uses-permission
    193 android:name="android.permission.NFC"&gt;</code> in their manifest files.</p>
    194 
    195 <p>Additionally, developers can request filtering on Google Play, such that
    196 their applications are not discoverable to users whose devices do not support
    197 NFC. To request filtering, add
    198 <code>&lt;uses-feature android:name="android.hardware.nfc"
    199 android:required="true"&gt;</code> to the application's manifest.</p>
    200 
    201 <p class="note">To look at sample code for NFC, see
    202 <a href="{@docRoot}resources/samples/NFCDemo/index.html">NFCDemo app</a>, <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/nfc/TechFilter.html">filtering by tag technology</a></li>, <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/nfc/ForegroundDispatch.html">using foreground dispatch</a>, and <a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/nfc/ForegroundNdefPush.html">foreground NDEF push (P2P)</a>.</p>
    203 
    204 <h3 id="bluetooth">Bluetooth</h3>
    205 
    206 <p>Android 2.3.3 adds platform and API support for Bluetooth nonsecure socket
    207 connections. This lets applications communicate with simple devices that may not
    208 offer a UI for authentication. See 
    209 {@link android.bluetooth.BluetoothDevice#createInsecureRfcommSocketToServiceRecord(java.util.UUID)} and 
    210 {@link android.bluetooth.BluetoothAdapter#listenUsingInsecureRfcommWithServiceRecord(java.lang.String, java.util.UUID)}
    211 for more information. </p>
    212 
    213 <h3 id="graphics">Graphics</h3>
    214 
    215 <ul>
    216 <li>A new {@link android.graphics.BitmapRegionDecoder} class lets applications
    217 decode a rectangle region from an image. The API is particularly useful when an
    218 original image is large and and the application only need parts of the image.
    219 </li>
    220 <li>A new {@link
    221 android.graphics.BitmapFactory.Options#inPreferQualityOverSpeed} field in {@link
    222 android.graphics.BitmapFactory.Options} allows applications to use a more accurate
    223 but slightly slower IDCT method in JPEG decode. This in turn improves the
    224 quality of the reconstructed image.</li>
    225 </ul>
    226 
    227 
    228 <h3 id="media">Media framework</h3>
    229 
    230 <ul>
    231 <li>A new {@link android.media.MediaMetadataRetriever} class provides a unified
    232 interface for retrieving frame and metadata from an input media file.</li>
    233 <li>{@link android.media.MediaRecorder.AudioEncoder} and {@link
    234 android.media.MediaRecorder.OutputFormat} include new fields for specifying AMR
    235 Wideband and AAC formats. </li>
    236 </ul>
    237 
    238 
    239 <h3 id="speech">Speech recognition</h3>
    240 
    241 <p>The speech-recognition API includes new constants to let you manage voice
    242 search results in new ways. Although the new constants are not needed for normal
    243 use of speech recognition, you could use them to offer a different view of voice
    244 search results in your application. For information, see {@link
    245 android.speech.RecognizerResultsIntent}.</p>
    246 
    247 
    248 <h2 id="api-level">API Level</h2>
    249 
    250 <p>The Android {@sdkPlatformVersion} platform delivers an updated version of
    251 the framework API. The Android {@sdkPlatformVersion} API
    252 is assigned an integer identifier &mdash;
    253 <strong>{@sdkPlatformApiLevel}</strong> &mdash; that is
    254 stored in the system itself. This identifier, called the "API Level", allows the
    255 system to correctly determine whether an application is compatible with
    256 the system, prior to installing the application. </p>
    257 
    258 <p>To use APIs introduced in Android {@sdkPlatformVersion} in your application,
    259 you need compile the application against the Android library that is provided in
    260 the Android {@sdkPlatformVersion} SDK platform. Depending on your needs, you might 
    261 also need to add an <code>android:minSdkVersion="{@sdkPlatformApiLevel}"</code>
    262 attribute to the <code>&lt;uses-sdk&gt;</code> element in the application's
    263 manifest. If your application is designed to run only on Android 2.3 and higher,
    264 declaring the attribute prevents the application from being installed on earlier
    265 versions of the platform.</p>
    266 
    267 <p>For more information about how to use API Level, see the <a
    268 href="{@docRoot}guide/appendix/api-levels.html">API Levels</a> document. </p>
    269 
    270 <h2 id="apps">Built-in Applications</h2>
    271 
    272 <p>The system image included in the downloadable platform provides these
    273 built-in applications:</p>
    274 
    275 <table style="border:0;padding-bottom:0;margin-bottom:0;">
    276 <tr>
    277 <td style="border:0;padding-bottom:0;margin-bottom:0;">
    278 <ul>
    279 <li>Browser</li>
    280 <li>Calculator</li>
    281 <li>Camera</li>
    282 <li>Clock</li>
    283 <li>Contacts</li>
    284 <li>Cusom Locale</li>
    285 <li>Dev Tools</li>
    286 <li>Downloads</li>
    287 <li>Email</li>
    288 </ul>
    289 </td>
    290 <td style="border:0;padding-bottom:0;margin-bottom:0;padding-left:5em;">
    291 <ul>
    292 <li>Gallery</li>
    293 <li>IMEs for Japanese, Chinese, and Latin text input</li>
    294 <li>Messaging</li>
    295 <li>Music</li>
    296 <li>Phone</li>
    297 <li>Search</li>
    298 <li>Settings</li>
    299 <li>Spare Parts (developer app)</li>
    300 <li>Speech Recorder</li>
    301 </ul>
    302 </td>
    303 </tr>
    304 </table>
    305 
    306 
    307 <h2 id="locs" style="margin-top:.75em;">Locales</h2>
    308 
    309 <p>The system image included in the downloadable SDK platform provides a variety of
    310 built-in locales. In some cases, region-specific strings are available for the
    311 locales. In other cases, a default version of the language is used. The
    312 languages that are available in the Android {@sdkPlatformVersion} system
    313 image are listed below (with <em>language</em>_<em>country/region</em> locale
    314 descriptor).</p>
    315 
    316 <table style="border:0;padding-bottom:0;margin-bottom:0;">
    317 <tr>
    318 <td style="border:0;padding-bottom:0;margin-bottom:0;">
    319 <ul>
    320 <li>Arabic, Egypt (ar_EG)</li>
    321 <li>Arabic, Israel (ar_IL)</li>
    322 <li>Bulgarian, Bulgaria (bg_BG)</li>
    323 <li>Catalan, Spain (ca_ES)</li>
    324 <li>Czech, Czech Republic (cs_CZ)</li>
    325 <li>Danish, Denmark(da_DK)</li>
    326 <li>German, Austria (de_AT)</li>
    327 <li>German, Switzerland (de_CH)</li>
    328 <li>German, Germany (de_DE)</li>
    329 <li>German, Liechtenstein (de_LI)</li>
    330 <li>Greek, Greece (el_GR)</li>
    331 <li>English, Australia (en_AU)</li>
    332 <li>English, Canada (en_CA)</li>
    333 <li>English, Britain (en_GB)</li>
    334 <li>English, Ireland (en_IE)</li>
    335 <li>English, India (en_IN)</li>
    336 <li>English, New Zealand (en_NZ)</li>
    337 <li>English, Singapore(en_SG)</li>
    338 <li>English, US (en_US)</li>
    339 <li>English, South Africa (en_ZA)</li>
    340 <li>Spanish (es_ES)</li>
    341 <li>Spanish, US (es_US)</li>
    342 <li>Finnish, Finland (fi_FI)</li>
    343 <li>French, Belgium (fr_BE)</li>
    344 <li>French, Canada (fr_CA)</li>
    345 <li>French, Switzerland (fr_CH)</li>
    346 <li>French, France (fr_FR)</li>
    347 <li>Hebrew, Israel (he_IL)</li>
    348 <li>Hindi, India (hi_IN)</li>
    349 </ul>
    350 </td>
    351 <td style="border:0;padding-bottom:0;margin-bottom:0;padding-left:5em;">
    352 <li>Croatian, Croatia (hr_HR)</li>
    353 <li>Hungarian, Hungary (hu_HU)</li>
    354 <li>Indonesian, Indonesia (id_ID)</li>
    355 <li>Italian, Switzerland (it_CH)</li>
    356 <li>Italian, Italy (it_IT)</li>
    357 <li>Japanese (ja_JP)</li>
    358 <li>Korean (ko_KR)</li>
    359 <li>Lithuanian, Lithuania (lt_LT)</li>
    360 <li>Latvian, Latvia (lv_LV)</li>
    361 <li>Norwegian-Bokmol, Norway(nb_NO)</li>
    362 <li>Dutch, Belgium (nl_BE)</li>
    363 <li>Dutch, Netherlands (nl_NL)</li>
    364 <li>Polish (pl_PL)</li>
    365 <li>Portuguese, Brazil (pt_BR)</li>
    366 <li>Portuguese, Portugal (pt_PT)</li>
    367 <li>Romanian, Romania (ro_RO)</li>
    368 <li>Russian (ru_RU)</li></li>
    369 <li>Slovak, Slovakia (sk_SK)</li>
    370 <li>Slovenian, Slovenia (sl_SI)</li>
    371 <li>Serbian (sr_RS)</li>
    372 <li>Swedish, Sweden (sv_SE)</li>
    373 <li>Thai, Thailand (th_TH)</li>
    374 <li>Tagalog, Philippines (tl_PH)</li>
    375 <li>Turkish, Turkey (tr_TR)</li>
    376 <li>Ukrainian, Ukraine (uk_UA)</li>
    377 <li>Vietnamese, Vietnam (vi_VN)</li>
    378 <li>Chinese, PRC (zh_CN)</li>
    379 <li>Chinese, Taiwan (zh_TW)</li>
    380 </td>
    381 </tr>
    382 </table>
    383 
    384 <p class="note"><strong>Note:</strong> The Android platform may support more
    385 locales than are included in the SDK system image. All of the supported locales
    386 are available in the <a href="http://source.android.com/">Android Open Source
    387 Project</a>.</p>
    388 
    389 <h2 id="skins">Emulator Skins</h2>
    390 
    391 <p>The downloadable platform includes a set of emulator skins that you can use
    392 for modeling your application in different screen sizes and resolutions. The
    393 emulator skins are:</p>
    394 
    395 <ul>
    396   <li>
    397     QVGA (240x320, low density, small screen)
    398   </li>
    399   <li>
    400     WQVGA400 (240x400, low density, normal screen)
    401   </li>
    402   <li>
    403     WQVGA432 (240x432, low density, normal screen)
    404   </li>
    405   <li>
    406     HVGA (320x480, medium density, normal screen)
    407   </li>
    408   <li>
    409     WVGA800 (480x800, high density, normal screen)
    410   </li>
    411   <li>
    412     WVGA854 (480x854 high density, normal screen)
    413   </li>
    414 </ul>
    415 
    416 <p>For more information about how to develop an application that displays
    417 and functions properly on all Android-powered devices, see <a
    418 href="{@docRoot}guide/practices/screens_support.html">Supporting Multiple
    419 Screens</a>.</p>
    420