Home | History | Annotate | Download | only in versions
      1 page.title=Android 2.2 APIs
      2 excludeFromSuggestions=true
      3 sdk.platform.version=2.2
      4 sdk.platform.apiLevel=8
      5 sdk.platform.majorMinor=minor
      6 
      7 @jd:body
      8 
      9 <div id="qv-wrapper">
     10 <div id="qv">
     11 
     12 <h2>In this document</h2>
     13 <ol>
     14   <li><a href="#features">Platform Highlights</a></li>
     15   <li><a href="#api-level">API Level</a></li>
     16   <li><a href="#api">Framework API Changes</a>
     17 
     18     </ol>
     19   </li>
     20 </ol>
     21 
     22 <h2>Reference</h2>
     23 <ol>
     24 <li><a
     25 href="{@docRoot}sdk/api_diff/{@sdkPlatformApiLevel}/changes.html">API
     26 Differences Report &raquo;</a> </li>
     27 </ol>
     28 
     29 <h2>See Also</h2>
     30 <ol>
     31   <li><a href="{@docRoot}sdk/exploring.html">Exploring the SDK</a></li>
     32 </ol>
     33 
     34 </div>
     35 </div>
     36 
     37 <p>
     38 <em>API Level:</em>&nbsp;<strong>{@sdkPlatformApiLevel}</strong></p>
     39 
     40 <p>Android {@sdkPlatformVersion} is a {@sdkPlatformMajorMinor} platform release including user
     41 features, developer features, API changes, and bug
     42 fixes. For  information on developer features and API changes, see the
     43 <a href="#api">Framework API</a> section.</p>
     44 
     45 <p>For developers, the Android {@sdkPlatformVersion} platform is available as a
     46 downloadable component for the Android SDK. The downloadable platform includes
     47 an Android library and system image, as well as a set of emulator skins and
     48 more. To get started developing or testing against Android {@sdkPlatformVersion},
     49 use the Android SDK Manager to download the platform into your SDK.</p>
     50 
     51 
     52 <h2 id="features">Platform Highlights</h2>
     53 
     54 <p>For a list of new user features and platform highlights, see the <a
     55 href="http://developer.android.com/about/versions/android-2.2-highlights.html">Android
     56 2.2 Platform Highlights</a> document.</p>
     57 
     58 
     59 <h2 id="api-level">API Level</h2>
     60 
     61 <p>The Android {@sdkPlatformVersion} platform delivers an updated version of
     62 the framework API. The Android {@sdkPlatformVersion} API
     63 is assigned an integer identifier &mdash;
     64 <strong>{@sdkPlatformApiLevel}</strong> &mdash; that is
     65 stored in the system itself. This identifier, called the "API Level", allows the
     66 system to correctly determine whether an application is compatible with
     67 the system, prior to installing the application. </p>
     68 
     69 <p>To use APIs introduced in Android {@sdkPlatformVersion} in your
     70 application, you need to set the proper value, "{@sdkPlatformApiLevel}", in the
     71 <code>android:minSdkVersion</code> attributes of the <code>&lt;uses-sdk&gt;</code>
     72 element in your application's manifest. </p>
     73 
     74 <p>For more information about how to use API Level, see the <a
     75 href="{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">API Levels</a> document. </p>
     76 
     77 
     78 <h2 id="api">Framework API Changes</h2>
     79 
     80 <p>The sections below provide information about changes made to the application
     81 framework API provided by the Android {@sdkPlatformVersion} platform.</p>
     82 
     83 <h3 id="install-loc">App installation on external storage media</h3>
     84 
     85 <p>The Android platform now allows applications to request installation onto the
     86 device's external storage media (such as the SD card), as an alternative to
     87 installation onto the device's internal memory. </p>
     88 
     89 <p>Application developers can express the preferred installation location for
     90 their applications by means of a new attribute of <code>&lt;manifest&gt;</code>
     91 in the manifest file, <a
     92 href="{@docRoot}guide/topics/manifest/manifest-element.html#install"><code>
     93 android:installLocation</code></a>. The attribute supports three values:
     94 <code>"internalOnly"</code>, <code>"preferExternal"</code>, and
     95 <code>"auto"</code>. At install time, the system checks the value of
     96 <code>android:installLocation</code> and installs the application
     97 <code>.apk</code> according to the preferred location, if possible. If the
     98 application has requested external installation, the system installs it into a
     99 private, encrypted partition in the external media. Once an application .apk is
    100 installed externally, the system lets the user change the storage location of
    101 the .apk and move it onto the device's internal memory if needed (and vice
    102 versa), through Manage Applications in the user settings.</p>
    103 
    104 <p>By default, the system installs all applications onto the device's internal
    105 memory, except for those that explicitly request external installation. This
    106 means that the system will always install legacy applications onto internal
    107 memory, since they do not have access to the
    108 <code>android:installLocation</code> attribute. However, it is possible to
    109 configure and compile a legacy application such that it is installed internally
    110 on older versions of the platform and externally on Android 2.2 and later
    111 platforms, if necessary. </p>
    112 
    113 <p>Note that requesting installation onto the device's external media is not
    114 suitable for all applications, particularly because the external media may be
    115 removable and unmounting/remounting may disrupt the user experience and system
    116 settings.</p>
    117 
    118 <p>For more information about setting a preferred install location for your
    119 application, including a discussion of what types of applications should and
    120 should not request external installation, please read the <a
    121 href="{@docRoot}guide/topics/data/install-location.html">App Install Location</a>
    122 document. </p>
    123 
    124 <h3 id="backup-manager">Data backup</h3>
    125 
    126 <p>The platform now provides a generalized backup service that
    127 applications can use to backup and restore user data, to ensure that users can
    128 maintain their data when switching devices or reinstalling the application. The
    129 Backup Manager handles the work of transporting the application data to and from
    130 the backup storage area in the cloud. The Backup Manager can store any type of
    131 data, from arbitrary data to files, and manages backup and restore operations
    132 in an atomic manner. For more information, see <a
    133 href="{@docRoot}guide/topics/data/backup.html">Data Backup</a>.</p>
    134 
    135 <h3>Graphics</h3>
    136 
    137 <ul>
    138 <li>New OpenGL ES 2.0 APIs in {@link android.opengl.GLES20 android.opengl.GLES20}.</li>
    139 <li>New {@link android.opengl.ETC1}, {@link android.opengl.ETC1Util}, and {@link android.opengl.ETC1Util.ETC1Texture} classes and utility methods for using ETC1 for texture compression.</li>
    140 <li>New {@link android.graphics.ImageFormat} class.</li>
    141 <li>New {@link android.graphics.YuvImage YUV image format API} to enable compression from YUV to JPEG and manipulation of YUV data.</li>
    142 </ul>
    143 
    144 <h3>Media</h3>
    145 
    146 <ul>
    147 <li>New APIs in {@link android.media.AudioManager android.media.AudioManager} for managing audio focus, transport control, transient loss of audio focus, ducking.</li>
    148 <li>New broadcast intent for routing audio to SCO &mdash; {@link android.media.AudioManager#ACTION_SCO_AUDIO_STATE_CHANGED} with extras indicating new state.</li>
    149 <li>New APIs in {@link android.media.SoundPool} to detect completion of sound-loading.</li>
    150 <li>New APIs in {@link android.media.SoundPool} for auto pause and resume.</li>
    151 <li>New APIs in {@link android.media.MediaRecorder} for specifying audio settings for number of channels, encoding and sampling rates, sampling rate.</li>
    152 <li>New APIs for adding files to the media database, so that they are automatically scanned. See {@link android.media.MediaScannerConnection#scanFile(Context, String[], String[], OnScanCompletedListener) MediaScannerConnection.scanFile} and {@link android.media.MediaScannerConnection.OnScanCompletedListener MediaScannerConnection.OnScanCompletedListener}.</li>
    153 </ul>
    154 
    155 <h3>Speech recognition and third-party recognition engines</h3>
    156 
    157 <ul>
    158 <li>The platform provides new speech-recognition APIs that allow applications to have a richer interaction with the available voice recognizer. For example, the APIs are sufficient to integrate voice recognition deeply into an IME.</li>
    159 <li>The platform also provides a {@link android.speech.RecognitionService} base class that lets third-party developers create plug-in recognition engines. </li>
    160 <li>New {@link android.speech.RecognitionListener} interface to receive callbacks.</li>
    161 <li>New {@link android.speech.RecognizerIntent} extras that let a requester app specify details as preferred language, minimum length in milliseconds, and so on.</li>
    162 </ul>
    163 
    164 <h3>Camera and camcorder</h3>
    165 
    166 <ul>
    167 <li>Changes to camera preview API to improve efficieny of preview pipeline. </li>
    168 <li>New display orientation for camera (it can now work in portrait orientation).</li>
    169 <li>New APIs in {@link android.hardware.Camera android.hardware.Camera} for managing zoom level.</li>
    170 <li>New APIs {@link android.hardware.Camera.Parameters android.hardware.Camera.Parameters} for querying and setting device camera settings such as focal length, exposure, zoom level, view angle, and others.</li>
    171 <li>New {@link android.media.ThumbnailUtils thumbnail} utility for video and image thumbnails.</li>
    172 <li>New {@link android.media.CamcorderProfile} and {@link android.media.CamcorderProfile} classes enable apps to determine device hardware camera capablities.</li>
    173 <li>New support in {@link android.media.ExifInterface android.media.ExifInterface} for retrieving GPS and focal length.</li>
    174 </ul>
    175 
    176 <h3>Device policy manager</h3>
    177 
    178 <p>New device policy management APIs allow developers to write "device
    179 administrator" applications that can control security features of the device,
    180 such as the minimum password strength, data wipe, and so on. Users can select
    181 the administrators that are enabled on their devices. For more information, see
    182 the {@link android.app.admin android.app.admin} classees or the example
    183 application code in <a
    184 href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/app/DeviceAdminSample.html">DeviceAdminSample.java</a>.</p>
    185 
    186 <h3>UI Framework</h3>
    187 
    188 <ul>
    189 <li>New UI modes "car mode" and "night mode" and {@link android.app.UiModeManager} let applications adjust their application UI for specific user modes. </li>
    190 <li>New {@link android.view.ScaleGestureDetector} that lets Views detect and handle transformation gestures that involve more than one pointer (multitouch) using the supplied MotionEvents. </li>
    191 <li>Improvements in the way that multitouch events are reported in {@link android.view.MotionEvent} objects.</li>
    192 <li>The layout attribute <code>fill_parent</code> is renamed to <code>match_parent</code>. This affects both XML and Java code (see {@link android.view.ViewGroup.LayoutParams}). Note that the platform will continue to honor uses of <code>fill_parent</code> in legacy applications. </li>
    193 <li>New layout attributes {@link android.R.attr#tabStripEnabled}, {@link android.R.attr#tabStripRight}, and {@link android.R.attr#tabStripLeft} let developers customize the bottom strip of TabWidgets.</li>
    194 <li>Better support for managed dialogs in Activity.</li>
    195 </ul>
    196 
    197 <h3>Accounts and sync</h3>
    198 
    199 <ul>
    200 <li>New method {@link android.content.ContentResolver#addPeriodicSync(Account, String, Bundle, long) AddPeriodicSync()} lets you schedule a periodic sync with a specific account, authority, and extras at the given frequency.</li>
    201 </ul>
    202 
    203 <h3>New manifest elements and attributes</h3>
    204 
    205 <ul>
    206 <li>For specifying the application's preferred install location (see <a href="#install-loc">App Installation on External Storage Media</a>, above):
    207 
    208 <ul>
    209   <li>New <code>android:installLocation</code> attribute of the <code>&lt;manifest&gt;</code> element. Specifies the default install location defined by an application.</li>
    210 </ul>
    211 </li>
    212 
    213 <li>For managing user data backup (see <a href="#backup-manager">Backup manager</a>, above, for more information):
    214 
    215 <ul>
    216   <li> New <code>android:backupAgent</code> attribute of the
    217 <code>&lt;application&gt;</code> element. Specifies the component name of the
    218 BackupAgent subclass provided by the application to handle backup/restore
    219 operations, if any.</li>
    220   <li> New <code>android:restoreAnyVersion</code> attribute of the
    221 <code>&lt;application&gt;</code> element. Boolean value that indicates whether
    222 the application is prepared to attempt a restore of any backed-up dataset, even
    223 if the backup is apparently from a newer version of the application than is
    224 currently installed on the device.</li>
    225 </ul>
    226 </li>
    227 
    228 <li>For managing the platform's JIT compiler:
    229 
    230 <ul>
    231 <li>New <code>android:vmSafeMode</code> attribute of the <code>&lt;application&gt;</code> element. Boolean value that specifies whether to disable JIT compiler optimizations when running the application.</li>
    232 </ul>
    233 </li>
    234 </ul>
    235 
    236 <h3>Permissions</h3>
    237 
    238 <ul>
    239 <li><code>android.permission.BIND_DEVICE_ADMIN</code> &mdash; Any device administration broadcast receiver must require this permission, to ensure that only the system can interact with it.</li>
    240 <li><code>android.permission.KILL_BACKGROUND_PROCESSES</code> &mdash; Allows an application to call {@link android.app.ActivityManager#killBackgroundProcesses(String)}.
    241 <li><code>android.permission.BIND_WALLPAPER</code> &mdash; Any {@link android.service.wallpaper.WallpaperService} must require this permission, to ensure that only the system can interact with it.</li>
    242 <li><code>android.permission.SET_TIME</code> &mdash; Allows an application to set the system time.</li>
    243 </ul>
    244 
    245 <h3 id="api-diff">API differences report</h3>
    246 
    247 <p>For a detailed view of all API changes in Android {@sdkPlatformVersion} (API
    248 Level {@sdkPlatformApiLevel}), see the <a
    249 href="{@docRoot}sdk/api_diff/{@sdkPlatformApiLevel}/changes.html">API
    250 Differences Report</a>.</p>
    251 
    252 
    253 
    254