page.title=Android 1.1 Version Notes
sdk.version=1.1_r1
sys.date=February 2009
@jd:body

<p>
<em>Date:</em> February 2009<br />
<em>API Level:</em>&nbsp;<strong>2</strong></p>


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

<ul>
<li><a href="#overview">Overview</a>
<li><a href="#overview">External Libraries</a>
<li><a href="#comp">Device Compatibility</a>
<li><a href="#apps">Built-in Applications</a>
<li><a href="#locs">UI Localizations</a>
<li><a href="#resolved-issues">Resolved Issues</a>
<li><a href="#features">New Features</a>
<li><a href="#api-changes">API Changes</a>
</ul></p>

<h2 id="overview">Overview</h2>

<p>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. </p>

<p>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 &mdash; <strong>2</strong> &mdash; 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. </p>

<p>Applications indicate the lowest system API Level that they are compatible with by adding
a value to the <code>android:minSdkVersion</code> 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 
<code>android:minSdkVersion</code> and allows the install only
if the referenced integer is less than or equal to the API Level integer stored
in the system itself. </p>

<p>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 <strong style="color:red">must</strong> set the
<code>android:minSdkVersion</code> attribute to "2" in order to specify that your application
is compatible only with devices using the Android 1.1 (or greater) system image.
</p>

<p>Specifically, you specify the <code>android:minSdkVersion</code>
attribute in a <code>&lt;uses-sdk&gt;</code> element as a child of
<code>&lt;manifest&gt;</code> in the manifest file. When set, the
attribute looks like this: </p>

<pre><code>&lt;manifest&gt;
  ...
  &lt;uses-sdk android:minSdkVersion="2" /&gt;
  ...
&lt;/manifest&gt;</code>
</pre>

<p>By setting <code>android:minSdkVersion</code> 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 <a href="#apichange">APIs introduced in Android 1.1</a>. </p>

<p>If your application uses APIs introduced in Android 1.1 but does not
declare <code>&lt;uses-sdk android:minSdkVersion="2" /&gt;</code>, then it will
run properly on Android 1.1 devices but <em>not</em> 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.</p>

<p>If your application does not use any new APIs introduced in Android
1.1, you can indicate Android 1.0 compatibility by removing
<code>android:minSdkVersion</code> 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.</p>

<p>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.</p>


<h2 id="extlibs">External Libraries</h2>

<p>The system image includes these external libraries, which you can
access from your application by adding a <a
href="{@docRoot}guide/topics/manifest/uses-library-element.html">
&lt;uses-library&gt;</a>.</p>
	<ul>
	<li>com.google.android.maps &mdash; gives your
application access to Google Maps data. Note that, to use Google Maps
data, a Maps API Key is required.</li>
	</ul>

<h2 id="comp">Device Compatibility</h2>

<p>The Android 1.1 system image was tested for compatability with the
Android-powered devices listed below:</p>
	<ul>
	<li><a href="http://www.t-mobileg1.com">T-Mobile G1</a></li>
	</ul>

<h2 id="apps">Built-in Applications</h2>

<p>The system image includes these built-in applications:</p>
	<ul>
	<li>Alarm Clock</li>
	<li>API Demos</li>
	<li>Browser</li>
	<li>Calculator</li>
	<li>Camera</li>
	<li>Contacts</li>
	<li>Dev Tools</li>
	<li>Dialer</li>
	<li>Email</li>
	<li>Maps (and StreetView)</li>
	<li>Messaging</li>
	<li>Music</li>
	<li>Pictures</li>
	<li>Settings</li>
	</ul>

<h2 id="locs">UI Localizations</h2>

<p>The system image provides localized UI strings for the languages
listed below.</p>
	<ul>
	<li>English, US (en_US)</li>
	<li>German (de) </li>
	</ul>

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

<h2 id="resolved-issues">Resolved Issues</h2>
<ul>
<li>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.</li>
<li>Fixes to device sleep. </li>
<li>Single tap no longer opens the in-call dialpad; users now need to
touch and drag it. </li>
<li>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.</li>
<li>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.	</li>
<li>Changes default mail checking interval to every 15 minutes (instead
of defaulting to "never").</li>
<li>Fixes password-quoting bugs in IMAP, so that users can include
special characters in passwords (e.g. spaces).</li>
<li>Fixes various errors in auto and manual account setup	</li>
<li>Improves reporting for various connection errors, making it easier
for the user to diagnose failed account setups.</li>
<li>Fixes new-mail notifications for POP3 accounts.</li>
<li>Ensures proper auto-checking of accounts marked as "never
check".</li>
<li>Now displays date and time using user preference (e.g. 24 hr vs.
AM/PM).</li>
<li>Now shows cc: in message view.</li>
<li>Improves recovery from POP3 connection failures.</li>
<li>POP3 parser rules loosened, so the application can work with
non-compliant email servers.</li>
</ul>

<h2 id="features">New Features</h2>

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

<h2 id="api-changes">API Changes</h2>

<h3>Overview</strong></h3>

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

<h3>API Change Details</h3>

<table>
<tr>
<th>Module or Feature</th><th>Change Description</th>
</tr>
<tr><td rowspan="4">Annotations for test systems</td></tr>
    <tr><td>Added {@link android.test.suitebuilder.annotation.LargeTest LargeTest} annotation.</td></tr>
    <tr><td>Added {@link android.test.suitebuilder.annotation.MediumTest MediumTest} annotation.</td></tr>
    <tr><td>Added {@link android.test.suitebuilder.annotation.SmallTest SmallTest} annotation.</td></tr>

<tr><td rowspan="2">Allow a process to easily know its UID.</td></tr>
    <tr><td>Added public method {@link android.os.Process#myUid} to class {@link android.os.Process android.os.Process}</td></tr>

<tr><td rowspan="6">Padding in views</td></tr>
    <tr><td>Added public method {@link android.view.View#getBottomPaddingOffset} to class {@link android.view.View android.view.View}.</td></tr>
    <tr><td>Added public method {@link android.view.View#getLeftPaddingOffset} to class {@link android.view.View android.view.View}.</td></tr>
    <tr><td>Added public method {@link android.view.View#getRightPaddingOffset} to class {@link android.view.View android.view.View}.</td></tr>
    <tr><td>Added public method {@link android.view.View#getTopPaddingOffset} to class {@link android.view.View android.view.View}.</td></tr>
    <tr><td>Added public method {@link android.view.View#isPaddingOffsetRequired} to class {@link android.view.View android.view.View}.</td></tr>

<tr><td rowspan="3">Marquee support</td></tr>
    <tr><td>Added public method {@link android.widget.TextView#setMarqueeRepeatLimit} to class {@link android.widget.TextView}</td></tr>
    <tr><td>Added public field {@link android.R.attr#marqueeRepeatLimit android.R.attr.marqueeRepeatLimit}</td></tr>

<tr><td rowspan="3">New permissions</td></tr>
    <tr><td>Added public field {@link android.Manifest.permission#BROADCAST_SMS android.Manifest.permission.BROADCAST_SMS}</td></tr>
    <tr><td>Added public field {@link android.Manifest.permission#BROADCAST_WAP_PUSH android.Manifest.permission.BROADCAST_WAP_PUSH}</td></tr>

<tr><td rowspan="2">API cleanup</td></tr>
    <tr><td>Removed protected constructor java.net.ServerSocket.ServerSocket(java.net.SocketImpl).</td></tr>

</table>






