Home | History | Annotate | Download | only in versions
      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="#api">API Overview</a></li>
     14   <li><a href="#api-level">API Level</a></li>
     15 </ol>
     16 
     17 <h2>Reference</h2>
     18 <ol>
     19 <li><a
     20 href="{@docRoot}sdk/api_diff/{@sdkPlatformApiLevel}/changes.html">API
     21 Differences Report &raquo;</a> </li>
     22 </ol>
     23 
     24 </div>
     25 </div>
     26 
     27 <p>
     28 <em>API Level:</em>&nbsp;<strong>{@sdkPlatformApiLevel}</strong></p>
     29 
     30 <p>Android 2.3.3 is a small feature release that adds several improvements
     31 and APIs to the Android 2.3 platform.</p>
     32 
     33 <p>For developers, the Android {@sdkPlatformVersion} platform is available as a
     34 downloadable component for the Android SDK. The downloadable platform includes
     35 an Android library and system image, as well as a set of emulator skins and
     36 more. To get started developing or testing against Android {@sdkPlatformVersion},
     37 use the Android SDK Manager to download the platform into your SDK.</p>
     38 
     39 
     40 
     41 <h2 id="api">API Overview</h2>
     42 
     43 <p>The sections below provide a technical overview of what's new for developers
     44 in {@sdkPlatformVersion}, including new features and changes in the framework
     45 API since the previous version.</p>
     46 
     47 <h3 id="nfc">Near Field Communications (NFC)</h3>
     48 
     49 <p>Android 2.3.3 provides improved and extended support for NFC, to allow
     50 applications to interact with more types of tags in new ways.</p>
     51 
     52 <p>A new, comprehensive set of APIs give applications read and write access
     53 to a wider range of standard tag technologies, including:</p>
     54 
     55 <ul>
     56 <li>NFC-A (ISO 14443-3A)</li>
     57 <li>NFC-B (ISO 14443-3B)</li>
     58 <li>NFC-F (JIS 6319-4)</li>
     59 <li>NFC-V (ISO 15693)</li>
     60 <li>ISO-DEP (ISO 14443-4)</li>
     61 <li>MIFARE Classic</li>
     62 <li>MIFARE Ultralight</li>
     63 <li>NFC Forum NDEF tags</li>
     64 </ul>
     65 
     66 <p>The platform also provides a limited peer-to-peer communication protocol
     67 and API. Foreground Activities can use the API to register an NDEF
     68 message that will get pushed to other NFC devices when they connect.</p>
     69 
     70 <p>Advanced tag dispatching now gives applications more control over how and
     71 when they are launched, when an NFC tag is discovered. Previously, the platform
     72 used a single-step intent dispatch to notify interested applications that a tag
     73 was discovered. The platform now uses a four-step process that enables the
     74 foreground application to take control of a tag event before it is passed to any
     75 other applications (<code>android.nfc.NfcAdapter.enableForegroundDispatch()</code>).
     76 
     77 The new dispatch process also lets apps listen for specific tag content and
     78 tag technologies, based on two new intent actions &mdash;
     79 <code>android.nfc.action.NDEF_DISCOVERED</code> and
     80 <code>android.nfc.action.TECH_DISCOVERED</code>.</p>
     81 
     82 <p>The NFC API is available in the {@link android.nfc} and 
     83 {@link android.nfc.tech} packages. The key classes are: </p>
     84 
     85 <ul>
     86 <li>{@link android.nfc.NfcAdapter}, which represents the NFC hardware on the device.</li>
     87 <li>{@link android.nfc.NdefMessage}, which represents an NDEF data message,
     88 the standard format in which "records" carrying data are transmitted between
     89 devices and tags. An NDEF message certain many NDEF records of different types.
     90 Applications can receive these messages from 
     91 {@link android.nfc.NfcAdapter#ACTION_NDEF_DISCOVERED NDEF_DISCOVERED},
     92 {@link android.nfc.NfcAdapter#ACTION_TECH_DISCOVERED TECH_DISCOVERED}, or
     93 {@link android.nfc.NfcAdapter#ACTION_TAG_DISCOVERED TAG_DISCOVERED} Intents.</li>
     94 <li>{@link android.nfc.NdefRecord}, delivered in an
     95 {@link android.nfc.NdefMessage}, which describes the type of data being shared
     96 and carries the data itself.</li>
     97 <li>{@link android.nfc.Tag}, which represents a tag scanned by the device.
     98 Multiple types of tags are supported, based on the underlying tag
     99 technology.</li>
    100 <li>{@link android.nfc.tech.TagTechnology}, an interface that gives applications
    101 access to tag properties and I/O operations based on the technologies present
    102 in the tag. For a full list of tag technologies supported in Android 2.3.3, see
    103 {@link android.nfc.tech}.</li>
    104 </ul>
    105 
    106 <p>NFC communication relies on wireless technology in the device hardware, and
    107 is not present in all Android devices. Android devices that do not support
    108 NFC will return a null object when
    109 {@link android.nfc.NfcAdapter#getDefaultAdapter(android.content.Context)
    110 getDefaultAdapter(Context)} is called, and
    111 <code>context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_NFC)</code>
    112 will return <code>false</code>. The NFC API is always present, however, regardless of
    113 underlying hardware support.</p>
    114 
    115 <p>To use the NFC API, applications must request permission from the user by
    116 declaring <code>&lt;uses-permission
    117 android:name="android.permission.NFC"&gt;</code> in their manifest files.</p>
    118 
    119 <p>Additionally, developers can request filtering on Google Play, such that
    120 their applications are not discoverable to users whose devices do not support
    121 NFC. To request filtering, add
    122 <code>&lt;uses-feature android:name="android.hardware.nfc"
    123 android:required="true"&gt;</code> to the application's manifest.</p>
    124 
    125 <p class="note">To look at sample code for NFC, see
    126 <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>
    127 
    128 <h3 id="bluetooth">Bluetooth</h3>
    129 
    130 <p>Android 2.3.3 adds platform and API support for Bluetooth nonsecure socket
    131 connections. This lets applications communicate with simple devices that may not
    132 offer a UI for authentication. See 
    133 {@link android.bluetooth.BluetoothDevice#createInsecureRfcommSocketToServiceRecord(java.util.UUID)} and 
    134 {@link android.bluetooth.BluetoothAdapter#listenUsingInsecureRfcommWithServiceRecord(java.lang.String, java.util.UUID)}
    135 for more information. </p>
    136 
    137 <h3 id="graphics">Graphics</h3>
    138 
    139 <ul>
    140 <li>A new {@link android.graphics.BitmapRegionDecoder} class lets applications
    141 decode a rectangle region from an image. The API is particularly useful when an
    142 original image is large and and the application only need parts of the image.
    143 </li>
    144 <li>A new {@link
    145 android.graphics.BitmapFactory.Options#inPreferQualityOverSpeed} field in {@link
    146 android.graphics.BitmapFactory.Options} allows applications to use a more accurate
    147 but slightly slower IDCT method in JPEG decode. This in turn improves the
    148 quality of the reconstructed image.</li>
    149 </ul>
    150 
    151 
    152 <h3 id="media">Media framework</h3>
    153 
    154 <ul>
    155 <li>A new {@link android.media.MediaMetadataRetriever} class provides a unified
    156 interface for retrieving frame and metadata from an input media file.</li>
    157 <li>{@link android.media.MediaRecorder.AudioEncoder} and {@link
    158 android.media.MediaRecorder.OutputFormat} include new fields for specifying AMR
    159 Wideband and AAC formats. </li>
    160 </ul>
    161 
    162 
    163 <h3 id="speech">Speech recognition</h3>
    164 
    165 <p>The speech-recognition API includes new constants to let you manage voice
    166 search results in new ways. Although the new constants are not needed for normal
    167 use of speech recognition, you could use them to offer a different view of voice
    168 search results in your application. For information, see {@link
    169 android.speech.RecognizerResultsIntent}.</p>
    170 
    171 
    172 <h2 id="api-level">API Level</h2>
    173 
    174 <p>The Android {@sdkPlatformVersion} platform delivers an updated version of
    175 the framework API. The Android {@sdkPlatformVersion} API
    176 is assigned an integer identifier &mdash;
    177 <strong>{@sdkPlatformApiLevel}</strong> &mdash; that is
    178 stored in the system itself. This identifier, called the "API Level", allows the
    179 system to correctly determine whether an application is compatible with
    180 the system, prior to installing the application. </p>
    181 
    182 <p>To use APIs introduced in Android {@sdkPlatformVersion} in your application,
    183 you need compile the application against the Android library that is provided in
    184 the Android {@sdkPlatformVersion} SDK platform. Depending on your needs, you might 
    185 also need to add an <code>android:minSdkVersion="{@sdkPlatformApiLevel}"</code>
    186 attribute to the <code>&lt;uses-sdk&gt;</code> element in the application's
    187 manifest. If your application is designed to run only on Android 2.3 and higher,
    188 declaring the attribute prevents the application from being installed on earlier
    189 versions of the platform.</p>
    190 
    191 <p>For more information, read <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">What is API
    192 Level?</a></p>