From dde8b50b87fdb6849428fff7808e060489b31142 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Queru Date: Fri, 9 Oct 2009 07:33:40 -0700 Subject: [PATCH 1/2] donut snapshot --- core/java/android/app/SearchDialog.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/java/android/app/SearchDialog.java b/core/java/android/app/SearchDialog.java index 5844079e616cb..3e93ec71e3b75 100644 --- a/core/java/android/app/SearchDialog.java +++ b/core/java/android/app/SearchDialog.java @@ -1206,7 +1206,7 @@ public class SearchDialog extends Dialog implements OnItemClickListener, OnItemS cv.put(SearchManager.SUGGEST_COLUMN_INTENT_ACTION, intent.getAction()); cv.put(SearchManager.SUGGEST_COLUMN_INTENT_DATA, intent.getDataString()); cv.put(SearchManager.SUGGEST_COLUMN_INTENT_COMPONENT_NAME, - intent.getStringExtra(SearchManager.COMPONENT_NAME_KEY)); + intent.getComponent().flattenToShortString()); // ensure the icons will work for global search cv.put(SearchManager.SUGGEST_COLUMN_ICON_1, From 5f4906cafc8baf874df31dd61f8119efbfc40a26 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Queru Date: Fri, 9 Oct 2009 10:27:14 -0700 Subject: [PATCH 2/2] donut snapshot --- Android.mk | 8 +- api/4.xml | 110 ++ api/current.xml | 110 ++ core/java/android/app/SearchManager.java | 167 +- .../android/server/search/Searchables.java | 38 +- core/java/android/text/Layout.java | 2 +- core/res/res/values/attrs.xml | 10 +- core/res/res/values/public.xml | 4 - docs/html/community/index.jd | 22 +- docs/html/guide/appendix/api-levels.jd | 356 +++- docs/html/guide/developing/eclipse-adt.jd | 16 +- docs/html/guide/developing/other-ide.jd | 121 +- docs/html/guide/developing/tools/avd.jd | 94 +- docs/html/guide/developing/tools/emulator.jd | 78 +- docs/html/guide/developing/tools/index.jd | 5 + docs/html/guide/developing/tools/zipalign.jd | 65 + docs/html/guide/guide_toc.cs | 6 +- docs/html/guide/publishing/app-signing.jd | 246 +-- docs/html/guide/publishing/preparing.jd | 14 +- docs/html/guide/publishing/versioning.jd | 37 +- .../samples/images/SearchableDictionary1.png | Bin 0 -> 15800 bytes .../samples/images/SearchableDictionary2.png | Bin 0 -> 18114 bytes docs/html/guide/samples/index.jd | 4 + .../guide/topics/intents/intents-filters.jd | 418 ++++- .../topics/manifest/uses-feature-element.jd | 98 +- .../guide/topics/manifest/uses-sdk-element.jd | 17 +- docs/html/images/emulator-wvga800l.png | Bin 0 -> 513676 bytes docs/html/index.jd | 19 +- docs/html/intl/ja/community/index.jd | 18 +- docs/html/sdk/1.6_r1/index.jd | 140 ++ docs/html/sdk/1.6_r1/installing.jd | 441 +++++ docs/html/sdk/1.6_r1/requirements.jd | 51 + docs/html/sdk/1.6_r1/upgrading.jd | 386 +++++ docs/html/sdk/RELEASENOTES.jd | 192 +++ docs/html/sdk/adt_download.jd | 19 +- docs/html/sdk/android-1.6.jd | 235 +++ docs/html/sdk/api_diff/4/changes.html | 4 +- .../4/changes/alldiffs_index_additions.html | 994 +----------- .../4/changes/alldiffs_index_all.html | 1011 +----------- .../4/changes/alldiffs_index_changes.html | 14 - .../changes/android.Manifest.permission.html | 4 +- .../android.Manifest.permission_group.html | 4 +- .../api_diff/4/changes/android.R.anim.html | 151 +- .../api_diff/4/changes/android.R.array.html | 199 --- .../api_diff/4/changes/android.R.attr.html | 130 +- .../api_diff/4/changes/android.R.color.html | 332 ---- .../api_diff/4/changes/android.R.dimen.html | 213 --- .../4/changes/android.R.drawable.html | 284 +--- .../sdk/api_diff/4/changes/android.R.id.html | 269 --- .../api_diff/4/changes/android.R.integer.html | 213 --- .../api_diff/4/changes/android.R.layout.html | 206 --- .../api_diff/4/changes/android.R.string.html | 304 ---- .../api_diff/4/changes/android.R.style.html | 137 +- .../4/changes/android.app.Activity.html | 4 +- .../4/changes/android.app.Dialog.html | 4 +- ...android.app.LauncherActivity.ListItem.html | 4 +- .../changes/android.app.LauncherActivity.html | 4 +- .../4/changes/android.app.PendingIntent.html | 4 +- .../4/changes/android.app.SearchManager.html | 4 +- .../android.content.ComponentName.html | 4 +- .../android.content.ContentProvider.html | 4 +- .../4/changes/android.content.Context.html | 4 +- .../android.content.ContextWrapper.html | 4 +- .../4/changes/android.content.Intent.html | 4 +- .../android.content.pm.ActivityInfo.html | 4 +- .../android.content.pm.ApplicationInfo.html | 4 +- .../android.content.pm.ConfigurationInfo.html | 4 +- .../android.content.pm.PackageManager.html | 4 +- .../android.content.pm.ProviderInfo.html | 4 +- .../android.content.res.Configuration.html | 4 +- .../4/changes/android.graphics.Bitmap.html | 4 +- ...ndroid.graphics.BitmapFactory.Options.html | 4 +- .../android.graphics.BitmapFactory.html | 4 +- .../4/changes/android.graphics.Canvas.html | 4 +- .../4/changes/android.graphics.NinePatch.html | 4 +- .../4/changes/android.graphics.Typeface.html | 4 +- ...d.graphics.drawable.AnimationDrawable.html | 4 +- ...roid.graphics.drawable.BitmapDrawable.html | 4 +- .../android.graphics.drawable.Drawable.html | 4 +- ...d.graphics.drawable.NinePatchDrawable.html | 4 +- .../android.hardware.SensorManager.html | 4 +- ...droid.inputmethodservice.KeyboardView.html | 4 +- .../4/changes/android.location.Address.html | 4 +- .../4/changes/android.media.AudioManager.html | 4 +- ...droid.media.MediaRecorder.AudioSource.html | 4 +- .../changes/android.media.MediaRecorder.html | 4 +- .../changes/android.media.ToneGenerator.html | 4 +- .../changes/android.net.wifi.WifiManager.html | 4 +- .../4/changes/android.os.Build.VERSION.html | 4 +- .../api_diff/4/changes/android.os.Build.html | 4 +- .../android.os.RemoteCallbackList.html | 4 +- ...vider.MediaStore.Audio.Genres.Members.html | 4 +- ...droid.provider.MediaStore.Audio.Media.html | 4 +- .../android.provider.Settings.Secure.html | 4 +- .../android.provider.Settings.System.html | 4 +- .../android.telephony.gsm.SmsManager.html | 4 +- ...telephony.gsm.SmsMessage.MessageClass.html | 4 +- ...id.telephony.gsm.SmsMessage.SubmitPdu.html | 4 +- .../android.telephony.gsm.SmsMessage.html | 4 +- .../changes/android.test.AndroidTestCase.html | 4 +- .../android.test.mock.MockContext.html | 4 +- .../android.test.mock.MockPackageManager.html | 4 +- .../changes/android.text.style.ImageSpan.html | 4 +- .../4/changes/android.util.Config.html | 4 +- .../changes/android.util.DisplayMetrics.html | 4 +- .../4/changes/android.util.TypedValue.html | 4 +- .../4/changes/android.view.Surface.html | 4 +- .../changes/android.view.VelocityTracker.html | 4 +- .../api_diff/4/changes/android.view.View.html | 4 +- .../android.view.ViewConfiguration.html | 4 +- .../changes/android.view.Window.Callback.html | 4 +- .../android.widget.AutoCompleteTextView.html | 4 +- .../android.widget.CheckedTextView.html | 4 +- .../4/changes/android.widget.ListView.html | 4 +- .../4/changes/android.widget.PopupWindow.html | 4 +- .../android.widget.TabHost.TabSpec.html | 4 +- .../4/changes/android.widget.TabWidget.html | 4 +- .../api_diff/4/changes/changes-summary.html | 4 +- .../4/changes/classes_index_additions.html | 24 + .../api_diff/4/changes/classes_index_all.html | 47 +- .../4/changes/classes_index_changes.html | 7 - .../4/changes/fields_index_additions.html | 715 -------- .../api_diff/4/changes/fields_index_all.html | 715 -------- .../api_diff/4/changes/java.lang.String.html | 4 +- .../api_diff/4/changes/java.net.Socket.html | 4 +- .../api_diff/4/changes/java.util.Date.html | 4 +- .../sdk/api_diff/4/changes/jdiff_help.html | 2 +- .../api_diff/4/changes/jdiff_statistics.html | 105 +- .../api_diff/4/changes/pkg_android.app.html | 4 +- .../4/changes/pkg_android.content.html | 4 +- .../4/changes/pkg_android.content.pm.html | 4 +- .../4/changes/pkg_android.content.res.html | 4 +- .../pkg_android.graphics.drawable.html | 4 +- .../4/changes/pkg_android.graphics.html | 4 +- .../4/changes/pkg_android.hardware.html | 4 +- .../sdk/api_diff/4/changes/pkg_android.html | 53 +- .../pkg_android.inputmethodservice.html | 4 +- .../4/changes/pkg_android.location.html | 4 +- .../api_diff/4/changes/pkg_android.media.html | 4 +- .../4/changes/pkg_android.net.wifi.html | 4 +- .../4/changes/pkg_android.opengl.html | 4 +- .../api_diff/4/changes/pkg_android.os.html | 4 +- .../4/changes/pkg_android.provider.html | 4 +- .../4/changes/pkg_android.telephony.gsm.html | 4 +- .../4/changes/pkg_android.telephony.html | 4 +- .../api_diff/4/changes/pkg_android.test.html | 4 +- .../4/changes/pkg_android.test.mock.html | 4 +- .../4/changes/pkg_android.text.style.html | 4 +- .../api_diff/4/changes/pkg_android.util.html | 4 +- .../4/changes/pkg_android.view.animation.html | 4 +- .../api_diff/4/changes/pkg_android.view.html | 4 +- .../4/changes/pkg_android.widget.html | 26 +- .../sdk/api_diff/4/changes/pkg_java.lang.html | 4 +- .../sdk/api_diff/4/changes/pkg_java.net.html | 4 +- .../sdk/api_diff/4/changes/pkg_java.util.html | 4 +- docs/html/sdk/api_diff/4/missingSinces.txt | 233 +-- ...Donut.xml => user_comments_for_3_to_4.xml} | 1442 +---------------- docs/html/sdk/preview/features.jd | 4 + docs/html/sdk/preview/index.jd | 192 +-- docs/html/sdk/preview/installing.jd | 343 +--- docs/html/sdk/preview/requirements.jd | 44 +- docs/html/sdk/preview/upgrading.jd | 257 +-- docs/html/sdk/sdk_toc.cs | 2 + .../unit_tests/activity/LifecycleTest.java | 3 +- 164 files changed, 3569 insertions(+), 9033 deletions(-) create mode 100644 docs/html/guide/developing/tools/zipalign.jd create mode 100644 docs/html/guide/samples/images/SearchableDictionary1.png create mode 100644 docs/html/guide/samples/images/SearchableDictionary2.png create mode 100644 docs/html/images/emulator-wvga800l.png create mode 100644 docs/html/sdk/1.6_r1/index.jd create mode 100644 docs/html/sdk/1.6_r1/installing.jd create mode 100644 docs/html/sdk/1.6_r1/requirements.jd create mode 100644 docs/html/sdk/1.6_r1/upgrading.jd create mode 100644 docs/html/sdk/android-1.6.jd delete mode 100644 docs/html/sdk/api_diff/4/changes/android.R.array.html delete mode 100644 docs/html/sdk/api_diff/4/changes/android.R.color.html delete mode 100644 docs/html/sdk/api_diff/4/changes/android.R.dimen.html delete mode 100644 docs/html/sdk/api_diff/4/changes/android.R.id.html delete mode 100644 docs/html/sdk/api_diff/4/changes/android.R.integer.html delete mode 100644 docs/html/sdk/api_diff/4/changes/android.R.layout.html delete mode 100644 docs/html/sdk/api_diff/4/changes/android.R.string.html rename docs/html/sdk/api_diff/4/{user_comments_for_3_to_Donut.xml => user_comments_for_3_to_4.xml} (72%) create mode 100644 docs/html/sdk/preview/features.jd diff --git a/Android.mk b/Android.mk index fd03c6d897dcf..16d77e456f86b 100644 --- a/Android.mk +++ b/Android.mk @@ -352,6 +352,8 @@ web_docs_sample_code_flags := \ guide/samples/LunarLander "Lunar Lander" \ -samplecode $(sample_dir)/NotePad \ guide/samples/NotePad "Note Pad" \ + -samplecode $(sample_dir)/SearchableDictionary \ + guide/samples/SearchableDictionary "Searchable Dictionary" \ -samplecode $(sample_dir)/Snake \ guide/samples/Snake "Snake" \ -samplecode $(sample_dir)/SoftKeyboard \ @@ -359,13 +361,13 @@ web_docs_sample_code_flags := \ ## SDK version identifiers used in the published docs # major[.minor] version for current SDK. (full releases only) -framework_docs_SDK_VERSION:=1.5 +framework_docs_SDK_VERSION:=1.6 # release version (ie "Release x") (full releases only) -framework_docs_SDK_REL_ID:=3 +framework_docs_SDK_REL_ID:=1 # name of current SDK directory (full releases only) framework_docs_SDK_CURRENT_DIR:=$(framework_docs_SDK_VERSION)_r$(framework_docs_SDK_REL_ID) # flag to build offline docs for a preview release -framework_docs_SDK_PREVIEW:=true +framework_docs_SDK_PREVIEW:=0 framework_docs_LOCAL_DROIDDOC_OPTIONS += \ -hdf sdk.version $(framework_docs_SDK_VERSION) \ diff --git a/api/4.xml b/api/4.xml index 55d910508cca3..fc54859f73692 100644 --- a/api/4.xml +++ b/api/4.xml @@ -4123,6 +4123,17 @@ visibility="public" > + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + How Search Is Invoked *
  • Implementing Search for Your App *
  • Search Suggestions + *
  • Exposing Search Suggestions to + * Quick Search Box
  • *
  • Action Keys *
  • Searchability Metadata *
  • Passing Search Context @@ -246,6 +248,12 @@ import java.util.List; *
  • Summaries of possible results
  • * * + *

    Once an application is configured to provide search suggestions, those same suggestions can + * easily be made available to the system-wide Quick Search Box, providing faster access to its + * content from one central prominent place. See + * Exposing Search Suggestions to Quick Search + * Box for more details. + * *

    The primary form of suggestions is known as queried suggestions and is based on query * text that the user has already typed. This would generally be based on partial matches in * the available data. In certain situations - for example, when no query text has been typed yet - @@ -480,6 +488,26 @@ import java.util.List; * {@link android.content.Intent#ACTION_SEARCH ACTION_SEARCH}, optional otherwise. * * + * {@link #SUGGEST_COLUMN_SHORTCUT_ID} + * This column is used to indicate whether a search suggestion should be stored as a + * shortcut, and whether it should be validated. Shortcuts are usually formed when the + * user clicks a suggestion from Quick Search Box. If missing, the result will be + * stored as a shortcut and never refreshed. If set to + * {@link #SUGGEST_NEVER_MAKE_SHORTCUT}, the result will not be stored as a shortcut. + * Otherwise, the shortcut id will be used to check back for for an up to date + * suggestion using {@link #SUGGEST_URI_PATH_SHORTCUT}. Read more about shortcut + * refreshing in the section about + * exposing search suggestions to + * Quick Search Box. + * No. Only applicable to sources included in Quick Search Box. + * + * + * {@link #SUGGEST_COLUMN_SPINNER_WHILE_REFRESHING} + * This column is used to specify that a spinner should be shown in lieu of an icon2 + * while the shortcut of this suggestion is being refreshed in Quick Search Box. + * No. Only applicable to sources included in Quick Search Box. + * + * * Other Columns * Finally, if you have defined any Action Keys and you wish * for them to have suggestion-specific definitions, you'll need to define one @@ -553,6 +581,68 @@ import java.util.List; * query text is provided and the SUGGEST_COLUMN_INTENT_DATA values are not suitable for user * inspection and editing. * + * + *

    Exposing Search Suggestions to Quick Search Box

    + * + *

    Once your application is set up to provide search suggestions, making them available to the + * globally accessable Quick Search Box is as easy as setting android:includeInGlobalSearch to + * "true" in your searchable metadata file. Beyond that, here are some more details of how + * suggestions interact with Quick Search Box, and optional ways that you may customize suggestions + * for your application. + * + *

    Important Note: By default, your application will not be enabled as a suggestion + * provider (or "searchable item") in Quick Search Box. Once your app is installed, the user must + * enable it as a "searchable item" in the Search settings in order to receive your app's + * suggestions in Quick Search Box. You should consider how to message this to users of your app - + * perhaps with a note to the user the first time they launch the app about how to enable search + * suggestions. This gives your app a chance to be queried for suggestions as the user types into + * Quick Search Box, though exactly how or if your suggestions will be surfaced is decided by Quick + * Search Box. + * + *

    Source Ranking: Once your application's search results are made available to Quick + * Search Box, how they surface to the user for a particular query will be determined as appropriate + * by Quick Search Box ranking. This may depend on how many other apps have results for that query, + * and how often the user has clicked on your results compared to the other apps - but there is no + * guarantee about how ranking will occur, or whether your app's suggestions will show at all for + * a given query. In general, you can expect that providing quality results will increase the + * likelihood that your app's suggestions are provided in a prominent position, and apps that + * provide lower quality suggestions will be more likely to be ranked lower and/or not displayed. + * + *

    Search Settings: Each app that is available to Quick Search Box has an entry in the + * system settings where the user can enable or disable the inclusion of its results. Below the + * name of the application, each application may provide a brief description of what kind of + * information will be made available via a search settings description string pointed to by the + * android:searchSettingsDescription attribute in the searchable metadata. Note that the + * user will need to visit this settings menu to enable search suggestions for your app before your + * app will have a chance to provide search suggestions to Quick Search Box - see the section + * called "Important Note" above. + * + *

    Shortcuts: Suggestions that are clicked on by the user may be automatically made into + * shortcuts, which are suggestions that have been copied from your provider in order to be quickly + * displayed without the need to re-query the original sources. Shortcutted suggestions may be + * displayed for the query that yielded the suggestion and for any prefixes of that query. You can + * request how to have your app's suggestions made into shortcuts, and whether they should be + * refreshed, using the {@link #SUGGEST_COLUMN_SHORTCUT_ID} column: + *

    • Suggestions that do not include a shortcut id column will be made into shortcuts and + * never refreshed. This makes sense for suggestions that refer to data that will never be changed + * or removed.
    • + *
    • Suggestions that include a shortcut id will be re-queried for a fresh version of the + * suggestion each time the shortcut is displayed. The shortcut will be quickly displayed with + * whatever data was most recently available until the refresh query returns, after which the + * suggestion will be dynamically refreshed with the up to date information. The shortcut refresh + * query will be sent to your suggestion provider with a uri of {@link #SUGGEST_URI_PATH_SHORTCUT}. + * The result should contain one suggestion using the same columns as the suggestion query, or be + * empty, indicating that the shortcut is no longer valid. Shortcut ids make sense when referring + * to data that may change over time, such as a contact's presence status. If a suggestion refers + * to data that could take longer to refresh, such as a network based refresh of a stock quote, you + * may include {@link #SUGGEST_COLUMN_SPINNER_WHILE_REFRESHING} to show a progress spinner for the + * right hand icon until the refresh is complete.
    • + *
    • Finally, to prevent a suggestion from being copied into a shortcut, you may provide a + * shortcut id with a value of {@link #SUGGEST_NEVER_MAKE_SHORTCUT}.
    + * + * Note that Quick Search Box will ultimately decide whether to shortcut your app's suggestions, + * considering these values as a strong request from your application. + * * *

    Action Keys

    * @@ -725,7 +815,12 @@ import java.util.List; * and editing. * * - * + * + * Note that the icon of your app will likely be shown alongside any badge you specify, + * to differentiate search in your app from Quick Search Box. The display of this icon + * is not under the app's control. + * + * * No * * @@ -869,6 +964,47 @@ import java.util.List; * * * + *

    Elements of search metadata that configure search suggestions being available to Quick Search + * Box: + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
    Attribute Description Required?
    android:includeInGlobalSearchIf true, indicates the search suggestions provided by your application should be + * included in the globally accessible Quick Search Box. The attributes below are only + * applicable if this is set to true.Yes
    android:searchSettingsDescriptionIf provided, provides a brief description of the search suggestions that are provided + * by your application to Quick Search Box, and will be displayed in the search settings + * entry for your application.No
    android:queryAfterZeroResultsIndicates whether a source should be invoked for supersets of queries it has + * returned zero results for in the past. For example, if a source returned zero + * results for "bo", it would be ignored for "bob". If set to false, this source + * will only be ignored for a single session; the next time the search dialog is + * invoked, all sources will be queried. The default value is false.No
    android:searchSuggestThresholdIndicates the minimum number of characters needed to trigger a source from Quick + * Search Box. Only guarantees that a source will not be queried for anything shorter + * than the threshold. The default value is 0.No
    + * *

    Additional metadata for search action keys. For each action key that you would like to * define, you'll need to add an additional element defining that key, and using the attributes * discussed in Action Keys. A simple example is shown here: @@ -1246,16 +1382,12 @@ public class SearchManager * result indicates the shortcut refers to a no longer valid sugggestion. * * @see #SUGGEST_COLUMN_SHORTCUT_ID - * - * @hide pending enabling of global search for third parties */ public final static String SUGGEST_URI_PATH_SHORTCUT = "search_suggest_shortcut"; /** * MIME type for shortcut validation. You'll use this in your suggestions content provider * in the getType() function. - * - * @hide pending enabling of global search for third parties */ public final static String SHORTCUT_MIME_TYPE = "vnd.android.cursor.item/vnd.android.search.suggest"; @@ -1268,7 +1400,7 @@ public class SearchManager * In addition to the columns below, the suggestion columns are used to pass along the full * suggestion so it can be shortcutted. * - * @hide an implementation detail not part of the public api + * @hide */ public final static String SEARCH_CLICK_REPORT_AUTHORITY = "com.android.globalsearch.stats"; @@ -1276,21 +1408,21 @@ public class SearchManager /** * The path the write goes to. * - * @hide an implementation detail not part of the public api + * @hide */ public final static String SEARCH_CLICK_REPORT_URI_PATH = "click"; /** * The column storing the query for the click. * - * @hide an implementation detail not part of the public api + * @hide */ public final static String SEARCH_CLICK_REPORT_COLUMN_QUERY = "query"; /** * The column storing the component name of the application that was pivoted into. * - * @hide an implementation detail not part of the public api + * @hide */ public final static String SEARCH_CLICK_REPORT_COLUMN_COMPONENT = "component"; @@ -1375,7 +1507,7 @@ public class SearchManager * {@link #COMPONENT_NAME_KEY}. For use by the global search system only - if other providers * attempt to use this column, the value will be overwritten by global search. * - * @hide an implementation detail not part of the public api + * @hide */ public final static String SUGGEST_COLUMN_INTENT_COMPONENT_NAME = "suggest_intent_component"; /** @@ -1400,8 +1532,6 @@ public class SearchManager * {@link #SUGGEST_NEVER_MAKE_SHORTCUT}, the result will not be stored as a shortcut. * Otherwise, the shortcut id will be used to check back for an up to date suggestion using * {@link #SUGGEST_URI_PATH_SHORTCUT}. - * - * @hide pending reenabling of global search for third parties */ public final static String SUGGEST_COLUMN_SHORTCUT_ID = "suggest_shortcut_id"; @@ -1410,7 +1540,7 @@ public class SearchManager * cursor item's background color if it needs a non-default background color. A non-zero value * indicates a valid background color to override the default. * - * @hide an implementation detail not part of the public api + * @hide For internal use, not part of the public API. */ public final static String SUGGEST_COLUMN_BACKGROUND_COLOR = "suggest_background_color"; @@ -1418,8 +1548,6 @@ public class SearchManager * Column name for suggestions cursor. Optional. This column is used to specify * that a spinner should be shown in lieu of an icon2 while the shortcut of this suggestion * is being refreshed. - * - * @hide pending reenabling of global search for third parties */ public final static String SUGGEST_COLUMN_SPINNER_WHILE_REFRESHING = "suggest_spinner_while_refreshing"; @@ -1427,8 +1555,6 @@ public class SearchManager /** * Column value for suggestion column {@link #SUGGEST_COLUMN_SHORTCUT_ID} when a suggestion * should not be stored as a shortcut in global search. - * - * @hide pending reenabling of global search for third parties */ public final static String SUGGEST_NEVER_MAKE_SHORTCUT = "_-1"; @@ -1475,8 +1601,6 @@ public class SearchManager * Intent action for starting a web search provider's settings activity. * Web search providers should handle this intent if they have provider-specific * settings to implement. - * - * @hide implementation detail only relevent to web search providers */ public final static String INTENT_ACTION_WEB_SEARCH_SETTINGS = "android.search.action.WEB_SEARCH_SETTINGS"; @@ -1491,7 +1615,8 @@ public class SearchManager /** * Intent action broadcasted to inform that the search settings have changed in some way. - * Either searchables have been enabled or disabled. + * Either searchables have been enabled or disabled, or a different web search provider + * has been chosen. */ public final static String INTENT_ACTION_SEARCH_SETTINGS_CHANGED = "android.search.action.SETTINGS_CHANGED"; @@ -1500,7 +1625,7 @@ public class SearchManager * If a suggestion has this value in {@link #SUGGEST_COLUMN_INTENT_ACTION}, * the search dialog will take no action. * - * @hide an implentation detail not part of the public api + * @hide */ public final static String INTENT_ACTION_NONE = "android.search.action.ZILCH"; diff --git a/core/java/android/server/search/Searchables.java b/core/java/android/server/search/Searchables.java index a2add73dc3b08..c615957367231 100644 --- a/core/java/android/server/search/Searchables.java +++ b/core/java/android/server/search/Searchables.java @@ -26,7 +26,6 @@ import android.content.IntentFilter; import android.content.pm.ActivityInfo; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; -import android.content.pm.ApplicationInfo; import android.os.Bundle; import android.util.Log; @@ -231,16 +230,14 @@ public class Searchables { : webSearchInfoList.get(ii - search_count); ActivityInfo ai = info.activityInfo; // Check first to avoid duplicate entries. - if (newSearchablesMap.containsKey(new ComponentName(ai.packageName, ai.name))) { - continue; - } - SearchableInfo searchable = SearchableInfo.getActivityMetaData(mContext, ai); - if (searchable != null) { - newSearchablesList.add(searchable); - newSearchablesMap.put(searchable.getSearchActivity(), searchable); - if (searchable.shouldIncludeInGlobalSearch() - && isWhitelistedForGlobalSearch(pm, searchable.getSearchActivity())) { - newSearchablesInGlobalSearchList.add(searchable); + if (newSearchablesMap.get(new ComponentName(ai.packageName, ai.name)) == null) { + SearchableInfo searchable = SearchableInfo.getActivityMetaData(mContext, ai); + if (searchable != null) { + newSearchablesList.add(searchable); + newSearchablesMap.put(searchable.getSearchActivity(), searchable); + if (searchable.shouldIncludeInGlobalSearch()) { + newSearchablesInGlobalSearchList.add(searchable); + } } } } @@ -291,25 +288,6 @@ public class Searchables { } } - /** - * Determines whether an activity may be included in quick search box. For now this is - * restricted to system installed apps. - * - * TODO: remove when we are ready to enable global search for third party applications. - * - * @param pm The package manager. - * @param searchActivity The component of the search activity. - * @return True if the search activity may include its search suggestions in quick search box. - */ - private boolean isWhitelistedForGlobalSearch(PackageManager pm, ComponentName searchActivity) { - try { - ActivityInfo ai = pm.getActivityInfo(searchActivity, 0); - return ((ai.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0); - } catch (PackageManager.NameNotFoundException e) { - return false; - } - } - /** * Checks if the given activity component is present in the system and if so makes it the * preferred activity for handling ACTION_WEB_SEARCH. diff --git a/core/java/android/text/Layout.java b/core/java/android/text/Layout.java index 29dc2ea5246e2..a92800d011ee8 100644 --- a/core/java/android/text/Layout.java +++ b/core/java/android/text/Layout.java @@ -1527,7 +1527,7 @@ public abstract class Layout { if (bm != null) { workPaint.set(paint); Styled.measureText(paint, workPaint, text, - offset, offset + 1, null); + j, j + 2, null); float wid = (float) bm.getWidth() * -workPaint.ascent() / bm.getHeight(); diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml index d5f8dcb76bcb5..fd78f83698aa4 100644 --- a/core/res/res/values/attrs.xml +++ b/core/res/res/values/attrs.xml @@ -2866,16 +2866,16 @@ when the user clicks a suggestion. Optional attribute. --> - - + The default value is false. Optional attribute.. --> - - diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml index d7224131f6a16..c92cf51852796 100644 --- a/core/res/res/values/public.xml +++ b/core/res/res/values/public.xml @@ -1094,9 +1094,7 @@ - - @@ -1117,7 +1115,6 @@ - @@ -1126,7 +1123,6 @@ - diff --git a/docs/html/community/index.jd b/docs/html/community/index.jd index eb5887a23e58f..3e69de4e57c02 100644 --- a/docs/html/community/index.jd +++ b/docs/html/community/index.jd @@ -3,8 +3,8 @@ page.title=Community @jd:body

    -

    Community

    -

    Welcome to the Android developers community! We're glad you're here and invite you to participate in these discussions. Before posting, please read the Groups Charter that covers the community guidelines.

    +

    Community

    +

    Welcome to the Android developers community! We're glad you're here and invite you to participate in these discussions. Before posting, please read the Groups Charter that covers the community guidelines.

    Note: If you are seeking discussion about Android source code (not application development), then please refer to the Open Source Project Mailing lists.

    @@ -53,48 +53,42 @@ phrasing your questions, read android-beginners -
  • Subscribe via email: android-beginners-subscribe@googlegroups.com -
  • +
  • Subscribe via email: android-beginners-subscribe@googlegroups.com
  • Android developers - You're now an experienced Android application developer. You've grasped the basics of Android app development, you're comfortable using the SDK, now you want to move to advanced topics. Get help here with troubleshooting applications, advice on implementation, and strategies for improving your application's performance and user experience. This is the not the right place to discuss user issues (use android-discuss for that) or beginner questions with the Android SDK (use android-beginners for that).
  • Android discuss - The "water cooler" of Android discussion. You can discuss just about anything Android-related here, ideas for the Android platform, announcements about your applications, discussions about Android devices, community resources... As long as your discussion is related to Android, it's on-topic here. However, if you have a discussion here that could belong on another list, you are probably not reaching all of your target audience here and may want to consider shifting to a more targeted list.
  • Android ndk - A place for discussing the Android NDK and topics related to using native code in Android applications.
  • Android security discuss - A place for open discussion on secure development, emerging security concerns, and best practices for and by android developers. Please don't disclose vulnerabilities directly on this list, you'd be putting all Android users at risk.
  • Android security announce - A low-volume group for security-related announcements by the Android Security Team.
  • diff --git a/docs/html/guide/appendix/api-levels.jd b/docs/html/guide/appendix/api-levels.jd index 8fc899bb4cc26..a4dcc5e0c76c7 100644 --- a/docs/html/guide/appendix/api-levels.jd +++ b/docs/html/guide/appendix/api-levels.jd @@ -1,81 +1,323 @@ page.title=Android API Levels @jd:body +
    +
    -

    The Android API Level is an integer that indicates a set of APIs available in an Android SDK -and on a version of the Android platform. Each version of the Android platform supports a specific set -of APIs, which are always backward-compatible. For example, Android 1.5 supports all APIs available in -Android 1.0, but the reverse is not true. If an application uses APIs -available in Android 1.5 that are not available in 1.0, then the application should never be installed -on an Android 1.0 device, because it will fail due to missing APIs. The API Level ensures this does not happen -by comparing the minimum API Level required by the applicaiton to the API Level available on the device.

    +

    In this document

    +
      +
    1. What is API Level?
    2. +
    3. Uses of API Level
    4. +
    5. Development Considerations +
        +
      1. Application forward compatibility
      2. +
      3. Application backward compatibility
      4. +
      5. Selecting a platform version for compiling
      6. +
      7. Declaring a minimum API Level
      8. +
      9. Testing against higher API Levels
      10. +
      +
    6. +
    7. Filtering the documentation
    8. +
    -

    When a new version of Android adds APIs, a new API Level is added to the platform. The new APIs -are available only to applications that declare a minimum API Level that is equal-to or greater-than -the API Level in which the APIs were introduced. The API Level required by an application is declared with the -<uses-sdk> element inside the Android manifest, like this:

    +

    See also

    +
      +
    1. <uses-sdk> manifest element
    2. +
    -
    <uses-sdk android:minSdkVersion="3" />
    +
    +
    -

    The value for minSdkVersion is the minimum API Level required by the application. -If this is not declared, then it is assumed that the application is compatible with all versions and defaults to -API Level 1. In which case, if the application actually uses APIs introduced with an API Level greater than 1, then -the application will fail in unpredictable ways when installed on a device that only supports API Level 1 -(such as an Android 1.0 device). -See the <uses-sdk> -documentation for more about declaring the API Level in your manifest.

    +

    As you develop your application on Android, it's useful to understand the +platform's general approach to API change management. It's also important to +understand the API Level identifier and the role it plays in ensuring your +application's compatibility with devices on which it may be installed.

    -

    For example, the {@link android.appwidget} package was introduced with API Level 3. If your application -has set minSdkVersion to 1 or 2, then your application cannot use this package, -even if the device running your application uses a version of Android that supports it. -In order to use the {@link android.appwidget} package, your application must set minSdkVersion -to 3 or higher. When the minSdkVersion is set to 3, the application will no longer be able to install -on a device running a platform version with an API Level less than 3.

    +

    The sections below provide information about API Level and how it affects +your applications.

    -

    Despite the name of the manifest attribute (minSdkVersion), the API Level is not directly -associated with a specific SDK. For example, the SDK for Android 1.0 uses -API Level 1 and the SDK for Android 1.1 uses API Level 2. So it may seem that the API Level increases consistently. -However, it's possible that a subsequent platform -releases will not introduce new APIs, and thus, the API Level will remain the same. In addition, there are often -multiple SDK releases for a single platform version (there were three SDK releases for Android 1.5), and -there's no guarantee that the API Level will remain the same between these. It's possible (but unlikely) that -a second or third SDK for a given version of the platform will provide new APIs and add a new API Level. -When you install a new SDK, be sure to read the SDK Contents on the install page, which specifies the API -Level for each platform available in the SDK. Also see the comparison of -Platform Versions vs. API Levels, below.

    +

    For information about how to use the "Filter by API Level" control +available in the API reference documentation, see +Filtering the documentation at the +end of this document.

    -

    Note: During an "Early Look" SDK release, the APIs may not be final, so the -API Level number cannot be specified. In this case, a string value matching the -platform codename must be used as the value for minSdkVersion. This codename value -will only be valid while using the Early Look SDK with the emulator. An application using this API Level -can never be installed on an Android device. When the final SDK is released, you must update your manifest to use -the official API Level integer.

    +

    What is API Level?

    -

    Platform Versions vs. API Levels

    +

    API Level is an integer value that uniquely identifies the framework API +revision offered by a version of the Android platform.

    -

    The following table specifies the maximum API Level supported by each version of the Android platform. -(Every platform is backward-compatible to API Level 1.)

    +

    The Android platform provides a framework API that applications can use to +interact with the underlying Android system. The framework API consists of:

    + +
      +
    • A core set of packages and classes
    • +
    • A set of XML elements and attributes for declaring a manifest file
    • +
    • A set of XML elements and attributes for declaring and accessing resources
    • +
    • A set of Intents
    • +
    • A set of permissions that applications can request, as well as permission +enforcements included in the system
    • +
    + +

    Each successive version of the Android platform can include updates to the +Android application framework API that it delivers.

    + +

    Updates to the framework API are designed so that the new API remains +compatible with earlier versions of the API. That is, most changes in the API +are additive and introduce new or replacement functionality. As parts of the API +are upgraded, the older replaced parts are deprecated but are not removed, so +that existing applications can still use them. In a very small number of cases, +parts of the API may be modified or removed, although typically such changes are +only needed to ensure API robustness and application or system security. All +other API parts from earlier revisions are carried forward without +modification.

    + +

    The framework API that an Android platform delivers is specified using an +integer identifier called "API Level". Each Android platform version supports +exactly one API Level, although support is implicit for all earlier API Levels +(down to API Level 1). The initial release of the Android platform provided +API Level 1 and subsequent releases have incremented the API Level.

    + +

    The following table specifies the API Level supported by each version of the +Android platform.

    - - + - + +
    Platform VersionAPI Level
    Android 1.01
    Android 1.12
    Android 1.64
    Android 1.53
    Android DonutDonut
    Android 1.12
    Android 1.01
    -

    Viewing the API Reference Based on API Level

    +

    Uses of API Level in Android

    -

    The Android API reference includes information that specififies the minimum API Level required for each -package, class, and member. You can see this information on the right side of each header or label.

    +

    The API Level identifier serves a key role in ensuring the best possible +experience for users and application developers: -

    By default, the reference documentation shows all APIs available with the latest SDK release. -This means that the reference assumes you're using the latest API Level and will show you everything available -with it. If you're developing applications for a version of Android that does not support the latest API Level, -then you can filter the reference to reveal only the packages, classes, and members available for that API Level. -When viewing the reference, use the "Filter by API Level" selection box (below the search box) to pick the API Level -you'd like to view.

    +
      +
    • It lets the Android platform describe the maximum framework API revision +that it supports
    • +
    • It lets applications describe the framework API revision that they +require
    • +
    • It lets the system negotiate the installation of applications on the user's +device, such that version-incompatible applications are not installed on a +user's device
    • +
    + +

    Each Android platform version stores its API Level identifier internally, in +the Android system itself.

    + +

    Applications can use a manifest element provided by the framework API — +<uses-sdk> — to describe the minimum and maximum API +Levels under which they are able to run, as well as the preferred API Level that +they are designed to support. The element offers two key attributes:

    + +
      +
    • android:minSdkVersion — Specifies the minimum API Level +on which the application is able to run. The default value is "1".
    • +
    • android:maxSdkVersion — Specifies the maximum API Level +on which the application is able to run.
    • +
    + +

    For example, to specify the minimum system API Level that an application +requires in order to run, the application would include in its manifest a +<uses-sdk> element with a android:minSdkVersion +attribute. The value of android:minSdkVersion would be the integer +corresponding to the API Level of the earliest version of the Android platform +under which the application can run.

    + +

    When the user attempts to install an application, the Android system first +checks the <uses-sdk> attributes in the application's +manifest and compares them against its own internal API Level. The system +allows the installation to begin only if these conditions are met:

    + +
      +
    • If a android:minSdkVersion attribute is declared, its value +must be less than or equal to the system's API Level integer. If not declared, +the system assumes that the application requires API Level 1.
    • +
    • If a android:maxSdkVersion attribute is declared, its value +must be equal to or greater than the system's API Level integer. +in the system itself. If not declared, the system assumes that the application +has no maximum API Level.
    • +
    + +

    When declared in an application's manifest, a <uses-sdk> +element might look like this:

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

    The principal reason that an application would declare an API Level in +android:minSdkVersion is to tell the Android system that it is +using APIs that were introduced in the API Level specified. If the +application were to be somehow installed on a platform with a lower API Level, +then it would crash at run-time when it tries to access APIs that don't exist. +The system prevents such an outcome by not allowing the application to be +installed if the lowest API Level it requires is higher than that of the +platform version on the target device.

    + +

    For example, the {@link android.appwidget} package was introduced with API +Level 3. If an application uses that API, it must declare a +android:minSdkVersion attribute with a value of "3". The +application will then be installable on platforms such as Android 1.5 (API Level +3) and Android 1.6 (API Level 4), but not on the Android 1.1 (API Level 2) and +Android 1.0 platforms (API Level 1).

    + +

    For more information about how to specify an application's API Level +requirements, see the <uses-sdk> + section of the manifest file documentation.

    +

    Development Considerations

    +

    The sections below provide information related to API level that you should +consider when developing your application.

    + +

    Application forward compatibility

    + +

    Android applications are generally forward-compatible with new versions of +the Android platform.

    + +

    Because almost all changes to the framework API are additive, an Android +application developed using any given version of the API (as specified by its +API Level) is forward-compatible with later versions of the Android platform and +higher API levels. The application should be able to run on all later versions +of the Android platform, except in isolated cases where the application uses a +part of the API that is later removed for some reason.

    + +

    Forward compatibility is important because many Android-powered devices +receive over-the-air (OTA) system updates. The user may install your +application and use it successfully, then later receive an OTA update to a new +version of the Android platform. Once the update is installed, your application +will run in a new run-time version of the environment, but one that has the API +and system capabilities that it depends on.

    + +

    In some cases, changes below the API, such those in the underlying +system itself, may affect your application when it is run in the new +environment. For that reason it's important for you, as the application +developer, to understand how the application will look and behave in each system +environment. To help you test your application on various versions of the Android +platform, the Android SDK includes multiple platforms that you can download. +Each platform includes a compatible system image that you can run in an AVD, to +test your application.

    + +

    Application backward compatibility

    + +

    Android applications are not necessarily backward compatible with versions of +the Android platform older than the version against which they were compiled. +

    + +

    Each new version of the Android platform can include new framework APIs, such +as those that give applications access to new platform capabilities or replace +existing API parts. The new APIs are accessible to applications when running on +the new platform and, as mentioned above, also when running on later versions of +the platform, as specified by API Level. Conversely, because earlier versions of +the platform do not include the new APIs, applications that use the new APIs are +unable to run on those platforms.

    + +

    Although it's unlikely that an Android-powered device would be downgraded to +a previous version of the platform, it's important to realize that there are +likely to be many devices in the field that run earlier versions of the +platform. Even among devices that receive OTA updates, some might lag and not +receive an update for a significant amount of time.

    + +

    Selecting a platform version and API Level

    + +

    When you are developing your application, you will need to choose +the platform version against which you will compile the application. In +general, you should compile your application against the lowest possible +version of the platform that your application can support. + +

    You can determine the lowest possible platform version by compiling the +application against successively lower build targets. After you determine the +lowest version, you should create an AVD using the corresponding platform +version (and API Level) and fully test your application. Make sure to declare a +android:minSdkVersion attribute in the application's manifest and +set its value to the API Level of the platform version.

    + +

    Declaring a minimum API Level

    + +

    If you build an application that uses APIs or system features introduced in +the latest platform version, you should set the +android:minSdkVersion attribute to the API Level of the latest +platform version. This ensures that users will only be able to install your +application if their devices are running a compatible version of the Android +platform. In turn, this ensures that your application can function properly on +their devices.

    + +

    If your application uses APIs introduced in the latest platform version but +does not declare a android:minSdkVersion attribute, then +it will run properly on devices running the latest version of the platform, but +not on devices running earlier versions of the platform. In the latter +case, the application will crash at runtime when it tries to use APIs that don't +exist on the earlier versions.

    + +

    Testing against higher API Levels

    + +

    After compiling your application, you should make sure to test it on the +platform specified in the application's android:minSdkVersion +attribute. To do so, create an AVD that uses the platform version required by +your application. Additionally, to ensure forward-compatibility, you should run +and test the application on all platforms that use a higher API Level than that +used by your application.

    + +

    The Android SDK includes multiple platform versions that you can use, +including the latest version, and provides an updater tool that you can use to +download other platform versions as necessary.

    + +

    To access the updater, use the android command-line tool, +located in the <sdk>/tools directory. You can launch the Updater by using +the android command without specifying any options. You can +also simply double-click the android.bat (Windows) or android (OS X/Linux) file. +In ADT, you can also access the updater by selecting +Window > Android SDK and AVD +Manager.

    + +

    To run your application against different platform versions in the emulator, +create an AVD for each platform version that you want to test. For more +information about AVDs, see Android Virtual Devices. If +you are using a physical device for testing, ensure that you know the API Level +of the Android platform it runs. See the table at the top of this document for +a list of platform versions and their API Levels.

    + + + +

    Filtering the Reference Documentation by API Level

    + +

    Reference documentation pages on the Android Developers site offer a "Filter +by API Level" control in the top-right area of each page.

    + +

    The "Filter by API Level" lets you show documentation only for parts of the +API that are actually accessible to your application, based on the API Level +that it specifies in the minSdkVersion attribute in its manifest +file

    + +

    When you filter the reference documentation by an API level, only the APIs +available at that API level are shown. APIs introduced in a later API level are +grayed out and their content is masked, since they would not be accessible to +your application.

    + +

    Note that filtering by API Level in the documentation does not provide a view +of what is new or introduced in each API Level. Filtering simply provides a way +to view the entire API associated with a given API Level, while excluding API +elements introduced in later API Levels.

    + +

    By default, API Level filtering is enabled and set to show the latest API +Level. If you do not want to use filtering reference documentation, select the +highest available API Level.

    + +

    Note that the reference documentation for API elements also specifies the API +Level at which the element was introduced. The API Level for packages and +classes is specified as "Since <api level>" at the top-right corner of the +content area on each documentation page. The API Level for each class member is +specified in the member's detailed description section header, at the right +margin.

    diff --git a/docs/html/guide/developing/eclipse-adt.jd b/docs/html/guide/developing/eclipse-adt.jd index a5cf7358500cf..c3ec2e552cc53 100644 --- a/docs/html/guide/developing/eclipse-adt.jd +++ b/docs/html/guide/developing/eclipse-adt.jd @@ -149,15 +149,15 @@ on running your applicaiton.

    Creating an AVD

    -

    With ADT 0.9.2 and above, the Android AVD Manager provides a simple graphical interface +

    With ADT 0.9.3 and above, the Android SDK and AVD Manager provides a simple graphical interface for creating and managing AVDs. (If you're using ADT version 0.9.1 or older, you must use the android tool to create your AVDs—read the AVD guide to Creating an AVD.) -

    To create an AVD with the Android AVD Manager:

    +

    To create an AVD with the AVD Manager:

      -
    1. Select Window > Android AVD Manager, or click the Android AVD Manager icon (a black device) +
    2. Select Window > Android SDK and AVD Manager, or click the Android SDK and AVD Manager icon (a black device) in the Eclipse toolbar.

    3. In the Virtual Devices panel, you'll see a list of existing AVDs. Click New @@ -169,7 +169,7 @@ use the android tool to create your AVDs—read the AVD guide t
    4. Click Create AVD.
    -

    Your AVD is now ready and you can close the Android AVD Manager. +

    Your AVD is now ready and you can close the AVD Manager. In the next section, you'll see how the AVD is used when launching your application on an emulator.

    @@ -217,7 +217,7 @@ to start, the emulator options to use, and so on. When you first run a project as an Android Application, ADT will automatically create a run configuration. The default run configuration will launch the default project Activity and use automatic target mode for device selection -(with no preferred AVD). If the default setting don't suit your project, you can +(with no preferred AVD). If the default settings don't suit your project, you can customize the launch configuration or even create a new.

    To create or modify a launch configuration, follow these steps as appropriate @@ -256,6 +256,12 @@ for your Eclipse version:

    when selecting an AVD to run your application. See the following section on Automatic and manual target modes).

    +

    You can specify any emulator options to the Additional Emulator Command + Line Options field. For example, you could add -scale 96dpi to + scale the AVD's screen to an accurate size, based on the dpi of your + computer monitor. For a full list of emulator options, see the Android Emulator +document.

    diff --git a/docs/html/guide/developing/other-ide.jd b/docs/html/guide/developing/other-ide.jd index 8cdf0b91d7b80..2080873eaf584 100644 --- a/docs/html/guide/developing/other-ide.jd +++ b/docs/html/guide/developing/other-ide.jd @@ -85,7 +85,8 @@ command to generate all the necessary files and folders.

    navigate to the tools/ directory of your SDK and run:

     android create project \
    ---target <targetID> \
    +--target <target_ID> \
    +--name <your_project_name> \
     --path /path/to/your/project \
     --activity <your_activity_name> \
     --package <your_package_namespace>
    @@ -96,11 +97,14 @@ android create project \
       to an Android platform library (including any add-ons, such as Google APIs) that you would like to
       build your project against. To see a list of available targets and their corresponding IDs, 
       execute: android list targets.
    +  
  • name is the name for your project. This is optional. If provided, this name will be used + for your .apk filename when you build your application.
  • path is the location of your project directory. If the directory does not exist, it will be created for you.
  • -
  • activity is the name for your {@link android.app.Activity} class. This class file +
  • activity is the name for your default {@link android.app.Activity} class. This class file will be created for you inside - <path_to_your_project>/src/<your_package_namespace_path>/.
  • + <path_to_your_project>/src/<your_package_namespace_path>/. + This will also be used for your .apk filename unless you provide a the name.
  • package is the package namespace for your project, following the same rules as for packages in the Java programming language.
  • @@ -109,9 +113,10 @@ android create project \
     android create project \
     --target 1 \
    ---path ./myProject \
    ---activity MyActivity \
    ---package com.example.myproject
    +--name MyAndroidApp \
    +--path ./MyAndroidAppProject \
    +--activity MyAndroidAppActivity \
    +--package com.example.myandroid
     

    The tool generates the following files and directories:

    @@ -123,7 +128,8 @@ android create project \
  • default.properties - Properties for the build system. Do not modify this file.
  • build.properties - Customizable properties for the build system. You can edit this - file to overried default build settings used by Ant.
  • + file to override default build settings used by Ant and provide a pointer to your keystore and key alias + so that the build tools can sign your application when built in release mode.
  • src/your/package/namespace/ActivityName.java - The Activity class you specified during project creation.
  • bin/ - Output directory for the build script.
  • @@ -141,7 +147,7 @@ that you must use the Androi to the emulator (discussed later). So you need access between your project solution and the tools/ folder.

    -

    Note: You should refrain from moving the +

    Caution: You should refrain from moving the location of the SDK directory, because this will break the build scripts. (They will need to be manually updated to reflect the new SDK location before they will work again.)

    @@ -153,14 +159,15 @@ work again.)

    a new project from existing code, use the android update project command to update the project to the new development environment. You can also use this command to revise the build target of an existing project -(with the --target option). The android tool will generate any files and +(with the --target option) and the project name (with the --name +option). The android tool will generate any files and folders (listed in the previous section) that are either missing or need to be updated, as needed for the Android project.

    To update an existing Android project, open a command-line and navigate to the tools/ directory of your SDK. Now run:

    -android update project --target <targetID> --path path/to/your/project/
    +android update project --name <project_name> --target <target_ID> --path path/to/your/project/
     
      @@ -169,11 +176,13 @@ android update project --target <targetID> --path path/to/you like to build your project against. To see a list of available targets and their corresponding IDs, execute: android list targets.
    • path is the location of your project directory.
    • +
    • name is the name for the project. This is optional—if you're not + changing the project name, you don't need this.

    Here's an example:

    -android update project --target 2 --path ./myProject
    +android update project --name MyApp --target 2 --path ./MyAppProject
     
    @@ -237,8 +246,9 @@ install JDK in a non-space directory, for example: c:\java\jdk1.6.0_02Building in debug mode

    For immediate application testing and debugging, you can build your application -in debug mode and immediately install it on an emulator. In debug mode, the build tools automatically -sign your application with a debug key. However, you can (and should) also test your +in debug mode and immediately install it on an emulator. In debug mode, the build tools +automatically sign your application with a debug key and optimize the package with +{@code zipalign}. However, you can (and should) also test your application in release mode. Debug mode simply allows you to run your application without manually signing the application.

    @@ -248,9 +258,9 @@ manually signing the application.

  • Open a command-line and navigate to the root of your project directory.
  • Use Ant to compile your project in debug mode:
    ant debug
    -

    This creates your Android application .apk file inside the project bin/ - directory, named <your_DefaultActivity_name>-debug.apk. The file - is already signed with the debug key.

    +

    This creates your debug .apk file inside the project bin/ + directory, named <your_project_name>-debug.apk. The file + is already signed with the debug key and has been aligned with {@code zipalign}.

  • @@ -267,23 +277,86 @@ about
    Running Your Application.

    your application in release mode. Once you have built in release mode, it's a good idea to perform additional testing and debugging with the final .apk.

    -

    To build in release mode:

    +

    Before you start building your application in release mode, be aware that you must sign +the resulting application package with your private key, and should then align it using the +{@code zipalign} tool. There are two approaches to building in release mode: +build an unsigned package in release mode and then manually sign and align +the package, or allow the build script +to sign and align the package for you.

    + +

    Build unsigned

    + +

    If you build your application unsigned, then you will need to +manually sign and align the package.

    + +

    To build an unsigned .apk in release mode:

    1. Open a command-line and navigate to the root of your project directory.
    2. Use Ant to compile your project in release mode:
      ant release
      -

      This creates your Android application .apk file inside the project bin/ - directory, named <your_DefaultActivity_name>.apk.

      -

      Note: The .apk file is unsigned at this point. - You can't install it on an emulator or device until you sign it with your private key.

    -

    Because release mode builds your application unsigned, your next step is to sign -it with your private key, in order to distribute it to end-users. To complete this procedure, +

    This creates your Android application .apk file inside the project bin/ +directory, named <your_project_name>-unsigned.apk.

    + +

    Note: The .apk file is unsigned at this point +and can't be installed until signed with your private key.

    + +

    Once you have created the unsigned .apk, your next step is to sign the .apk +with your private key and then align it with {@code zipalign}. To complete this procedure, read Signing Your Applications.

    +

    When your .apk has been signed and aligned, it's ready to be distributed to end-users.

    + +

    Build signed and aligned

    + +

    If you would like, you can configure the Android build script to automatically +sign and align your application package. To do so, you must provide the path to your keystore +and the name of your key alias in your project's {@code build.properties} file. With this +information provided, the build script will prompt you for your keystore and alias password +when you build in release mode and produce your final application package, which will be ready +for distribution.

    + +

    Caution: Due to the way Ant handles input, the password that +you enter during the build process will be visible. If you are +concerned about your keystore and alias password being visible on screen, then you +may prefer to perform the application signing manually, via Jarsigner (or a similar tool). To instead +perform the signing procedure manually, buid unsigned and then continue +with Signing Your Applications.

    + +

    To specify your keystore and alias, open the project {@code build.properties} file (found in the +root of the project directory) and add entries for {@code key.store} and {@code key.alias}. +For example:

    + +
    +key.store=/path/to/my.keystore
    +key.alias=mykeystore
    +
    + +

    Save your changes. Now you can build a signed .apk in release mode:

    + +
      +
    1. Open a command-line and navigate to the root of your project directory.
    2. +
    3. Use Ant to compile your project in release mode: +
      ant release
      +
    4. +
    5. When prompted, enter you keystore and alias passwords. +

      Caution: As described above, + your password will be visible on the screen.

      +
    6. +
    + +

    This creates your Android application .apk file inside the project bin/ +directory, named <your_project_name>-release.apk. +This .apk file has been signed with the private key specified in +{@code build.properties} and aligned with {@code zipalign}. It's ready for +installation and distribution.

    + + +

    Once built and signed in release mode

    +

    Once you have signed your application with a private key, you can install it on an emulator or device as discussed in the following section about Running Your Application. @@ -329,7 +402,7 @@ id:2 you'll use this in the next step.

  • Create a new AVD using your selected deployment target: -
    android create avd --name <your_avd_name> --target <targetID>
    +
    android create avd --name <your_avd_name> --target <target_ID>
  • Next, you'll be asked whether you'd like to create a custom hardware profile. If you respond "yes," you'll be presented with a series of prompts to define various aspects of the device hardware (leave entries blank to use default values, which are shown in brackets). Otherwise, diff --git a/docs/html/guide/developing/tools/avd.jd b/docs/html/guide/developing/tools/avd.jd index b8f205ec0f7e6..06b1245c426db 100644 --- a/docs/html/guide/developing/tools/avd.jd +++ b/docs/html/guide/developing/tools/avd.jd @@ -11,6 +11,8 @@ page.title=Android Virtual Devices hardware options, system image, and data storage.
  • You create AVD configurations to model different device environments in the Android emulator.
  • +
  • The android tool offers a graphical Android AVD + Manager and a command-line interface for creating AVDs.
  • In this document

      @@ -72,9 +74,18 @@ reference of emulator options, please see the Emulator documentation.

      -

      To create and manage AVDs, you use the android tool provided in the Android -SDK. For more information about how to work with AVDs from inside -your development environment, see To create and manage AVDs, you use the android tool provided in +the tools/ directory of the Android SDK. The tool provides both a +graphical AVD manager and a command-line interface that you can use to +create AVDs. To access the graphical AVD manager, run the +android tool without options. The sections below describe how to +use the android command-line interface to create and manage AVDs. +Note that some functionality, such as the capability to create an AVD with a +custom hardware configuration, are only available through the command-line +interface.

      + +

      For more information about how to work with AVDs from inside your development +environment, see Developing in Eclipse with ADT or Developing in Other IDEs, as appropriate for your environment.

      @@ -89,11 +100,11 @@ you need to create an AVD before you can run any application in the emulator
    -

    To create an AVD, you use the android tool, a command-line utility -available in the <sdk>/tools/ directory. Managing AVDs is one -of the two main function of the android tool (the other is creating and updating -Android projects). Open a terminal window and change to the -<sdk>/tools/ directory, if needed

    +

    To create an AVD, you use the android tool, a command-line +utility available in the <sdk>/tools/ directory. Managing +AVDs is one of the two main function of the android tool (the other +is creating and updating Android projects). Open a terminal window and change to +the <sdk>/tools/ directory, if needed

    To create each AVD, you issue the command android create avd, with options that specify a name for the new AVD and the system image you want @@ -118,11 +129,12 @@ version or that of any SDK add-on. Later, when applications use the AVD, they'll be running on the system that you specify in the -t argument.

    To specify the system image to use, you refer to its target ID -— an integer — as assigned by the android tool. The target ID is not -derived from the system image name, version, or API Level, or other attribute, -so you need to have the android tool list the available system images and the -target ID of each, as described in the next section. You should do this -before you run the android create avd command. +— an integer — as assigned by the android tool. The +target ID is not derived from the system image name, version, or API Level, or +other attribute, so you need to have the android tool list the +available system images and the target ID of each, as described in the next +section. You should do this before you run the android create +avd command.

    Listing targets

    @@ -131,7 +143,7 @@ target ID of each, as described in the next section. You should do this
    android list targets
    -

    The android tool scans the <sdk>/platforms and +

    The android tool scans the <sdk>/platforms and <sdk>/add-ons directories looking for valid system images and then generates the list of targets. Here's an example of the command output:

    @@ -199,24 +211,22 @@ system image in the list above):

    android create avd -n my_android1.5 -t 2

    If the target you selected was a standard Android system image ("Type: -platform"), the android tool next asks you whether you want to create a custom -hardware profile.

    - +platform"), the android tool next asks you whether you want to +create a custom hardware profile.

    Android 1.5 is a basic Android platform.
     Do you wish to create a custom hardware profile [no]

    If you want to set custom hardware emulation options for the AVD, enter "yes" and set values as needed. If you want to use the default hardware emulation options for the AVD, just press the return key (the default is "no"). -The android tool creates the AVD with name and system image mapping you +The android tool creates the AVD with name and system image mapping you requested, with the options you specified. -

    If you are creating an AVD whose target is an SDK add-on, -the android tool does not allow you to set hardware emulation options. It -assumes that the provider of the add-on has set emulation options appropriately -for the device that the add-on is modeling, and so prevents you from resetting -the options.

    - +

    If you are creating an AVD whose target is an SDK add-on, the +android tool does not allow you to set hardware emulation options. +It assumes that the provider of the add-on has set emulation options +appropriately for the device that the add-on is modeling, and so prevents you +from resetting the options.

    For a list of options you can use in the android create avd command, see the table in Command-line options for AVDs, at the bottom of @@ -225,11 +235,11 @@ this page.

    Setting hardware emulation options

    When are creating a new AVD that uses a standard Android system image ("Type: -platform"), the android tool lets you set hardware emulation options for virtual -device. The table below lists the options available and the default values, as -well as the names of properties that store the emulated hardware options in the AVD's -configuration file (the config.ini file in the AVD's local directory).

    - +platform"), the android tool lets you set hardware emulation +options for virtual device. The table below lists the options available and the +default values, as well as the names of properties that store the emulated +hardware options in the AVD's configuration file (the config.ini file in the +AVD's local directory).

    @@ -249,7 +259,6 @@ configuration file (the config.ini file in the AVD's local directory).

    @@ -339,23 +348,30 @@ configuration file (the config.ini file in the AVD's local directory).

    + + + + + + +
    Whether there is a touch screen or not on the device. Default value is "yes". hw.touchScreen -
    Trackball support Whether there is a trackball on the device. Default value is "yes". Default value is "66MB". disk.cachePartition.size
    Abstracted LCD densitySets the generalized density characteristic used by the AVD's screen. Default value is "160".hw.lcd.density

    Default location of the AVD files

    -

    When you create an AVD, the android tool creates a dedicated directory for it +

    When you create an AVD, the android tool creates a dedicated directory for it on your development computer. The directory contains the AVD configuration file, the user data image and SD card image (if available), and any other files associated with the device. Note that the directory does not contain a system image — instead, the AVD configuration file contains a mapping to the system image, which it loads when the AVD is launched.

    -

    The android tool also creates a <AVD name>.ini file for the AVD at the +

    The android tool also creates a <AVD name>.ini file for the AVD at the root of the .android/avd directory on your computer. The file specifies the location of the AVD directory and always remains at the root the .android directory.

    -

    By default, the android tool creates the AVD directory inside +

    By default, the android tool creates the AVD directory inside ~/.android/avd/ (on Linux/Mac), C:\Documents and Settings\<user>\.android\ on Windows XP, and C:\Users\<user>\.android\ on Windows Vista. @@ -396,18 +412,18 @@ Error: Invalid value in image.sysdir. Run 'android update avd -n foo'

    Deleting an AVD

    -

    You can use the android tool to delete an AVD. Here is the command usage:

    +

    You can use the android tool to delete an AVD. Here is the command usage:

    android delete avd -n <name> 
    -

    When you issue the command, the android tool looks for an AVD matching the +

    When you issue the command, the android tool looks for an AVD matching the specified name deletes the AVD's directory and files.

    Command-line options for AVDs

    The table below lists the command-line options you can use with the -android tool.

    +android tool.

    @@ -448,9 +464,9 @@ android tool.

    @@ -465,7 +481,7 @@ files. - diff --git a/docs/html/guide/developing/tools/emulator.jd b/docs/html/guide/developing/tools/emulator.jd index 82d3c8dd6d0af..a9b6914cf476d 100644 --- a/docs/html/guide/developing/tools/emulator.jd +++ b/docs/html/guide/developing/tools/emulator.jd @@ -1,7 +1,7 @@ page.title=Android Emulator @jd:body -Image of the Android Emulator +
    Image of the Android Emulator

    The Android SDK includes a mobile device emulator -- a virtual mobile device that runs on your computer. The emulator lets you prototype, develop, and test @@ -27,9 +27,13 @@ from which you can log kernel output, simulate application interrupts (such as arriving SMS messages or phone calls), and simulate latency effects and dropouts on the data channel.

    -
    -

    In this document:

    -
    +
    -f Force creation of the AVD By default, if the name of the AVD being created matches that of an - existing AVD, the android tool will not create the new AVD or overwrite + existing AVD, the android tool will not create the new AVD or overwrite the existing AVD. If you specify the -f option, however, the - android tool will automatically overwrite any existing AVD that has the + android tool will automatically overwrite any existing AVD that has the same name as the new AVD. The files and data of the existing AVD are deleted.
    -s <name> or
    -s <width>-<height>
    The skin to use for this AVD, identified by name or dimensions.The android tool scans for a matching skin by name or dimension in the + The android tool scans for a matching skin by name or dimension in the skins/ directory of the target referenced in the -t <targetID> argument. Example: -s HVGA-L
    + + + + + -
    +
    - +
    In this document:
    +
    1. Overview
    2. Starting and Stopping the Emulator
    3. @@ -53,9 +57,9 @@ on the data channel.

    4. Sending a Voice Call or SMS to Another Emulator Instance
    - +
    1. Using the Emulator Console
        @@ -85,9 +89,9 @@ on the data channel.

      1. Troubleshooting Emulator Problems
      2. Emulator Limitations
      - +
    @@ -260,11 +264,11 @@ the keys of your keyboard.

    Switch to previous layout orientation (for example, portrait, landscape) - KEYPAD_7, F11 + KEYPAD_7, Ctrl-F11 Switch to next layout orientation (for example, portrait, landscape) - KEYPAD_9, F12 + KEYPAD_9, Ctrl-F12 Toggle cell networking on/off @@ -721,19 +725,19 @@ scale in direct relationship with <delay> values.

    -skin <skinID> - Start the emulator with the specified skin. - The standard Android platforms includes a choice of - four skins:
    -
  • HVGA-L (480x320, landscape)
  • -
  • HVGA-P (320x480, portrait) (default)
  • -
  • QVGA-L (320x240, landscape)
  • -
  • QVGA-P (240x320, portrait)
  • + This emulator option is deprecated. + Please set skin options using AVDs, rather than by using this emulator +option. Using this option may yield unexpected and in some cases misleading +results, since the density with which to render the skin may not be defined. +AVDs let you associate each skin with a default density and override the default +as needed. For more information, see Android Virtual Devices. -skindir <dir> - Search for emulator skins in <dir>. -   + This emulator option is deprecated. + See comments for -skin, above. @@ -1636,41 +1640,9 @@ kilobits/sec):

    Using Emulator Skins

    -

    You can run the emulator with any of four default skins, as described in the table below. To specify a skin, use -skin <skinID> when starting the emulator.

    +

    The Android SDK includes several Emulator skins that you can use to control the resolution and density of the emulated device's screen. To select a specific skin for running the emulator, create an AVD that uses that skin. Please do not use deprecated emulator options such as -skin to control the skin used by an emulator instance. For more information about AVDs, see Android Virtual Devices.

    -

    For example:

    - -
    emulator -skin HVGA-L
    - -

    Note that you must enter the <skinID> in uppercase letters (if your development computer is case-sensitive).

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    skinIDDescriptionSkin
    HVGA-L480x320, landscape
    HVGA-P320x480, portrait (default)
    QVGA-L320x240, landscape
    QVGA-P240x320, portrait
    diff --git a/docs/html/guide/developing/tools/index.jd b/docs/html/guide/developing/tools/index.jd index 2c9e45df3117a..91b430ff771a3 100644 --- a/docs/html/guide/developing/tools/index.jd +++ b/docs/html/guide/developing/tools/index.jd @@ -89,5 +89,10 @@ applications on the emulator.

    A script that lets you manage AVDs and generate Ant build files that you can use to compile your Android applications.
    + +
    zipalign
    +
    An important .apk optimization tool. This tool ensures that all uncompressed data starts + with a particular alignment relative to the start of the file. This should always be used + to align .apk files after they have been signed.
    diff --git a/docs/html/guide/developing/tools/zipalign.jd b/docs/html/guide/developing/tools/zipalign.jd new file mode 100644 index 0000000000000..6231798408d06 --- /dev/null +++ b/docs/html/guide/developing/tools/zipalign.jd @@ -0,0 +1,65 @@ +page.title=zipalign +@jd:body + +

    zipalign is an archive alignment tool that provides important +optimization to Android application (.apk) files. +The purpose is to ensure that all uncompressed data starts +with a particular alignment relative to the start of the file. Specifically, +it causes all uncompressed data within the .apk, such as images or raw files, +to be aligned on 4-byte boundaries. This +allows all portions to be accessed directly with {@code mmap()} even if they +contain binary data with alignment restrictions. +The benefit is a reduction in the amount of RAM consumed +when running the application.

    + +

    This tool should always be used to align your .apk file before +distributing it to end-users. The Android build tools can handle +this for you. When using Eclipse with the ADT plugin, the Export Wizard +will automatically zipalign your .apk after it signs it with your private key. +The build scripts used +when compiling your application with Ant will also zipalign your .apk, +as long as you have provided the path to your keystore and the key alias in +your project {@code build.properties} file, so that the build tools +can sign the package first.

    + +

    Caution: zipalign must only be performed +after the .apk file has been signed with your private key. +If you perform zipalign before signing, then the signing procedure will undo +the alignment. Also, do not make alterations to the aligned package. +Alterations to the archive, such as renaming or deleting entries, will +potentially disrupt the alignment of the modified entry and all later +entries. And any files added to an "aligned" archive will not be aligned.

    + +

    The adjustment is made by altering the size of +the "extra" field in the zip Local File Header sections. Existing data +in the "extra" fields may be altered by this process.

    + +

    For more information about how to use zipalign when building your +application, please read Signing +Your Application.

    + + +

    Usage

    + +

    To align {@code infile.apk} and save it as {@code outfile.apk}:

    + +
    zipalign [-f] [-v] <alignment> infile.apk outfile.apk
    + +

    To confirm the alignment of {@code existing.apk}:

    + +
    zipalign -c -v <alignment> existing.apk
    + +

    The {@code <alignment>} is an integer that defines the byte-alignment boundaries. +This must always be 4 (which provides 32-bit alignment) or else it effectively +does nothing.

    + +

    Flags:

    + +
      +
    • {@code -f} : overwrite existing outfile.zip
    • +
    • {@code -v} : verbose output
    • +
    • {@code -c} : confirm the alignment of the given file
    • +
    + + + diff --git a/docs/html/guide/guide_toc.cs b/docs/html/guide/guide_toc.cs index 459ad37f79b6b..5abc872c96469 100644 --- a/docs/html/guide/guide_toc.cs +++ b/docs/html/guide/guide_toc.cs @@ -256,6 +256,7 @@
  • Monkey
  • sqlite3
  • Traceview
  • +
  • zipalign
  • introduced in:
    API Level 4
    diff --git a/docs/html/guide/topics/manifest/uses-sdk-element.jd b/docs/html/guide/topics/manifest/uses-sdk-element.jd index adcdc286cbed5..ee8d03dc06d1b 100644 --- a/docs/html/guide/topics/manifest/uses-sdk-element.jd +++ b/docs/html/guide/topics/manifest/uses-sdk-element.jd @@ -3,7 +3,10 @@ page.title=<uses-sdk>
    syntax:
    -
    <uses-sdk android:minSdkVersion="integer" />
    +
    +<uses-sdk android:minSdkVersion="integer" 
    +          android:maxSdkVersion="integer"
    +          android:targetSdkVersion="integer" />
    contained in:
    <manifest>
    @@ -64,12 +67,16 @@ and minor versions).

    {@code android:targetSdkVersion}
    An integer designating the API Level that the application is targetting. -

    With this attribute set, the application says that is is be able to run on +

    With this attribute set, the application says that it is able to run on older versions (down to {@code minSdkVersion}), but was explicitly tested to work with the version specified here. - Specifying this version allows the platform to disable compatibility - code that is not required or enable newer features that are not - available to older applications.

    + Specifying this target version allows the platform to disable compatibility + settings that are not required for the target version (which may otherwise be turned on + in order to maintain forward-compatibility) or enable newer features that are not + available to older applications. This does not mean that you can program different + features for different versions of the platform—it simply informs the platform that you + have tested against the target version and the platform should not perform any extra + work to maintain forward-compatibility with the target version.

    Introduced in: API Level 4

    diff --git a/docs/html/images/emulator-wvga800l.png b/docs/html/images/emulator-wvga800l.png new file mode 100644 index 0000000000000000000000000000000000000000..a2140338a469189d99287bb278105e878fde5539 GIT binary patch literal 513676 zcmeFa2b^U`b>MwEPft(IGn&z43B?f#h$NH&A(IpUS-@w44EB-@A7;(+*$d_~YrOCy z8-hKCV9D$6xUiYh0C)cUE z=hm%z-+Lc<*-Kt9as0gTA~Nx^7hZCONZs4@|25;974z@^bJq{Fs{5-eUT~3o_qX%6 zYoqz~m%rc=>Erd~pI`q;#k9WTh1dL*$mD?c3kSBV*GjYVKA0%H*vi@+Z$0vBAcysl`wB6*Xv z7cN{VSHJSwBHvhhECOQ@7>mGI1pYt~`1ZekT{djkATf#O$(zLe?*I3{nrjCR?EeF~ zIA(S%0%H*vi@@(c0tYqcb#--($Z%6rlT4g6xm5O8>1~@Z!SsLZqaVo=xFv5--23UxE^L)h`uYan>VDy6FOtU|dra0ovc_ZmGv zkO&;uzh77#|LRw_%j@3o=QUT*wYr1sm%jLUIq$sljb+m0Yz6*g>BWfW>xO5Zv%K%m z)M<>#=2fp8OvM;|ECPRw z5!mtdXDsq(0sa{K_n)FqM>{*^=ePV+Uj5qF$&{(nhTZ3umT@xgxZ~s}KfYO(pKziy zx3rj!Crd9|DHA44l%M|O*MHmS-VS92e(9ypm&;FjtNe7$8{|m$9$mHfNXx+~^1>6p zB5N-F@{m^XZf~p}i@;a}#v<@kiNLh!Ge(@hX3w6RccYj`pDeu?9CGqzkLOqS{77zE zb)~#w#qILt-#pD6zIw$k5FcyKa2t1V|P*+#= zG~S5aMVBYVrN&C_5dE!QqC-Dcjeo=X@lUKjywer=k z{7bYk20s}Q=v*sb`={^7#wy*%%T<4Mt(?Hs+p*%Qu+c5M{{1`hwcB?}XXhd5kzg9ljmLcMtSbc29xUE_H+5%|Gq~K zG|!ZobvtEe=XhE1nm5bk3$n{lSKYbkX8G(_ACUI86>{yHUnC2a+}p859{ANAa__?% zWXGXyW36wQBr}dXO)kIkc`~=jrKx*m?>%3Z&)&kPD@0~r@@9G6Gp0(twRr23?mZ97 zZ9lz3R<7SA9leUGZ=U*n5 zte7P&o(~4&$;YQ8h6B-ZU&nw^N8lJHZwbj8xU9VOEpIXOCqMP63UV#HF-5&WYS83; z^($T_-?;G~W%h)#OzauQXO9*J9sS@Ek!!DgwOnz<%jAE3;q(3YG3eMwAivRkyj=ON zKh2VLZbd)p#eL{w#gpspk$n&TK)!KDot*c|i)Hm!ZnTpJtBu^0^EOPEW%HXgp&pcV zkMEbB+0!&Z_R694t2J>`_Q8@G7Ru0-ue=9QNV4_>?uomWNYop7e9GoVBN3R@^qL*l%fGF@ zR{rdqhx3(okq_E8etVA0ns}DH@r{38Q(sYTtUbaA`SZ4YJzsN%xVp@{NyuSCjbyx$>QVD$83MW%dbkr2gTJvTN;TIehL^ znIIjq@u6+HlAS1%>JG}ThaQ&$XHS*Mbw^~|+Fh!xPUf62S7t4GmMs21H_5uk?vb?z zmdfdqvUPFqfwgk?qxxKK<6?RC=~JYx_lT^&^~dtiA(1(kUL`M3T*f(3W-UEaE?tU) zF*beDx$z#kU+>d5EWAiAklW?w8y=8*Ha<&UytpM>QFrZ^C+z9jS#sKmGo+=VPG+2N zs?7ZH(ft>DZjl_R{wg9T)5;6(Ud

    =<%Hq>CB|p5cog}k#1>V=SN7nB~ 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 A`2YX_ literal 0 HcmV?d00001 diff --git a/docs/html/index.jd b/docs/html/index.jd index 823ec96192e51..6945f9ebacf75 100644 --- a/docs/html/index.jd +++ b/docs/html/index.jd @@ -15,12 +15,12 @@ home=true

    The second Android Developer Challenge has begun! In this contest, real-world users will help review and score applications and the overall winner will - take away $250,000. The deadline for submitting an application to the contest is August 31, 2009.

    + take away $250,000. The deadline for submissions was August 31, 2009 and judging by users has started.

    Learn more about ADC 2 »

    -
    +
    @@ -120,12 +120,17 @@ home=true 'sdk': { 'layout':"imgLeft", 'icon':"sdk-small.png", - 'name':"SDK 1.5 r3", - 'img':"sdk-large.png", - 'title':"Android 1.5 SDK", - 'desc': "

    Android 1.5 SDK is now available. It includes new APIs for Android 1.5, updated developer tools, multiple platform versions, and a Google APIs add-on.

    Download Android 1.5 SDK »

    " + 'name':"Android 1.6 SDK", + 'img':"donut-android.png", + 'title':"Android 1.6 SDK", + 'desc': "

    The Android 1.6 SDK is now available, with new APIs and updated tools!

    " + + "

    For more about the Android 1.6 platform, read the highlights" + + "." + + " Also keep an eye on the Blog" + + " for posts about some of the new developer technologies in Android 1.6.

    " + + "

    Download the Android 1.6 SDK »

    " }, - + 'io': { 'layout':"imgLeft", 'icon':"io-small.png", diff --git a/docs/html/intl/ja/community/index.jd b/docs/html/intl/ja/community/index.jd index e0a645b2280cd..659aee7d68f12 100644 --- a/docs/html/intl/ja/community/index.jd +++ b/docs/html/intl/ja/community/index.jd @@ -40,38 +40,46 @@ page.title=コミュニティ

    アプリケーション デベロッパー メーリング リスト

      + +
    • Android SDK Japan - Android SDK に関する質問と答え、提案とフィードバックを交換できる場です。 + +
    • +
    • Android 初心者向け - Android アプリケーションの開発初心者向けです。Android SDK と基本的な Android API の利用方法について学習したい場合は、このメーリング リストから始めてください。このメーリング リストには、SDK を利用するデベロッパーの初歩的なディスカッションの場所です。Android プラットフォームで初めてアプリケーションを作成して実行する際は、非常に有益な情報を得ることができるでしょう。開発環境のインストール方法についての質問を投稿したり、Android 開発の初歩(初めて作成するユーザー インターフェース、権限、Android ファイルシステムでのファイル、Android マーケットでのアプリケーションなど)について教えてもらうことができます。新たに質問する前に、必ず最初にアーカイブを確認してください。高度な内容の質問の場合はここでは質問せず、android-developers メーリング リストで質問してください。また使用に関する質問は、android-discuss メーリング リストの方が適しています。
    • Android デベロッパー向け - Android アプリケーション デベロッパーとして経験を積むにつれ、Android アプリケーション開発の基本を把握して、SDK を使いこなせるようになります。今度は、より高度な内容について質問する必要があります。アプリケーションのトラブルシューティング、実装へのアドバイス、アプリケーションのパフォーマンスやユーザー エクスペリエンスを改良するテクニックに関する質問には、次のメーリング リストが役立ちます。使用に関する問題(android-discuss をご利用ください)や、Android SDK を使用する際の初歩的質問(android-beginners をご利用ください)についてのディスカッションの場所ではありません。
    • Android ディスカッション - Android に関する「井戸端会議」です。ここでは、Android プラットフォームへのアイデア、自分のアプリケーションの公表、Android 携帯端末に関するディスカッション、コミュニティ リソースなど、Android に関することなら何でも投稿可能です。ただし他のメーリング リストに該当する内容の場合は、そのメーリング リストに投稿することをおすすめします。質問のテーマが限定されている場所の方が、より多くの回答を得ることができるでしょう。
    • Android セキュリティ ディスカッション - 安全な開発、新たに発生したセキュリティの問題、Android デベロッパー向けの Android デベロッパーによるベスト プラクティスについて自由にディスカッションを行える場所です。メーリング リストで脆弱性を直接公開することは、すべての Android ユーザーを危険にさらすことになるので、避けてください。
    • Android セキュリティに関する発表 - Android セキュリティ チームがセキュリティ関連の発表を行う、小規模なグループです。
    • diff --git a/docs/html/sdk/1.6_r1/index.jd b/docs/html/sdk/1.6_r1/index.jd new file mode 100644 index 0000000000000..11d369be1b239 --- /dev/null +++ b/docs/html/sdk/1.6_r1/index.jd @@ -0,0 +1,140 @@ +page.title=Android 1.6 SDK, Release 1 +sdk.redirect=0 +sdk.version=1.6 + +sdk.date=September 2009 + +sdk.win_download=android-sdk-windows-1.6_r1.zip +sdk.win_bytes= +sdk.win_checksum= + +sdk.mac_download=android-sdk-mac_x86-1.6_r1.zip +sdk.mac_bytes= +sdk.mac_checksum= + +sdk.linux_download=android-sdk-linux_x86-1.6_r1.tgz +sdk.linux_bytes= +sdk.linux_checksum= + +adt.zip_download=ADT-0.9.3.zip +adt.zip_version=0.9.3 +adt.zip_bytes= +adt.zip_checksum= + +@jd:body + +

      For more information on this SDK release, read the +Release Notes.

      + +

      SDK Contents

      + +

      Development tools

      + +

      The SDK includes a full set of tools for developing and debugging application +code and designing an application UI. You can read about the tools in the Dev Guide and access them +in the <sdk>/tools/ directory. + +

      The tools package in this SDK includes updates from those provided in the +previous SDK. The tools use the same project structure as in the previous SDK +(Android 1.5). If you have application projects developed in the Android 1.5 +SDK, you can migrate them to the latest SDK without modification. For more +information about how to migrate, see Upgrading the +SDK. + +

      Android Platforms

      + +

      This SDK includes multiple Android platform versions that you can use to +develop applications. For each version, both a fully compliant Android library +and system image are provided. The table below lists the platform versions +included in this SDK. For more information about a platform version — +features, applications included, localizations, API changes, and so on — +see its Version Notes.

      + + + + + + + + + + + + + + + + + +
      PlatformAPI +LevelNotesDescription
      Android 1.64Version +NotesIncludes a standard Android 1.6 library and system image with a set of +development applications. Does not include any external libraries (such as the +Maps external library).
      Android 1.53Version +NotesIncludes a standard Android 1.5 library and system image with a set of +development applications. Does not include any external libraries (such as the +Maps external library).
      + +

      Note that you can use the Android SDK and AVD Manager to download other +platform versions into your development environment.. + +

      SDK Add-Ons

      + +

      An SDK add-on provides a development environment for an Android external +library or a customized (but fully compliant) Android system image. This SDK +includes the SDK add-ons listed below. The Android system API Level required by +the add-ons are noted.

      + + + + + + + + + + + + + + + + + + +
      Add-OnAPI LevelNotesDescription
      Google APIs4 Includes the com.google.android.maps external library, a compliant +Android 1.6 system image, a {@link android.location.Geocoder Geocoder} +backend service implementation, documentation, and sample code.
      Google APIs3 Includes the com.google.android.maps external library, a compliant +Android 1.5 system image, a {@link android.location.Geocoder Geocoder} +backend service implementation, documentation, and sample code.
      + +

      Sample Code and Applications

      + +

      You can look at a variety of tutorials and samples in the Dev Guide and access the sample +code itself in the <sdk>/platforms/<platform>/samples/ +directory of the SDK package. Note the new location — the SDK now includes +multiple platform versions that you can develop against and each has its own +sample code directory.

      + +

      For example, to view or build the samples available for the Android +1.6 platform (AVD target "Android 1.6"), you will find the samples in the +<sdk>/platforms/android-1.6/samples/ directory of the SDK +package.

      + +

      Documentation

      + +

      The SDK package includes a full set of local documentation. To view it, open +the <sdk>/documentation.html file in a web browser. If you +are developing in an IDE such as Eclipse, you can also view the reference +documentation directly in the IDE.

      + +

      The most current documentation is always available on the Android Developers +site:

      + +

      http://developer.android.com/ +

      + + diff --git a/docs/html/sdk/1.6_r1/installing.jd b/docs/html/sdk/1.6_r1/installing.jd new file mode 100644 index 0000000000000..954bfa3f00392 --- /dev/null +++ b/docs/html/sdk/1.6_r1/installing.jd @@ -0,0 +1,441 @@ +page.title=Installing the Android 1.6 SDK +sdk.version=1.6 +sdk.preview=0 + +@jd:body + + + +

      This page describes how to install the Android SDK and set up your +development environment.

      + +

      If you encounter any problems during installation, see the +Installation Notes at the bottom of +this page.

      + +

      Upgrading?

      +

      If you have already developed applications using an earlier version +of the Android SDK, please read Upgrading the SDK, instead. +

      + + +

      Prepare for Installation

      + +

      Before you begin, take a moment to confirm that your development machine +meets the System Requirements.

      + +

      If you will be developing on Eclipse with the Android Development +Tools (ADT) Plugin — the recommended path if you are new to +Android — make sure that you have a suitable version of Eclipse +installed on your computer (3.4 or newer is recommended). If you need +to install Eclipse, you can download it from this location:

      + +

      http://www.eclipse.org/downloads/

      + +

      A Java or RCP version of Eclipse is recommended.

      + +

      Install the SDK

      + +

      After downloading the Android SDK, unpack the Android SDK .zip archive +to a suitable location on your machine. By default, the SDK files are unpacked +into a directory named android_sdk_<platform>_<release>.

      + +

      Make a note of the name and location of the unpacked SDK directory on your system — you +will need to refer to the SDK directory later, when setting up the Android plugin or when +using the SDK tools.

      + +

      Optionally, you may want to add the location of the SDK's primary tools directory +to your system PATH. The primary tools/ directory is located at the root of the +SDK folder. Adding tools to your path lets you run Android Debug Bridge (adb) and +the other command line tools without +needing to supply the full path to the tools directory.

      +
        +
      • On Linux, edit your ~/.bash_profile or ~/.bashrc file. Look + for a line that sets the PATH environment variable and add the + full path to the tools/ directory to it. If you don't + see a line setting the path, you can add one:
      • + +
          export PATH=${PATH}:<your_sdk_dir>/tools
        + +
      • On a Mac, look in your home directory for .bash_profile and + proceed as for Linux. You can create the .bash_profile if + you haven't already set one up on your machine.
      • + +
      • On Windows, right-click on My Computer, and select Properties. + Under the Advanced tab, hit the Environment Variables button, and in the + dialog that comes up, double-click on Path (under System Variables). Add the full path to the + tools/ directory to the path.
      • +
      + +

      Note that, if you update your SDK in the future, you +should remember to update your PATH settings to point to the new location, if different.

      + +

      If you will be using the Eclipse IDE as your development environment, +the next section describes how to install the Android Development Tools (ADT) plugin and set up Eclipse. +If you choose not to use Eclipse, you can +develop Android applications in an IDE of your choice and then compile, debug and deploy using +the tools included in the SDK (skip to Next Steps).

      + + +

      Install the ADT Plugin for Eclipse

      + +

      Android offers a custom plugin for the Eclipse IDE, called Android +Development Tools (ADT), that is designed to give you a powerful, +integrated environment in which to build Android applications. It +extends the capabilites of Eclipse to let you quickly set up new Android +projects, create an application UI, add components based on the Android +Framework API, debug your applications using the Android SDK tools, and even export +signed (or unsigned) APKs in order to distribute your application.

      + +

      In general, using Eclipse with ADT is a highly recommended approach to +Android development and is the fastest way to get started. (If you prefer to +work in an IDE other than Eclipse, you do not need to install Eclipse or ADT, +instead, you can directly use the SDK tools to build and debug your +application—skip to Next Steps.)

      + +

      Once you have the Eclipse IDE installed, as described in Preparing for Installation, follow the steps below to +download the ADT plugin and install it in your respective Eclipse environment. +

      + + + + + + + +
      Eclipse 3.4 (Ganymede)Eclipse 3.5 (Galileo)
      + +
        +
      1. Start Eclipse, then select Help > Software Updates.... + In the dialog that appears, click the Available Software tab.
      2. +
      3. Click Add Site...
      4. +
      5. In the Add Site dialog that appears, enter this URL in the "Location" field: +
        https://dl-ssl.google.com/android/eclipse/
        +

        Note: If you have trouble aqcuiring the plugin, try using "http" in the Location URL, + instead of "https" (https is preferred for security reasons).

        +

        Click OK.

      6. +
      7. Back in the Available Software view, you should see the plugin listed by the URL, + with "Developer Tools" nested within it. Select the checkbox next to + Developer Tools and click Install...
      8. +
      9. On the subsequent Install window, "Android DDMS" and "Android Development Tools" + should both be checked. Click Next.
      10. +
      11. Read and accept the license agreement, then click Finish.
      12. +
      13. Restart Eclipse.
      14. +
      + +
      + +
        +
      1. Start Eclipse, then select Help > Install + New Softare.
      2. +
      3. In the Available Software dialog, click Add....
      4. +
      5. In the Add Site dialog that appears, enter a name for the remote site + (e.g., "Android Plugin") in the "Name" field. +

        In the "Location" field, enter this URL:

        +
        https://dl-ssl.google.com/android/eclipse/
        +

        Note: If you have trouble aqcuiring the plugin, you can try + using "http" in the URL, instead of "https" (https is preferred for + security reasons).

        +

        Click OK.

        +
      6. +
      7. Back in the Available Software view, you should now see "Developer + Tools" added to the list. Select the checkbox next to Developer Tools, + which will automatically select the nested tools Android DDMS and Android + Development Tools. + Click Next.
      8. +
      9. In the resulting Install Details dialog, the Android DDMS and Android + Development Tools features are listed. Click Next to + read and accept the license agreement and install any dependencies, + then click Finish.
      10. +
      11. Restart Eclipse.
      12. + +
      +
      + +

      Now modify your Eclipse preferences to point to the Android SDK directory:

      +
        +
      1. Select Window > Preferences... to open the Preferences + panel (Mac: Eclipse > Preferences).
      2. +
      3. Select Android from the left panel.
      4. +
      5. For the SDK Location in the main panel, click Browse... and + locate your downloaded SDK directory.
      6. +
      7. Click Apply, then OK.
      8. +
      + +

      Done! If you haven't encountered any problems, then you're ready to +begin developing Android applications. See the +Next Steps section for suggestions on how to start.

      + + +

      Contents of the SDK

      + +

      Once you've downloaded and unpacked the SDK, open the SDK directory +and take a look at what's inside. + +

      The table below describes the SDK directory contents.

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescription
      add-ons/Contains add-ons to the Android SDK development +environment, which let you develop against external libraries that are available on some +devices.
      docs/A full set of documentation in HTML format, including the Developer's Guide, +API Reference, and other information.
      platforms/Contains a set of Android platform versions that you can develop +applications against, each in a separate directory.
      <platform>/Platform version directory, for example "Android 1.6". All platform version +directories contain a similar set of files and subdirectory structure.
       data/Storage area for default fonts and resource definitions.
      images/Storage area for default disk images, including the Android system image, +the default userdata image, the default ramdisk image, and more. The images +are used in emulator sessions.
      samples/Contains a wide variety of sample applications that you can load as projects +into your development environment, compile, and run on the emulator.
      skins/A set of emulator skins available for the platform version. Each skin is +designed for a specific screen resolution.
      templates/Storage area for file templates used by the SDK development tools.
      tools/Any development tools that are specific to the platform version.
      android.jarThe Android library used when compiling applications against this platform +version.
      tools/Contains the set of development and profiling tools available to you, such +as the emulator, the android tool, adb, ddms, and more.
      RELEASE_NOTES.htmlA file that loads the local version of the SDK release notes, if +available.
      documentation.htmlA file that loads the entry page for the local Android SDK +documentation.
      + +

      Next Steps

      +

      Once you have completed installation, you are ready to +begin developing applications. Here are a few ways you can get started:

      + +

      Learn about Android

      +
        +
      • Take a look at the Dev + Guide and the types of information it provides
      • +
      • Read an introduction to Android as a platform in What is + Android?
      • +
      • Learn about the Android framework and how applications run on it in + Application + Fundamentals
      • +
      • Take a look at the Android framework API specification in the Reference tab
      • +
      + +

      Explore the SDK

      + + +

      Explore some code

      +
        +
      • Set up a Hello + World application (highly recommended, especially for Eclipse users)
      • +
      • Follow the + Notepad Tutorial to build a full Android application
      • +
      • Create a new project for one of the other sample applications + included in <sdk>/platforms/<platform>/samples, + then compile and run it in your development environment
      • +
      + +

      Visit the Android developer groups

      +
        +
      • Take a look at the Community tab to see a list of + Android developers groups. In particular, you might want to look at the + Android + Developers group to get a sense for what the Android developer + community is like.
      • +
      + + +

      Installation Notes

      + +

      Ubuntu Linux Notes

      + +
        +
      • If you need help installing and configuring Java on your + development machine, you might find these resources helpful: + +
      • +
      • Here are the steps to install Java and Eclipse, prior to installing + the Android SDK and ADT Plugin. +
          +
        1. If you are running a 64-bit distribution on your development + machine, you need to install the ia32-libs package using + apt-get:: +
          apt-get install ia32-libs
          +
        2. +
        3. Next, install Java:
          apt-get install sun-java6-bin
        4. +
        5. The Ubuntu package manager does not currently offer an Eclipse 3.3 + version for download, so we recommend that you download Eclipse from + eclipse.org (http://www.eclipse.org/ + downloads/). A Java or RCP version of Eclipse is recommended.
        6. +
        7. Follow the steps given in previous sections to install the SDK + and the ADT plugin.
        8. +
        +
      • +
      + +

      Other Linux Notes

      + +
        +
      • If JDK is already installed on your development computer, please + take a moment to make sure that it meets the version requirements listed + in the System Requirements. + In particular, note that some Linux distributions may include JDK 1.4 or Gnu + Compiler for Java, both of which are not supported for Android development.
      • +
      + + +

      Troubleshooting ADT Installation

      + +

      If you are having trouble downloading the ADT plugin after following the +steps above, here are some suggestions:

      + +
        +
      • If Eclipse can not find the remote update site containing the ADT plugin, +try changing the remote site URL to use http, rather than https. That is, set +the Location for the remote site to: +
        http://dl-ssl.google.com/android/eclipse/
      • +
      • If you are behind a firewall (such as a corporate firewall), make sure that +you have properly configured your proxy settings in Eclipse. In Eclipse 3.3/3.4, +you can configure proxy information from the main Eclipse menu in +Window (on Mac, Eclipse) > +Preferences > General > Network +Connections.
      • +
      + +

      If you are still unable to use Eclipse to download the ADT plugin as a +remote update site, you can download the ADT zip file to your local machine and +manually install it:

      + +
        +
      1. Download the + ADT Plugin zip file (do not unpack it).
      2. +
      3. Follow steps 1 and 2 in the default install + instructions (above).
      4. +
      5. In the Add Site dialog, click Archive.
      6. +
      7. Browse and select the downloaded zip file.
      8. +
      9. In Eclipse 3.5 only, enter a name for the local update site (e.g., + "Android Plugin") in the "Name" field.
      10. +
      11. Click OK. +
      12. Follow the remaining procedures as listed for + default installation above, + starting from step 4.
      13. +
      + +

      To update your plugin once you've installed using the zip file, you will have +to follow these steps again instead of the default update instructions.

      + +

      Other install errors

      + +

      Note that there are features of ADT that require some optional +Eclipse components (for example, WST). If you encounter an error when +installing ADT, your Eclipse installion might not include these components. +For information about how to quickly add the necessary components to your +Eclipse installation, see the troubleshooting topic +ADT +Installation Error: "requires plug-in org.eclipse.wst.sse.ui".

      + +

      For Linux users

      +

      If you encounter this error when installing the ADT Plugin for Eclipse: +

      +An error occurred during provisioning.
      +Cannot connect to keystore.
      +JKS
      +

      +...then your development machine lacks a suitable Java VM. Installing Sun +Java 6 will resolve this issue and you can then reinstall the ADT +Plugin.

      + + diff --git a/docs/html/sdk/1.6_r1/requirements.jd b/docs/html/sdk/1.6_r1/requirements.jd new file mode 100644 index 0000000000000..781ee3278dedc --- /dev/null +++ b/docs/html/sdk/1.6_r1/requirements.jd @@ -0,0 +1,51 @@ +page.title=System Requirements +sdk.version=1.6 +sdk.preview=0 +@jd:body + +

      The sections below describe the system and software requirements for developing +Android applications using the Android SDK tools included in Android + SDK, Release .

      + +

      Supported Operating Systems

      +
        +
      • Windows XP (32-bit) or Vista (32- or 64-bit)
      • +
      • Mac OS X 10.4.8 or later (x86 only)
      • +
      • Linux (tested on Linux Ubuntu Dapper Drake)
      • +
      + +

      Supported Development Environments

      +
        +
      • Eclipse IDE +
          +
        • Eclipse 3.4 (Ganymede) or 3.5 (Galileo) +
            +
          • Note: Eclipse 3.3 has not been fully tested with ADT 0.9.3 and support can no longer be guaranteed. We suggest you upgrade to + Eclipse 3.4 or 3.5.
          • +
          • Recommended Eclipse IDE packages: Eclipse IDE for Java EE Developers, Eclipse IDE for Java Developers, Eclipse for RCP/Plug-in Developers
          • +
          • Eclipse JDT plugin (included in most Eclipse IDE packages)
          • +
          • Eclipse Classic IDE package is not supported.
          • +
          +
        • +
        • JDK 5 or JDK 6 (JRE alone is not sufficient)
        • +
        • Android Development Tools plugin (optional)
        • +
        • Not compatible with Gnu Compiler for Java (gcj)
        • +
        +
      • +
      • Other development environments or IDEs +
          +
        • JDK 5 or JDK 6 (JRE alone is not sufficient)
        • +
        • Apache Ant 1.6.5 or later for Linux and Mac, 1.7 or later for Windows
        • +
        • Not compatible with Gnu Compiler for Java (gcj)
        • +
        +
      • +
      + +

      Note: If JDK is already installed on your development computer, please take a moment to make sure that it meets the version requirements listed above. In +particular, note that some Linux distributions may include JDK 1.4 or Gnu Compiler for Java, both of which are not supported for Android development.

      + +

      Hardware requirements

      +
        +
      • For the base SDK package, at least 600MB of available disk space. For each platform downloaded into the SDK, an additional 100MB is needed.
      • +
      + diff --git a/docs/html/sdk/1.6_r1/upgrading.jd b/docs/html/sdk/1.6_r1/upgrading.jd new file mode 100644 index 0000000000000..2f9cc7308f84e --- /dev/null +++ b/docs/html/sdk/1.6_r1/upgrading.jd @@ -0,0 +1,386 @@ +page.title=Upgrading the SDK +sdk.version=1.6 +sdk.preview=0 +@jd:body + + +
      +
      + +

      Upgrading the SDK

      +
        +
      • If you are developing on the Android 1.5 SDK, migrating your +applications is straightforward and typically requires no modifications.
      • +
      • For Eclipse users, a new version of ADT is available. To use the Android +1.6 SDK, please upgrade to ADT 0.9.3 (or later).
      • +
      • For Windows users, the SDK includes a new USB driver that you can +install, if you are developing on a device.
      • +
      • A new Android SDK and AVD Manager tool is available. To access +it, run the android tool without options.
      • +
      + +

      In this document

      +
        +
      1. Install the SDK
      2. +
      3. Update Your Eclipse ADT Plugin
      4. +
      5. Run Your Applications
      6. +
      7. Migrate Your Applications
      8. +
      + +

      Migrating information

      +
        +
      1. Android 1.6 API +Differences
      2. +
      + +
      +
      + +

      This document describes how to move your development environment and existing +Android applications from an Android 1.5 SDK to the Android 1.6 SDK. If you are +migrating applications from an SDK older than 1.5, please also read the +upgrading document available in the Android 1.5 SDK package.

      + +

      There are several compelling reasons to upgrade, such as new SDK tools that +make developing more efficient and new APIs that allow you to expand the +feature-set of your applications. However, even if you or your applications +don't require these enhancements, it's important that you upgrade to ensure that +your applications run properly on the upcoming Android platform.

      + +

      The Android 1.6 platform will soon be deployable to devices around the world. +If you have already released Android applications to the public, you should test +the forward-compatibility of your applications on the latest version of the +platform as soon as possible. It's unlikely that you'll encounter problems in +your applications, but in the interest of maintaining the best user experience, +you should take no risks. So, please install the new Android SDK and test your +applications on the new platform.

      + + +

      For more information on new SDK features and system changes, +see the Android 1.6 Version Notes.

      + + +

      Install the SDK

      + +

      If you haven't yet downloaded the SDK, download it from +here and unpack it into a safe location.

      + +

      If you had previously setup your PATH variable to point to the SDK +tools directory, then you need to update it to point to the new SDK. For example, for +a .bashrc or .bash_profile file:

      +
      export PATH=$PATH:<your_sdk_dir>/tools
      + + +

      Update Your Eclipse ADT Plugin

      + +

      If you don't use the Eclipse IDE for development, +skip to Run Your Applications.

      + +

      A new version of the ADT Plugin, ADT 0.9.3, is available in conjunction with +this SDK release. To use the SDK, you must upgrade your ADT Plugin to version +0.9.3. With ADT 0.9.3, you can still compile your existing applications against +multiple platform versions, such as Android 1.5, Android 1.1, and so on. However, +ADT 0.9.3 is not compatible with previous versions of the SDK and its tools, so +make sure that you upgrade both your SDK and the ADT Plugin.

      + +The upgrade steps for ADT are described below. For information about new features in ADT, see the Release Notes document.

      + +

      If you're currently using a version of ADT older than version 0.9, +then you must uninstall ADT before you proceed (read how to Uninstall your previous +ADT plugin). If you currently have version 0.9 or 0.9.1, then you don't need +to uninstall and can continue with the procedure below.

      + + + + + + + +
      Eclipse 3.4 (Ganymede)Eclipse 3.5 (Galileo)
      + +
        +
      1. Select Help > Software Updates.
      2. +
      3. Select the Available Software tab.
      4. +
      5. Select the checkboxes next to Android DDMS and Android Developer Tools, + then click Update.
      6. +
      7. In the resulting Available Updates dialog, ensure that both Android DDMS + and Android Development Tools are selected, then click + Next.
      8. +
      9. Read and accept the license agreement and then click Finish. + This will download and install the latest version of Android DDMS and + Android Development Tools.
      10. +
      11. Restart Eclipse.
      12. +
      +
      + +
        +
      1. Select Help > Check for Updates.
      2. +
      3. In the resulting Available Updates dialog, locate the Android DDMS and + Android Development Tools features in the list and ensure that the checkboxes + next to them are selected. Click Next. +

        If the Available Updates dialog does not list Android DDMS and Android + Development tools, make sure that you have set up a remote update site + for them, as described in + Installing the ADT Plugin. +

      4. +
      5. In the Update Details dialog, click Next.
      6. +
      7. Read and accept the license agreement and then click Finish. + This will download and install the latest version of Android DDMS and + Android Development Tools.
      8. +
      9. Restart Eclipse.
      10. +
      +
      + +

      If you encounter problems with this update procedure, try performing a fresh +installation. Fully remove your existing ADT Plugin as described in Uninstall your previous +ADT plugin and then follow the guide to Installing the ADT Plugin for +Eclipse.

      + +

      Update your Eclipse SDK Preferences

      + +

      The last step is to update your Eclipse preferences to point to the new +SDK directory:

      +
        +
      1. Select Window > Preferences to open + the Preferences panel (Mac: Eclipse > Preferences + ).
      2. +
      3. Select Android from the left panel.
      4. +
      5. For the SDK Location, click Browse + and locate your SDK directory.
      6. +
      7. Click Apply, then OK.
      8. +
      + + +

      Run Your Applications to Test Forward Compatibility

      + +

      Now that you have installed the Android 1.6 SDK, we encourage you run each of +your existing applications on the Android 1.6 system image that is included in +the SDK, to ensure that it functions properly on the new platform. +Testing forward-compatibility in this way is especially important for +applications that you may have already published and that may be installed on +devices that will upgrade to the new platform.

      + +

      In most cases, your applications will function properly when run on the new +version of the platform. However, it is possible that you will encounter +unexpected behavior, because of changes in the API or underlying platform. If +you do find problems, you can use the SDK tools to compile and publish an update +to the applications, which users can then download. + +

      To test forward-compatibility, simply run your application, as-is, on an +instance of the Android Emulator that uses an AVD targeted to the "Android 1.6" +system image. Here are the steps:

      + +
        +
      1. Make no changes to your application code.
      2. +
      3. Create a new AVD that runs the new "Android 1.6" platform.
      4. +
      5. Launch your application in an emulator running the new AVD.
      6. +
      7. Perform normal testing on your application to ensure everything works as + expected.
      8. +
      + +

      Note that, for the purposes of forward-compatibility testing, you should not +change how your application is compiled. That is, you should continue to compile +the application against the same version of the Android library as before. The +only change needed is to the AVD, which controls the version of the Android +system image (run-time environment) on which the application is run. + +

      For more information on creating an AVD and launching your application, see +Running Your +Applications (Eclipse) or Running +Your Applications (other IDEs), depending on your development +environment.

      + +

      Android 1.6 Forward-Compatibility Tips

      + +

      The new version of the Android platform includes several new APIs, but +very few actual changes to existing APIs. This means that, in most +cases, your applications written with earlier versions of the Android library +should run properly on the Android 1.6 platform.

      + +

      However, here are some areas to pay attention to as you test forward-compatibility:

      + + + +

      Migrate Your Applications

      + +

      If you want to use any of the new Android 1.6 APIs in your existing +applications, you must first migrate the applications to the new Android +platform version. Generally, migrating an application includes:

      + +
        +
      • Referencing the proper API Level in the application's manifest file, +and
      • +
      • Resetting its project properties so that it is compiled against the Android +1.6 build target.
      • +
      + +

      Additionally, to run your application in the emulator, you need to +create an AVD that uses the Android 1.6 system image.

      + +

      Note: You only need migrate your application as +described in this section if the application will actually use APIs +introduced in the Android 1.6 platform (which are not available on +devices running older versions of the Android platform). If your application +does not use any new APIs, you can compile and run it without modification and +not migration is necessary.

      + +

      Reference the Proper API Level

      + +

      If your application is using APIs introduced in Android 1.6, you must +reference that dependency in the application's manifest file so that it can be +deployed to devices running the Android 1.6 platform.

      + +

      Open the manifest file and locate the minSdkVersion attribute +in the <uses-sdk> manifest element. Set the value of +minSdkVersion to "4" (the API Level +identifier corresponding to Android 1.6). Here's an example:

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

      Compile Against the Proper Build Target

      + +

      Once you've changed the minSdkVersion value in your +application's manifest, you need to set the application's project properties so +that the application will be compiled against the Android 1.6 library. To do so, +follow the steps below for your respective development environment.

      + +

      Eclipse Users

      + +
        +
      1. Right-click on the individual project (in the Package Explorer) + and select Properties.
      2. +
      3. In the properties, open the Android panel and select a new Project Build Target. + Select "Android 1.6" to target the new platform (or "Google APIs" with the "4" + API Level, if your application uses the Google Maps APIs).
      4. +
      5. Click Apply, then OK.
      6. +
      + +

      Ant Users

      + +

      Use the android tool (located in +your_sdk/tools/) to create a new build.xml +that references the new platform target. To see a list of available targets, +execute:

      + +
      android list targets
      + +

      Select the target id that corresponds to the "Android 1.6" platform +and pass it with the --target parameter when updating your project. +For example:

      + +
      android update project --path /path/to/my-project --target 2
      + +

      If your application uses the Google Maps APIs (i.e., MapView), be certain to +select a Google APIs target.

      + +

      Create an AVD that Uses the Android 1.6 Platform

      + +

      Finally, you need to set up a new AVD that uses the Android 1.6 platform, so that +you can run your application in the emulator. + +

      To set up the new AVD, use the android tool, available in the +tools/ directory of the SDK. You can run the AVD manager by simply +changing to the tools/ directory and entering android +at the command line. Click "New" to create the AVD and set its properties.

      + +

      When creating the AVD, make sure to select a target of "Android 1.6 - API +Level 4". If your application uses the Google Maps APIs (MapView), select the +target "Google APIs (Google Inc.) - API Level 4".

      + +

      For more information about running your application in an AVD, see Running Your +Application (Eclipse) or Running Your +Application (other IDEs).

      + +

      For general information about AVDs, see the Android Virtual +Devices document.

      + + + +
      +

      If you have trouble migrating to the new version of the SDK, visit the +Android Developers Group +to seek help from other Android developers.

      +
      + diff --git a/docs/html/sdk/RELEASENOTES.jd b/docs/html/sdk/RELEASENOTES.jd index 03eeb4bb8ddbe..130a92c32fb0d 100644 --- a/docs/html/sdk/RELEASENOTES.jd +++ b/docs/html/sdk/RELEASENOTES.jd @@ -5,6 +5,198 @@ page.title=SDK Release Notes releases. For the latest known issues, please ensure that you're viewing this page at http://developer.android.com/sdk/RELEASENOTES.html.

      +

      Android 1.6 SDK, Release 1

      + +

      This SDK provides updates to the development tools and Android system that +you use to create applications for compliant Android-powered devices.

      + +

      Release Overview

      + +

      This SDK release includes several new features for developers. Highlights of the +changes include:

      + +
        +
      • Emulator support for multiple screen sizes/densities, including new +skins.
      • +
      • Android SDK and AVD Manager, a graphical UI to let you manage your +SDK and AVD environments more easily. The tool lets you create and manage +your Android Virtual +Devices and download new SDK packages (such as platform versions and +add-ons) into your environment.
      • +
      • Improved support for test packages in New Project Wizard
      • +
      + +

      For details about the Android platforms included in the SDK — including +bug fixes, features, and API changes — please read the Version Notes +documents available at left. For a list of Android platforms included in this +release, see the Download +page. Note that you can use the Android SDK and AVD Manager to download +additional platforms.

      + +

      Installation and Upgrade Notes

      + +

      If you've been developing an application using an Android 1.1 SDK, you need +to make a few changes to your development environment to migrate to the new SDK. +Tools and documentation are provided to assist you. No changes to the source +code of an existing application should be needed, provided that your application +is not using Android internal structures or APIs.

      + +

      To ensure that your existing application will work properly on a device +running the latest version of the Android platform, you are strongly encouraged +to migrate the application to the new SDK, compile it using the platform +matching the application's original API Level, and run it against the most +current platform.

      + +

      If you're installing the Android SDK for the first time, please see +the instructions in Installing the SDK. + +

      ADT Plugin for Eclipse

      + +

      An updated version of the ADT Plugin for Eclipse is available with the +Android 1.6 SDK. The new version, ADT 0.9.3, provides several new +features, including integrated support for the Android SDK and AVD Manager +and zipalign tool. In addition, the New Project Wizard now +lets you create a test package containing tests for your application. These +features are described in the sections below.

      + +

      If you are developing in Eclipse with ADT and want to get started with the +Android 1.6 SDK, you should download and install a compatible version of the ADT +Plugin (0.9.3 or higher).

      + +

      The new version of ADT is downloadable from the usual remote update site or +is separately downloadable as a .zip archive. For instructions on how to +download the plugin, please see Upgrading +Your Eclipse Plugin.

      + +

      Android SDK and AVD Manager

      + +

      The SDK offers a new tool called Android AVD Manager that lets you manage +your SDK and AVD environments more efficiently.

      + +

      Using the tool, you can quickly check what Android platforms, add-ons, +extras, and documentation packages are available in your SDK environment, what +their versions are, and whether updated versions are available. You can then +download one or more items from remote repositories and install them directly in +your SDK environment. For example, the tool lets you obtain updates to SDK tools +incrementally, as they are made available, without having to wait for the next +SDK release. You can also download Android platform versions into your +environment that were not included in the SDK package.

      + +

      The tool also lets you quickly create new AVDs, manage +their properties, and run a target AVD from a single window.

      + +

      If you are developing in Eclipse with ADT, you can access the Android SDK +and AVD Manager from the Window menu.

      + +

      If you are developing in another IDE, you can access the Android SDK and +AVD Manager through the android command-line tool, located in the +<sdk>/tools directory. You can launch the tool with a graphical UI by +using the android command without specifying any options. You can +also simply double-click the android.bat (Windows) or android (OS X/Linux) file. +You can still use android commands to create and manage AVDs, +including AVDs with custom hardware configurations.

      + +

      Integration with zipalign

      + +

      The Android system offers a performance optimization for installed +application packages whose contained uncompressed files are all aligned on +4-byte boundaries. For these .apks, the system can read the files by mmap'ing +the zip file, rather than by copying all the data out of them. This reduces +the amount of memory used by the application at run time. The SDK includes +a tool called zipalign that you can run against your .apks, to +align them properly and enable them to benefit from this optimization.

      + +

      The ADT Plugin and the Ant build tools both provide integrated support for +aligning your application packages. After you build an .apk, the SDK tools can +sign and then run zipalign against it. The SDK includes the +standalone version of the zipalign tool, so you can run also run it +manually from the command line if you choose.

      + +
        +
      • If you are developing in Eclipse with ADT, support for +zipalign is integrated into the Export Wizard. When you use the +Wizard to export a signed application package, ADT signs and then automatically +runs zipalign against the exported package. If you use the Wizard +to export an unsigned application package, then it will not zipalign the +package because zipalign must be performed only after the APK has been signed. +You must manually sign and zipalign the package after export.
      • +
      • If you are developing using Ant and are compiling in release mode, the +build tools will automatically sign and then zipalign the +application package, provided that you have specified the location of a valid +keystore in the build properties file. If you are compiling in debug mode, the +build tools will sign the package with the debug key and then zipalign +it.
      • +
      • To use zipalign manually, change to the SDK tools directory +and use the command syntax $ zipalign 4 <infile> +<outfile>
      • +
      + +

      In general, note that you must zipalign an application only +after it has been signed, as signing will disrupt the package +alignment.

      + +

      Support for Test Packages in New Project Wizard

      + +

      The New Project Wizard available in the ADT 0.9.3 now lets you add a test +package containing Instrumentation or other classes of tests while you are +creating or importing a new Android application project.

      + +

      New USB Driver for Windows

      + +

      If you are using Windows and want to develop or test your application on an +Android-powered device (such as the T-Mobile G1), you need an appropriate USB +driver. + +

      The Windows version of the Android 1.6 SDK includes a new, WinUSB-based +driver that you can install. The driver is compatible with both 32- and 64-bit +versions of Windows XP and Vista. The driver represents an upgrade from the USB +driver included in previous Android SDKs, although installing the new driver is +not required.

      + +

      If you installed the USB driver from a previous SDK release and it is working +properly, you do not need to upgrade to the new driver. However, we recommend +upgrading if you have had any problems with the older driver or simply want +to upgrade to the latest version.

      + +

      The USB driver files are located in the +<SDK>/usb_driver directory. For driver installation or +upgrade instructions, see Installing the WinUSB +Driver.

      +

      + +

      Emulator Skins, Android 1.6 Platform

      + +

      The Android 1.6 platform included in the SDK provides a new set of emulator +skins, including:

      + +
        +
      • QVGA — 240 x 320, low density (120 dpi)
      • +
      • HVGA — 320 x 480, medium density (160 dpi)
      • +
      • WVGA800 — 480 x 800, high density (240 dpi)
      • +
      • WVGA854 — 480 x 854, high density (240 dpi)
      • +
      + +

      Besides these defaults, You can also create an AVD that overrides the default +density for each skin, to create any combination of resolution/density (WVGA +with medium density, for instance). To do so, use the android tool +command line to create a new AVD that uses a custom hardare configuration. See +Creating an +AVD for more information.

      + +

      Other Notes and Resolved Issues

      + +
        +
      • This SDK release adds support for Eclipse 3.5 (Galileo) and deprecates +support for Eclipse 3.3 (Europa).
      • +
      • We regret to inform developers that Android 1.6 will not include support +for RFC 2549
      • +
      • The issue preventing adb from recognizing Samsung Galaxy devices (linux SDK +only) has been fixed.
      • +
      + +

      Android 1.5 SDK, Release 3

      Provides an updated Android 1.5 system image that includes permissions diff --git a/docs/html/sdk/adt_download.jd b/docs/html/sdk/adt_download.jd index d7b9ac328082d..3eb68316d103d 100644 --- a/docs/html/sdk/adt_download.jd +++ b/docs/html/sdk/adt_download.jd @@ -26,24 +26,24 @@ page. - 0.9.2 - ADT-0.9.2.zip + 0.9.3 + ADT-0.9.3.zip bytes - Required for users of Android 1.6 SDK (and later releases). Updated from 0.9.1. August 2009 + Required for users of Android 1.6 SDK (and later releases). Updated from 0.9.1. September 2009 0.9.1 ADT-0.9.1.zip 2916093 bytes e7b2ab40414ac98 - Required for users of Android 1.5 SDK (and later releases). Updated from 0.9.0. 6 May 2009 + Required for users of Android 1.5 SDK. Updated from 0.9.0. 6 May 2009 0.8.0 ADT-0.8.0.zip   - Required for users of Android 1.1 SDK and Android 1.0 SDK. 23 Sep 2008 + Required for users of Android 1.0/1.1 SDKs. 23 Sep 2008 @@ -63,20 +63,19 @@ Feature ID column and look at its version number.

      0.7.1 - Required for users of Android 0.9 SDK beta. As of this version, Eclipse 3.2 is no longer supported. - Please upgrade to Eclipse Ganymede (3.4) or Europa (3.3) if you are still using 3.2. 18 Aug 2008 + Required for users of the Android 0.9 SDK beta. 18 Aug 2008 0.4.0 - Required if you are using the M5 SDK. See the SDK Release Notes for details on changes and enhancements in this version. 12 Feb 2008 + Required for users of the Android M5 Early Look SDK. 12 Feb 2008 0.3.3 - Some significant enhancements (see m3-rc37 SDK Release Notes). 14 Dec 2007 + Required for users of the Android M3-RC37 Early Look SDK. 14 Dec 2007 0.3.1 - Initial Release. Required for Android m3-rc20 SDK and Android m3-rc22 SDK.21 Nov 2007 + Initial Release. Required for users of the Android M3-RC20/22 SDKs.21 Nov 2007

      diff --git a/docs/html/sdk/android-1.6.jd b/docs/html/sdk/android-1.6.jd new file mode 100644 index 0000000000000..29dceec58c035 --- /dev/null +++ b/docs/html/sdk/android-1.6.jd @@ -0,0 +1,235 @@ +page.title=Android 1.6 Version Notes + +@jd:body + +

      +Date: September 2009
      +API Level: 4

      + + +

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

      + + + +

      Overview

      + +

      The Android 1.6 system delivered in the SDK (as library and system image) is +the development counterpart to the Android 1.6 production system image, +deployable to Android-powered handsets starting September 2009. The system is fully +compliant and includes no external libraries.

      + +

      The Android 1.6 system delivers an updated version of the framework +API. As with previous versions, the Android 1.6 API +is assigned an integer identifier — 4 — 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.

      + +

      For more information about how to use API Level, see the API Levels document.

      + +

      New Features

      + +

      For a list of new system features, see the Android 1.6 Platform +Highlights document.

      + +

      Built-in Applications

      + +

      The system image includes these built-in applications:

      +
        +
      • Alarm Clock
      • +
      • Browser
      • +
      • Calculator
      • +
      • Camcorder
      • +
      • Camera
      • +
      • Contacts
      • +
      • Custom Locale (developer app)
      • +
      • Dev Tools (developer app)
      • +
      • Dialer
      • +
      • Email
      • +
      • Gallery
      • +
      • Gestures Builder
      • +
      • IME for Japanese text input
      • +
      • Messaging
      • +
      • Music
      • +
      • Settings
      • +
      • Spare Parts (developer app)
      • +
      + +

      Locales

      + +

      The system image provides a variety of built-in locales. In some cases, +region-specific strings are available for the locales. In other cases, +a default version of the language is used. The languages that will be +available in the Android 1.6 system image are listed below (with +language_country/region locale descriptor).

      + + + + + + +
      +
        +
      • Arabic, Egypt (ar_EG)
      • +
      • Arabic, Israel (ar_IL)
      • +
      • Bulgarian, Bulgaria (bg_BG)
      • +
      • Chinese, PRC (zh_CN)
      • +
      • Chinese, Taiwan (zh_TW)
      • +
      • Croatian, Croatia (hr_HR)
      • +
      • Czech, Czech Republic (cs_CZ)
      • +
      • Danish, Denmark (da_DK)
      • +
      • Dutch, Netherlands (nl_NL)
      • +
      • Dutch, Belgium (nl_BE)
      • +
      • English, US (en_US)
      • +
      • English, Britain (en_GB)
      • +
      • English, Canada (en_CA)
      • +
      • English, Australia (en_AU)
      • +
      • English, India (en_IN)
      • +
      • English, Ireland (en_IE)
      • +
      • English, New Zealand (en_NZ)
      • +
      • English, Singapore (en_SG)
      • +
      • English, South Africa (en_ZA)
      • +
      • Finnish, Finland (fi_FI)
      • +
      • French, France (fr_FR)
      • +
      • French, Belgium (fr_BE)
      • +
      • French, Canada (fr_CA)
      • +
      • French, Switzerland (fr_CH)
      • +
      • German, Germany (de_DE)
      • +
      • German, Austria (de_AT)
      • +
      • German, Switzerland (de_CH)
      • +
      • German, Liechtenstein (de_LI)
      • +
      +
      +
        +
      • Greek, Greece (el_GR)
      • +
      • Hindi, India (hi_IN)
      • +
      • Hungarian, Hungary (hu_HU)
      • +
      • Indonesian, Indonesia (id_ID)
      • +
      • Italian, Italy (it_IT)
      • +
      • Italian, Switzerland (it_CH)
      • +
      • Japanese, Japan (ja_JP)
      • +
      • Korean, Korea (ko_KR)
      • +
      • Latvian, Latvia (lv_LV)
      • +
      • Lithuanian, Lithuania (lt_LT)
      • +
      • Norwegian Bokmål, Norway (nb_NO)
      • +
      • Polish, Poland (pl_PL)
      • +
      • Portuguese, Brazil (pt_BR)
      • +
      • Portuguese, Portugal (pt_PT)
      • +
      • Romanian, Romania (ro_RO)
      • +
      • Russian, Russia (ru_RU)
      • +
      • Serbian, Serbia (sr_RS)
      • +
      • Slovak, Slovakia (sk_SK)
      • +
      • Slovenian, Slovenia (sl_SI)
      • +
      • Spanish, Spain (es_ES)
      • +
      • Spanish, US (es_US)
      • +
      • Swedish, Sweden (sv_SE)
      • +
      • Thai, Thailand (th_TH)
      • +
      • Tagalog, Philippines (tl_PH)
      • +
      • Turkish, Turkey (tr_TR)
      • +
      • Ukranian, Ukrania (uk_UA)
      • +
      • Vietnamese, Vietnam (vi_VN)
      • +
      +
      + +

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

      + +

      API Changes

      + +

      Overview

      + +
        + +
      • Search framework
      • +
          +
        • Applications can now expose relevant content to users as search suggestions in the Quick Search Box, a new device-wide search capability that is accessible from the home screen. To support this, the search framework adds new attributes to the searchable metadata file. For complete information, see the {@link android.app.SearchManager SearchManager} documentation.
        • +
        + + +
      • Accessibility framework
      • +
          +
        • New {@link android.view.accessibility android.accessibility} package +that includes classes for capturing accessibility events and forwarding them to +an {@link android.accessibilityservice AccessibilityService} handler.
        • +
        • New {@link android.accessibilityservice AccessibilityService} package +that lets your application track user events and provide visual, audible, or +haptic feedback to the user.
        • +
        + + +
      • Gestures
      • +
          +
        • New {@link android.gesture gesture} API for creating, recognizing, +loading, and saving gestures.
        • +
        + + +
      • Text-to-speech
      • +
          +
        • New package {@link android.speech.tts android.speech.tts} provides +classes for synthesizing speech from text, for immediate playback or to create a +sound file.
        • +
        + + +
      • Permissions
      • +
          + +
        • New permissions for +{@link android.Manifest.permission#CHANGE_WIFI_MULTICAST_STATE CHANGE_WIFI_MULTICAST_STATE}, +{@link android.Manifest.permission#INSTALL_LOCATION_PROVIDER INSTALL_LOCATION_PROVIDER}, +{@link android.Manifest.permission#READ_HISTORY_BOOKMARKS READ_HISTORY_BOOKMARKS}, +{@link android.Manifest.permission#WRITE_EXTERNAL_STORAGE WRITE_EXTERNAL_STORAGE}, and +{@link android.Manifest.permission#WRITE_HISTORY_BOOKMARKS WRITE_HISTORY_BOOKMARKS}.
        • +
        + + +
      • Graphics
      • +
          +
        • Classes in {@link android.graphics android.graphics} now support scaling +for different screen densities.
        • +
        + + +
      • Telephony
      • +
          +
        • New {@link android.telephony.SmsManager SmsManager} and other classes +for sending and receiving SMS messages.
        • +
        + + +
      • Utilities
      • +
          +
        • New {@link android.util.DisplayMetrics DisplayMetrics} fields for +determining the density of the current device screen.
        • +
        + + +
      • Application-defined support for various screen densities
      • +

        Applications can now use a new element in their manifest files, <supports- +screen> to indicate to the specific screen resolutions/densities that +they are designed to support. When the application is installed on a device +whose screen is not explicitly supported by the application, the system +runs the application in Compatibility Mode, where possible.

        + +
      + +

      API Change Details

      + +

      For a detailed view of API changes in this platform (API Level 4), see the API Differences Report.

      + + + + + + diff --git a/docs/html/sdk/api_diff/4/changes.html b/docs/html/sdk/api_diff/4/changes.html index da18ae66cfe82..c1b66a1ef24ff 100644 --- a/docs/html/sdk/api_diff/4/changes.html +++ b/docs/html/sdk/api_diff/4/changes.html @@ -4,11 +4,11 @@ - + -API Differences between 3 and Donut +API Differences between 3 and 4 diff --git a/docs/html/sdk/api_diff/4/changes/alldiffs_index_additions.html b/docs/html/sdk/api_diff/4/changes/alldiffs_index_additions.html index 048f928c0c608..cb7b0f9b69073 100644 --- a/docs/html/sdk/api_diff/4/changes/alldiffs_index_additions.html +++ b/docs/html/sdk/api_diff/4/changes/alldiffs_index_additions.html @@ -69,6 +69,7 @@ body{overflow:auto;} U V W +Z TOP

      ACCESSIBILITY_ENABLED @@ -157,6 +158,7 @@ body{overflow:auto;} U V W +Z TOP

      backupAgent @@ -200,6 +202,7 @@ body{overflow:auto;} U V W +Z TOP

      CHANGE_WIFI_MULTICAST_STATE @@ -262,6 +265,7 @@ body{overflow:auto;} U V W +Z TOP

      decodeResourceStream @@ -316,952 +320,6 @@ body{overflow:auto;}   type  (AccessibilityEvent) in android.view.Window.Callback
      - -donut_resource_pad1
      - in  -android.R.anim -
      - - in  -android.R.array -
      - - in  -android.R.attr -
      - - in  -android.R.color -
      - - in  -android.R.dimen -
      - - in  -android.R.drawable -
      - - in  -android.R.id -
      - - in  -android.R.integer -
      - - in  -android.R.layout -
      - - in  -android.R.string -
      - - in  -android.R.style -
      - -donut_resource_pad10
      - in  -android.R.anim -
      - - in  -android.R.array -
      - - in  -android.R.attr -
      - - in  -android.R.color -
      - - in  -android.R.dimen -
      - - in  -android.R.drawable -
      - - in  -android.R.id -
      - - in  -android.R.integer -
      - - in  -android.R.layout -
      - - in  -android.R.string -
      - - in  -android.R.style -
      - -donut_resource_pad11
      - in  -android.R.anim -
      - - in  -android.R.array -
      - - in  -android.R.attr -
      - - in  -android.R.color -
      - - in  -android.R.dimen -
      - - in  -android.R.drawable -
      - - in  -android.R.id -
      - - in  -android.R.integer -
      - - in  -android.R.layout -
      - - in  -android.R.string -
      - - in  -android.R.style -
      - -donut_resource_pad12
      - in  -android.R.anim -
      - - in  -android.R.array -
      - - in  -android.R.attr -
      - - in  -android.R.color -
      - - in  -android.R.dimen -
      - - in  -android.R.drawable -
      - - in  -android.R.id -
      - - in  -android.R.integer -
      - - in  -android.R.layout -
      - - in  -android.R.string -
      - - in  -android.R.style -
      - -donut_resource_pad13
      - in  -android.R.anim -
      - - in  -android.R.attr -
      - - in  -android.R.color -
      - - in  -android.R.dimen -
      - - in  -android.R.drawable -
      - - in  -android.R.id -
      - - in  -android.R.integer -
      - - in  -android.R.layout -
      - - in  -android.R.string -
      - - in  -android.R.style -
      - -donut_resource_pad14
      - in  -android.R.anim -
      - - in  -android.R.attr -
      - - in  -android.R.color -
      - - in  -android.R.dimen -
      - - in  -android.R.drawable -
      - - in  -android.R.id -
      - - in  -android.R.integer -
      - - in  -android.R.string -
      - - in  -android.R.style -
      - -donut_resource_pad15
      - in  -android.R.anim -
      - - in  -android.R.attr -
      - - in  -android.R.color -
      - - in  -android.R.drawable -
      - - in  -android.R.id -
      - - in  -android.R.string -
      - - in  -android.R.style -
      - -donut_resource_pad16
      - in  -android.R.anim -
      - - in  -android.R.attr -
      - - in  -android.R.color -
      - - in  -android.R.drawable -
      - - in  -android.R.id -
      - - in  -android.R.string -
      - - in  -android.R.style -
      - -donut_resource_pad17
      - in  -android.R.anim -
      - - in  -android.R.attr -
      - - in  -android.R.color -
      - - in  -android.R.drawable -
      - - in  -android.R.id -
      - - in  -android.R.string -
      - - in  -android.R.style -
      - -donut_resource_pad18
      - in  -android.R.anim -
      - - in  -android.R.attr -
      - - in  -android.R.color -
      - - in  -android.R.drawable -
      - - in  -android.R.id -
      - - in  -android.R.string -
      - - in  -android.R.style -
      - -donut_resource_pad19
      - in  -android.R.anim -
      - - in  -android.R.color -
      - - in  -android.R.drawable -
      - - in  -android.R.id -
      - - in  -android.R.string -
      - - in  -android.R.style -
      - -donut_resource_pad2
      - in  -android.R.anim -
      - - in  -android.R.array -
      - - in  -android.R.attr -
      - - in  -android.R.color -
      - - in  -android.R.dimen -
      - - in  -android.R.drawable -
      - - in  -android.R.id -
      - - in  -android.R.integer -
      - - in  -android.R.layout -
      - - in  -android.R.string -
      - - in  -android.R.style -
      - -donut_resource_pad20
      - in  -android.R.anim -
      - - in  -android.R.color -
      - - in  -android.R.drawable -
      - - in  -android.R.id -
      - - in  -android.R.string -
      - -donut_resource_pad21
      - in  -android.R.anim -
      - - in  -android.R.color -
      - - in  -android.R.drawable -
      - - in  -android.R.id -
      - - in  -android.R.string -
      - -donut_resource_pad22
      - in  -android.R.color -
      - - in  -android.R.drawable -
      - - in  -android.R.id -
      - - in  -android.R.string -
      - -donut_resource_pad23
      - in  -android.R.color -
      - - in  -android.R.drawable -
      - - in  -android.R.string -
      - -donut_resource_pad24
      - in  -android.R.color -
      - - in  -android.R.drawable -
      - - in  -android.R.string -
      - -donut_resource_pad25
      - in  -android.R.color -
      - - in  -android.R.drawable -
      - - in  -android.R.string -
      - -donut_resource_pad26
      - in  -android.R.color -
      - - in  -android.R.drawable -
      - - in  -android.R.string -
      - -donut_resource_pad27
      - in  -android.R.color -
      - - in  -android.R.drawable -
      - - in  -android.R.string -
      - -donut_resource_pad28
      - in  -android.R.color -
      - - in  -android.R.drawable -
      - -donut_resource_pad29
      - in  -android.R.color -
      - - in  -android.R.drawable -
      - -donut_resource_pad3
      - in  -android.R.anim -
      - - in  -android.R.array -
      - - in  -android.R.attr -
      - - in  -android.R.color -
      - - in  -android.R.dimen -
      - - in  -android.R.drawable -
      - - in  -android.R.id -
      - - in  -android.R.integer -
      - - in  -android.R.layout -
      - - in  -android.R.string -
      - - in  -android.R.style -
      - -donut_resource_pad30
      - in  -android.R.color -
      - - in  -android.R.drawable -
      - -donut_resource_pad31
      - in  -android.R.color -
      - - in  -android.R.drawable -
      - -donut_resource_pad32 -
      - -donut_resource_pad33 -
      - -donut_resource_pad34 -
      - -donut_resource_pad35 -
      - -donut_resource_pad36 -
      - -donut_resource_pad37 -
      - -donut_resource_pad38 -
      - -donut_resource_pad39 -
      - -donut_resource_pad4
      - in  -android.R.anim -
      - - in  -android.R.array -
      - - in  -android.R.attr -
      - - in  -android.R.color -
      - - in  -android.R.dimen -
      - - in  -android.R.drawable -
      - - in  -android.R.id -
      - - in  -android.R.integer -
      - - in  -android.R.layout -
      - - in  -android.R.string -
      - - in  -android.R.style -
      - -donut_resource_pad40 -
      - -donut_resource_pad5
      - in  -android.R.anim -
      - - in  -android.R.array -
      - - in  -android.R.attr -
      - - in  -android.R.color -
      - - in  -android.R.dimen -
      - - in  -android.R.drawable -
      - - in  -android.R.id -
      - - in  -android.R.integer -
      - - in  -android.R.layout -
      - - in  -android.R.string -
      - - in  -android.R.style -
      - -donut_resource_pad6
      - in  -android.R.anim -
      - - in  -android.R.array -
      - - in  -android.R.attr -
      - - in  -android.R.color -
      - - in  -android.R.dimen -
      - - in  -android.R.drawable -
      - - in  -android.R.id -
      - - in  -android.R.integer -
      - - in  -android.R.layout -
      - - in  -android.R.string -
      - - in  -android.R.style -
      - -donut_resource_pad7
      - in  -android.R.anim -
      - - in  -android.R.array -
      - - in  -android.R.attr -
      - - in  -android.R.color -
      - - in  -android.R.dimen -
      - - in  -android.R.drawable -
      - - in  -android.R.id -
      - - in  -android.R.integer -
      - - in  -android.R.layout -
      - - in  -android.R.string -
      - - in  -android.R.style -
      - -donut_resource_pad8
      - in  -android.R.anim -
      - - in  -android.R.array -
      - - in  -android.R.attr -
      - - in  -android.R.color -
      - - in  -android.R.dimen -
      - - in  -android.R.drawable -
      - - in  -android.R.id -
      - - in  -android.R.integer -
      - - in  -android.R.layout -
      - - in  -android.R.string -
      - - in  -android.R.style -
      - -donut_resource_pad9
      - in  -android.R.anim -
      - - in  -android.R.array -
      - - in  -android.R.attr -
      - - in  -android.R.color -
      - - in  -android.R.dimen -
      - - in  -android.R.drawable -
      - - in  -android.R.id -
      - - in  -android.R.integer -
      - - in  -android.R.layout -
      - - in  -android.R.string -
      - - in  -android.R.style -
      dropDownHeight
      @@ -1287,6 +345,7 @@ body{overflow:auto;} U V W +Z TOP

      ENABLED_ACCESSIBILITY_SERVICES @@ -1322,6 +381,7 @@ body{overflow:auto;} U V W +Z TOP

      fadeDuration @@ -1384,6 +444,7 @@ body{overflow:auto;} U V W +Z TOP

      gestureColor @@ -1557,6 +618,7 @@ body{overflow:auto;} U V W +Z TOP

      ImageSpan
      @@ -1638,6 +700,7 @@ body{overflow:auto;} U V W +Z TOP

      largeScreens @@ -1667,6 +730,7 @@ body{overflow:auto;} U V W +Z TOP

      MANUFACTURER @@ -1696,6 +760,7 @@ body{overflow:auto;} U V W +Z TOP

      NinePatchDrawable
      @@ -1729,6 +794,7 @@ body{overflow:auto;} U V W +Z TOP

      onCallbackDied @@ -1763,6 +829,7 @@ body{overflow:auto;} U V W +Z TOP

      parseUri @@ -1806,6 +873,7 @@ body{overflow:auto;} U V W +Z TOP

      queryAfterZeroResults @@ -1832,6 +900,7 @@ body{overflow:auto;} U V W +Z TOP

      READ_HISTORY_BOOKMARKS @@ -1870,6 +939,7 @@ body{overflow:auto;} U V W +Z TOP

      screenLayout @@ -2055,6 +1125,7 @@ body{overflow:auto;} U V W +Z TOP

      targetSdkVersion
      @@ -2330,6 +1401,7 @@ body{overflow:auto;} T V W +Z TOP

      uncertainGestureColor @@ -2365,6 +1437,7 @@ body{overflow:auto;} T U W +Z TOP

      ViewDebug.FlagToString
      @@ -2399,6 +1472,7 @@ body{overflow:auto;} T U V +Z TOP

      Widget_ProgressBar_Inverse @@ -2417,6 +1491,34 @@ body{overflow:auto;} WRITE_HISTORY_BOOKMARKS
      + + +
      Z  +A +B +C +D +E +F +G +I +L +M +N +O +P +Q +R +S +T +U +V +W + TOP +

      +ZoomButtonsController
      + +ZoomButtonsController.OnZoomListener
      - - - diff --git a/docs/html/sdk/api_diff/4/changes/android.R.attr.html b/docs/html/sdk/api_diff/4/changes/android.R.attr.html index a4b9adb84866c..a1923f63b8200 100644 --- a/docs/html/sdk/api_diff/4/changes/android.R.attr.html +++ b/docs/html/sdk/api_diff/4/changes/android.R.attr.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26
      @@ -117,132 +117,6 @@ Class android.   - - - - int donut_resource_pad1 - -   - - - - - int donut_resource_pad10 - -   - - - - - int donut_resource_pad11 - -   - - - - - int donut_resource_pad12 - -   - - - - - int donut_resource_pad13 - -   - - - - - int donut_resource_pad14 - -   - - - - - int donut_resource_pad15 - -   - - - - - int donut_resource_pad16 - -   - - - - - int donut_resource_pad17 - -   - - - - - int donut_resource_pad18 - -   - - - - - int donut_resource_pad2 - -   - - - - - int donut_resource_pad3 - -   - - - - - int donut_resource_pad4 - -   - - - - - int donut_resource_pad5 - -   - - - - - int donut_resource_pad6 - -   - - - - - int donut_resource_pad7 - -   - - - - - int donut_resource_pad8 - -   - - - - - int donut_resource_pad9 - -   - diff --git a/docs/html/sdk/api_diff/4/changes/android.R.color.html b/docs/html/sdk/api_diff/4/changes/android.R.color.html deleted file mode 100644 index 20ce475d4c4bc..0000000000000 --- a/docs/html/sdk/api_diff/4/changes/android.R.color.html +++ /dev/null @@ -1,332 +0,0 @@ - - - - - - - - - -android.R.color - - - - - - - - - - -
      -
      -
      -

      -Class android.R.color -

      - - - -

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Added Fields -
      - - int donut_resource_pad1 -  
      - - int donut_resource_pad10 -  
      - - int donut_resource_pad11 -  
      - - int donut_resource_pad12 -  
      - - int donut_resource_pad13 -  
      - - int donut_resource_pad14 -  
      - - int donut_resource_pad15 -  
      - - int donut_resource_pad16 -  
      - - int donut_resource_pad17 -  
      - - int donut_resource_pad18 -  
      - - int donut_resource_pad19 -  
      - - int donut_resource_pad2 -  
      - - int donut_resource_pad20 -  
      - - int donut_resource_pad21 -  
      - - int donut_resource_pad22 -  
      - - int donut_resource_pad23 -  
      - - int donut_resource_pad24 -  
      - - int donut_resource_pad25 -  
      - - int donut_resource_pad26 -  
      - - int donut_resource_pad27 -  
      - - int donut_resource_pad28 -  
      - - int donut_resource_pad29 -  
      - - int donut_resource_pad3 -  
      - - int donut_resource_pad30 -  
      - - int donut_resource_pad31 -  
      - - int donut_resource_pad4 -  
      - - int donut_resource_pad5 -  
      - - int donut_resource_pad6 -  
      - - int donut_resource_pad7 -  
      - - int donut_resource_pad8 -  
      - - int donut_resource_pad9 -  
      -  -

      - -
      -
      - - - - diff --git a/docs/html/sdk/api_diff/4/changes/android.R.dimen.html b/docs/html/sdk/api_diff/4/changes/android.R.dimen.html deleted file mode 100644 index d6736d741e42f..0000000000000 --- a/docs/html/sdk/api_diff/4/changes/android.R.dimen.html +++ /dev/null @@ -1,213 +0,0 @@ - - - - - - - - - -android.R.dimen - - - - - - - - - - -
      -
      -
      -

      -Class android.R.dimen -

      - - - -

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Added Fields -
      - - int donut_resource_pad1 -  
      - - int donut_resource_pad10 -  
      - - int donut_resource_pad11 -  
      - - int donut_resource_pad12 -  
      - - int donut_resource_pad13 -  
      - - int donut_resource_pad14 -  
      - - int donut_resource_pad2 -  
      - - int donut_resource_pad3 -  
      - - int donut_resource_pad4 -  
      - - int donut_resource_pad5 -  
      - - int donut_resource_pad6 -  
      - - int donut_resource_pad7 -  
      - - int donut_resource_pad8 -  
      - - int donut_resource_pad9 -  
      -  -

      - -
      -
      - - - - diff --git a/docs/html/sdk/api_diff/4/changes/android.R.drawable.html b/docs/html/sdk/api_diff/4/changes/android.R.drawable.html index 25776a9d66d71..9ecf62872ba5c 100644 --- a/docs/html/sdk/api_diff/4/changes/android.R.drawable.html +++ b/docs/html/sdk/api_diff/4/changes/android.R.drawable.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26
      @@ -82,286 +82,6 @@ Class android.Added Fields - - - - int donut_resource_pad1 - -   - - - - - int donut_resource_pad10 - -   - - - - - int donut_resource_pad11 - -   - - - - - int donut_resource_pad12 - -   - - - - - int donut_resource_pad13 - -   - - - - - int donut_resource_pad14 - -   - - - - - int donut_resource_pad15 - -   - - - - - int donut_resource_pad16 - -   - - - - - int donut_resource_pad17 - -   - - - - - int donut_resource_pad18 - -   - - - - - int donut_resource_pad19 - -   - - - - - int donut_resource_pad2 - -   - - - - - int donut_resource_pad20 - -   - - - - - int donut_resource_pad21 - -   - - - - - int donut_resource_pad22 - -   - - - - - int donut_resource_pad23 - -   - - - - - int donut_resource_pad24 - -   - - - - - int donut_resource_pad25 - -   - - - - - int donut_resource_pad26 - -   - - - - - int donut_resource_pad27 - -   - - - - - int donut_resource_pad28 - -   - - - - - int donut_resource_pad29 - -   - - - - - int donut_resource_pad3 - -   - - - - - int donut_resource_pad30 - -   - - - - - int donut_resource_pad31 - -   - - - - - int donut_resource_pad32 - -   - - - - - int donut_resource_pad33 - -   - - - - - int donut_resource_pad34 - -   - - - - - int donut_resource_pad35 - -   - - - - - int donut_resource_pad36 - -   - - - - - int donut_resource_pad37 - -   - - - - - int donut_resource_pad38 - -   - - - - - int donut_resource_pad39 - -   - - - - - int donut_resource_pad4 - -   - - - - - int donut_resource_pad40 - -   - - - - - int donut_resource_pad5 - -   - - - - - int donut_resource_pad6 - -   - - - - - int donut_resource_pad7 - -   - - - - - int donut_resource_pad8 - -   - - - - - int donut_resource_pad9 - -   - diff --git a/docs/html/sdk/api_diff/4/changes/android.R.id.html b/docs/html/sdk/api_diff/4/changes/android.R.id.html deleted file mode 100644 index 4fb48947496b7..0000000000000 --- a/docs/html/sdk/api_diff/4/changes/android.R.id.html +++ /dev/null @@ -1,269 +0,0 @@ - - - - - - - - - -android.R.id - - - - - - - - - - -
      -
      -
      -

      -Class android.R.id -

      - - - -

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Added Fields -
      - - int donut_resource_pad1 -  
      - - int donut_resource_pad10 -  
      - - int donut_resource_pad11 -  
      - - int donut_resource_pad12 -  
      - - int donut_resource_pad13 -  
      - - int donut_resource_pad14 -  
      - - int donut_resource_pad15 -  
      - - int donut_resource_pad16 -  
      - - int donut_resource_pad17 -  
      - - int donut_resource_pad18 -  
      - - int donut_resource_pad19 -  
      - - int donut_resource_pad2 -  
      - - int donut_resource_pad20 -  
      - - int donut_resource_pad21 -  
      - - int donut_resource_pad22 -  
      - - int donut_resource_pad3 -  
      - - int donut_resource_pad4 -  
      - - int donut_resource_pad5 -  
      - - int donut_resource_pad6 -  
      - - int donut_resource_pad7 -  
      - - int donut_resource_pad8 -  
      - - int donut_resource_pad9 -  
      -  -

      - -
      -
      - - - - diff --git a/docs/html/sdk/api_diff/4/changes/android.R.integer.html b/docs/html/sdk/api_diff/4/changes/android.R.integer.html deleted file mode 100644 index 6b9e2c0140095..0000000000000 --- a/docs/html/sdk/api_diff/4/changes/android.R.integer.html +++ /dev/null @@ -1,213 +0,0 @@ - - - - - - - - - -android.R.integer - - - - - - - - - - -
      -
      -
      -

      -Class android.R.integer -

      - - - -

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Added Fields -
      - - int donut_resource_pad1 -  
      - - int donut_resource_pad10 -  
      - - int donut_resource_pad11 -  
      - - int donut_resource_pad12 -  
      - - int donut_resource_pad13 -  
      - - int donut_resource_pad14 -  
      - - int donut_resource_pad2 -  
      - - int donut_resource_pad3 -  
      - - int donut_resource_pad4 -  
      - - int donut_resource_pad5 -  
      - - int donut_resource_pad6 -  
      - - int donut_resource_pad7 -  
      - - int donut_resource_pad8 -  
      - - int donut_resource_pad9 -  
      -  -

      - -
      -
      - - - - diff --git a/docs/html/sdk/api_diff/4/changes/android.R.layout.html b/docs/html/sdk/api_diff/4/changes/android.R.layout.html deleted file mode 100644 index b8aeabd2b3695..0000000000000 --- a/docs/html/sdk/api_diff/4/changes/android.R.layout.html +++ /dev/null @@ -1,206 +0,0 @@ - - - - - - - - - -android.R.layout - - - - - - - - - - -
      -
      -
      -

      -Class android.R.layout -

      - - - -

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Added Fields -
      - - int donut_resource_pad1 -  
      - - int donut_resource_pad10 -  
      - - int donut_resource_pad11 -  
      - - int donut_resource_pad12 -  
      - - int donut_resource_pad13 -  
      - - int donut_resource_pad2 -  
      - - int donut_resource_pad3 -  
      - - int donut_resource_pad4 -  
      - - int donut_resource_pad5 -  
      - - int donut_resource_pad6 -  
      - - int donut_resource_pad7 -  
      - - int donut_resource_pad8 -  
      - - int donut_resource_pad9 -  
      -  -

      - -
      -
      - - - - diff --git a/docs/html/sdk/api_diff/4/changes/android.R.string.html b/docs/html/sdk/api_diff/4/changes/android.R.string.html deleted file mode 100644 index 770be4ed77c9c..0000000000000 --- a/docs/html/sdk/api_diff/4/changes/android.R.string.html +++ /dev/null @@ -1,304 +0,0 @@ - - - - - - - - - -android.R.string - - - - - - - - - - -
      -
      -
      -

      -Class android.R.string -

      - - - -

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      Added Fields -
      - - int donut_resource_pad1 -  
      - - int donut_resource_pad10 -  
      - - int donut_resource_pad11 -  
      - - int donut_resource_pad12 -  
      - - int donut_resource_pad13 -  
      - - int donut_resource_pad14 -  
      - - int donut_resource_pad15 -  
      - - int donut_resource_pad16 -  
      - - int donut_resource_pad17 -  
      - - int donut_resource_pad18 -  
      - - int donut_resource_pad19 -  
      - - int donut_resource_pad2 -  
      - - int donut_resource_pad20 -  
      - - int donut_resource_pad21 -  
      - - int donut_resource_pad22 -  
      - - int donut_resource_pad23 -  
      - - int donut_resource_pad24 -  
      - - int donut_resource_pad25 -  
      - - int donut_resource_pad26 -  
      - - int donut_resource_pad27 -  
      - - int donut_resource_pad3 -  
      - - int donut_resource_pad4 -  
      - - int donut_resource_pad5 -  
      - - int donut_resource_pad6 -  
      - - int donut_resource_pad7 -  
      - - int donut_resource_pad8 -  
      - - int donut_resource_pad9 -  
      -  -

      - -
      -
      - - - - diff --git a/docs/html/sdk/api_diff/4/changes/android.R.style.html b/docs/html/sdk/api_diff/4/changes/android.R.style.html index 5dbe9a1938ad8..6755e3db4de4d 100644 --- a/docs/html/sdk/api_diff/4/changes/android.R.style.html +++ b/docs/html/sdk/api_diff/4/changes/android.R.style.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26
      @@ -103,139 +103,6 @@ Class android.   - - - - int donut_resource_pad1 - -   - - - - - int donut_resource_pad10 - -   - - - - - int donut_resource_pad11 - -   - - - - - int donut_resource_pad12 - -   - - - - - int donut_resource_pad13 - -   - - - - - int donut_resource_pad14 - -   - - - - - int donut_resource_pad15 - -   - - - - - int donut_resource_pad16 - -   - - - - - int donut_resource_pad17 - -   - - - - - int donut_resource_pad18 - -   - - - - - int donut_resource_pad19 - -   - - - - - int donut_resource_pad2 - -   - - - - - int donut_resource_pad3 - -   - - - - - int donut_resource_pad4 - -   - - - - - int donut_resource_pad5 - -   - - - - - int donut_resource_pad6 - -   - - - - - int donut_resource_pad7 - -   - - - - - int donut_resource_pad8 - -   - - - - - int donut_resource_pad9 - -   -  
      diff --git a/docs/html/sdk/api_diff/4/changes/android.app.Activity.html b/docs/html/sdk/api_diff/4/changes/android.app.Activity.html index 633252d091133..69503554d6668 100644 --- a/docs/html/sdk/api_diff/4/changes/android.app.Activity.html +++ b/docs/html/sdk/api_diff/4/changes/android.app.Activity.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26
      diff --git a/docs/html/sdk/api_diff/4/changes/android.app.Dialog.html b/docs/html/sdk/api_diff/4/changes/android.app.Dialog.html index df5a13ccb5f2a..a6ec38735caa6 100644 --- a/docs/html/sdk/api_diff/4/changes/android.app.Dialog.html +++ b/docs/html/sdk/api_diff/4/changes/android.app.Dialog.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26
      diff --git a/docs/html/sdk/api_diff/4/changes/android.app.LauncherActivity.ListItem.html b/docs/html/sdk/api_diff/4/changes/android.app.LauncherActivity.ListItem.html index f837ae5e77185..83070a19d10ae 100644 --- a/docs/html/sdk/api_diff/4/changes/android.app.LauncherActivity.ListItem.html +++ b/docs/html/sdk/api_diff/4/changes/android.app.LauncherActivity.ListItem.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26
      diff --git a/docs/html/sdk/api_diff/4/changes/android.app.LauncherActivity.html b/docs/html/sdk/api_diff/4/changes/android.app.LauncherActivity.html index 2a21f3bdae781..ebfd0ae526a59 100644 --- a/docs/html/sdk/api_diff/4/changes/android.app.LauncherActivity.html +++ b/docs/html/sdk/api_diff/4/changes/android.app.LauncherActivity.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26
      diff --git a/docs/html/sdk/api_diff/4/changes/android.app.PendingIntent.html b/docs/html/sdk/api_diff/4/changes/android.app.PendingIntent.html index 032671bdd7eda..221ce6409f81d 100644 --- a/docs/html/sdk/api_diff/4/changes/android.app.PendingIntent.html +++ b/docs/html/sdk/api_diff/4/changes/android.app.PendingIntent.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26
      diff --git a/docs/html/sdk/api_diff/4/changes/android.app.SearchManager.html b/docs/html/sdk/api_diff/4/changes/android.app.SearchManager.html index 7cde296d34fa3..99df03e9efd24 100644 --- a/docs/html/sdk/api_diff/4/changes/android.app.SearchManager.html +++ b/docs/html/sdk/api_diff/4/changes/android.app.SearchManager.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26
      diff --git a/docs/html/sdk/api_diff/4/changes/android.content.ComponentName.html b/docs/html/sdk/api_diff/4/changes/android.content.ComponentName.html index 09b3892c94cda..6451a5ba2cad9 100644 --- a/docs/html/sdk/api_diff/4/changes/android.content.ComponentName.html +++ b/docs/html/sdk/api_diff/4/changes/android.content.ComponentName.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26
      diff --git a/docs/html/sdk/api_diff/4/changes/android.content.ContentProvider.html b/docs/html/sdk/api_diff/4/changes/android.content.ContentProvider.html index 387574cf6717d..baeb713d8fe81 100644 --- a/docs/html/sdk/api_diff/4/changes/android.content.ContentProvider.html +++ b/docs/html/sdk/api_diff/4/changes/android.content.ContentProvider.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26
      diff --git a/docs/html/sdk/api_diff/4/changes/android.content.Context.html b/docs/html/sdk/api_diff/4/changes/android.content.Context.html index 08ad9ad8b4e77..0d9020263b041 100644 --- a/docs/html/sdk/api_diff/4/changes/android.content.Context.html +++ b/docs/html/sdk/api_diff/4/changes/android.content.Context.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26
      diff --git a/docs/html/sdk/api_diff/4/changes/android.content.ContextWrapper.html b/docs/html/sdk/api_diff/4/changes/android.content.ContextWrapper.html index 6f67f68ee8d0a..b39cd4699c3e2 100644 --- a/docs/html/sdk/api_diff/4/changes/android.content.ContextWrapper.html +++ b/docs/html/sdk/api_diff/4/changes/android.content.ContextWrapper.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26
      diff --git a/docs/html/sdk/api_diff/4/changes/android.content.Intent.html b/docs/html/sdk/api_diff/4/changes/android.content.Intent.html index 69995d620b1fe..7274c556db5bb 100644 --- a/docs/html/sdk/api_diff/4/changes/android.content.Intent.html +++ b/docs/html/sdk/api_diff/4/changes/android.content.Intent.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26
      diff --git a/docs/html/sdk/api_diff/4/changes/android.content.pm.ActivityInfo.html b/docs/html/sdk/api_diff/4/changes/android.content.pm.ActivityInfo.html index 369dd3fa6198a..ffdccb8120f5e 100644 --- a/docs/html/sdk/api_diff/4/changes/android.content.pm.ActivityInfo.html +++ b/docs/html/sdk/api_diff/4/changes/android.content.pm.ActivityInfo.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26
      diff --git a/docs/html/sdk/api_diff/4/changes/android.content.pm.ApplicationInfo.html b/docs/html/sdk/api_diff/4/changes/android.content.pm.ApplicationInfo.html index e218e8f7d1a54..20f9b6b9c5718 100644 --- a/docs/html/sdk/api_diff/4/changes/android.content.pm.ApplicationInfo.html +++ b/docs/html/sdk/api_diff/4/changes/android.content.pm.ApplicationInfo.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26
      diff --git a/docs/html/sdk/api_diff/4/changes/android.content.pm.ConfigurationInfo.html b/docs/html/sdk/api_diff/4/changes/android.content.pm.ConfigurationInfo.html index b44626b10c176..600a08f415099 100644 --- a/docs/html/sdk/api_diff/4/changes/android.content.pm.ConfigurationInfo.html +++ b/docs/html/sdk/api_diff/4/changes/android.content.pm.ConfigurationInfo.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26
      diff --git a/docs/html/sdk/api_diff/4/changes/android.content.pm.PackageManager.html b/docs/html/sdk/api_diff/4/changes/android.content.pm.PackageManager.html index 86676116054ca..921ba9f926f5c 100644 --- a/docs/html/sdk/api_diff/4/changes/android.content.pm.PackageManager.html +++ b/docs/html/sdk/api_diff/4/changes/android.content.pm.PackageManager.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26
      diff --git a/docs/html/sdk/api_diff/4/changes/android.content.pm.ProviderInfo.html b/docs/html/sdk/api_diff/4/changes/android.content.pm.ProviderInfo.html index 059c7e056ddc6..911419bb76d53 100644 --- a/docs/html/sdk/api_diff/4/changes/android.content.pm.ProviderInfo.html +++ b/docs/html/sdk/api_diff/4/changes/android.content.pm.ProviderInfo.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26
      diff --git a/docs/html/sdk/api_diff/4/changes/android.content.res.Configuration.html b/docs/html/sdk/api_diff/4/changes/android.content.res.Configuration.html index 947243f5d610f..cc3f9674d9380 100644 --- a/docs/html/sdk/api_diff/4/changes/android.content.res.Configuration.html +++ b/docs/html/sdk/api_diff/4/changes/android.content.res.Configuration.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26
      diff --git a/docs/html/sdk/api_diff/4/changes/android.graphics.Bitmap.html b/docs/html/sdk/api_diff/4/changes/android.graphics.Bitmap.html index df2e105adccc6..6e99e84420d29 100644 --- a/docs/html/sdk/api_diff/4/changes/android.graphics.Bitmap.html +++ b/docs/html/sdk/api_diff/4/changes/android.graphics.Bitmap.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26
    diff --git a/docs/html/sdk/api_diff/4/changes/android.graphics.BitmapFactory.Options.html b/docs/html/sdk/api_diff/4/changes/android.graphics.BitmapFactory.Options.html index bc8cc7cc95769..6c812d0cb17b4 100644 --- a/docs/html/sdk/api_diff/4/changes/android.graphics.BitmapFactory.Options.html +++ b/docs/html/sdk/api_diff/4/changes/android.graphics.BitmapFactory.Options.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26
    diff --git a/docs/html/sdk/api_diff/4/changes/android.graphics.BitmapFactory.html b/docs/html/sdk/api_diff/4/changes/android.graphics.BitmapFactory.html index 8549752d2cabd..d730e09b07163 100644 --- a/docs/html/sdk/api_diff/4/changes/android.graphics.BitmapFactory.html +++ b/docs/html/sdk/api_diff/4/changes/android.graphics.BitmapFactory.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26 diff --git a/docs/html/sdk/api_diff/4/changes/android.graphics.Canvas.html b/docs/html/sdk/api_diff/4/changes/android.graphics.Canvas.html index 49128fae5e530..48ed8b60b3dc0 100644 --- a/docs/html/sdk/api_diff/4/changes/android.graphics.Canvas.html +++ b/docs/html/sdk/api_diff/4/changes/android.graphics.Canvas.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26 diff --git a/docs/html/sdk/api_diff/4/changes/android.graphics.NinePatch.html b/docs/html/sdk/api_diff/4/changes/android.graphics.NinePatch.html index 1a3f94a8dfa82..0d78eb0718746 100644 --- a/docs/html/sdk/api_diff/4/changes/android.graphics.NinePatch.html +++ b/docs/html/sdk/api_diff/4/changes/android.graphics.NinePatch.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26 diff --git a/docs/html/sdk/api_diff/4/changes/android.graphics.Typeface.html b/docs/html/sdk/api_diff/4/changes/android.graphics.Typeface.html index 6739f0522c0e2..e6d27d41931f0 100644 --- a/docs/html/sdk/api_diff/4/changes/android.graphics.Typeface.html +++ b/docs/html/sdk/api_diff/4/changes/android.graphics.Typeface.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26 diff --git a/docs/html/sdk/api_diff/4/changes/android.graphics.drawable.AnimationDrawable.html b/docs/html/sdk/api_diff/4/changes/android.graphics.drawable.AnimationDrawable.html index c5c7670e20a18..d72281a45468a 100644 --- a/docs/html/sdk/api_diff/4/changes/android.graphics.drawable.AnimationDrawable.html +++ b/docs/html/sdk/api_diff/4/changes/android.graphics.drawable.AnimationDrawable.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26 diff --git a/docs/html/sdk/api_diff/4/changes/android.graphics.drawable.BitmapDrawable.html b/docs/html/sdk/api_diff/4/changes/android.graphics.drawable.BitmapDrawable.html index 8dea6889397b2..4971712444bf1 100644 --- a/docs/html/sdk/api_diff/4/changes/android.graphics.drawable.BitmapDrawable.html +++ b/docs/html/sdk/api_diff/4/changes/android.graphics.drawable.BitmapDrawable.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26 diff --git a/docs/html/sdk/api_diff/4/changes/android.graphics.drawable.Drawable.html b/docs/html/sdk/api_diff/4/changes/android.graphics.drawable.Drawable.html index 7e52fc66a4c66..e1dc283d467fb 100644 --- a/docs/html/sdk/api_diff/4/changes/android.graphics.drawable.Drawable.html +++ b/docs/html/sdk/api_diff/4/changes/android.graphics.drawable.Drawable.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26 diff --git a/docs/html/sdk/api_diff/4/changes/android.graphics.drawable.NinePatchDrawable.html b/docs/html/sdk/api_diff/4/changes/android.graphics.drawable.NinePatchDrawable.html index 49245f16b4bab..5eafab0328100 100644 --- a/docs/html/sdk/api_diff/4/changes/android.graphics.drawable.NinePatchDrawable.html +++ b/docs/html/sdk/api_diff/4/changes/android.graphics.drawable.NinePatchDrawable.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26 diff --git a/docs/html/sdk/api_diff/4/changes/android.hardware.SensorManager.html b/docs/html/sdk/api_diff/4/changes/android.hardware.SensorManager.html index 55ebacf3fc3fb..87b1f347c365f 100644 --- a/docs/html/sdk/api_diff/4/changes/android.hardware.SensorManager.html +++ b/docs/html/sdk/api_diff/4/changes/android.hardware.SensorManager.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26 diff --git a/docs/html/sdk/api_diff/4/changes/android.inputmethodservice.KeyboardView.html b/docs/html/sdk/api_diff/4/changes/android.inputmethodservice.KeyboardView.html index 6e927b802fc2b..bec08b0e3ba71 100644 --- a/docs/html/sdk/api_diff/4/changes/android.inputmethodservice.KeyboardView.html +++ b/docs/html/sdk/api_diff/4/changes/android.inputmethodservice.KeyboardView.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26 diff --git a/docs/html/sdk/api_diff/4/changes/android.location.Address.html b/docs/html/sdk/api_diff/4/changes/android.location.Address.html index b32f4f38ed12e..0aeec499973db 100644 --- a/docs/html/sdk/api_diff/4/changes/android.location.Address.html +++ b/docs/html/sdk/api_diff/4/changes/android.location.Address.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26 diff --git a/docs/html/sdk/api_diff/4/changes/android.media.AudioManager.html b/docs/html/sdk/api_diff/4/changes/android.media.AudioManager.html index 1ac2b9c0fd147..8d1224c5570d1 100644 --- a/docs/html/sdk/api_diff/4/changes/android.media.AudioManager.html +++ b/docs/html/sdk/api_diff/4/changes/android.media.AudioManager.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26 diff --git a/docs/html/sdk/api_diff/4/changes/android.media.MediaRecorder.AudioSource.html b/docs/html/sdk/api_diff/4/changes/android.media.MediaRecorder.AudioSource.html index b371e46a0ae51..9321b597c9b1e 100644 --- a/docs/html/sdk/api_diff/4/changes/android.media.MediaRecorder.AudioSource.html +++ b/docs/html/sdk/api_diff/4/changes/android.media.MediaRecorder.AudioSource.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26 diff --git a/docs/html/sdk/api_diff/4/changes/android.media.MediaRecorder.html b/docs/html/sdk/api_diff/4/changes/android.media.MediaRecorder.html index 8f7aa00b089c3..c161466c8d507 100644 --- a/docs/html/sdk/api_diff/4/changes/android.media.MediaRecorder.html +++ b/docs/html/sdk/api_diff/4/changes/android.media.MediaRecorder.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26 diff --git a/docs/html/sdk/api_diff/4/changes/android.media.ToneGenerator.html b/docs/html/sdk/api_diff/4/changes/android.media.ToneGenerator.html index c1e1bb88360de..a8d55802cb43f 100644 --- a/docs/html/sdk/api_diff/4/changes/android.media.ToneGenerator.html +++ b/docs/html/sdk/api_diff/4/changes/android.media.ToneGenerator.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26 diff --git a/docs/html/sdk/api_diff/4/changes/android.net.wifi.WifiManager.html b/docs/html/sdk/api_diff/4/changes/android.net.wifi.WifiManager.html index f1fcaad1365ec..2e4f339b38a83 100644 --- a/docs/html/sdk/api_diff/4/changes/android.net.wifi.WifiManager.html +++ b/docs/html/sdk/api_diff/4/changes/android.net.wifi.WifiManager.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26 diff --git a/docs/html/sdk/api_diff/4/changes/android.os.Build.VERSION.html b/docs/html/sdk/api_diff/4/changes/android.os.Build.VERSION.html index 941c554045a17..178adbbe0e5fa 100644 --- a/docs/html/sdk/api_diff/4/changes/android.os.Build.VERSION.html +++ b/docs/html/sdk/api_diff/4/changes/android.os.Build.VERSION.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26 diff --git a/docs/html/sdk/api_diff/4/changes/android.os.Build.html b/docs/html/sdk/api_diff/4/changes/android.os.Build.html index 075819af3049a..89fcb4890c69f 100644 --- a/docs/html/sdk/api_diff/4/changes/android.os.Build.html +++ b/docs/html/sdk/api_diff/4/changes/android.os.Build.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26 diff --git a/docs/html/sdk/api_diff/4/changes/android.os.RemoteCallbackList.html b/docs/html/sdk/api_diff/4/changes/android.os.RemoteCallbackList.html index de379ea26a5b0..19918aa99f78c 100644 --- a/docs/html/sdk/api_diff/4/changes/android.os.RemoteCallbackList.html +++ b/docs/html/sdk/api_diff/4/changes/android.os.RemoteCallbackList.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26 diff --git a/docs/html/sdk/api_diff/4/changes/android.provider.MediaStore.Audio.Genres.Members.html b/docs/html/sdk/api_diff/4/changes/android.provider.MediaStore.Audio.Genres.Members.html index af0b161a88a1d..a5d47d63d82a8 100644 --- a/docs/html/sdk/api_diff/4/changes/android.provider.MediaStore.Audio.Genres.Members.html +++ b/docs/html/sdk/api_diff/4/changes/android.provider.MediaStore.Audio.Genres.Members.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26 diff --git a/docs/html/sdk/api_diff/4/changes/android.provider.MediaStore.Audio.Media.html b/docs/html/sdk/api_diff/4/changes/android.provider.MediaStore.Audio.Media.html index aa0744212274c..ab8f20623bb53 100644 --- a/docs/html/sdk/api_diff/4/changes/android.provider.MediaStore.Audio.Media.html +++ b/docs/html/sdk/api_diff/4/changes/android.provider.MediaStore.Audio.Media.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26 diff --git a/docs/html/sdk/api_diff/4/changes/android.provider.Settings.Secure.html b/docs/html/sdk/api_diff/4/changes/android.provider.Settings.Secure.html index be600e4911222..f3494888081fa 100644 --- a/docs/html/sdk/api_diff/4/changes/android.provider.Settings.Secure.html +++ b/docs/html/sdk/api_diff/4/changes/android.provider.Settings.Secure.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26 diff --git a/docs/html/sdk/api_diff/4/changes/android.provider.Settings.System.html b/docs/html/sdk/api_diff/4/changes/android.provider.Settings.System.html index d979133fc1c99..47306024e6e10 100644 --- a/docs/html/sdk/api_diff/4/changes/android.provider.Settings.System.html +++ b/docs/html/sdk/api_diff/4/changes/android.provider.Settings.System.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26 diff --git a/docs/html/sdk/api_diff/4/changes/android.telephony.gsm.SmsManager.html b/docs/html/sdk/api_diff/4/changes/android.telephony.gsm.SmsManager.html index 35d07a4ba90b9..555ec8ceb9a55 100644 --- a/docs/html/sdk/api_diff/4/changes/android.telephony.gsm.SmsManager.html +++ b/docs/html/sdk/api_diff/4/changes/android.telephony.gsm.SmsManager.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26 diff --git a/docs/html/sdk/api_diff/4/changes/android.telephony.gsm.SmsMessage.MessageClass.html b/docs/html/sdk/api_diff/4/changes/android.telephony.gsm.SmsMessage.MessageClass.html index c84893946798a..e60aada705456 100644 --- a/docs/html/sdk/api_diff/4/changes/android.telephony.gsm.SmsMessage.MessageClass.html +++ b/docs/html/sdk/api_diff/4/changes/android.telephony.gsm.SmsMessage.MessageClass.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26 diff --git a/docs/html/sdk/api_diff/4/changes/android.telephony.gsm.SmsMessage.SubmitPdu.html b/docs/html/sdk/api_diff/4/changes/android.telephony.gsm.SmsMessage.SubmitPdu.html index af3649684904d..03d5b6abb348f 100644 --- a/docs/html/sdk/api_diff/4/changes/android.telephony.gsm.SmsMessage.SubmitPdu.html +++ b/docs/html/sdk/api_diff/4/changes/android.telephony.gsm.SmsMessage.SubmitPdu.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26 diff --git a/docs/html/sdk/api_diff/4/changes/android.telephony.gsm.SmsMessage.html b/docs/html/sdk/api_diff/4/changes/android.telephony.gsm.SmsMessage.html index e480955a4e91d..e9f749e0134a5 100644 --- a/docs/html/sdk/api_diff/4/changes/android.telephony.gsm.SmsMessage.html +++ b/docs/html/sdk/api_diff/4/changes/android.telephony.gsm.SmsMessage.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26 diff --git a/docs/html/sdk/api_diff/4/changes/android.test.AndroidTestCase.html b/docs/html/sdk/api_diff/4/changes/android.test.AndroidTestCase.html index 8e772ab6793de..b816a07acf902 100644 --- a/docs/html/sdk/api_diff/4/changes/android.test.AndroidTestCase.html +++ b/docs/html/sdk/api_diff/4/changes/android.test.AndroidTestCase.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26 diff --git a/docs/html/sdk/api_diff/4/changes/android.test.mock.MockContext.html b/docs/html/sdk/api_diff/4/changes/android.test.mock.MockContext.html index 317556adc2023..fdc83cde19137 100644 --- a/docs/html/sdk/api_diff/4/changes/android.test.mock.MockContext.html +++ b/docs/html/sdk/api_diff/4/changes/android.test.mock.MockContext.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26 diff --git a/docs/html/sdk/api_diff/4/changes/android.test.mock.MockPackageManager.html b/docs/html/sdk/api_diff/4/changes/android.test.mock.MockPackageManager.html index 939b9e89f1247..2e4fc37b43c6e 100644 --- a/docs/html/sdk/api_diff/4/changes/android.test.mock.MockPackageManager.html +++ b/docs/html/sdk/api_diff/4/changes/android.test.mock.MockPackageManager.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26 diff --git a/docs/html/sdk/api_diff/4/changes/android.text.style.ImageSpan.html b/docs/html/sdk/api_diff/4/changes/android.text.style.ImageSpan.html index 729d9ef161f18..b4eb161545018 100644 --- a/docs/html/sdk/api_diff/4/changes/android.text.style.ImageSpan.html +++ b/docs/html/sdk/api_diff/4/changes/android.text.style.ImageSpan.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26 diff --git a/docs/html/sdk/api_diff/4/changes/android.util.Config.html b/docs/html/sdk/api_diff/4/changes/android.util.Config.html index e5d67d9cf9e83..d6d303ecf6d3f 100644 --- a/docs/html/sdk/api_diff/4/changes/android.util.Config.html +++ b/docs/html/sdk/api_diff/4/changes/android.util.Config.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26 diff --git a/docs/html/sdk/api_diff/4/changes/android.util.DisplayMetrics.html b/docs/html/sdk/api_diff/4/changes/android.util.DisplayMetrics.html index 4ab0b381fffed..d1a482a2f0e9e 100644 --- a/docs/html/sdk/api_diff/4/changes/android.util.DisplayMetrics.html +++ b/docs/html/sdk/api_diff/4/changes/android.util.DisplayMetrics.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26 diff --git a/docs/html/sdk/api_diff/4/changes/android.util.TypedValue.html b/docs/html/sdk/api_diff/4/changes/android.util.TypedValue.html index fd15172742370..bb74b65ff9b47 100644 --- a/docs/html/sdk/api_diff/4/changes/android.util.TypedValue.html +++ b/docs/html/sdk/api_diff/4/changes/android.util.TypedValue.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26 diff --git a/docs/html/sdk/api_diff/4/changes/android.view.Surface.html b/docs/html/sdk/api_diff/4/changes/android.view.Surface.html index 723191330bc86..a323bee9f6360 100644 --- a/docs/html/sdk/api_diff/4/changes/android.view.Surface.html +++ b/docs/html/sdk/api_diff/4/changes/android.view.Surface.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26 diff --git a/docs/html/sdk/api_diff/4/changes/android.view.VelocityTracker.html b/docs/html/sdk/api_diff/4/changes/android.view.VelocityTracker.html index 208ee0d99ac58..4d9666766c393 100644 --- a/docs/html/sdk/api_diff/4/changes/android.view.VelocityTracker.html +++ b/docs/html/sdk/api_diff/4/changes/android.view.VelocityTracker.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26 diff --git a/docs/html/sdk/api_diff/4/changes/android.view.View.html b/docs/html/sdk/api_diff/4/changes/android.view.View.html index 1696e1c5187f8..45d735b112c00 100644 --- a/docs/html/sdk/api_diff/4/changes/android.view.View.html +++ b/docs/html/sdk/api_diff/4/changes/android.view.View.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26 diff --git a/docs/html/sdk/api_diff/4/changes/android.view.ViewConfiguration.html b/docs/html/sdk/api_diff/4/changes/android.view.ViewConfiguration.html index 30a66ab37133e..aa8d02ae5cee5 100644 --- a/docs/html/sdk/api_diff/4/changes/android.view.ViewConfiguration.html +++ b/docs/html/sdk/api_diff/4/changes/android.view.ViewConfiguration.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26 diff --git a/docs/html/sdk/api_diff/4/changes/android.view.Window.Callback.html b/docs/html/sdk/api_diff/4/changes/android.view.Window.Callback.html index 61626bd8c0f05..de1d3547524f0 100644 --- a/docs/html/sdk/api_diff/4/changes/android.view.Window.Callback.html +++ b/docs/html/sdk/api_diff/4/changes/android.view.Window.Callback.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26 diff --git a/docs/html/sdk/api_diff/4/changes/android.widget.AutoCompleteTextView.html b/docs/html/sdk/api_diff/4/changes/android.widget.AutoCompleteTextView.html index 2ad8c43c8531c..bad2b22ced46f 100644 --- a/docs/html/sdk/api_diff/4/changes/android.widget.AutoCompleteTextView.html +++ b/docs/html/sdk/api_diff/4/changes/android.widget.AutoCompleteTextView.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26 diff --git a/docs/html/sdk/api_diff/4/changes/android.widget.CheckedTextView.html b/docs/html/sdk/api_diff/4/changes/android.widget.CheckedTextView.html index 91675dc865775..79e40a8b60f32 100644 --- a/docs/html/sdk/api_diff/4/changes/android.widget.CheckedTextView.html +++ b/docs/html/sdk/api_diff/4/changes/android.widget.CheckedTextView.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26 diff --git a/docs/html/sdk/api_diff/4/changes/android.widget.ListView.html b/docs/html/sdk/api_diff/4/changes/android.widget.ListView.html index 37680eb262bd7..487c69b337ea5 100644 --- a/docs/html/sdk/api_diff/4/changes/android.widget.ListView.html +++ b/docs/html/sdk/api_diff/4/changes/android.widget.ListView.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26 diff --git a/docs/html/sdk/api_diff/4/changes/android.widget.PopupWindow.html b/docs/html/sdk/api_diff/4/changes/android.widget.PopupWindow.html index e97e296d6f167..6ce83af6e85ab 100644 --- a/docs/html/sdk/api_diff/4/changes/android.widget.PopupWindow.html +++ b/docs/html/sdk/api_diff/4/changes/android.widget.PopupWindow.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26 diff --git a/docs/html/sdk/api_diff/4/changes/android.widget.TabHost.TabSpec.html b/docs/html/sdk/api_diff/4/changes/android.widget.TabHost.TabSpec.html index 639b4665b1373..8940867ba2247 100644 --- a/docs/html/sdk/api_diff/4/changes/android.widget.TabHost.TabSpec.html +++ b/docs/html/sdk/api_diff/4/changes/android.widget.TabHost.TabSpec.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26 diff --git a/docs/html/sdk/api_diff/4/changes/android.widget.TabWidget.html b/docs/html/sdk/api_diff/4/changes/android.widget.TabWidget.html index beb40561236a8..17b2a5edba2fb 100644 --- a/docs/html/sdk/api_diff/4/changes/android.widget.TabWidget.html +++ b/docs/html/sdk/api_diff/4/changes/android.widget.TabWidget.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26 diff --git a/docs/html/sdk/api_diff/4/changes/changes-summary.html b/docs/html/sdk/api_diff/4/changes/changes-summary.html index d4b794c1139e0..a4850a52a193a 100644 --- a/docs/html/sdk/api_diff/4/changes/changes-summary.html +++ b/docs/html/sdk/api_diff/4/changes/changes-summary.html @@ -46,7 +46,7 @@ body{overflow:auto;} To Level: - Donut + 4 From Level: @@ -54,7 +54,7 @@ body{overflow:auto;} Generated - 2009.08.05 19:20 + 2009.09.02 18:26 diff --git a/docs/html/sdk/api_diff/4/changes/classes_index_additions.html b/docs/html/sdk/api_diff/4/changes/classes_index_additions.html index 8100cfc1418ff..d59f6660d4679 100644 --- a/docs/html/sdk/api_diff/4/changes/classes_index_additions.html +++ b/docs/html/sdk/api_diff/4/changes/classes_index_additions.html @@ -57,6 +57,7 @@ body{overflow:auto;} S V W +Z TOP

    Animatable
    @@ -72,6 +73,7 @@ body{overflow:auto;} S V W +Z TOP

    BounceInterpolator
    @@ -86,6 +88,7 @@ body{overflow:auto;} S V W +Z TOP

    GLES10
    @@ -102,6 +105,7 @@ body{overflow:auto;} S V W +Z TOP

    IntentSender
    @@ -117,6 +121,7 @@ body{overflow:auto;} S V W +Z TOP

    OvershootInterpolator
    @@ -130,6 +135,7 @@ body{overflow:auto;} S V W +Z TOP

    PathPermission
    @@ -143,6 +149,7 @@ body{overflow:auto;} P V W +Z TOP

    SmsManager
    @@ -159,6 +166,7 @@ body{overflow:auto;} P S W +Z TOP

    ViewDebug.FlagToString
    @@ -172,9 +180,25 @@ body{overflow:auto;} P S V +Z TOP

    WifiManager.MulticastLock
    + +
    Z  +A +B +G +I +O +P +S +V +W + TOP +

    +ZoomButtonsController
    +ZoomButtonsController.OnZoomListener