Dirk Dougherty | 50f8445 | 2010-11-11 11:52:05 -0800 | [diff] [blame] | 1 | page.title=Android 2.3 Platform Highlights |
| 2 | |
| 3 | @jd:body |
| 4 | |
| 5 | |
| 6 | <style type="text/css"> |
| 7 | #jd-content { |
| 8 | max-width:1200px; |
| 9 | } |
| 10 | #jd-content div.screenshot { |
| 11 | float:left; |
| 12 | clear:left; |
| 13 | padding:15px 30px 15px 0; |
| 14 | } |
| 15 | #jd-content div.video { |
| 16 | float:right; |
| 17 | padding:0 60px 40px; |
| 18 | margin-top:-15px; |
| 19 | } |
| 20 | #jd-content table.columns { |
| 21 | margin:0 0 1em 0; |
| 22 | } |
| 23 | #jd-content table.columns td { |
| 24 | padding:0; |
| 25 | } |
| 26 | #jd-content table.columns td+td { |
| 27 | padding:0 2em; |
| 28 | } |
| 29 | #jd-content table.columns td img { |
| 30 | margin:0; |
| 31 | } |
| 32 | #jd-content table.columns td+td>*:first-child { |
| 33 | margin-top:-2em; |
| 34 | } |
| 35 | .green { |
| 36 | color:#8db529; |
| 37 | font-weight:bold; |
| 38 | } |
| 39 | </style> |
| 40 | |
| 41 | <div class="video"> |
| 42 | <object width="278" height="180"> |
Scott Main | e139f4d | 2011-01-07 17:52:17 -0800 | [diff] [blame] | 43 | <param name="movie" value="http://www.youtube.com/v/Jx3pdWBlZ34?hl=en&fs=1"></param> |
Dirk Dougherty | 50f8445 | 2010-11-11 11:52:05 -0800 | [diff] [blame] | 44 | <param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" |
| 45 | value="always"></param> |
Scott Main | e139f4d | 2011-01-07 17:52:17 -0800 | [diff] [blame] | 46 | <embed src="http://www.youtube.com/v/Jx3pdWBlZ34?hl=en&fs=1" type="application/x-shockwave-flash" |
Dirk Dougherty | 50f8445 | 2010-11-11 11:52:05 -0800 | [diff] [blame] | 47 | allowscriptaccess="always" allowfullscreen="true" width="278" height="180"></embed> |
| 48 | </object> |
| 49 | </div> |
| 50 | |
| 51 | <p>The Android 2.3 platform introduces many new and exciting features for |
Scott Main | e139f4d | 2011-01-07 17:52:17 -0800 | [diff] [blame] | 52 | users and developers. This document provides a glimpse at some of the new features |
Dirk Dougherty | 50f8445 | 2010-11-11 11:52:05 -0800 | [diff] [blame] | 53 | and technologies in Android 2.3. For detailed information about the new developer APIs, see the <a |
Scott Main | e139f4d | 2011-01-07 17:52:17 -0800 | [diff] [blame] | 54 | href="android-2.3.html">Android 2.3 version notes</a>.</p> |
Dirk Dougherty | 50f8445 | 2010-11-11 11:52:05 -0800 | [diff] [blame] | 55 | |
| 56 | <ul> |
| 57 | <li><a href="#UserFeatures">New User Features</a></li> |
| 58 | <li><a href="#DeveloperApis">New Developer Features</a></li> |
| 59 | <li><a href="#PlatformTechnologies">New Platform Technologies</a></li> |
| 60 | </ul> |
| 61 | |
| 62 | |
| 63 | <h2 id="UserFeatures" style="clear:right">New User Features</h2> |
| 64 | |
| 65 | <div> |
| 66 | <img style="float:right;padding-bottom:2em;" src="images/2.3/home-menu.png" alt="" height="280" /> |
| 67 | <img style="float:right;padding-bottom:2em;" src="images/2.3/home-plain.png" alt="" height="280" /> |
| 68 | |
| 69 | <h3>UI refinements for simplicity and speed</h3> |
| 70 | |
| 71 | <p>The user interface is refined in many ways across the system, making it |
| 72 | easier to learn, faster to use, and more power-efficient. A simplified |
| 73 | visual theme of colors against black brings vividness and contrast to the |
| 74 | notification bar, menus, and other parts of the UI. Changes in menus and |
| 75 | settings make it easier for the user to navigate and control the features |
| 76 | of the system and device. </p> |
| 77 | |
| 78 | <h3>Faster, more intuitive text input</h3> |
| 79 | |
| 80 | <p>The Android soft keyboard is redesigned and optimized for faster text input |
| 81 | and editing. The keys themselves are reshaped and repositioned for improved |
| 82 | targeting, making them easier to see and press accurately, even at high speeds. |
| 83 | The keyboard also displays the current character and dictionary suggestions in a |
| 84 | larger, more vivid style that is easier to read.</p> |
| 85 | |
| 86 | <p>The keyboard adds the capability to correct entered words from suggestions in |
| 87 | the dictionary. As the user selects a word already entered, the keyboard |
| 88 | displays suggestions that the user can choose from, to replace the selection. |
| 89 | The user can also switch to voice input mode to replace the selection. Smart |
| 90 | suggestions let the user accept a suggestion and then return to correct it |
| 91 | later, if needed, from the original set of suggestions.</p> |
| 92 | |
| 93 | <p>New multitouch key-chording lets the user quickly enter numbers and symbols |
| 94 | by pressing Shift+<<em>letter</em>> and ?123+<<em>symbol</em>>, |
| 95 | without needing to manually switch input modes. From certain keys, users can |
| 96 | also access a popup menu of accented characters, numbers, and symbols by holding |
| 97 | the key and sliding to select a character.</p> |
| 98 | </div> |
| 99 | |
| 100 | <div style="padding-top:1em;"> |
| 101 | <div style="margin-right:1em;float:left;"><img src="images/2.3/onetouch.png" alt="" height="260" /></div> |
| 102 | <div style="padding-right:2em;float:left;"><img src="images/2.3/selection.png" alt="" height="160" /></div> |
| 103 | |
| 104 | |
| 105 | <h3>One-touch word selection and copy/paste</h3> |
| 106 | |
| 107 | <p>When entering text or viewing a web page, the user can quickly select a word |
| 108 | by press-hold, then copy to the clipboard and paste. Pressing on a word enters a |
| 109 | free-selection mode — the user can adjust the selection area as needed by |
| 110 | dragging a set of bounding arrows to new positions, then copy the bounded area |
| 111 | by pressing anywhere in the selection area. For text entry, the user can |
| 112 | slide-press to enter a cursor mode, then reposition the cursor easily and |
| 113 | accurately by dragging the cursor arrow. With both the selection and cursor |
| 114 | modes, no use of a trackball is needed.</p> |
| 115 | |
| 116 | </div> |
| 117 | |
| 118 | <div style="clear:left"> |
| 119 | <div style="padding-right:2em;float:right;"><img src="images/2.3/running.png" alt="" height="280" /></div> |
| 120 | <div style="padding-left:1em;float:right;"><img src="images/2.3/power.png" alt="" height="280" /></div> |
| 121 | |
| 122 | <h3>Improved power management </h3> |
| 123 | |
| 124 | <p>The Android system takes a more active role in managing apps that are keeping |
| 125 | the device awake for too long or that are consuming CPU while running in the |
| 126 | background. By managing such apps — closing them if appropriate — |
| 127 | the system helps ensure best possible performance and maximum battery life.</p> |
| 128 | |
| 129 | <p>The system also gives the user more visibility over the power being consumed |
| 130 | by system components and running apps. The Application settings provides an |
| 131 | accurate overview of how the battery is being used, with details of the usage |
| 132 | and relative power consumed by each component or application.</p> |
| 133 | |
| 134 | <h3>Control over applications</h3> |
| 135 | |
| 136 | <p>A shortcut to the Manage Applications control now appears in the Options Menu |
| 137 | in the Home screen and Launcher, making it much easier to check and manage |
| 138 | application activity. Once the user enters Manage Applications, a new Running |
| 139 | tab displays a list of active applications and the storage and memory being used |
| 140 | by each. The user can read further details about each application and if |
| 141 | necessary stop an application or report feedback to its developer. </p> |
| 142 | </div> |
| 143 | |
| 144 | <h3>New ways of communicating, organizing</h3> |
| 145 | |
| 146 | <p>An updated set of standard applications lets the user take new approaches to |
| 147 | managing information and relationships. </p> |
| 148 | |
| 149 | <div style="padding-top:1em;"> |
| 150 | <div style="padding-right:1.5em;float:left;"><img src="images/2.3/sipcall.png" alt="" height="190" align="left"/><br> |
| 151 | <img src="images/2.3/ffc.png" alt="" height="190" align="left" style="margin-bottom:1.5em;margin-top:.75em;"/><div></div> |
| 152 | </div> |
| 153 | |
| 154 | <p style="margin-top:1em;margin-bottom:.75em;"><strong>Internet calling</strong></p> |
| 155 | |
| 156 | <p>The user can make voice calls over the internet to other users who have SIP |
| 157 | accounts. The user can add an internet calling number (a SIP address) to any |
| 158 | Contact and can initiate a call from Quick Contact or Dialer. To use internet |
| 159 | calling, the user must create an account at the SIP provider of their choice |
| 160 | — SIP accounts are not provided as part of the internet calling feature. |
| 161 | Additionally, support for the platform's SIP and internet calling features on |
| 162 | specific devices is determined by their manufacturers and associated carriers. |
| 163 | </p> |
| 164 | |
| 165 | <div style="padding-right:1.5em;float:right;;"><img src="images/2.3/nfc.png" alt="" height="190" /> </div> |
| 166 | |
| 167 | <p style="margin-top:1.25em;margin-bottom:.75em;"><strong>Near-field communications</strong></p> |
| 168 | |
| 169 | <p>An NFC Reader application lets the user read and interact with near-field |
| 170 | communication (NFC) tags. For example, the user can “touch” or “swipe” an NFC |
| 171 | tag that might be embedded in a poster, sticker, or advertisement, then act on |
| 172 | the data read from the tag. A typical use would be to read a tag at a |
| 173 | restaurant, store, or event and then rate or register by jumping to a web site |
| 174 | whose URL is included in the tag data. NFC communication relies on wireless |
| 175 | technology in the device hardware, so support for the platform's NFC features on |
| 176 | specific devices is determined by their manufacturers. |
| 177 | </p> |
| 178 | </div> |
| 179 | |
| 180 | <p style="margin-top:1.25em;margin-bottom:.75em;"><strong>Downloads management</strong></p> |
| 181 | |
| 182 | <p>The Downloads application gives the user easy access to any file downloaded from |
| 183 | the browser, email, or another application. Downloads is built on an completely new |
| 184 | download manager facility in the system that any other applications can use, to |
| 185 | more easily manage and store their downloads.</p> |
| 186 | |
| 187 | <p style="margin-top:1.25em;margin-bottom:.75em;"><strong>Camera</strong></p> |
| 188 | |
| 189 | <p>The application now lets the user access multiple cameras on the device, |
| 190 | including a front-facing camera, if available. </p> |
| 191 | |
| 192 | |
| 193 | <h2 id="DeveloperApis" style="clear:both">New Developer Features</h2> |
| 194 | |
| 195 | <p>Android 2.3 delivers a variety of features and APIs that |
| 196 | let developers bring new types of applications to the Android |
| 197 | platform.</p> |
| 198 | |
| 199 | <ul> |
| 200 | <li><a href="#gaming">Enhancements for gaming</a></li> |
| 201 | <li><a href="#communication">New forms of communication</a></li> |
| 202 | <li><a href="#multimedia">Rich multimedia</a></li> |
| 203 | </ul> |
| 204 | |
| 205 | <h3 id="gaming">Enhancements for gaming</h3> |
| 206 | |
| 207 | <p style="margin-top:.75em;margin-bottom:.75em;"><strong>Performance</strong></p> |
| 208 | |
| 209 | <p>Android 2.3 includes a variety of improvements across the system that make |
| 210 | common operations faster and more efficient for all applications. Of particular |
| 211 | interest to game developers are:</p> |
| 212 | |
| 213 | <ul> |
| 214 | <li>Concurrent garbage collector — The Dalivik VM introduces a new, |
| 215 | concurrent garbage collector that minimizes application pauses, helping to |
| 216 | ensure smoother animation and increased responsiveness in games and similar |
| 217 | applications. </li> |
| 218 | <li>Faster event distribution — The plaform now handles touch and keyboard |
| 219 | events faster and more efficiently, minimizing CPU utilization during event |
| 220 | distribution. The changes improve responsiveness for all applications, but |
| 221 | especially benefit games that use touch events in combination with 3D graphics |
| 222 | or other CPU-intensive operations. </li> |
| 223 | <li>Updated video drivers — The platform uses updated third-party video |
| 224 | drivers that improve the efficiency of OpenGL ES operations, for faster overall |
| 225 | 3D graphics performance. </li> |
| 226 | </ul> |
| 227 | |
| 228 | |
| 229 | <p style="margin-top:1.25em;margin-bottom:.75em;"><strong>Native input and |
| 230 | sensor events</strong></p> |
| 231 | |
| 232 | <p>Applications that use native code can now receive and process input and |
| 233 | sensor events directly in their native code, which dramatically improves |
| 234 | efficiency and responsiveness. </p> |
| 235 | |
| 236 | <p>Native libraries exposed by the platform let applications handle the same |
| 237 | types of input events as those available through the framework. Applications |
| 238 | can receive events from all supported sensor types and can enable/disable |
| 239 | specific sensors and manage event delivery rate and queueing. </p> |
| 240 | |
| 241 | |
| 242 | <p style="margin-top:1.25em;margin-bottom:.75em;"><strong>Gyroscope and other |
| 243 | new sensors, for improved 3D motion processing</strong></p> |
| 244 | |
| 245 | <p>Android 2.3 adds API support for several new sensor types, including |
| 246 | gyroscope, rotation vector, linear acceleration, gravity, and barometer sensors. |
| 247 | Applications can use the new sensors in combination with any other sensors |
| 248 | available on the device, to track three-dimensional device motion and |
| 249 | orientation change with high precision and accuracy. For example, a game |
| 250 | application could use readings from a gyroscope and accelerometer on the device |
| 251 | to recognize complex user gestures and motions, such as tilt, spin, thrust, and |
| 252 | slice. </p> |
| 253 | |
Scott Main | e139f4d | 2011-01-07 17:52:17 -0800 | [diff] [blame] | 254 | |
| 255 | <p style="margin-top:1.25em;margin-bottom:.75em;"><strong>Open API for native |
Dirk Dougherty | 50f8445 | 2010-11-11 11:52:05 -0800 | [diff] [blame] | 256 | audio</strong></p> |
| 257 | |
| 258 | <p>The platform provides a software implementation of <a |
| 259 | href="http://www.khronos.org/opensles/">Khronos OpenSL ES</a>, a standard API |
| 260 | that gives applications access to powerful audio controls and effects from |
| 261 | native code. Applications can use the API to manage audio devices and control |
Scott Main | 071360d | 2010-12-14 16:35:36 -0800 | [diff] [blame] | 262 | audio input, output, and processing directly from native code.</p> |
Dirk Dougherty | 50f8445 | 2010-11-11 11:52:05 -0800 | [diff] [blame] | 263 | |
| 264 | <p style="margin-top:1.25em;margin-bottom:.75em;"><strong>Native graphics |
| 265 | management</strong></p> |
| 266 | |
| 267 | <p>The platform provides an interface to its <a |
| 268 | href="http://www.khronos.org/egl/">Khronos EGL</a> library, which lets |
| 269 | applications manage graphics contexts and create and manage OpenGL ES textures |
| 270 | and surfaces from native code.</p> |
| 271 | |
| 272 | |
| 273 | <p style="margin-top:1.25em;margin-bottom:.75em;"><strong>Native access to |
| 274 | Activity lifecycle, window management</strong></p> |
| 275 | |
| 276 | <p>Native applications can declare a new type of Activity class, |
| 277 | <code>NativeActivity</code> whose lifecycle callbacks are implemented directly |
| 278 | in native code. The <code>NativeActivity</code> and its underlying native code |
| 279 | run in the system just as do other Activities — they run in the |
| 280 | application's system process and execute on the application's main UI thread, |
| 281 | and they receive the same lifecycle callbacks as do other Activities. </p> |
| 282 | |
| 283 | <p>The platform also exposes native APIs for managing windows, including the |
| 284 | ability to lock/unlock the pixel buffer to draw directly into it. Through the |
| 285 | API, applications can obtain a native window object associated with a framework |
| 286 | Surface object and interact with it directly in native code.</p> |
| 287 | |
| 288 | |
| 289 | <p style="margin-top:1.25em;margin-bottom:.75em;"><strong>Native access to |
| 290 | assets, storage</strong></p> |
| 291 | |
| 292 | <p>Applications can now access a native Asset Manager API to retrieve |
| 293 | application assets directly from native code without needing to go through JNI. |
| 294 | If the assets are compressed, the platform does streaming decompression as the |
| 295 | application reads the asset data. There is no longer a limit on the size of |
| 296 | compressed <code>.apk</code> assets that can be read.</p> |
| 297 | |
| 298 | <p>Additionally, applications can access a native Storage Manager API to work |
| 299 | directly with OBB files downloaded and managed by the system. Note that although |
| 300 | platform support for OBB is available in Android 2.3, development tools for |
| 301 | creating and managing OBB files will not be available until early 2011.</p> |
| 302 | |
| 303 | |
| 304 | <p style="margin-top:1.25em;margin-bottom:.75em;"><strong>Robust native |
| 305 | development environment</strong></p> |
| 306 | |
| 307 | <p>The Android NDK (r5 or higher) provides a complete set of tools, toolchains, |
| 308 | and libraries for developing applications that use the rich native environment |
| 309 | offered by the Android 2.3 platform. For more information or to download the |
| 310 | NDK, please see the <a |
| 311 | href="http://developer.android.com/sdk/ndk/index.html">Android NDK</a> |
| 312 | page. </p> |
| 313 | |
| 314 | |
| 315 | <h3 id="communication">New forms of communication</h3> |
| 316 | |
| 317 | <p style="margin-top:.75em;margin-bottom:.75em;"><strong>Internet |
| 318 | telephony</strong></p> |
| 319 | |
| 320 | <p>Developers can now add SIP-based internet telephony features to their |
| 321 | applications. Android 2.3 includes a full SIP protocol stack and integrated call |
| 322 | management services that let applications easily set up outgoing and incoming |
| 323 | voice calls, without having to manage sessions, transport-level communication, |
| 324 | or audio record or playback directly. </p> |
| 325 | |
| 326 | <p>Support for the platform's SIP and internet calling features on specific |
| 327 | devices is determined by their manufacturers and associated carriers.</p> |
| 328 | |
| 329 | |
| 330 | <p style="margin-top:1.25em;margin-bottom:.75em;"><strong>Near Field |
| 331 | Communications (NFC)</strong></p> |
| 332 | |
| 333 | <p>The platform's support for Near Field Communications (NFC) lets developers |
| 334 | get started creating a whole new class of applications for Android. Developers |
| 335 | can create new applications that offer proximity-based information and services |
| 336 | to users, organizations, merchants, and advertisers. </p> |
| 337 | |
| 338 | <p>Using the NFC API, |
| 339 | applications can respond to NFC tags “discovered” as the user “touches” an |
| 340 | NFC-enabled device to elements embedded in stickers, smart posters, and even |
| 341 | other devices. When a tag of interest is collected, applications can respond to |
| 342 | the tag, read messages from it, and then store the messages, prompting |
| 343 | the user as needed. </p> |
| 344 | |
| 345 | <p>NFC communication relies on wireless technology in the device hardware, so |
| 346 | support for the platform's NFC features on specific devices is determined by |
| 347 | their manufacturers.</p> |
| 348 | |
| 349 | |
| 350 | <h3 id="multimedia">Rich multimedia</h3> |
| 351 | |
| 352 | <p style="margin-top:.75em;margin-bottom:.75em;"><strong>Mixable audio |
| 353 | effects</strong></p> |
| 354 | |
| 355 | <p>A new audio effects API lets developers easily create rich audio environments |
| 356 | by adding equalization, bass boost, headphone virtualization (widened |
| 357 | soundstage), and reverb to audio tracks and sounds. Developers can mix multiple |
| 358 | audio effects in a local track or apply effects globally, across multiple |
| 359 | tracks.</p> |
| 360 | |
| 361 | <p style="margin-top:1.25em;margin-bottom:.75em;"><strong>Support for new media |
| 362 | formats</strong></p> |
| 363 | |
| 364 | <p>The platform now offers built-in support for the VP8 open video compression |
| 365 | format and the WebM open container format. The platform also adds support for |
| 366 | AAC encoding and AMR wideband encoding (in software), so that applications can |
| 367 | capture higher quality audio than narrowband. </p> |
| 368 | |
| 369 | <p style="margin-top:1.25em;margin-bottom:.75em;"><strong>Access to multiple |
| 370 | cameras</strong></p> |
| 371 | |
| 372 | <p>The Camera API now lets developers access any cameras that are available on a |
| 373 | device, including a front-facing camera. Applications can query the platform for |
| 374 | the number of cameras on the device and their types and characteristics, then |
| 375 | open the camera needed. For example, a video chat application might want to access a |
| 376 | front-facing camera that offers lower-resolution, while a photo application |
| 377 | might prefer a back-facing camera that offers higher-resolution.</p> |
| 378 | |
| 379 | |
| 380 | <h2 id="PlatformTechnologies">New Platform Technologies</h2> |
| 381 | |
| 382 | <h3>Media Framework</h3> |
| 383 | |
| 384 | <ul> |
| 385 | <li>New media framework fully replaces OpenCore, maintaining all previous |
| 386 | codec/container support for encoding and decoding.</li> |
| 387 | <li>Integrated support for the VP8 open video compression format and the WebM |
| 388 | open container format</li> |
| 389 | <li>Adds AAC encoding and AMR wideband encoding</li> |
| 390 | </ul> |
| 391 | |
| 392 | <h3>Linux Kernel </h3> |
| 393 | <ul> |
| 394 | <li>Upgraded to 2.6.35</li> |
| 395 | </ul> |
| 396 | |
| 397 | <h3>Networking</h3> |
| 398 | <ul> |
| 399 | <li>SIP stack, configurable by device manufacturer |
| 400 | <li>Support for Near Field Communications (NFC), configurable by device manufacturer</li> |
| 401 | <li>Updated BlueZ stack</li> |
| 402 | </ul> |
| 403 | |
| 404 | <h3>Dalvik runtime</h3> |
| 405 | |
| 406 | <ul> |
| 407 | <li>Dalvik VM: |
| 408 | <ul> |
Scott Main | e139f4d | 2011-01-07 17:52:17 -0800 | [diff] [blame] | 409 | <li>Concurrent garbage collector (target sub-3ms pauses)</li> |
Dirk Dougherty | 50f8445 | 2010-11-11 11:52:05 -0800 | [diff] [blame] | 410 | <li>Adds further JIT (code-generation) optimizations</li> |
| 411 | <li>Improved code verification</li> |
| 412 | <li>StrictMode debugging, for identifying performance and memory issues</li> |
| 413 | </ul> |
| 414 | </li> |
| 415 | |
| 416 | |
| 417 | <li>Core libraries: |
| 418 | <ul> |
| 419 | <li>Expanded I18N support (full worldwide encodings, more locales) |
| 420 | <li>Faster Formatter and number formatting. For example, float formatting is 2.5x faster.</li> |
| 421 | <li>HTTP responses are gzipped by default. XML and JSON API response sizes may be reduced by 60% or more.</li> |
| 422 | <li>New collections and utilities APIs</li> |
| 423 | <li>Improved network APIs</li> |
| 424 | <li>Improved file read and write controls</li> |
| 425 | <li>Updated JDBC</li> |
| 426 | </ul> |
| 427 | </li> |
| 428 | |
| 429 | <li>Updates from upstream projects: |
| 430 | <ul> |
| 431 | <li>OpenSSL 1.0.0a</li> |
| 432 | <li>BouncyCastle 1.45</li> |
| 433 | <li>ICU 4.4</li> |
| 434 | <li>zlib 1.2.5</li> |
| 435 | </ul> |
| 436 | </li> |
| 437 | |
| 438 | |
| 439 | </ul> |
| 440 | |
| 441 | <p>For more information about the new developer APIs, see the <a |
Scott Main | e139f4d | 2011-01-07 17:52:17 -0800 | [diff] [blame] | 442 | href="android-2.3.html">Android 2.3 version notes</a> and the <a |
Dirk Dougherty | 50f8445 | 2010-11-11 11:52:05 -0800 | [diff] [blame] | 443 | href="{@docRoot}sdk/api_diff/9/changes.html">API Differences Report</a>.</p> |