The Android Open Source Project | 9066cfe | 2009-03-03 19:31:44 -0800 | [diff] [blame] | 1 | page.title=Android 1.1 Version Notes |
| 2 | sdk.version=1.1_r1 |
| 3 | sys.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 |
| 27 | counterpart to the Android 1.1 production system image, deployable to |
| 28 | Android-powered handsets starting in February 2009. </p> |
| 29 | |
| 30 | <p>The Android 1.1 system image delivers an updated version of the framework |
| 31 | API. As with the Android 1.0 API, the Android 1.1 API |
| 32 | is assigned an integer identifier — <strong>2</strong> — that is |
| 33 | stored in the system itself. This identifier, called the "API Level", allows the |
| 34 | system to correctly determine whether an application is compatible with |
Scott Main | 0ebf34a | 2009-04-14 17:19:13 -0700 | [diff] [blame] | 35 | the system, prior to installing the application. </p> |
The Android Open Source Project | 9066cfe | 2009-03-03 19:31:44 -0800 | [diff] [blame] | 36 | |
Scott Main | 0ebf34a | 2009-04-14 17:19:13 -0700 | [diff] [blame] | 37 | <p>Applications indicate the lowest system API Level that they are compatible with by adding |
| 38 | a value to the <code>minSdkVersion</code> attribute. |
The Android Open Source Project | 9066cfe | 2009-03-03 19:31:44 -0800 | [diff] [blame] | 39 | The value of the attribute is an integer corresponding to an API Level |
Scott Main | 0ebf34a | 2009-04-14 17:19:13 -0700 | [diff] [blame] | 40 | identifier. Prior to installing an application, the system checks the value of |
The Android Open Source Project | 9066cfe | 2009-03-03 19:31:44 -0800 | [diff] [blame] | 41 | <code>minSdkVersion</code> and allows the install only |
| 42 | if the referenced integer is less than or equal to the API Level integer stored |
| 43 | in the system itself. </p> |
| 44 | |
| 45 | <p>If you use the Android 1.1 system image to build an application |
| 46 | compatible with Android-powered devices running the Android 1.1 |
Scott Main | 0ebf34a | 2009-04-14 17:19:13 -0700 | [diff] [blame] | 47 | platform, you <strong style="color:red">must</strong> set the |
| 48 | <code>minSdkVersion</code> attribute to "2" in order to specify that your application |
| 49 | is compatible only with devices using the Android 1.1 (or greater) system image. |
The Android Open Source Project | 9066cfe | 2009-03-03 19:31:44 -0800 | [diff] [blame] | 50 | </p> |
| 51 | |
| 52 | <p>Specifically, you specify the <code>android:minSdkVersion</code> |
| 53 | attribute in a <code><uses-sdk></code> element as a child of |
| 54 | <code><manifest></code> in the manifest file. When set, the |
| 55 | attribute looks like this: </p> |
| 56 | |
| 57 | <pre><code><manifest> |
| 58 | ... |
Scott Main | 0ebf34a | 2009-04-14 17:19:13 -0700 | [diff] [blame] | 59 | <uses-sdk android:minSdkVersion="2" /> |
The Android Open Source Project | 9066cfe | 2009-03-03 19:31:44 -0800 | [diff] [blame] | 60 | ... |
| 61 | </manifest></code> |
| 62 | </pre> |
| 63 | |
| 64 | <p>By setting <code>android:minSdkVersion</code> in this way, you ensure |
| 65 | that users will only be able to install your application if their |
| 66 | devices are running the Android 1.1 platform. In turn, this ensures that |
| 67 | your application will function properly on their devices, especially if |
| 68 | it 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 |
| 71 | declare <code><uses-sdk minSdkVersion="2" /></code>, then it will |
| 72 | run properly on Android 1.1 devices but <em>not</em> on Android 1.0 |
| 73 | devices. In the latter case, the application will crash at runtime when |
| 74 | it tries to use the Android 1.1 APIs.</p> |
| 75 | |
| 76 | <p>If your application does not use any new APIs introduced in Android |
| 77 | 1.1, you can indicate Android 1.0 compatibility by removing |
| 78 | <code>minSdkVersion</code> or setting the attribute to "1". However, |
| 79 | before publishing your application, you must make sure to compile your |
| 80 | application against the Android 1.0 system image (available in the |
| 81 | Android 1.0 SDK), to ensure that it builds and functions properly for |
| 82 | Android 1.0 devices. You should test the application against system |
| 83 | images corresponding to the API Levels that the application is designed |
| 84 | to be compatible with.</p> |
| 85 | |
| 86 | <p>If you are sure your application is not using Android 1.1 APIs and |
| 87 | has no need to use them, you might find it easier to keep working in the |
| 88 | Android 1.0 SDK, rather than migrating to the Android 1.1 SDK and having |
| 89 | to 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 |
| 95 | access from your application by adding a <a |
| 96 | href="{@docRoot}guide/topics/manifest/uses-library-element.html"> |
| 97 | <uses-library></a>.</p> |
| 98 | <ul> |
| 99 | <li>com.google.android.maps — gives your |
| 100 | application access to Google Maps data. Note that, to use Google Maps |
| 101 | data, 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 |
| 107 | Android-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 |
| 135 | listed 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 |
| 142 | the 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 |
| 147 | AlarmManager. AlarmClock alert starts playing audio/vibe in its |
| 148 | IntentReceiver, rather than on activity start. These changes should |
| 149 | prevent 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 |
| 152 | touch and drag it. </li> |
| 153 | <li>Fixes a bug causing approximately 1 in 25 outbound messages to |
| 154 | freeze up the IMAP connection (to a Gmail based server) when transferred |
| 155 | to the Sent folder.</li> |
| 156 | <li>Removes automatic account setup entries that were broken or not |
| 157 | testable. Adds minor fixes to a few of the remaining entries. Makes |
| 158 | improvements to warning dialogs used for a few special cases. </li> |
| 159 | <li>Changes default mail checking interval to every 15 minutes (instead |
| 160 | of defaulting to "never").</li> |
| 161 | <li>Fixes password-quoting bugs in IMAP, so that users can include |
| 162 | special 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 |
| 165 | for 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 |
| 168 | check".</li> |
| 169 | <li>Now displays date and time using user preference (e.g. 24 hr vs. |
| 170 | AM/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 |
| 174 | non-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 |
| 181 | clicks on a business to view its details.</li> |
| 182 | <li>Dialer: In-call screen timeout default is now longer when using the |
| 183 | speakerphone.</li> |
| 184 | <li>Dialer: Adds a "Show dialpad" / "Hide dialpad" item to the in-call |
| 185 | menu, 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 |
| 196 | changes.</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 |
| 200 | writing your own |
| 201 | subclasses of {@link android.view.View View}.</li> |
| 202 | <li>Adds new permissions that allow an application to broadcast an SMS |
| 203 | or WAP Push message. </li> |
| 204 | <li>API cleanup: removes protected constructor from |
| 205 | SDK-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 | |