1 page.title=Android 2.3.3 APIs 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 »</a> </li> 22 </ol> 23 24 </div> 25 </div> 26 27 <p> 28 <em>API Level:</em> <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 — 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><uses-permission 117 android:name="android.permission.NFC"></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><uses-feature android:name="android.hardware.nfc" 123 android:required="true"></code> to the application's manifest.</p> 124 125 <p class="note">For more information, read the 126 <a href="{@docRoot}guide/topics/connectivity/nfc/index.html">NFC</a> developer guide.</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 — 177 <strong>{@sdkPlatformApiLevel}</strong> — 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><uses-sdk></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>