1page.title=Android 1.1 Version Notes 2sdk.version=1.1_r1 3sys.date=February 2009 4@jd:body 5 6<p> 7<em>Date:</em> February 2009<br /> 8<em>API Level:</em> <strong>2</strong></p> 9 10 11<p>This document provides version notes for the Android 1.1 system image included in the SDK. 12 13<ul> 14<li><a href="#overview">Overview</a> 15<li><a href="#overview">External Libraries</a> 16<li><a href="#comp">Device Compatibility</a> 17<li><a href="#apps">Built-in Applications</a> 18<li><a href="#locs">UI Localizations</a> 19<li><a href="#resolved-issues">Resolved Issues</a> 20<li><a href="#features">New Features</a> 21<li><a href="#api-changes">API Changes</a> 22</ul></p> 23 24<h2 id="overview">Overview</h2> 25 26<p>The Android 1.1 system image delivered in the SDK is the development 27counterpart to the Android 1.1 production system image, deployable to 28Android-powered handsets starting in February 2009. </p> 29 30<p>The Android 1.1 system image delivers an updated version of the framework 31API. As with the Android 1.0 API, the Android 1.1 API 32is assigned an integer identifier — <strong>2</strong> — that is 33stored in the system itself. This identifier, called the "API Level", allows the 34system to correctly determine whether an application is compatible with 35the system, prior to installing the application. </p> 36 37<p>Applications indicate the lowest system API Level that they are compatible with by adding 38a value to the <code>android:minSdkVersion</code> attribute. 39The value of the attribute is an integer corresponding to an API Level 40identifier. Prior to installing an application, the system checks the value of 41<code>android:minSdkVersion</code> and allows the install only 42if the referenced integer is less than or equal to the API Level integer stored 43in the system itself. </p> 44 45<p>If you use the Android 1.1 system image to build an application 46compatible with Android-powered devices running the Android 1.1 47platform, you <strong style="color:red">must</strong> set the 48<code>android:minSdkVersion</code> attribute to "2" in order to specify that your application 49is compatible only with devices using the Android 1.1 (or greater) system image. 50</p> 51 52<p>Specifically, you specify the <code>android:minSdkVersion</code> 53attribute in a <code><uses-sdk></code> element as a child of 54<code><manifest></code> in the manifest file. When set, the 55attribute looks like this: </p> 56 57<pre><code><manifest> 58 ... 59 <uses-sdk android:minSdkVersion="2" /> 60 ... 61</manifest></code> 62</pre> 63 64<p>By setting <code>android:minSdkVersion</code> in this way, you ensure 65that users will only be able to install your application if their 66devices are running the Android 1.1 platform. In turn, this ensures that 67your application will function properly on their devices, especially if 68it uses <a href="#apichange">APIs introduced in Android 1.1</a>. </p> 69 70<p>If your application uses APIs introduced in Android 1.1 but does not 71declare <code><uses-sdk android:minSdkVersion="2" /></code>, then it will 72run properly on Android 1.1 devices but <em>not</em> on Android 1.0 73devices. In the latter case, the application will crash at runtime when 74it tries to use the Android 1.1 APIs.</p> 75 76<p>If your application does not use any new APIs introduced in Android 771.1, you can indicate Android 1.0 compatibility by removing 78<code>android:minSdkVersion</code> or setting the attribute to "1". However, 79before publishing your application, you must make sure to compile your 80application against the Android 1.0 system image (available in the 81Android 1.0 SDK), to ensure that it builds and functions properly for 82Android 1.0 devices. You should test the application against system 83images corresponding to the API Levels that the application is designed 84to be compatible with.</p> 85 86<p>If you are sure your application is not using Android 1.1 APIs and 87has no need to use them, you might find it easier to keep working in the 88Android 1.0 SDK, rather than migrating to the Android 1.1 SDK and having 89to do additional testing.</p> 90 91 92<h2 id="extlibs">External Libraries</h2> 93 94<p>The system image includes these external libraries, which you can 95access from your application by adding a <a 96href="{@docRoot}guide/topics/manifest/uses-library-element.html"> 97<uses-library></a>.</p> 98 <ul> 99 <li>com.google.android.maps — gives your 100application access to Google Maps data. Note that, to use Google Maps 101data, a Maps API Key is required.</li> 102 </ul> 103 104<h2 id="comp">Device Compatibility</h2> 105 106<p>The Android 1.1 system image was tested for compatability with the 107Android-powered devices listed below:</p> 108 <ul> 109 <li><a href="http://www.t-mobileg1.com">T-Mobile G1</a></li> 110 </ul> 111 112<h2 id="apps">Built-in Applications</h2> 113 114<p>The system image includes these built-in applications:</p> 115 <ul> 116 <li>Alarm Clock</li> 117 <li>API Demos</li> 118 <li>Browser</li> 119 <li>Calculator</li> 120 <li>Camera</li> 121 <li>Contacts</li> 122 <li>Dev Tools</li> 123 <li>Dialer</li> 124 <li>Email</li> 125 <li>Maps (and StreetView)</li> 126 <li>Messaging</li> 127 <li>Music</li> 128 <li>Pictures</li> 129 <li>Settings</li> 130 </ul> 131 132<h2 id="locs">UI Localizations</h2> 133 134<p>The system image provides localized UI strings for the languages 135listed below.</p> 136 <ul> 137 <li>English, US (en_US)</li> 138 <li>German (de) </li> 139 </ul> 140 141<p>Localized UI strings match the locales that are displayable in 142the emulator, accessible through the device Settings application.</p> 143 144<h2 id="resolved-issues">Resolved Issues</h2> 145<ul> 146<li>AlarmClock alert now plays audio/vibe directly, rather than through 147AlarmManager. AlarmClock alert starts playing audio/vibe in its 148IntentReceiver, rather than on activity start. These changes should 149prevent alarms from being blocked by modal dialogs.</li> 150<li>Fixes to device sleep. </li> 151<li>Single tap no longer opens the in-call dialpad; users now need to 152touch and drag it. </li> 153<li>Fixes a bug causing approximately 1 in 25 outbound messages to 154freeze up the IMAP connection (to a Gmail based server) when transferred 155to the Sent folder.</li> 156<li>Removes automatic account setup entries that were broken or not 157testable. Adds minor fixes to a few of the remaining entries. Makes 158improvements to warning dialogs used for a few special cases. </li> 159<li>Changes default mail checking interval to every 15 minutes (instead 160of defaulting to "never").</li> 161<li>Fixes password-quoting bugs in IMAP, so that users can include 162special characters in passwords (e.g. spaces).</li> 163<li>Fixes various errors in auto and manual account setup </li> 164<li>Improves reporting for various connection errors, making it easier 165for the user to diagnose failed account setups.</li> 166<li>Fixes new-mail notifications for POP3 accounts.</li> 167<li>Ensures proper auto-checking of accounts marked as "never 168check".</li> 169<li>Now displays date and time using user preference (e.g. 24 hr vs. 170AM/PM).</li> 171<li>Now shows cc: in message view.</li> 172<li>Improves recovery from POP3 connection failures.</li> 173<li>POP3 parser rules loosened, so the application can work with 174non-compliant email servers.</li> 175</ul> 176 177<h2 id="features">New Features</h2> 178 179<ul> 180<li>Maps: Adds details and reviews when a user does a search on Maps and 181clicks on a business to view its details.</li> 182<li>Dialer: In-call screen timeout default is now longer when using the 183speakerphone.</li> 184<li>Dialer: Adds a "Show dialpad" / "Hide dialpad" item to the in-call 185menu, to make it easier to discover the DTMF dialpad. </li> 186<li>Adds support for saving attachments from MMS</li> 187<li>Adds support for marquee in layouts.</li> 188</ul> 189 190<h2 id="api-changes">API Changes</h2> 191 192<h3>Overview</strong></h3> 193 194<ul> 195<li>Adds annotations for test systems, no actual (non-test) API 196changes.</li> 197<li>Adds a method to allow a process to easily determine its UID. 198<li>Adds support for marquee in layouts.</li> 199<li>Adds new methods for determining padding in views. Useful if you are 200writing your own 201subclasses of {@link android.view.View View}.</li> 202<li>Adds new permissions that allow an application to broadcast an SMS 203or WAP Push message. </li> 204<li>API cleanup: removes protected constructor from 205SDK-bound system images. </li> 206</ul> 207 208<h3>API Change Details</h3> 209 210<table> 211<tr> 212<th>Module or Feature</th><th>Change Description</th> 213</tr> 214<tr><td rowspan="4">Annotations for test systems</td></tr> 215 <tr><td>Added {@link android.test.suitebuilder.annotation.LargeTest LargeTest} annotation.</td></tr> 216 <tr><td>Added {@link android.test.suitebuilder.annotation.MediumTest MediumTest} annotation.</td></tr> 217 <tr><td>Added {@link android.test.suitebuilder.annotation.SmallTest SmallTest} annotation.</td></tr> 218 219<tr><td rowspan="2">Allow a process to easily know its UID.</td></tr> 220 <tr><td>Added public method {@link android.os.Process#myUid} to class {@link android.os.Process android.os.Process}</td></tr> 221 222<tr><td rowspan="6">Padding in views</td></tr> 223 <tr><td>Added public method {@link android.view.View#getBottomPaddingOffset} to class {@link android.view.View android.view.View}.</td></tr> 224 <tr><td>Added public method {@link android.view.View#getLeftPaddingOffset} to class {@link android.view.View android.view.View}.</td></tr> 225 <tr><td>Added public method {@link android.view.View#getRightPaddingOffset} to class {@link android.view.View android.view.View}.</td></tr> 226 <tr><td>Added public method {@link android.view.View#getTopPaddingOffset} to class {@link android.view.View android.view.View}.</td></tr> 227 <tr><td>Added public method {@link android.view.View#isPaddingOffsetRequired} to class {@link android.view.View android.view.View}.</td></tr> 228 229<tr><td rowspan="3">Marquee support</td></tr> 230 <tr><td>Added public method {@link android.widget.TextView#setMarqueeRepeatLimit} to class {@link android.widget.TextView}</td></tr> 231 <tr><td>Added public field {@link android.R.attr#marqueeRepeatLimit android.R.attr.marqueeRepeatLimit}</td></tr> 232 233<tr><td rowspan="3">New permissions</td></tr> 234 <tr><td>Added public field {@link android.Manifest.permission#BROADCAST_SMS android.Manifest.permission.BROADCAST_SMS}</td></tr> 235 <tr><td>Added public field {@link android.Manifest.permission#BROADCAST_WAP_PUSH android.Manifest.permission.BROADCAST_WAP_PUSH}</td></tr> 236 237<tr><td rowspan="2">API cleanup</td></tr> 238 <tr><td>Removed protected constructor java.net.ServerSocket.ServerSocket(java.net.SocketImpl).</td></tr> 239 240</table> 241 242 243 244 245 246 247