*Date:* February 2009  

*API Level:* **2**

This document provides version notes for the Android 1.1 system image included in the SDK.

- [Overview](https://developer.android.com/about/versions/android-1.1#overview)
- [External Libraries](https://developer.android.com/about/versions/android-1.1#overview)
- [Device Compatibility](https://developer.android.com/about/versions/android-1.1#comp)
- [Built-in Applications](https://developer.android.com/about/versions/android-1.1#apps)
- [UI Localizations](https://developer.android.com/about/versions/android-1.1#locs)
- [Resolved Issues](https://developer.android.com/about/versions/android-1.1#resolved-issues)
- [New Features](https://developer.android.com/about/versions/android-1.1#features)
- [API Changes](https://developer.android.com/about/versions/android-1.1#api-changes)

<br />

## Overview

The Android 1.1 system image delivered in the SDK is the development
counterpart to the Android 1.1 production system image, deployable to
Android-powered handsets starting in February 2009.

The Android 1.1 system image delivers an updated version of the framework
API. As with the Android 1.0 API, the Android 1.1 API
is assigned an integer identifier --- **2** --- that is
stored in the system itself. This identifier, called the "API Level", allows the
system to correctly determine whether an application is compatible with
the system, prior to installing the application.

Applications indicate the lowest system API Level that they are compatible with by adding
a value to the `android:minSdkVersion` attribute.
The value of the attribute is an integer corresponding to an API Level
identifier. Prior to installing an application, the system checks the value of
`android:minSdkVersion` and allows the install only
if the referenced integer is less than or equal to the API Level integer stored
in the system itself.

If you use the Android 1.1 system image to build an application
compatible with Android-powered devices running the Android 1.1
platform, you **must** set the
`android:minSdkVersion` attribute to "2" in order to specify that your application
is compatible only with devices using the Android 1.1 (or greater) system image.

Specifically, you specify the `android:minSdkVersion`
attribute in a `<uses-sdk>` element as a child of
`<manifest>` in the manifest file. When set, the
attribute looks like this:  

    <manifest>
      ...
      <uses-sdk android:minSdkVersion="2" />
      ...
    </manifest>

By setting `android:minSdkVersion` in this way, you ensure
that users will only be able to install your application if their
devices are running the Android 1.1 platform. In turn, this ensures that
your application will function properly on their devices, especially if
it uses [APIs introduced in Android 1.1](https://developer.android.com/about/versions/android-1.1#apichange).

If your application uses APIs introduced in Android 1.1 but does not
declare `<uses-sdk android:minSdkVersion="2" />`, then it will
run properly on Android 1.1 devices but *not* on Android 1.0
devices. In the latter case, the application will crash at runtime when
it tries to use the Android 1.1 APIs.

If your application does not use any new APIs introduced in Android
1.1, you can indicate Android 1.0 compatibility by removing
`android:minSdkVersion` or setting the attribute to "1". However,
before publishing your application, you must make sure to compile your
application against the Android 1.0 system image (available in the
Android 1.0 SDK), to ensure that it builds and functions properly for
Android 1.0 devices. You should test the application against system
images corresponding to the API Levels that the application is designed
to be compatible with.

If you are sure your application is not using Android 1.1 APIs and
has no need to use them, you might find it easier to keep working in the
Android 1.0 SDK, rather than migrating to the Android 1.1 SDK and having
to do additional testing.

## External Libraries

The system image includes these external libraries, which you can
access from your application by adding a [\<uses-library\>](https://developer.android.com/guide/topics/manifest/uses-library-element).

- com.google.android.maps --- gives your application access to Google Maps data. Note that, to use Google Maps data, a Maps API Key is required.

## Device Compatibility

The Android 1.1 system image was tested for compatibility with the
Android-powered devices listed below:

- T-Mobile G1

## Built-in Applications

The system image includes these built-in applications:

- Alarm Clock
- API Demos
- Browser
- Calculator
- Camera
- Contacts
- Dev Tools
- Dialer
- Email
- Maps (and StreetView)
- Messaging
- Music
- Pictures
- Settings

## UI Localizations

The system image provides localized UI strings for the languages
listed below.

- English, US (en_US)
- German (de)

Localized UI strings match the locales that are displayable in
the emulator, accessible through the device Settings application.

## Resolved Issues

- AlarmClock alert now plays audio/vibe directly, rather than through AlarmManager. AlarmClock alert starts playing audio/vibe in its IntentReceiver, rather than on activity start. These changes should prevent alarms from being blocked by modal dialogs.
- Fixes to device sleep.
- Single tap no longer opens the in-call dialpad; users now need to touch and drag it.
- Fixes a bug causing approximately 1 in 25 outbound messages to freeze up the IMAP connection (to a Gmail based server) when transferred to the Sent folder.
- Removes automatic account setup entries that were broken or not testable. Adds minor fixes to a few of the remaining entries. Makes improvements to warning dialogs used for a few special cases.
- Changes default mail checking interval to every 15 minutes (instead of defaulting to "never").
- Fixes password-quoting bugs in IMAP, so that users can include special characters in passwords (e.g. spaces).
- Fixes various errors in auto and manual account setup
- Improves reporting for various connection errors, making it easier for the user to diagnose failed account setups.
- Fixes new-mail notifications for POP3 accounts.
- Ensures proper auto-checking of accounts marked as "never check".
- Now displays date and time using user preference (e.g. 24 hr vs. AM/PM).
- Now shows cc: in message view.
- Improves recovery from POP3 connection failures.
- POP3 parser rules loosened, so the application can work with non-compliant email servers.

## New Features

- Maps: Adds details and reviews when a user does a search on Maps and clicks on a business to view its details.
- Dialer: In-call screen timeout default is now longer when using the speakerphone.
- Dialer: Adds a "Show dialpad" / "Hide dialpad" item to the in-call menu, to make it easier to discover the DTMF dialpad.
- Adds support for saving attachments from MMS
- Adds support for marquee in layouts.

## API Changes

### Overview

- Adds annotations for test systems, no actual (non-test) API changes.
- Adds a method to allow a process to easily determine its UID.
- Adds support for marquee in layouts.
- Adds new methods for determining padding in views. Useful if you are writing your own subclasses of [View](https://developer.android.com/reference/android/view/View).
- Adds new permissions that allow an application to broadcast an SMS or WAP Push message.
- API cleanup: removes protected constructor from SDK-bound system images.

### API Change Details

| Module or Feature | Change Description |
|---|---|
| Annotations for test systems |
| Annotations for test systems | Added [LargeTest](https://developer.android.com/reference/android/test/suitebuilder/annotation/LargeTest) annotation. |
| Annotations for test systems | Added [MediumTest](https://developer.android.com/reference/android/test/suitebuilder/annotation/MediumTest) annotation. |
| Annotations for test systems | Added [SmallTest](https://developer.android.com/reference/android/test/suitebuilder/annotation/SmallTest) annotation. |
| Allow a process to easily know its UID. |
| Allow a process to easily know its UID. | Added public method [myUid()](https://developer.android.com/reference/android/os/Process#myUid()) to class [android.os.Process](https://developer.android.com/reference/android/os/Process) |
| Padding in views |
| Padding in views | Added public method [getBottomPaddingOffset()](https://developer.android.com/reference/android/view/View#getBottomPaddingOffset()) to class [android.view.View](https://developer.android.com/reference/android/view/View). |
| Padding in views | Added public method [getLeftPaddingOffset()](https://developer.android.com/reference/android/view/View#getLeftPaddingOffset()) to class [android.view.View](https://developer.android.com/reference/android/view/View). |
| Padding in views | Added public method [getRightPaddingOffset()](https://developer.android.com/reference/android/view/View#getRightPaddingOffset()) to class [android.view.View](https://developer.android.com/reference/android/view/View). |
| Padding in views | Added public method [getTopPaddingOffset()](https://developer.android.com/reference/android/view/View#getTopPaddingOffset()) to class [android.view.View](https://developer.android.com/reference/android/view/View). |
| Padding in views | Added public method [isPaddingOffsetRequired()](https://developer.android.com/reference/android/view/View#isPaddingOffsetRequired()) to class [android.view.View](https://developer.android.com/reference/android/view/View). |
| Marquee support |
| Marquee support | Added public method [setMarqueeRepeatLimit(int)](https://developer.android.com/reference/android/widget/TextView#setMarqueeRepeatLimit(int)) to class [TextView](https://developer.android.com/reference/android/widget/TextView) |
| Marquee support | Added public field [android.R.attr.marqueeRepeatLimit](https://developer.android.com/reference/android/R.attr#marqueeRepeatLimit) |
| New permissions |
| New permissions | Added public field [android.Manifest.permission.BROADCAST_SMS](https://developer.android.com/reference/android/Manifest.permission#BROADCAST_SMS) |
| New permissions | Added public field [android.Manifest.permission.BROADCAST_WAP_PUSH](https://developer.android.com/reference/android/Manifest.permission#BROADCAST_WAP_PUSH) |
| API cleanup |
| API cleanup | Removed protected constructor java.net.ServerSocket.ServerSocket(java.net.SocketImpl). |