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