From cb8bf488c146d1ddde5cc6a66fc312a6cc1f818f Mon Sep 17 00:00:00 2001 From: Mike Ritter <> Date: Tue, 24 Mar 2009 17:37:19 -0700 Subject: Automated import from //branches/donutburger/...@140418,140418 --- core/res/res/values-cs-rCZ/arrays.xml | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 core/res/res/values-cs-rCZ/arrays.xml diff --git a/core/res/res/values-cs-rCZ/arrays.xml b/core/res/res/values-cs-rCZ/arrays.xml new file mode 100644 index 000000000000..484c9b34dcfd --- /dev/null +++ b/core/res/res/values-cs-rCZ/arrays.xml @@ -0,0 +1,32 @@ + + + + + + + 50083333 + 14416667 + + + + 4 + + + -- cgit v1.2.3-59-g8ed1b From ac9de62d2bdc3f16a43cc6681e0a10a9a366a54f Mon Sep 17 00:00:00 2001 From: Grace Kloba <> Date: Tue, 24 Mar 2009 17:37:48 -0700 Subject: Automated import from //branches/donutburger/...@140424,140424 --- core/java/android/webkit/ContentLoader.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/core/java/android/webkit/ContentLoader.java b/core/java/android/webkit/ContentLoader.java index fb01c8c6e85b..f6d7f6990a45 100644 --- a/core/java/android/webkit/ContentLoader.java +++ b/core/java/android/webkit/ContentLoader.java @@ -105,6 +105,9 @@ class ContentLoader extends StreamLoader { if (mContentType != null) { headers.setContentType("text/html"); } + // override the cache-control header set by StreamLoader as content can + // change, we don't want WebKit to cache it + headers.setCacheControl("no-store, no-cache"); } /** -- cgit v1.2.3-59-g8ed1b From 811058f175c7194b3dbd16b7ab333dd648c641c7 Mon Sep 17 00:00:00 2001 From: Evan Millar <> Date: Tue, 24 Mar 2009 17:47:24 -0700 Subject: Automated import from //branches/donutburger/...@140497,140497 --- preloaded-classes | 388 +++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 327 insertions(+), 61 deletions(-) diff --git a/preloaded-classes b/preloaded-classes index b91f41b46d70..14755d61b97b 100644 --- a/preloaded-classes +++ b/preloaded-classes @@ -22,6 +22,7 @@ android.app.ActivityThread$PackageInfo$ServiceDispatcher android.app.ActivityThread$PackageInfo$ServiceDispatcher$InnerConnection android.app.ActivityThread$ProviderRecord android.app.ActivityThread$ProviderRefCount +android.app.AlertDialog android.app.Application android.app.ApplicationContext android.app.ApplicationContext$ApplicationContentResolver @@ -35,28 +36,38 @@ android.app.Dialog android.app.ExpandableListActivity android.app.IActivityManager android.app.IActivityManager$ContentProviderHolder$1 +android.app.IAlarmManager$Stub android.app.IAlarmManager$Stub$Proxy +android.app.IApplicationThread android.app.INotificationManager$Stub android.app.INotificationManager$Stub$Proxy +android.app.ISearchManager +android.app.ISearchManager$Stub android.app.ISearchManager$Stub$Proxy android.app.Instrumentation android.app.IntentReceiverLeaked android.app.ListActivity android.app.ListActivity$1 android.app.ListActivity$2 +android.app.LocalActivityManager android.app.Notification android.app.NotificationManager android.app.PendingIntent android.app.PendingIntent$1 +android.app.ProgressDialog android.app.ReceiverRestrictedContext android.app.ResultInfo android.app.ResultInfo$1 +android.app.SearchDialog +android.app.SearchDialog$SearchAutoComplete +android.app.Service android.app.ServiceConnectionLeaked android.app.TabActivity -android.bluetooth.BluetoothAudioGateway -android.bluetooth.BluetoothDevice -android.bluetooth.IBluetoothDevice$Stub$Proxy +android.content.AbstractSyncableContentProvider +android.content.AbstractTableMerger android.content.AsyncQueryHandler$WorkerHandler +android.content.BroadcastReceiver +android.content.ComponentCallbacks android.content.ComponentName android.content.ComponentName$1 android.content.ContentProvider$Transport @@ -70,23 +81,36 @@ android.content.ContentServiceProxy android.content.ContentValues android.content.Context android.content.ContextWrapper +android.content.DialogInterface +android.content.DialogInterface$OnCancelListener +android.content.DialogInterface$OnDismissListener android.content.IContentProvider android.content.Intent +android.content.Intent$1 android.content.IntentFilter +android.content.SearchRecentSuggestionsProvider +android.content.ServiceConnection +android.content.SharedPreferences android.content.SyncResult android.content.SyncResult$1 android.content.SyncStats android.content.SyncStats$1 +android.content.SyncableContentProvider android.content.UriMatcher android.content.pm.ActivityInfo android.content.pm.ActivityInfo$1 android.content.pm.ApplicationInfo +android.content.pm.ApplicationInfo$1 android.content.pm.ComponentInfo android.content.pm.IPackageManager android.content.pm.IPackageManager$Stub android.content.pm.IPackageManager$Stub$Proxy +android.content.pm.InstrumentationInfo +android.content.pm.InstrumentationInfo$1 android.content.pm.PackageItemInfo android.content.pm.PackageManager +android.content.pm.PackageManager$NameNotFoundException +android.content.pm.PermissionInfo android.content.pm.ProviderInfo android.content.pm.ProviderInfo$1 android.content.pm.ResolveInfo$1 @@ -104,10 +128,13 @@ android.content.res.XmlBlock android.content.res.XmlBlock$Parser android.database.AbstractCursor android.database.AbstractCursor$SelfContentObserver +android.database.AbstractWindowedCursor +android.database.BulkCursorNative android.database.BulkCursorProxy android.database.BulkCursorToCursorAdaptor android.database.ContentObservable android.database.ContentObserver$Transport +android.database.Cursor android.database.CursorToBulkCursorAdaptor android.database.CursorToBulkCursorAdaptor$ContentObserverProxy android.database.CursorWindow @@ -117,12 +144,15 @@ android.database.IContentObserver$Stub$Proxy android.database.MergeCursor android.database.sqlite.SQLiteCursor android.database.sqlite.SQLiteDatabase +android.database.sqlite.SQLiteDatabase$CursorFactory android.database.sqlite.SQLiteDirectCursorDriver android.database.sqlite.SQLiteQuery android.database.sqlite.SQLiteStatement android.ddm.DdmHandleAppName +android.ddm.DdmHandleExit android.ddm.DdmHandleHeap android.ddm.DdmHandleHello +android.ddm.DdmHandleNativeHeap android.ddm.DdmHandleThread android.ddm.DdmRegister android.graphics.Bitmap @@ -151,6 +181,7 @@ android.graphics.Shader android.graphics.Shader$TileMode android.graphics.Typeface android.graphics.Xfermode +android.graphics.drawable.AnimationDrawable android.graphics.drawable.BitmapDrawable android.graphics.drawable.BitmapDrawable$BitmapState android.graphics.drawable.ColorDrawable @@ -159,8 +190,8 @@ android.graphics.drawable.Drawable android.graphics.drawable.DrawableContainer android.graphics.drawable.GradientDrawable android.graphics.drawable.LayerDrawable -android.graphics.drawable.LayerDrawable$LayerState android.graphics.drawable.LayerDrawable$ChildDrawable +android.graphics.drawable.LayerDrawable$LayerState android.graphics.drawable.NinePatchDrawable android.graphics.drawable.NinePatchDrawable$NinePatchState android.graphics.drawable.PaintDrawable @@ -175,11 +206,14 @@ android.graphics.drawable.StateListDrawable$StateListState android.graphics.drawable.TransitionDrawable android.graphics.drawable.TransitionDrawable$TransitionState android.graphics.drawable.shapes.RoundRectShape +android.hardware.SensorManager +android.inputmethodservice.KeyboardView android.location.ILocationManager$Stub +android.location.Location android.media.AudioManager +android.media.IAudioService$Stub +android.media.IAudioService$Stub$Proxy android.media.MediaPlayer -android.media.MediaRecorder -android.media.MediaScanner android.net.LocalSocket android.net.LocalSocketAddress android.net.LocalSocketAddress$Namespace @@ -188,10 +222,16 @@ android.net.LocalSocketImpl$SocketInputStream android.net.LocalSocketImpl$SocketOutputStream android.net.NetworkConnectivityListener$State android.net.NetworkInfo +android.net.NetworkInfo$DetailedState +android.net.SSLCertificateSocketFactory android.net.Uri +android.net.Uri$1 +android.net.Uri$AbstractHierarchicalUri +android.net.Uri$AbstractPart android.net.Uri$HierarchicalUri android.net.Uri$OpaqueUri android.net.Uri$Part +android.net.Uri$Part$EmptyPart android.net.Uri$PathPart android.net.Uri$PathSegments android.net.Uri$StringUri @@ -200,14 +240,21 @@ android.net.http.AndroidHttpClient android.net.http.AndroidHttpClient$1 android.net.http.AndroidHttpClient$2 android.net.http.AndroidHttpClient$CurlLogger +android.net.http.DomainNameChecker android.net.http.EventHandler android.net.http.HttpsConnection android.net.http.RequestQueue +android.net.http.SslError +android.net.wifi.IWifiManager$Stub +android.net.wifi.SupplicantState +android.net.wifi.WifiConfiguration +android.net.wifi.WifiInfo android.opengl.Material android.os.Binder android.os.BinderProxy android.os.Build android.os.Bundle +android.os.Bundle$1 android.os.Environment android.os.FileUtils android.os.Handler @@ -215,7 +262,9 @@ android.os.HandlerThread android.os.IBinder android.os.IHardwareService$Stub android.os.IHardwareService$Stub$Proxy +android.os.IPowerManager$Stub android.os.IPowerManager$Stub$Proxy +android.os.IServiceManager android.os.Looper android.os.Message android.os.Message$1 @@ -232,40 +281,24 @@ android.os.ServiceManager android.os.ServiceManagerNative android.os.ServiceManagerProxy android.os.Vibrator -android.text.format.DateUtils -android.text.format.Time +android.preference.CheckBoxPreference android.preference.DialogPreference +android.preference.EditTextPreference android.preference.ListPreference android.preference.Preference android.preference.PreferenceActivity android.preference.PreferenceGroup android.preference.PreferenceGroupAdapter +android.preference.PreferenceManager android.preference.PreferenceScreen -android.provider.Browser -android.provider.Calendar$CalendarAlerts -android.provider.Calendar$Instances -android.provider.Checkin$Events$Tag -android.provider.Checkin$Stats$Tag -android.provider.Gmail -android.provider.Gmail$CursorStatus -android.provider.Gmail$LabelMap -android.provider.Gmail$LabelMap$1 -android.provider.Gmail$MessageCursor -android.provider.Gmail$PersonalLevel -android.provider.MediaStore$Audio$Artists -android.provider.MediaStore$Audio$Media -android.provider.MediaStore$Images$Media -android.provider.Settings$Gservices -android.provider.Settings$NameValueCache -android.provider.Settings$Secure -android.provider.Settings$System -android.provider.Sync$Settings$QueryMap -android.provider.Telephony$MmsSms$PendingMessages -android.provider.Telephony$Threads +android.preference.RingtonePreference +android.sax.RootElement android.server.search.SearchableInfo android.server.search.SearchableInfo$1 android.telephony.PhoneNumberUtils +android.telephony.PhoneStateListener android.telephony.ServiceState +android.telephony.TelephonyManager android.telephony.gsm.SmsManager android.telephony.gsm.SmsMessage android.text.AutoText @@ -273,25 +306,48 @@ android.text.BoringLayout android.text.BoringLayout$Metrics android.text.DynamicLayout android.text.DynamicLayout$ChangeWatcher +android.text.Editable android.text.Editable$Factory +android.text.GetChars +android.text.GraphicsOperations android.text.Html$HtmlParser +android.text.InputFilter android.text.Layout +android.text.Layout$Alignment +android.text.Layout$Directions android.text.Layout$Ellipsizer +android.text.NoCopySpan +android.text.NoCopySpan$Concrete android.text.PackedIntVector android.text.PackedObjectVector +android.text.ParcelableSpan android.text.Selection +android.text.Selection$END +android.text.Selection$START +android.text.SpanWatcher +android.text.Spannable android.text.Spannable$Factory android.text.SpannableString android.text.SpannableStringBuilder +android.text.SpannableStringInternal +android.text.Spanned android.text.SpannedString android.text.StaticLayout android.text.Styled android.text.TextPaint android.text.TextUtils +android.text.TextUtils$1 +android.text.TextUtils$EllipsizeCallback +android.text.TextUtils$SimpleStringSplitter android.text.TextUtils$TruncateAt +android.text.TextWatcher +android.text.format.DateUtils +android.text.format.Time android.text.method.ArrowKeyMovementMethod android.text.method.BaseKeyListener +android.text.method.KeyListener android.text.method.MetaKeyKeyListener +android.text.method.MovementMethod android.text.method.QwertyKeyListener android.text.method.ReplacementTransformationMethod android.text.method.ReplacementTransformationMethod$SpannedReplacementCharSequence @@ -301,29 +357,43 @@ android.text.method.TextKeyListener$Capitalize android.text.method.TextKeyListener$SettingsObserver android.text.method.TransformationMethod android.text.style.AlignmentSpan +android.text.style.CharacterStyle android.text.style.ForegroundColorSpan android.text.style.LeadingMarginSpan android.text.style.LineBackgroundSpan android.text.style.LineHeightSpan +android.text.style.MetricAffectingSpan android.text.style.ParagraphStyle android.text.style.ReplacementSpan android.text.style.StyleSpan +android.text.style.URLSpan +android.text.style.UpdateAppearance +android.text.style.UpdateLayout android.text.style.WrapTogetherSpan android.text.util.Linkify +android.text.util.Regex android.util.AndroidRuntimeException android.util.AttributeSet android.util.DisplayMetrics android.util.FloatMath android.util.SparseArray android.util.TypedValue +android.util.Xml$XmlSerializerFactory android.view.AbsSavedState +android.view.ContextMenu +android.view.ContextMenu$ContextMenuInfo android.view.ContextThemeWrapper android.view.Display android.view.FocusFinder android.view.FocusFinder$1 +android.view.GestureDetector$SimpleOnGestureListener +android.view.Gravity +android.view.IWindow android.view.IWindow$Stub +android.view.IWindowManager android.view.IWindowManager$Stub android.view.IWindowManager$Stub$Proxy +android.view.IWindowSession android.view.IWindowSession$Stub android.view.IWindowSession$Stub$Proxy android.view.KeyCharacterMap @@ -331,8 +401,12 @@ android.view.KeyEvent android.view.KeyEvent$1 android.view.KeyEvent$Callback android.view.LayoutInflater +android.view.LayoutInflater$Factory +android.view.Menu android.view.MenuInflater +android.view.MenuItem android.view.MotionEvent +android.view.MotionEvent$1 android.view.Surface android.view.SurfaceHolder android.view.SurfaceView @@ -341,21 +415,33 @@ android.view.VelocityTracker android.view.View android.view.View$AttachInfo android.view.View$AttachInfo$Callbacks +android.view.View$BaseSavedState android.view.View$BaseSavedState$1 android.view.View$MeasureSpec +android.view.View$OnCreateContextMenuListener android.view.View$ScrollabilityCache +android.view.ViewConfiguration android.view.ViewGroup +android.view.ViewGroup$LayoutParams android.view.ViewGroup$MarginLayoutParams +android.view.ViewManager android.view.ViewRoot android.view.ViewRoot$1 +android.view.ViewRoot$InputMethodCallback +android.view.ViewRoot$RunQueue android.view.ViewRoot$TrackballAxis android.view.ViewRoot$W android.view.ViewStub android.view.ViewTreeObserver +android.view.ViewTreeObserver$InternalInsetsInfo +android.view.ViewTreeObserver$OnPreDrawListener android.view.Window +android.view.Window$Callback android.view.Window$LocalWindowManager android.view.WindowLeaked +android.view.WindowManager android.view.WindowManager$LayoutParams +android.view.WindowManager$LayoutParams$1 android.view.WindowManagerImpl android.view.animation.AccelerateDecelerateInterpolator android.view.animation.AlphaAnimation @@ -364,41 +450,45 @@ android.view.animation.AnimationSet android.view.animation.LinearInterpolator android.view.animation.Transformation android.view.inputmethod.BaseInputConnection -android.view.inputmethod.CompletionInfo$1 android.view.inputmethod.CompletionInfo -android.view.inputmethod.EditorInfo$1 +android.view.inputmethod.CompletionInfo$1 android.view.inputmethod.EditorInfo -android.view.inputmethod.ExtractedText$1 +android.view.inputmethod.EditorInfo$1 android.view.inputmethod.ExtractedText -android.view.inputmethod.ExtractedTextRequest$1 +android.view.inputmethod.ExtractedText$1 android.view.inputmethod.ExtractedTextRequest -android.view.inputmethod.InputBinding$1 +android.view.inputmethod.ExtractedTextRequest$1 android.view.inputmethod.InputBinding +android.view.inputmethod.InputBinding$1 android.view.inputmethod.InputConnection -android.view.inputmethod.InputMethod$SessionCallback android.view.inputmethod.InputMethod -android.view.inputmethod.InputMethodInfo$1 +android.view.inputmethod.InputMethod$SessionCallback android.view.inputmethod.InputMethodInfo +android.view.inputmethod.InputMethodInfo$1 +android.view.inputmethod.InputMethodManager android.view.inputmethod.InputMethodManager$1 android.view.inputmethod.InputMethodManager$2 android.view.inputmethod.InputMethodManager$ControlledInputConnectionWrapper -android.view.inputmethod.InputMethodManager -android.view.inputmethod.InputMethodSession$EventCallback +android.view.inputmethod.InputMethodManager$H android.view.inputmethod.InputMethodSession +android.view.inputmethod.InputMethodSession$EventCallback android.webkit.BrowserFrame android.webkit.CacheManager android.webkit.CallbackProxy android.webkit.CookieManager android.webkit.CookieSyncManager +android.webkit.HttpDateTime android.webkit.JWebCoreJavaBridge android.webkit.LoadListener android.webkit.MimeTypeMap android.webkit.TextDialog +android.webkit.URLUtil android.webkit.WebBackForwardList android.webkit.WebHistoryItem android.webkit.WebIconDatabase android.webkit.WebIconDatabase$EventHandler android.webkit.WebIconDatabase$EventHandler$1 +android.webkit.WebIconDatabase$EventHandler$IconResult android.webkit.WebSettings android.webkit.WebSettings$EventHandler android.webkit.WebSettings$EventHandler$1 @@ -408,6 +498,7 @@ android.webkit.WebSettings$TextSize android.webkit.WebSyncManager android.webkit.WebSyncManager$SyncHandler android.webkit.WebView +android.webkit.WebView$ExtendedZoomControls android.webkit.WebView$FocusNode android.webkit.WebView$PrivateHandler android.webkit.WebViewCore @@ -431,6 +522,7 @@ android.widget.AbsoluteLayout android.widget.AbsoluteLayout$LayoutParams android.widget.AdapterView android.widget.AdapterView$AdapterDataSetObserver +android.widget.ArrayAdapter android.widget.AutoCompleteTextView android.widget.AutoCompleteTextView$DropDownItemClickListener android.widget.AutoCompleteTextView$DropDownListView @@ -449,7 +541,6 @@ android.widget.ExpandableListView android.widget.FrameLayout android.widget.FrameLayout$LayoutParams android.widget.Gallery -android.widget.GridView android.widget.HeaderViewListAdapter android.widget.ImageView android.widget.ImageView$ScaleType @@ -459,10 +550,10 @@ android.widget.ListView android.widget.ListView$ArrowScrollFocusResult android.widget.ListView$SavedState android.widget.ListView$SavedState$1 -android.widget.MediaController android.widget.PopupWindow android.widget.ProgressBar android.widget.RadioGroup +android.widget.RatingBar android.widget.RelativeLayout android.widget.RelativeLayout$LayoutParams android.widget.RemoteViews @@ -470,7 +561,10 @@ android.widget.ScrollBarDrawable android.widget.ScrollView android.widget.Scroller android.widget.SeekBar +android.widget.SimpleCursorAdapter +android.widget.SlidingDrawer android.widget.Spinner +android.widget.Spinner$DropDownAdapter android.widget.TabHost android.widget.TabWidget android.widget.TableLayout @@ -486,15 +580,22 @@ android.widget.TextView$InputContentType android.widget.TextView$InputMethodState android.widget.TextView$Marquee android.widget.TextView$MenuHandler -android.widget.TextView$SavedState$1 android.widget.TextView$SavedState +android.widget.TextView$SavedState$1 android.widget.ToggleButton android.widget.TwoLineListItem -android.widget.VideoView android.widget.ViewAnimator android.widget.ViewSwitcher android.widget.ZoomButton android.widget.ZoomControls +com.android.internal.database.ArrayListCursor +com.android.internal.database.SortCursor +com.android.internal.gadget.IGadgetService$Stub +com.android.internal.http.multipart.FilePart +com.android.internal.http.multipart.MultipartEntity +com.android.internal.http.multipart.Part +com.android.internal.http.multipart.PartSource +com.android.internal.http.multipart.StringPart com.android.internal.logging.AndroidConfig com.android.internal.logging.AndroidHandler com.android.internal.os.AndroidPrintStream @@ -502,55 +603,92 @@ com.android.internal.os.BinderInternal$GcWatcher com.android.internal.os.LoggingPrintStream com.android.internal.os.LoggingPrintStream$1 com.android.internal.os.RuntimeInit +com.android.internal.os.RuntimeInit$1 com.android.internal.os.RuntimeInit$UncaughtHandler com.android.internal.os.ZygoteInit$MethodAndArgsCaller +com.android.internal.policy.IPolicy com.android.internal.policy.PolicyManager +com.android.internal.policy.impl.PhoneLayoutInflater +com.android.internal.policy.impl.PhoneWindow +com.android.internal.policy.impl.PhoneWindow$1 +com.android.internal.policy.impl.PhoneWindow$ContextMenuCallback +com.android.internal.policy.impl.PhoneWindow$DecorView +com.android.internal.policy.impl.PhoneWindow$PanelFeatureState +com.android.internal.policy.impl.PhoneWindow$PanelFeatureState$SavedState +com.android.internal.policy.impl.PhoneWindow$PanelFeatureState$SavedState$1 +com.android.internal.policy.impl.Policy +com.android.internal.telephony.Connection$DisconnectCause +com.android.internal.telephony.Connection$PostDialState +com.android.internal.telephony.IPhoneStateListener$Stub +com.android.internal.telephony.ITelephony$Stub com.android.internal.telephony.Phone com.android.internal.telephony.Phone$DataActivityState com.android.internal.telephony.Phone$DataState com.android.internal.telephony.Phone$State +com.android.internal.telephony.Phone$SuppService com.android.internal.telephony.PhoneBase com.android.internal.telephony.PhoneStateIntentReceiver com.android.internal.telephony.SimCard$State com.android.internal.telephony.gsm.BaseCommands +com.android.internal.telephony.gsm.CallForwardInfo com.android.internal.telephony.gsm.CommandsInterface +com.android.internal.telephony.gsm.DriverCall +com.android.internal.telephony.gsm.DriverCall$State +com.android.internal.telephony.gsm.GSMConnection com.android.internal.telephony.gsm.GSMPhone com.android.internal.telephony.gsm.GsmAlphabet +com.android.internal.telephony.gsm.GsmMmiCode com.android.internal.telephony.gsm.GsmSimCard com.android.internal.telephony.gsm.ISms$Stub com.android.internal.telephony.gsm.PdpConnection$PdpFailCause com.android.internal.telephony.gsm.RIL com.android.internal.telephony.gsm.ServiceStateTracker -com.android.internal.view.menu.MenuDialogHelper +com.android.internal.telephony.gsm.stk.ComprehensionTlvTag +com.android.internal.telephony.gsm.stk.ResultCode +com.android.internal.util.FastXmlSerializer +com.android.internal.view.IInputConnectionWrapper com.android.internal.view.IInputConnectionWrapper$MyHandler com.android.internal.view.IInputConnectionWrapper$SomeArgs -com.android.internal.view.IInputConnectionWrapper -com.android.internal.view.IInputContext$Stub$Proxy -com.android.internal.view.IInputContext$Stub com.android.internal.view.IInputContext -com.android.internal.view.IInputContextCallback$Stub$Proxy -com.android.internal.view.IInputContextCallback$Stub +com.android.internal.view.IInputContext$Stub +com.android.internal.view.IInputContext$Stub$Proxy com.android.internal.view.IInputContextCallback -com.android.internal.view.IInputMethod$Stub$Proxy -com.android.internal.view.IInputMethod$Stub +com.android.internal.view.IInputContextCallback$Stub +com.android.internal.view.IInputContextCallback$Stub$Proxy com.android.internal.view.IInputMethod -com.android.internal.view.IInputMethodCallback$Stub$Proxy -com.android.internal.view.IInputMethodCallback$Stub +com.android.internal.view.IInputMethod$Stub +com.android.internal.view.IInputMethod$Stub$Proxy com.android.internal.view.IInputMethodCallback -com.android.internal.view.IInputMethodClient$Stub$Proxy -com.android.internal.view.IInputMethodClient$Stub +com.android.internal.view.IInputMethodCallback$Stub +com.android.internal.view.IInputMethodCallback$Stub$Proxy com.android.internal.view.IInputMethodClient -com.android.internal.view.IInputMethodManager$Stub$Proxy -com.android.internal.view.IInputMethodManager$Stub +com.android.internal.view.IInputMethodClient$Stub +com.android.internal.view.IInputMethodClient$Stub$Proxy com.android.internal.view.IInputMethodManager -com.android.internal.view.IInputMethodSession$Stub$Proxy -com.android.internal.view.IInputMethodSession$Stub +com.android.internal.view.IInputMethodManager$Stub +com.android.internal.view.IInputMethodManager$Stub$Proxy com.android.internal.view.IInputMethodSession -com.android.internal.view.InputBindResult$1 +com.android.internal.view.IInputMethodSession$Stub +com.android.internal.view.IInputMethodSession$Stub$Proxy com.android.internal.view.InputBindResult -com.android.internal.view.InputConnectionWrapper$InputContextCallback +com.android.internal.view.InputBindResult$1 com.android.internal.view.InputConnectionWrapper +com.android.internal.view.InputConnectionWrapper$InputContextCallback +com.android.internal.view.menu.ExpandedMenuView +com.android.internal.view.menu.IconMenuItemView +com.android.internal.view.menu.IconMenuView +com.android.internal.view.menu.ListMenuItemView +com.android.internal.view.menu.MenuBuilder +com.android.internal.view.menu.MenuBuilder$Callback +com.android.internal.view.menu.MenuDialogHelper +com.android.internal.view.menu.MenuItemImpl +com.android.internal.view.menu.SubMenuBuilder +com.android.internal.widget.LinearLayoutWithDefaultTouchRecepient com.android.internal.widget.LockPatternView +com.android.internal.widget.NumberPicker +com.android.internal.widget.NumberPickerButton +com.google.android.gdata.client.AndroidGDataClient +com.google.android.gdata.client.AndroidGDataClient$PostRequestCreator com.google.android.gles_jni.EGLImpl com.google.android.gles_jni.GLImpl com.google.android.mms.ContentType @@ -560,9 +698,15 @@ com.google.android.mms.pdu.PduPersister com.google.android.net.GoogleHttpClient com.google.android.net.UrlRules com.google.android.net.UrlRules$Rule +com.google.android.util.SimplePullParser +com.google.common.Config +com.google.common.io.protocol.ProtoBuf +com.google.common.io.protocol.ProtoBufType +com.google.common.util.text.TextUtil com.ibm.icu4jni.charset.CharsetDecoderICU com.ibm.icu4jni.charset.CharsetEncoderICU com.ibm.icu4jni.charset.CharsetICU +com.ibm.icu4jni.text.CollationAttribute com.ibm.icu4jni.text.DecimalFormat com.ibm.icu4jni.text.DecimalFormatSymbols com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatAttribute @@ -570,6 +714,9 @@ com.ibm.icu4jni.text.NativeDecimalFormat$UNumberFormatSymbol com.ibm.icu4jni.text.RuleBasedCollator dalvik.system.DexFile dalvik.system.PathClassLoader +java.beans.PropertyChangeEvent +java.beans.PropertyChangeListener +java.beans.PropertyChangeSupport java.io.BufferedInputStream java.io.ByteArrayInputStream java.io.ByteArrayOutputStream @@ -578,24 +725,36 @@ java.io.FileDescriptor java.io.FileInputStream java.io.FileInputStream$RepositioningLock java.io.FileNotFoundException +java.io.FilterInputStream +java.io.IOException +java.io.ObjectStreamClass java.io.PrintWriter java.io.RandomAccessFile java.io.RandomAccessFile$RepositionLock java.io.StringWriter +java.io.Writer java.lang.Character$valueOfCache java.lang.Class java.lang.ClassCache +java.lang.ClassNotFoundException +java.lang.IllegalArgumentException java.lang.IllegalStateException java.lang.Integer java.lang.Integer$valueOfCache +java.lang.LinkageError java.lang.Long java.lang.Long$valueOfCache +java.lang.NoClassDefFoundError +java.lang.NumberFormatException java.lang.Object java.lang.Runtime +java.lang.RuntimeException +java.lang.Short$valueOfCache java.lang.String java.lang.StringBuffer java.lang.StringBuilder java.lang.Thread +java.lang.ThreadLocal java.lang.ThreadLocal$Values java.lang.Throwable java.lang.VMThread @@ -609,12 +768,16 @@ java.math.BigDecimal java.math.BigInt java.math.BigInteger java.math.Multiplication +java.net.ContentHandler java.net.InetAddress java.net.InetAddress$CacheElement java.net.InetAddress$WaitReachable java.net.JarURLConnection java.net.NegativeCache +java.net.NetPermission +java.net.ProxySelectorImpl java.net.Socket$ConnectLock +java.net.URI java.net.URL java.net.URLConnection java.net.URLConnection$DefaultContentHandler @@ -625,17 +788,23 @@ java.nio.DirectByteBuffer java.nio.ReadWriteDirectByteBuffer java.nio.ReadWriteIntArrayBuffer java.nio.ReadWriteShortArrayBuffer +java.nio.ShortBuffer java.nio.ShortToByteBufferAdapter java.nio.charset.CharsetEncoder java.security.AccessControlContext +java.security.GeneralSecurityException java.security.KeyStore +java.security.MessageDigest java.security.ProtectionDomain +java.security.Provider java.security.SecureRandom java.security.Security java.security.cert.CertPathValidator java.security.cert.CertificateFactory java.security.cert.PKIXParameters java.security.cert.TrustAnchor +java.security.cert.X509CertSelector +java.security.cert.X509Certificate java.text.Collator java.text.DateFormat java.text.DateFormat$Field @@ -652,18 +821,30 @@ java.util.Arrays java.util.Arrays$ArrayList java.util.Calendar java.util.Collections$SynchronizedCollection +java.util.Collections$UnmodifiableList java.util.Collections$UnmodifiableMap +java.util.Collections$UnmodifiableMap$UnmodifiableEntrySet$1 java.util.Date +java.util.EnumMap +java.util.EventListener +java.util.EventObject java.util.Formatter java.util.GregorianCalendar java.util.HashMap java.util.HashMap$1 java.util.HashMap$2 +java.util.HashMap$2$1 java.util.HashMap$Entry +java.util.HashMap$HashMapEntrySet +java.util.HashMap$HashMapEntrySet$1 java.util.HashSet java.util.Hashtable +java.util.Hashtable$4 +java.util.Hashtable$4$1 java.util.Hashtable$Entry +java.util.Hashtable$HashEnumerator java.util.Hashtable$HashIterator +java.util.IdentityHashMap java.util.LinkedHashMap java.util.LinkedHashMap$LinkedHashMapEntry java.util.LinkedList @@ -671,6 +852,7 @@ java.util.LinkedList$Link java.util.List java.util.Locale java.util.Properties +java.util.Random java.util.ResourceBundle java.util.SimpleTimeZone java.util.TimeZone @@ -680,45 +862,91 @@ java.util.TreeSet java.util.Vector java.util.WeakHashMap java.util.WeakHashMap$Entry +java.util.concurrent.ConcurrentHashMap +java.util.concurrent.ConcurrentLinkedQueue +java.util.concurrent.DelayQueue +java.util.concurrent.LinkedBlockingQueue +java.util.concurrent.ScheduledThreadPoolExecutor +java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue java.util.concurrent.TimeUnit java.util.concurrent.atomic.AtomicBoolean java.util.concurrent.atomic.AtomicInteger +java.util.concurrent.atomic.UnsafeAccess java.util.concurrent.locks.AbstractQueuedSynchronizer java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject java.util.concurrent.locks.AbstractQueuedSynchronizer$Node +java.util.concurrent.locks.Lock java.util.concurrent.locks.LockSupport java.util.concurrent.locks.ReentrantLock java.util.concurrent.locks.ReentrantLock$FairSync java.util.concurrent.locks.ReentrantLock$NonfairSync java.util.concurrent.locks.ReentrantLock$Sync +java.util.concurrent.locks.ReentrantReadWriteLock +java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync +java.util.concurrent.locks.UnsafeAccess java.util.jar.Attributes java.util.jar.Attributes$Name +java.util.jar.InitManifest +java.util.jar.JarEntry java.util.jar.JarFile +java.util.jar.JarFile$1JarFileEnumerator +java.util.jar.JarFile$JarFileInputStream +java.util.jar.JarVerifier java.util.jar.Manifest java.util.logging.ErrorManager +java.util.logging.Formatter +java.util.logging.Handler java.util.logging.Level java.util.logging.LogManager +java.util.logging.LogManager$1 +java.util.logging.LogManager$2 +java.util.logging.LogManager$2$1 +java.util.logging.LogManager$3 java.util.logging.LogRecord java.util.logging.Logger java.util.logging.LoggingPermission java.util.logging.SimpleFormatter java.util.regex.Matcher java.util.regex.Pattern +java.util.zip.DeflaterOutputStream +java.util.zip.Inflater +java.util.zip.InflaterInputStream +java.util.zip.ZipConstants java.util.zip.ZipEntry +java.util.zip.ZipEntry$LittleEndianReader java.util.zip.ZipFile +java.util.zip.ZipFile$2 +java.util.zip.ZipFile$RAFStream javax.microedition.khronos.egl.EGLContext javax.net.ssl.HttpsURLConnection +javax.net.ssl.SSLHandshakeException javax.security.auth.x500.X500Principal +javax.security.cert.X509Certificate javax.security.cert.X509Certificate$2 junit.framework.Assert +org.apache.commons.codec.binary.Base64 +org.apache.commons.codec.binary.Hex +org.apache.commons.logging.LogFactory org.apache.commons.logging.impl.Jdk14Logger +org.apache.harmony.archive.util.Util org.apache.harmony.dalvik.ddmc.Chunk org.apache.harmony.dalvik.ddmc.ChunkHandler org.apache.harmony.dalvik.ddmc.DdmServer +org.apache.harmony.dalvik.ddmc.DdmVmInternal +org.apache.harmony.luni.internal.net.www.protocol.file.FileURLConnection +org.apache.harmony.luni.internal.net.www.protocol.file.Handler +org.apache.harmony.luni.internal.net.www.protocol.http.Handler +org.apache.harmony.luni.internal.net.www.protocol.https.Handler org.apache.harmony.luni.internal.net.www.protocol.jar.Handler org.apache.harmony.luni.internal.net.www.protocol.jar.JarURLConnection +org.apache.harmony.luni.internal.net.www.protocol.jar.JarURLConnection$1 +org.apache.harmony.luni.internal.net.www.protocol.jar.JarURLConnection$CacheEntry +org.apache.harmony.luni.internal.net.www.protocol.jar.JarURLConnection$JarURLConnectionInputStream +org.apache.harmony.luni.internal.net.www.protocol.jar.JarURLConnection$LRUComparator +org.apache.harmony.luni.internal.util.TimezoneGetter org.apache.harmony.luni.internal.util.ZoneInfo org.apache.harmony.luni.internal.util.ZoneInfoDB +org.apache.harmony.luni.net.PlainSocketImpl org.apache.harmony.luni.net.PlainSocketImpl2 org.apache.harmony.luni.platform.PlatformAddress org.apache.harmony.luni.util.TwoKeyHashMap @@ -735,6 +963,7 @@ org.apache.harmony.security.asn1.ASN1Implicit org.apache.harmony.security.asn1.ASN1Integer org.apache.harmony.security.asn1.ASN1OctetString org.apache.harmony.security.asn1.ASN1SetOf +org.apache.harmony.security.asn1.ASN1StringType org.apache.harmony.security.asn1.ASN1StringType$1 org.apache.harmony.security.asn1.ASN1StringType$2 org.apache.harmony.security.asn1.ASN1StringType$3 @@ -745,14 +974,18 @@ org.apache.harmony.security.asn1.ASN1StringType$7 org.apache.harmony.security.asn1.ASN1UTCTime org.apache.harmony.security.asn1.BitString org.apache.harmony.security.fortress.Engine +org.apache.harmony.security.fortress.SecurityUtils org.apache.harmony.security.fortress.Services +org.apache.harmony.security.pkcs7.ContentInfo org.apache.harmony.security.provider.cert.X509CertFactoryImpl org.apache.harmony.security.provider.cert.X509CertImpl org.apache.harmony.security.provider.cert.X509CertPathImpl +org.apache.harmony.security.provider.crypto.RandomBitsSupplier org.apache.harmony.security.provider.crypto.SHA1PRNG_SecureRandomImpl org.apache.harmony.security.utils.AlgNameMapper org.apache.harmony.security.x501.AttributeTypeAndValue org.apache.harmony.security.x501.AttributeValue +org.apache.harmony.security.x501.DirectoryString org.apache.harmony.security.x501.DirectoryString$1 org.apache.harmony.security.x501.Name org.apache.harmony.security.x501.Name$1 @@ -767,36 +1000,45 @@ org.apache.harmony.security.x509.Extension$1 org.apache.harmony.security.x509.Extension$2 org.apache.harmony.security.x509.Extensions org.apache.harmony.security.x509.Extensions$1 +org.apache.harmony.security.x509.GeneralName +org.apache.harmony.security.x509.GeneralNames org.apache.harmony.security.x509.KeyUsage +org.apache.harmony.security.x509.ORAddress org.apache.harmony.security.x509.SubjectPublicKeyInfo org.apache.harmony.security.x509.SubjectPublicKeyInfo$1 org.apache.harmony.security.x509.TBSCertificate org.apache.harmony.security.x509.TBSCertificate$1 +org.apache.harmony.security.x509.Time org.apache.harmony.security.x509.Time$1 org.apache.harmony.security.x509.Validity org.apache.harmony.security.x509.Validity$1 org.apache.harmony.xml.ExpatParser org.apache.harmony.xml.ExpatPullParser org.apache.harmony.xml.ExpatReader +org.apache.harmony.xnet.provider.jsse.ClientSessionContext org.apache.harmony.xnet.provider.jsse.OpenSSLSessionImpl org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl +org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl$Finalizer org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl$SSLInputStream org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl$SSLOutputStream +org.apache.harmony.xnet.provider.jsse.SSLContextImpl org.apache.harmony.xnet.provider.jsse.SSLParameters -org.apache.harmony.xnet.provider.jsse.ClientSessionContext org.apache.harmony.xnet.provider.jsse.TrustManagerFactoryImpl org.apache.harmony.xnet.provider.jsse.TrustManagerImpl org.apache.http.HttpHost +org.apache.http.HttpRequestInterceptor org.apache.http.HttpVersion org.apache.http.auth.AuthSchemeRegistry org.apache.http.client.HttpClient org.apache.http.client.RequestDirector +org.apache.http.client.methods.HttpRequestBase org.apache.http.client.protocol.RequestAddCookies org.apache.http.client.protocol.RequestDefaultHeaders org.apache.http.client.protocol.RequestProxyAuthentication org.apache.http.client.protocol.RequestTargetAuthentication org.apache.http.client.protocol.ResponseProcessCookies org.apache.http.conn.params.ConnManagerParams$1 +org.apache.http.conn.params.ConnRouteParams org.apache.http.conn.routing.HttpRoute org.apache.http.conn.routing.RouteInfo$LayerType org.apache.http.conn.routing.RouteInfo$TunnelType @@ -808,11 +1050,13 @@ org.apache.http.conn.ssl.AllowAllHostnameVerifier org.apache.http.conn.ssl.BrowserCompatHostnameVerifier org.apache.http.conn.ssl.SSLSocketFactory org.apache.http.conn.ssl.StrictHostnameVerifier +org.apache.http.conn.util.InetAddressUtils org.apache.http.cookie.CookieSpecRegistry org.apache.http.impl.DefaultConnectionReuseStrategy org.apache.http.impl.DefaultHttpResponseFactory org.apache.http.impl.EnglishReasonPhraseCatalog org.apache.http.impl.HttpConnectionMetricsImpl +org.apache.http.impl.SocketHttpClientConnection org.apache.http.impl.auth.BasicSchemeFactory org.apache.http.impl.auth.DigestSchemeFactory org.apache.http.impl.client.AbstractAuthenticationHandler @@ -824,6 +1068,8 @@ org.apache.http.impl.client.DefaultProxyAuthenticationHandler org.apache.http.impl.client.DefaultRedirectHandler org.apache.http.impl.client.DefaultTargetAuthenticationHandler org.apache.http.impl.client.DefaultUserTokenHandler +org.apache.http.impl.client.EntityEnclosingRequestWrapper +org.apache.http.impl.conn.AbstractClientConnAdapter org.apache.http.impl.conn.DefaultClientConnection org.apache.http.impl.conn.DefaultClientConnectionOperator org.apache.http.impl.conn.DefaultHttpRoutePlanner @@ -835,8 +1081,10 @@ org.apache.http.impl.conn.tsccm.ConnPoolByRoute org.apache.http.impl.conn.tsccm.RefQueueWorker org.apache.http.impl.conn.tsccm.RouteSpecificPool org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager +org.apache.http.impl.cookie.BasicClientCookie org.apache.http.impl.cookie.BestMatchSpecFactory org.apache.http.impl.cookie.BrowserCompatSpecFactory +org.apache.http.impl.cookie.DateUtils org.apache.http.impl.cookie.NetscapeDraftSpecFactory org.apache.http.impl.cookie.RFC2109SpecFactory org.apache.http.impl.cookie.RFC2965SpecFactory @@ -849,10 +1097,13 @@ org.apache.http.impl.io.HttpTransportMetricsImpl org.apache.http.impl.io.SocketInputBuffer org.apache.http.impl.io.SocketOutputBuffer org.apache.http.message.BasicHeaderValueParser +org.apache.http.message.BasicHttpEntityEnclosingRequest +org.apache.http.message.BasicHttpResponse org.apache.http.message.BasicLineFormatter org.apache.http.message.BasicLineParser org.apache.http.params.BasicHttpParams org.apache.http.protocol.BasicHttpProcessor +org.apache.http.protocol.HTTP org.apache.http.protocol.HttpRequestExecutor org.apache.http.protocol.HttpRequestInterceptorList org.apache.http.protocol.HttpResponseInterceptorList @@ -863,9 +1114,12 @@ org.apache.http.protocol.RequestTargetHost org.apache.http.protocol.RequestUserAgent org.apache.http.util.ByteArrayBuffer org.apache.http.util.CharArrayBuffer +org.apache.http.util.EntityUtils +org.apache.http.util.VersionInfo org.bouncycastle.asn1.DERBitString org.bouncycastle.asn1.DERIA5String org.bouncycastle.asn1.DERInteger +org.bouncycastle.asn1.DERObject org.bouncycastle.asn1.DERObjectIdentifier org.bouncycastle.asn1.DEROctetString org.bouncycastle.asn1.DERPrintableString @@ -875,8 +1129,10 @@ org.bouncycastle.asn1.DERTaggedObject org.bouncycastle.asn1.DERUTCTime org.bouncycastle.asn1.DERUTF8String org.bouncycastle.asn1.OrderedTable +org.bouncycastle.asn1.nist.NISTObjectIdentifiers org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers org.bouncycastle.asn1.x509.AlgorithmIdentifier +org.bouncycastle.asn1.x509.RSAPublicKeyStructure org.bouncycastle.asn1.x509.SubjectPublicKeyInfo org.bouncycastle.asn1.x509.TBSCertificateStructure org.bouncycastle.asn1.x509.Time @@ -886,15 +1142,25 @@ org.bouncycastle.asn1.x509.X509Extensions org.bouncycastle.asn1.x509.X509Name org.bouncycastle.asn1.x509.X509NameElementList org.bouncycastle.asn1.x9.X9ObjectIdentifiers +org.bouncycastle.crypto.engines.AESFastEngine +org.bouncycastle.jce.provider.CertPathValidatorUtilities +org.bouncycastle.jce.provider.JCEBlockCipher$AES org.bouncycastle.jce.provider.JCERSAPublicKey org.bouncycastle.jce.provider.JDKKeyFactory$RSA org.bouncycastle.jce.provider.JDKKeyStore org.bouncycastle.jce.provider.JDKKeyStore$StoreEntry org.bouncycastle.jce.provider.PKIXCertPathValidatorSpi +org.bouncycastle.jce.provider.RSAUtil org.bouncycastle.jce.provider.X509CertificateObject org.ccil.cowan.tagsoup.HTMLScanner org.ccil.cowan.tagsoup.Parser +org.json.JSONArray +org.json.JSONObject +org.json.JSONStringer org.kxml2.io.KXmlParser +org.kxml2.io.KXmlSerializer org.xml.sax.helpers.DefaultHandler org.xml.sax.helpers.NewInstance +org.xmlpull.v1.XmlPullParserFactory org.xmlpull.v1.sax2.Driver +sun.misc.Unsafe -- cgit v1.2.3-59-g8ed1b From b109615ebebd6f3b9ae789412279f576c3ace46b Mon Sep 17 00:00:00 2001 From: Jason Parekh <> Date: Tue, 24 Mar 2009 17:48:25 -0700 Subject: Automated import from //branches/donutburger/...@140507,140507 --- media/java/android/media/AudioService.java | 83 +++++++++++++++++++----------- 1 file changed, 54 insertions(+), 29 deletions(-) diff --git a/media/java/android/media/AudioService.java b/media/java/android/media/AudioService.java index 83ede0d00157..f30aebebc4e5 100644 --- a/media/java/android/media/AudioService.java +++ b/media/java/android/media/AudioService.java @@ -21,6 +21,7 @@ import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; +import android.database.ContentObserver; import android.media.MediaPlayer.OnCompletionListener; import android.media.MediaPlayer.OnErrorListener; import android.os.Binder; @@ -92,7 +93,8 @@ public class AudioService extends IAudioService.Stub { private AudioHandler mAudioHandler; /** @see VolumeStreamState */ private VolumeStreamState[] mStreamStates; - + private SettingsObserver mSettingsObserver; + private boolean mMicMute; private int mMode; private int[] mRoutes = new int[AudioSystem.NUM_MODES]; @@ -157,9 +159,6 @@ public class AudioService extends IAudioService.Stub { */ private int mRingerMode; - /** @see System#MODE_RINGER_STREAMS_AFFECTED */ - private int mRingerModeAffectedStreams; - /** @see System#MUTE_STREAMS_AFFECTED */ private int mMuteAffectedStreams; @@ -181,7 +180,8 @@ public class AudioService extends IAudioService.Stub { mContext = context; mContentResolver = context.getContentResolver(); mVolumePanel = new VolumePanel(context, this); - + mSettingsObserver = new SettingsObserver(); + createAudioSystemThread(); createStreamStates(); readPersistedSettings(); @@ -275,8 +275,6 @@ public class AudioService extends IAudioService.Stub { final ContentResolver cr = mContentResolver; mRingerMode = System.getInt(cr, System.MODE_RINGER, AudioManager.RINGER_MODE_NORMAL); - mRingerModeAffectedStreams = System.getInt(mContentResolver, - System.MODE_RINGER_STREAMS_AFFECTED, 1 << AudioSystem.STREAM_RING); mVibrateSetting = System.getInt(cr, System.VIBRATE_ON, 0); @@ -494,32 +492,36 @@ public class AudioService extends IAudioService.Stub { /** @see AudioManager#setRingerMode(int) */ public void setRingerMode(int ringerMode) { if (ringerMode != mRingerMode) { - mRingerMode = ringerMode; - - // Adjust volumes via posting message - int numStreamTypes = AudioSystem.getNumStreamTypes(); - if (mRingerMode == AudioManager.RINGER_MODE_NORMAL) { - for (int streamType = numStreamTypes - 1; streamType >= 0; streamType--) { - if (!isStreamAffectedByRingerMode(streamType)) continue; - // Bring back last audible volume - setStreamVolumeInt(streamType, mStreamStates[streamType].mLastAudibleIndex, - false); - } - } else { - for (int streamType = numStreamTypes - 1; streamType >= 0; streamType--) { - if (!isStreamAffectedByRingerMode(streamType)) continue; - // Either silent or vibrate, either way volume is 0 - setStreamVolumeInt(streamType, 0, false); - } - } + setRingerModeInt(ringerMode); // Send sticky broadcast broadcastRingerMode(); + } + } - // Post a persist ringer mode msg - sendMsg(mAudioHandler, MSG_PERSIST_RINGER_MODE, SHARED_MSG, - SENDMSG_REPLACE, 0, 0, null, PERSIST_DELAY); + private void setRingerModeInt(int ringerMode) { + mRingerMode = ringerMode; + + // Adjust volumes via posting message + int numStreamTypes = AudioSystem.getNumStreamTypes(); + if (mRingerMode == AudioManager.RINGER_MODE_NORMAL) { + for (int streamType = numStreamTypes - 1; streamType >= 0; streamType--) { + if (!isStreamAffectedByRingerMode(streamType)) continue; + // Bring back last audible volume + setStreamVolumeInt(streamType, mStreamStates[streamType].mLastAudibleIndex, + false); + } + } else { + for (int streamType = numStreamTypes - 1; streamType >= 0; streamType--) { + if (!isStreamAffectedByRingerMode(streamType)) continue; + // Either silent or vibrate, either way volume is 0 + setStreamVolumeInt(streamType, 0, false); + } } + + // Post a persist ringer mode msg + sendMsg(mAudioHandler, MSG_PERSIST_RINGER_MODE, SHARED_MSG, + SENDMSG_REPLACE, 0, 0, null, PERSIST_DELAY); } /** @see AudioManager#shouldVibrate(int) */ @@ -783,7 +785,9 @@ public class AudioService extends IAudioService.Stub { } public boolean isStreamAffectedByRingerMode(int streamType) { - return (mRingerModeAffectedStreams & (1 << streamType)) != 0; + int ringerModeAffectedStreams = Settings.System.getInt(mContentResolver, + Settings.System.MODE_RINGER_STREAMS_AFFECTED, 0); + return (ringerModeAffectedStreams & (1 << streamType)) != 0; } public boolean isStreamAffectedByMute(int streamType) { @@ -1233,4 +1237,25 @@ public class AudioService extends IAudioService.Stub { } } + private class SettingsObserver extends ContentObserver { + + SettingsObserver() { + super(new Handler()); + mContentResolver.registerContentObserver(Settings.System.getUriFor( + Settings.System.MODE_RINGER_STREAMS_AFFECTED), false, this); + } + + @Override + public void onChange(boolean selfChange) { + super.onChange(selfChange); + + /* + * Ensure all stream types that should be affected by ringer mode + * are in the proper state. + */ + setRingerModeInt(getRingerMode()); + } + + } + } -- cgit v1.2.3-59-g8ed1b From de7c071e7391faac28e3de8a4891f0f564c37e04 Mon Sep 17 00:00:00 2001 From: Jason Parekh <> Date: Tue, 24 Mar 2009 17:54:03 -0700 Subject: Automated import from //branches/donutburger/...@140559,140559 --- .../ic_btn_square_browser_zoom_fit_page_disabled.png | Bin 291 -> 430 bytes .../ic_btn_square_browser_zoom_fit_page_normal.png | Bin 439 -> 777 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/core/res/res/drawable/ic_btn_square_browser_zoom_fit_page_disabled.png b/core/res/res/drawable/ic_btn_square_browser_zoom_fit_page_disabled.png index 326397cbf036..1c92b21cc473 100644 Binary files a/core/res/res/drawable/ic_btn_square_browser_zoom_fit_page_disabled.png and b/core/res/res/drawable/ic_btn_square_browser_zoom_fit_page_disabled.png differ diff --git a/core/res/res/drawable/ic_btn_square_browser_zoom_fit_page_normal.png b/core/res/res/drawable/ic_btn_square_browser_zoom_fit_page_normal.png index 55834010e7ac..5b4f7f6c9af8 100644 Binary files a/core/res/res/drawable/ic_btn_square_browser_zoom_fit_page_normal.png and b/core/res/res/drawable/ic_btn_square_browser_zoom_fit_page_normal.png differ -- cgit v1.2.3-59-g8ed1b From 470f71f4a4d6d3a504b62473bd435bf80493414f Mon Sep 17 00:00:00 2001 From: Jean-Michel Trivi <> Date: Tue, 24 Mar 2009 17:55:14 -0700 Subject: Automated import from //branches/donutburger/...@140566,140566 --- api/current.xml | 49 +++++---- media/java/android/media/AudioRecord.java | 161 ++++++++++++++---------------- 2 files changed, 104 insertions(+), 106 deletions(-) diff --git a/api/current.xml b/api/current.xml index c9ed3c42ddeb..dbfa2b98268d 100644 --- a/api/current.xml +++ b/api/current.xml @@ -64504,6 +64504,23 @@ visibility="public" > + + + + + + + + - - + - - + - - + - - + + + - - - Date: Tue, 24 Mar 2009 17:56:28 -0700 Subject: Automated import from //branches/donutburger/...@140572,140572 --- telephony/java/com/android/internal/telephony/gsm/RIL.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/telephony/java/com/android/internal/telephony/gsm/RIL.java b/telephony/java/com/android/internal/telephony/gsm/RIL.java index b210868575b5..e2d0f7298261 100644 --- a/telephony/java/com/android/internal/telephony/gsm/RIL.java +++ b/telephony/java/com/android/internal/telephony/gsm/RIL.java @@ -2347,9 +2347,7 @@ public final class RIL extends BaseCommands implements CommandsInterface dc.als = p.readInt(); dc.isVoice = (0 == p.readInt()) ? false : true; dc.number = p.readString(); - - // TODO get presentation from p.readInt() after checkin new RIL - dc.numberPresentation = DriverCall.presentationFromCLIP(0); + dc.numberPresentation = DriverCall.presentationFromCLIP(p.readInt()); // Make sure there's a leading + on addresses with a TOA // of 145 -- cgit v1.2.3-59-g8ed1b From 9e728e082e6060612691b726e6fe264a0d37276f Mon Sep 17 00:00:00 2001 From: Bjorn Bringert <> Date: Tue, 24 Mar 2009 17:57:22 -0700 Subject: Automated import from //branches/donutburger/...@140581,140581 --- core/java/android/content/ContentProvider.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/java/android/content/ContentProvider.java b/core/java/android/content/ContentProvider.java index 25544deac10d..5cc5730c098f 100644 --- a/core/java/android/content/ContentProvider.java +++ b/core/java/android/content/ContentProvider.java @@ -172,7 +172,8 @@ public abstract class ContentProvider implements ComponentCallbacks { public ISyncAdapter getSyncAdapter() { checkWritePermission(null); - return ContentProvider.this.getSyncAdapter().getISyncAdapter(); + SyncAdapter sa = ContentProvider.this.getSyncAdapter(); + return sa != null ? sa.getISyncAdapter() : null; } private void checkReadPermission(Uri uri) { -- cgit v1.2.3-59-g8ed1b From 59f026f2dd71a5d2676f0808a0c4c4d5354963bb Mon Sep 17 00:00:00 2001 From: Mike Lockwood <> Date: Tue, 24 Mar 2009 18:00:38 -0700 Subject: Automated import from //branches/donutburger/...@140601,140601 --- preloaded-classes | 1 - 1 file changed, 1 deletion(-) diff --git a/preloaded-classes b/preloaded-classes index 14755d61b97b..f051a1467351 100644 --- a/preloaded-classes +++ b/preloaded-classes @@ -590,7 +590,6 @@ android.widget.ZoomButton android.widget.ZoomControls com.android.internal.database.ArrayListCursor com.android.internal.database.SortCursor -com.android.internal.gadget.IGadgetService$Stub com.android.internal.http.multipart.FilePart com.android.internal.http.multipart.MultipartEntity com.android.internal.http.multipart.Part -- cgit v1.2.3-59-g8ed1b From 4a5c1a7e84a250eafe0e3a12d859c45747520d55 Mon Sep 17 00:00:00 2001 From: Jean-Michel Trivi <> Date: Tue, 24 Mar 2009 18:11:07 -0700 Subject: Automated import from //branches/donutburger/...@140663,140663 --- include/media/AudioTrack.h | 1 + media/libmedia/AudioTrack.cpp | 15 +++++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/include/media/AudioTrack.h b/include/media/AudioTrack.h index 659f5f8aa335..76459786ee0e 100644 --- a/include/media/AudioTrack.h +++ b/include/media/AudioTrack.h @@ -409,6 +409,7 @@ private: int mLoopCount; uint32_t mRemainingFrames; uint32_t mMarkerPosition; + bool mMarkerReached; uint32_t mNewPosition; uint32_t mUpdatePeriod; }; diff --git a/media/libmedia/AudioTrack.cpp b/media/libmedia/AudioTrack.cpp index 7537ddf9bb32..24f72816d5f3 100644 --- a/media/libmedia/AudioTrack.cpp +++ b/media/libmedia/AudioTrack.cpp @@ -259,6 +259,7 @@ status_t AudioTrack::set( mLatency = afLatency + (1000*mFrameCount) / mSampleRate; mLoopCount = 0; mMarkerPosition = 0; + mMarkerReached = false; mNewPosition = 0; mUpdatePeriod = 0; @@ -360,6 +361,9 @@ void AudioTrack::stop() // Cancel loops (If we are in the middle of a loop, playback // would not stop until loopCount reaches 0). setLoop(0, 0, 0); + // the playback head position will reset to 0, so if a marker is set, we need + // to activate it again + mMarkerReached = false; // Force flush if a shared buffer is used otherwise audioflinger // will not stop before end of buffer is reached. if (mSharedBuffer != 0) { @@ -385,6 +389,12 @@ bool AudioTrack::stopped() const void AudioTrack::flush() { LOGV("flush"); + + // clear playback marker and periodic update counter + mMarkerPosition = 0; + mMarkerReached = false; + mUpdatePeriod = 0; + if (!mActive) { mAudioTrack->flush(); @@ -508,6 +518,7 @@ status_t AudioTrack::setMarkerPosition(uint32_t marker) if (mCbf == 0) return INVALID_OPERATION; mMarkerPosition = marker; + mMarkerReached = false; return NO_ERROR; } @@ -755,10 +766,10 @@ bool AudioTrack::processAudioBuffer(const sp& thread) } // Manage marker callback - if(mMarkerPosition > 0) { + if (!mMarkerReached && (mMarkerPosition > 0)) { if (mCblk->server >= mMarkerPosition) { mCbf(EVENT_MARKER, mUserData, (void *)&mMarkerPosition); - mMarkerPosition = 0; + mMarkerReached = true; } } -- cgit v1.2.3-59-g8ed1b From d4c5f8919b0522bcaab41a5863c313fec52d3a79 Mon Sep 17 00:00:00 2001 From: Eric Shienbrood <> Date: Tue, 24 Mar 2009 18:13:20 -0700 Subject: Automated import from //branches/donutburger/...@140679,140679 --- core/java/android/os/BatteryStats.java | 21 ++++++++++--- .../com/android/internal/app/IBatteryStats.aidl | 2 ++ .../com/android/internal/os/BatteryStatsImpl.java | 34 ++++++++++++++++++++-- services/java/com/android/server/WifiService.java | 30 +++++++++---------- .../com/android/server/am/BatteryStatsService.java | 16 +++++++++- wifi/java/android/net/wifi/WifiStateTracker.java | 26 +++++++++++++++-- 6 files changed, 104 insertions(+), 25 deletions(-) diff --git a/core/java/android/os/BatteryStats.java b/core/java/android/os/BatteryStats.java index 76c74df27838..d492b6ae2c69 100644 --- a/core/java/android/os/BatteryStats.java +++ b/core/java/android/os/BatteryStats.java @@ -292,7 +292,7 @@ public abstract class BatteryStats implements Parcelable { * {@hide} */ public abstract long getPhoneOnTime(long batteryRealtime, int which); - + /** * Returns the time in milliseconds that wifi has been on while the device was * running on battery. @@ -300,7 +300,15 @@ public abstract class BatteryStats implements Parcelable { * {@hide} */ public abstract long getWifiOnTime(long batteryRealtime, int which); - + + /** + * Returns the time in milliseconds that wifi has been on and the driver has + * been in the running state while the device was running on battery. + * + * {@hide} + */ + public abstract long getWifiRunningTime(long batteryRealtime, int which); + /** * Returns the time in milliseconds that bluetooth has been on while the device was * running on battery. @@ -535,6 +543,7 @@ public abstract class BatteryStats implements Parcelable { final long screenOnTime = getScreenOnTime(batteryRealtime, which); final long phoneOnTime = getPhoneOnTime(batteryRealtime, which); final long wifiOnTime = getWifiOnTime(batteryRealtime, which); + final long wifiRunningTime = getWifiRunningTime(batteryRealtime, which); final long bluetoothOnTime = getBluetoothOnTime(batteryRealtime, which); StringBuilder sb = new StringBuilder(128); @@ -549,7 +558,8 @@ public abstract class BatteryStats implements Parcelable { // Dump misc stats dumpLine(pw, 0 /* uid */, category, MISC_DATA, - screenOnTime / 1000, phoneOnTime / 1000, wifiOnTime / 1000, bluetoothOnTime / 1000); + screenOnTime / 1000, phoneOnTime / 1000, wifiOnTime / 1000, + wifiRunningTime / 1000, bluetoothOnTime / 1000); if (which == STATS_UNPLUGGED) { dumpLine(pw, 0 /* uid */, category, BATTERY_DATA, getUnpluggedStartLevel(), @@ -667,7 +677,7 @@ public abstract class BatteryStats implements Parcelable { final long rawUptime = SystemClock.uptimeMillis() * 1000; final long rawRealtime = SystemClock.elapsedRealtime() * 1000; final long batteryUptime = getBatteryUptime(rawUptime); - final long batteryRealtime = getBatteryUptime(rawRealtime); + final long batteryRealtime = getBatteryRealtime(rawRealtime); final long whichBatteryUptime = computeBatteryUptime(rawUptime, which); final long whichBatteryRealtime = computeBatteryRealtime(rawRealtime, which); @@ -692,6 +702,7 @@ public abstract class BatteryStats implements Parcelable { final long screenOnTime = getScreenOnTime(batteryRealtime, which); final long phoneOnTime = getPhoneOnTime(batteryRealtime, which); + final long wifiRunningTime = getWifiRunningTime(batteryRealtime, which); final long wifiOnTime = getWifiOnTime(batteryRealtime, which); final long bluetoothOnTime = getBluetoothOnTime(batteryRealtime, which); pw.println(prefix @@ -701,6 +712,8 @@ public abstract class BatteryStats implements Parcelable { + "(" + formatRatioLocked(phoneOnTime, whichBatteryRealtime) + "), time with wifi on: " + formatTimeMs(wifiOnTime / 1000) + "(" + formatRatioLocked(wifiOnTime, whichBatteryRealtime) + + "), time with wifi running: " + formatTimeMs(wifiRunningTime / 1000) + + "(" + formatRatioLocked(wifiRunningTime, whichBatteryRealtime) + "), time with bluetooth on: " + formatTimeMs(bluetoothOnTime / 1000) + "(" + formatRatioLocked(bluetoothOnTime, whichBatteryRealtime)+ ")"); diff --git a/core/java/com/android/internal/app/IBatteryStats.aidl b/core/java/com/android/internal/app/IBatteryStats.aidl index d25975653065..e0de42145085 100644 --- a/core/java/com/android/internal/app/IBatteryStats.aidl +++ b/core/java/com/android/internal/app/IBatteryStats.aidl @@ -32,6 +32,8 @@ interface IBatteryStats { void notePhoneOff(); void noteWifiOn(); void noteWifiOff(); + void noteWifiRunning(); + void noteWifiStopped(); void noteBluetoothOn(); void noteBluetoothOff(); void noteFullWifiLockAcquired(int uid); diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java index b3ae0d6adaa7..38335b55fbe7 100644 --- a/core/java/com/android/internal/os/BatteryStatsImpl.java +++ b/core/java/com/android/internal/os/BatteryStatsImpl.java @@ -47,7 +47,7 @@ public final class BatteryStatsImpl extends BatteryStats { private static final int MAGIC = 0xBA757475; // 'BATSTATS' // Current on-disk Parcel version - private static final int VERSION = 27; + private static final int VERSION = 28; private final File mFile; private final File mBackupFile; @@ -94,6 +94,9 @@ public final class BatteryStatsImpl extends BatteryStats { boolean mWifiOn; Timer mWifiOnTimer; + + boolean mWifiRunning; + Timer mWifiRunningTimer; boolean mBluetoothOn; Timer mBluetoothOnTimer; @@ -497,6 +500,20 @@ public final class BatteryStatsImpl extends BatteryStats { } } + public void noteWifiRunningLocked() { + if (!mWifiRunning) { + mWifiRunning = true; + mWifiRunningTimer.startRunningLocked(this); + } + } + + public void noteWifiStoppedLocked() { + if (mWifiRunning) { + mWifiRunning = false; + mWifiRunningTimer.stopRunningLocked(this); + } + } + public void noteBluetoothOnLocked() { if (!mBluetoothOn) { mBluetoothOn = true; @@ -551,6 +568,10 @@ public final class BatteryStatsImpl extends BatteryStats { return mWifiOnTimer.getTotalTime(batteryRealtime, which); } + @Override public long getWifiRunningTime(long batteryRealtime, int which) { + return mWifiRunningTimer.getTotalTime(batteryRealtime, which); + } + @Override public long getBluetoothOnTime(long batteryRealtime, int which) { return mBluetoothOnTimer.getTotalTime(batteryRealtime, which); } @@ -1597,7 +1618,8 @@ public final class BatteryStatsImpl extends BatteryStats { mScreenOnTimer = new Timer(-1, null, mUnpluggables); mPhoneOnTimer = new Timer(-2, null, mUnpluggables); mWifiOnTimer = new Timer(-3, null, mUnpluggables); - mBluetoothOnTimer = new Timer(-4, null, mUnpluggables); + mWifiRunningTimer = new Timer(-4, null, mUnpluggables); + mBluetoothOnTimer = new Timer(-5, null, mUnpluggables); mOnBattery = mOnBatteryInternal = false; mTrackBatteryPastUptime = 0; mTrackBatteryPastRealtime = 0; @@ -1935,6 +1957,8 @@ public final class BatteryStatsImpl extends BatteryStats { mPhoneOnTimer.readSummaryFromParcelLocked(in); mWifiOn = false; mWifiOnTimer.readSummaryFromParcelLocked(in); + mWifiRunning = false; + mWifiRunningTimer.readSummaryFromParcelLocked(in); mBluetoothOn = false; mBluetoothOnTimer.readSummaryFromParcelLocked(in); @@ -2038,6 +2062,7 @@ public final class BatteryStatsImpl extends BatteryStats { mScreenOnTimer.writeSummaryFromParcelLocked(out, NOWREAL); mPhoneOnTimer.writeSummaryFromParcelLocked(out, NOWREAL); mWifiOnTimer.writeSummaryFromParcelLocked(out, NOWREAL); + mWifiRunningTimer.writeSummaryFromParcelLocked(out, NOWREAL); mBluetoothOnTimer.writeSummaryFromParcelLocked(out, NOWREAL); final int NU = mUidStats.size(); @@ -2163,6 +2188,8 @@ public final class BatteryStatsImpl extends BatteryStats { mPhoneOnTimer = new Timer(-2, null, mUnpluggables, in); mWifiOn = false; mWifiOnTimer = new Timer(-2, null, mUnpluggables, in); + mWifiRunning = false; + mWifiRunningTimer = new Timer(-2, null, mUnpluggables, in); mBluetoothOn = false; mBluetoothOnTimer = new Timer(-2, null, mUnpluggables, in); mUptime = in.readLong(); @@ -2217,6 +2244,7 @@ public final class BatteryStatsImpl extends BatteryStats { mScreenOnTimer.writeToParcel(out, batteryRealtime); mPhoneOnTimer.writeToParcel(out, batteryRealtime); mWifiOnTimer.writeToParcel(out, batteryRealtime); + mWifiRunningTimer.writeToParcel(out, batteryRealtime); mBluetoothOnTimer.writeToParcel(out, batteryRealtime); out.writeLong(mUptime); out.writeLong(mUptimeStart); @@ -2264,6 +2292,8 @@ public final class BatteryStatsImpl extends BatteryStats { mPhoneOnTimer.logState(); Log.i(TAG, "*** Wifi timer:"); mWifiOnTimer.logState(); + Log.i(TAG, "*** WifiRunning timer:"); + mWifiRunningTimer.logState(); Log.i(TAG, "*** Bluetooth timer:"); mBluetoothOnTimer.logState(); } diff --git a/services/java/com/android/server/WifiService.java b/services/java/com/android/server/WifiService.java index ddf92e2a9d37..6323e2f1501f 100644 --- a/services/java/com/android/server/WifiService.java +++ b/services/java/com/android/server/WifiService.java @@ -50,7 +50,6 @@ import android.os.PowerManager; import android.os.RemoteException; import android.provider.Settings; import android.util.Log; -import android.telephony.TelephonyManager; import android.text.TextUtils; import java.util.ArrayList; @@ -64,7 +63,6 @@ import java.io.FileDescriptor; import java.io.PrintWriter; import com.android.internal.app.IBatteryStats; -import com.android.internal.os.BatteryStatsImpl; import com.android.server.am.BatteryStatsService; /** @@ -1874,24 +1872,26 @@ public class WifiService extends IWifiManager.Stub { } private boolean releaseWifiLockLocked(IBinder lock) { - boolean result; + boolean hadLock; WifiLock wifiLock = mLocks.removeLock(lock); - result = (wifiLock != null); - - int uid = Binder.getCallingUid(); - long ident = Binder.clearCallingIdentity(); - try { - switch(wifiLock.mLockMode) { - case (WifiManager.WIFI_MODE_FULL): mBatteryStats.noteFullWifiLockReleased(uid); - case (WifiManager.WIFI_MODE_SCAN_ONLY): mBatteryStats.noteScanWifiLockReleased(uid); + hadLock = (wifiLock != null); + + if (hadLock) { + int uid = Binder.getCallingUid(); + long ident = Binder.clearCallingIdentity(); + try { + switch(wifiLock.mLockMode) { + case (WifiManager.WIFI_MODE_FULL): mBatteryStats.noteFullWifiLockReleased(uid); + case (WifiManager.WIFI_MODE_SCAN_ONLY): mBatteryStats.noteScanWifiLockReleased(uid); + } + } catch (RemoteException e) { + } finally { + Binder.restoreCallingIdentity(ident); } - } catch (RemoteException e) { - } finally { - Binder.restoreCallingIdentity(ident); } updateWifiState(); - return result; + return hadLock; } } diff --git a/services/java/com/android/server/am/BatteryStatsService.java b/services/java/com/android/server/am/BatteryStatsService.java index cc9a0af08c80..ee89c09d88b2 100644 --- a/services/java/com/android/server/am/BatteryStatsService.java +++ b/services/java/com/android/server/am/BatteryStatsService.java @@ -162,7 +162,21 @@ public final class BatteryStatsService extends IBatteryStats.Stub { mStats.noteWifiOffLocked(); } } - + + public void noteWifiRunning() { + enforceCallingPermission(); + synchronized (mStats) { + mStats.noteWifiRunningLocked(); + } + } + + public void noteWifiStopped() { + enforceCallingPermission(); + synchronized (mStats) { + mStats.noteWifiStoppedLocked(); + } + } + public void noteBluetoothOn() { enforceCallingPermission(); synchronized (mStats) { diff --git a/wifi/java/android/net/wifi/WifiStateTracker.java b/wifi/java/android/net/wifi/WifiStateTracker.java index 452a8fa91b76..f7a9677a5600 100644 --- a/wifi/java/android/net/wifi/WifiStateTracker.java +++ b/wifi/java/android/net/wifi/WifiStateTracker.java @@ -30,6 +30,8 @@ import android.os.Handler; import android.os.HandlerThread; import android.os.SystemProperties; import android.os.Looper; +import android.os.RemoteException; +import android.os.ServiceManager; import android.provider.Settings; import android.text.TextUtils; import android.util.EventLog; @@ -43,6 +45,7 @@ import android.content.ContentResolver; import android.content.Intent; import android.content.Context; import android.database.ContentObserver; +import com.android.internal.app.IBatteryStats; import java.util.List; import java.util.ArrayList; @@ -244,12 +247,12 @@ public class WifiStateTracker extends NetworkStateTracker { private static final int RUN_STATE_STOPPED = 4; private int mRunState; + private final IBatteryStats mBatteryStats; + private boolean mIsScanOnly; private BluetoothA2dp mBluetoothA2dp; - private boolean mBluetoothScanMode; - private String mInterfaceName; private static String LS = System.getProperty("line.separator"); @@ -316,6 +319,8 @@ public class WifiStateTracker extends NetworkStateTracker { "dhcp." + mInterfaceName + ".dns1", "dhcp." + mInterfaceName + ".dns2" }; + mBatteryStats = IBatteryStats.Stub.asInterface(ServiceManager.getService("batteryinfo")); + } /** @@ -501,7 +506,7 @@ public class WifiStateTracker extends NetworkStateTracker { * Send the tracker a notification that the Wi-Fi driver has been stopped. */ void notifyDriverStopped() { - mRunState = RUN_STATE_STOPPED; + mRunState = RUN_STATE_STOPPED; // Send a driver stopped message to our handler Message.obtain(this, EVENT_DRIVER_STATE_CHANGED, 0, 0).sendToTarget(); @@ -530,6 +535,17 @@ public class WifiStateTracker extends NetworkStateTracker { return mRunState == RUN_STATE_STOPPED || mRunState == RUN_STATE_STOPPING; } + private void noteRunState() { + try { + if (mRunState == RUN_STATE_RUNNING) { + mBatteryStats.noteWifiRunning(); + } else if (mRunState == RUN_STATE_STOPPED) { + mBatteryStats.noteWifiStopped(); + } + } catch (RemoteException ignore) { + } + } + /** * Set the number of allowed radio frequency channels from the system * setting value, if any. @@ -654,6 +670,7 @@ public class WifiStateTracker extends NetworkStateTracker { switch (msg.what) { case EVENT_SUPPLICANT_CONNECTION: mRunState = RUN_STATE_RUNNING; + noteRunState(); checkUseStaticIp(); /* * DHCP requests are blocking, so run them in a separate thread. @@ -721,6 +738,8 @@ public class WifiStateTracker extends NetworkStateTracker { break; case EVENT_SUPPLICANT_DISCONNECT: + mRunState = RUN_STATE_STOPPED; + noteRunState(); int wifiState = mWM.getWifiState(); boolean died = wifiState != WifiManager.WIFI_STATE_DISABLED && wifiState != WifiManager.WIFI_STATE_DISABLING; @@ -1079,6 +1098,7 @@ public class WifiStateTracker extends NetworkStateTracker { } } } + noteRunState(); break; case EVENT_PASSWORD_KEY_MAY_BE_INCORRECT: -- cgit v1.2.3-59-g8ed1b From 07970839eb39a1a18013c8bd15052b761736208e Mon Sep 17 00:00:00 2001 From: Andy McFadden <> Date: Tue, 24 Mar 2009 18:15:57 -0700 Subject: Automated import from //branches/donutburger/...@140700,140700 --- core/java/android/ddm/DdmHandleHeap.java | 44 ++++++++- core/java/android/ddm/DdmHandleHello.java | 51 +++++++++- core/java/android/ddm/DdmHandleProfiling.java | 137 ++++++++++++++++++++++++++ core/java/android/ddm/DdmRegister.java | 1 + core/java/android/os/Debug.java | 8 ++ 5 files changed, 236 insertions(+), 5 deletions(-) create mode 100644 core/java/android/ddm/DdmHandleProfiling.java diff --git a/core/java/android/ddm/DdmHandleHeap.java b/core/java/android/ddm/DdmHandleHeap.java index 54457c215cc2..95fa0a265d15 100644 --- a/core/java/android/ddm/DdmHandleHeap.java +++ b/core/java/android/ddm/DdmHandleHeap.java @@ -20,17 +20,20 @@ import org.apache.harmony.dalvik.ddmc.Chunk; import org.apache.harmony.dalvik.ddmc.ChunkHandler; import org.apache.harmony.dalvik.ddmc.DdmServer; import org.apache.harmony.dalvik.ddmc.DdmVmInternal; +import android.os.Debug; import android.util.Config; import android.util.Log; +import java.io.IOException; import java.nio.ByteBuffer; /** - * Handle thread-related traffic. + * Handle native and virtual heap requests. */ public class DdmHandleHeap extends ChunkHandler { public static final int CHUNK_HPIF = type("HPIF"); public static final int CHUNK_HPSG = type("HPSG"); + public static final int CHUNK_HPDU = type("HPDU"); public static final int CHUNK_NHSG = type("NHSG"); public static final int CHUNK_HPGC = type("HPGC"); public static final int CHUNK_REAE = type("REAE"); @@ -49,6 +52,7 @@ public class DdmHandleHeap extends ChunkHandler { public static void register() { DdmServer.registerHandler(CHUNK_HPIF, mInstance); DdmServer.registerHandler(CHUNK_HPSG, mInstance); + DdmServer.registerHandler(CHUNK_HPDU, mInstance); DdmServer.registerHandler(CHUNK_NHSG, mInstance); DdmServer.registerHandler(CHUNK_HPGC, mInstance); DdmServer.registerHandler(CHUNK_REAE, mInstance); @@ -80,6 +84,8 @@ public class DdmHandleHeap extends ChunkHandler { return handleHPIF(request); } else if (type == CHUNK_HPSG) { return handleHPSGNHSG(request, false); + } else if (type == CHUNK_HPDU) { + return handleHPDU(request); } else if (type == CHUNK_NHSG) { return handleHPSGNHSG(request, true); } else if (type == CHUNK_HPGC) { @@ -97,7 +103,7 @@ public class DdmHandleHeap extends ChunkHandler { } /* - * Handle a "HeaP InFo request". + * Handle a "HeaP InFo" request. */ private Chunk handleHPIF(Chunk request) { ByteBuffer in = wrapChunk(request); @@ -136,6 +142,40 @@ public class DdmHandleHeap extends ChunkHandler { } } + /* + * Handle a "HeaP DUmp" request. + * + * This currently just returns a result code. We could pull up + * the entire contents of the file and return them, but hprof dump + * files can be a few megabytes. + */ + private Chunk handleHPDU(Chunk request) { + ByteBuffer in = wrapChunk(request); + byte result; + + /* get the filename for the output file */ + int len = in.getInt(); + String fileName = getString(in, len); + if (Config.LOGD) + Log.d("ddm-heap", "Heap dump: file='" + fileName + "'"); + + try { + Debug.dumpHprofData(fileName); + result = 0; + } catch (UnsupportedOperationException uoe) { + Log.w("ddm-heap", "hprof dumps not supported in this VM"); + result = -1; + } catch (IOException ioe) { + result = -1; + } catch (RuntimeException ioe) { + result = -1; + } + + /* create a non-empty reply so the handler fires on completion */ + byte[] reply = { result }; + return new Chunk(CHUNK_HPDU, reply, 0, reply.length); + } + /* * Handle a "HeaP Garbage Collection" request. */ diff --git a/core/java/android/ddm/DdmHandleHello.java b/core/java/android/ddm/DdmHandleHello.java index e4d630e4880a..c5d591f633a9 100644 --- a/core/java/android/ddm/DdmHandleHello.java +++ b/core/java/android/ddm/DdmHandleHello.java @@ -26,12 +26,13 @@ import android.os.Debug; import java.nio.ByteBuffer; /** - * Handle a HELO chunk. + * Handle "hello" messages and feature discovery. */ public class DdmHandleHello extends ChunkHandler { public static final int CHUNK_HELO = type("HELO"); public static final int CHUNK_WAIT = type("WAIT"); + public static final int CHUNK_FEAT = type("FEAT"); private static DdmHandleHello mInstance = new DdmHandleHello(); @@ -44,6 +45,7 @@ public class DdmHandleHello extends ChunkHandler { */ public static void register() { DdmServer.registerHandler(CHUNK_HELO, mInstance); + DdmServer.registerHandler(CHUNK_FEAT, mInstance); } /** @@ -73,12 +75,27 @@ public class DdmHandleHello extends ChunkHandler { } /** - * Handle a chunk of data. We're only registered for "HELO". + * Handle a chunk of data. */ public Chunk handleChunk(Chunk request) { if (Config.LOGV) - Log.v("ddm-hello", "Handling " + name(request.type) + " chunk"); + Log.v("ddm-heap", "Handling " + name(request.type) + " chunk"); + int type = request.type; + + if (type == CHUNK_HELO) { + return handleHELO(request); + } else if (type == CHUNK_FEAT) { + return handleFEAT(request); + } else { + throw new RuntimeException("Unknown packet " + + ChunkHandler.name(type)); + } + } + /* + * Handle introductory packet. + */ + private Chunk handleHELO(Chunk request) { if (false) return createFailChunk(123, "This is a test"); @@ -125,6 +142,34 @@ public class DdmHandleHello extends ChunkHandler { return reply; } + /* + * Handle request for list of supported features. + */ + private Chunk handleFEAT(Chunk request) { + // TODO: query the VM to ensure that support for these features + // is actually compiled in + final String[] features = { + "hprof-heap-dump", "method-trace-profiling" + }; + + if (Config.LOGD) + Log.d("ddm-heap", "Got feature list request"); + + int size = 4 + 4 * features.length; + for (int i = features.length-1; i >= 0; i--) + size += features[i].length() * 2; + + ByteBuffer out = ByteBuffer.allocate(size); + out.order(ChunkHandler.CHUNK_ORDER); + out.putInt(features.length); + for (int i = features.length-1; i >= 0; i--) { + out.putInt(features[i].length()); + putString(out, features[i]); + } + + return new Chunk(CHUNK_FEAT, out); + } + /** * Send up a WAIT chunk. The only currently defined value for "reason" * is zero, which means "waiting for a debugger". diff --git a/core/java/android/ddm/DdmHandleProfiling.java b/core/java/android/ddm/DdmHandleProfiling.java new file mode 100644 index 000000000000..beed50507fa2 --- /dev/null +++ b/core/java/android/ddm/DdmHandleProfiling.java @@ -0,0 +1,137 @@ +/* + * Copyright (C) 2009 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.ddm; + +import org.apache.harmony.dalvik.ddmc.Chunk; +import org.apache.harmony.dalvik.ddmc.ChunkHandler; +import org.apache.harmony.dalvik.ddmc.DdmServer; +import android.os.Debug; +import android.util.Config; +import android.util.Log; +import java.io.IOException; +import java.nio.ByteBuffer; + +/** + * Handle profiling requests. + */ +public class DdmHandleProfiling extends ChunkHandler { + + public static final int CHUNK_MPRS = type("MPRS"); + public static final int CHUNK_MPRE = type("MPRE"); + public static final int CHUNK_MPRQ = type("MPRQ"); + + private static DdmHandleProfiling mInstance = new DdmHandleProfiling(); + + + /* singleton, do not instantiate */ + private DdmHandleProfiling() {} + + /** + * Register for the messages we're interested in. + */ + public static void register() { + DdmServer.registerHandler(CHUNK_MPRS, mInstance); + DdmServer.registerHandler(CHUNK_MPRE, mInstance); + DdmServer.registerHandler(CHUNK_MPRQ, mInstance); + } + + /** + * Called when the DDM server connects. The handler is allowed to + * send messages to the server. + */ + public void connected() {} + + /** + * Called when the DDM server disconnects. Can be used to disable + * periodic transmissions or clean up saved state. + */ + public void disconnected() {} + + /** + * Handle a chunk of data. + */ + public Chunk handleChunk(Chunk request) { + if (Config.LOGV) + Log.v("ddm-heap", "Handling " + name(request.type) + " chunk"); + int type = request.type; + + if (type == CHUNK_MPRS) { + return handleMPRS(request); + } else if (type == CHUNK_MPRE) { + return handleMPRE(request); + } else if (type == CHUNK_MPRQ) { + return handleMPRQ(request); + } else { + throw new RuntimeException("Unknown packet " + + ChunkHandler.name(type)); + } + } + + /* + * Handle a "Method PRofiling Start" request. + */ + private Chunk handleMPRS(Chunk request) { + ByteBuffer in = wrapChunk(request); + + int bufferSize = in.getInt(); + int flags = in.getInt(); + int len = in.getInt(); + String fileName = getString(in, len); + if (Config.LOGV) + Log.v("ddm-heap", "Method profiling start: filename='" + fileName + + "', size=" + bufferSize + ", flags=" + flags); + + try { + Debug.startMethodTracing(fileName, bufferSize, flags); + return null; // empty response + } catch (RuntimeException re) { + return createFailChunk(1, re.getMessage()); + } + } + + /* + * Handle a "Method PRofiling End" request. + */ + private Chunk handleMPRE(Chunk request) { + byte result; + + try { + Debug.stopMethodTracing(); + result = 0; + } catch (RuntimeException re) { + Log.w("ddm-heap", "Method profiling end failed: " + + re.getMessage()); + result = 1; + } + + /* create a non-empty reply so the handler fires on completion */ + byte[] reply = { result }; + return new Chunk(CHUNK_MPRE, reply, 0, reply.length); + } + + /* + * Handle a "Method PRofiling Query" request. + */ + private Chunk handleMPRQ(Chunk request) { + int result = Debug.isMethodTracingActive() ? 1 : 0; + + /* create a non-empty reply so the handler fires on completion */ + byte[] reply = { (byte) result }; + return new Chunk(CHUNK_MPRQ, reply, 0, reply.length); + } +} + diff --git a/core/java/android/ddm/DdmRegister.java b/core/java/android/ddm/DdmRegister.java index b7f1ab8dbb35..debf189bb1d0 100644 --- a/core/java/android/ddm/DdmRegister.java +++ b/core/java/android/ddm/DdmRegister.java @@ -50,6 +50,7 @@ public class DdmRegister { DdmHandleThread.register(); DdmHandleHeap.register(); DdmHandleNativeHeap.register(); + DdmHandleProfiling.register(); DdmHandleExit.register(); DdmServer.registrationComplete(); diff --git a/core/java/android/os/Debug.java b/core/java/android/os/Debug.java index 950bb09d03c4..5ea5aaedccaf 100644 --- a/core/java/android/os/Debug.java +++ b/core/java/android/os/Debug.java @@ -363,6 +363,14 @@ href="{@docRoot}guide/developing/tools/traceview.html">Traceview: A Graphical Lo VMDebug.startMethodTracing(pathName, bufferSize, flags); } + /** + * Determine whether method tracing is currently active. + * @hide + */ + public static boolean isMethodTracingActive() { + return VMDebug.isMethodTracingActive(); + } + /** * Stop method tracing. */ -- cgit v1.2.3-59-g8ed1b From 38e98fccfab9592f871f3066f8569c559f1ee226 Mon Sep 17 00:00:00 2001 From: Dianne Hackborn <> Date: Tue, 24 Mar 2009 18:18:24 -0700 Subject: Automated import from //branches/donutburger/...@140714,140714 --- api/current.xml | 41 ++++++++++++++++ .../text/method/ArrowKeyMovementMethod.java | 32 +++++++++++++ core/java/android/text/method/Touch.java | 22 +++++++-- core/java/android/widget/TextView.java | 56 ++++++++++++++++++++++ 4 files changed, 147 insertions(+), 4 deletions(-) diff --git a/api/current.xml b/api/current.xml index dbfa2b98268d..a68e51021658 100644 --- a/api/current.xml +++ b/api/current.xml @@ -110598,6 +110598,36 @@ deprecated="not deprecated" visibility="public" > + + + + + + + + + + + + + + = 0 && initialScrollY != widget.getScrollY()) || + (initialScrollX >= 0 && initialScrollX != widget.getScrollX())) { + widget.moveCursorToVisibleOffset(); + return true; + } + int x = (int) event.getX(); int y = (int) event.getY(); x -= widget.getTotalPaddingLeft(); y -= widget.getTotalPaddingTop(); + // Clamp the position to inside of the view. + if (x < 0) { + x = 0; + } else if (x >= (widget.getWidth()-widget.getTotalPaddingRight())) { + x = widget.getWidth()-widget.getTotalPaddingRight() - 1; + } + if (y < 0) { + y = 0; + } else if (y >= (widget.getHeight()-widget.getTotalPaddingBottom())) { + y = widget.getHeight()-widget.getTotalPaddingBottom() - 1; + } + x += widget.getScrollX(); y += widget.getScrollY(); Layout layout = widget.getLayout(); int line = layout.getLineForVertical(y); + int off = layout.getOffsetForHorizontal(line, x); + // XXX should do the same adjust for x as we do for the line. + boolean cap = (MetaKeyKeyListener.getMetaState(buffer, KeyEvent.META_SHIFT_ON) == 1) || (MetaKeyKeyListener.getMetaState(buffer, diff --git a/core/java/android/text/method/Touch.java b/core/java/android/text/method/Touch.java index 65036ad46d01..f2fb9cb68d7f 100644 --- a/core/java/android/text/method/Touch.java +++ b/core/java/android/text/method/Touch.java @@ -21,7 +21,6 @@ import android.text.NoCopySpan; import android.text.Layout.Alignment; import android.text.Spannable; import android.view.MotionEvent; -import android.view.View; import android.view.ViewConfiguration; import android.widget.TextView; @@ -82,8 +81,9 @@ public class Touch { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: - buffer.setSpan(new DragState(event.getX(), event.getY()), - 0, 0, Spannable.SPAN_MARK_MARK); + buffer.setSpan(new DragState(event.getX(), event.getY(), + widget.getScrollX(), widget.getScrollY()), + 0, 0, Spannable.SPAN_MARK_MARK); return true; case MotionEvent.ACTION_UP: @@ -142,15 +142,29 @@ public class Touch { return false; } + public static int getInitialScrollX(TextView widget, Spannable buffer) { + DragState[] ds = buffer.getSpans(0, buffer.length(), DragState.class); + return ds.length > 0 ? ds[0].mScrollX : -1; + } + + public static int getInitialScrollY(TextView widget, Spannable buffer) { + DragState[] ds = buffer.getSpans(0, buffer.length(), DragState.class); + return ds.length > 0 ? ds[0].mScrollY : -1; + } + private static class DragState implements NoCopySpan { public float mX; public float mY; + public int mScrollX; + public int mScrollY; public boolean mFarEnough; public boolean mUsed; - public DragState(float x, float y) { + public DragState(float x, float y, int scrollX, int scrollY) { mX = x; mY = y; + mScrollX = scrollX; + mScrollY = scrollY; } } } diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java index 136752b9f3a2..01b65b6adf83 100644 --- a/core/java/android/widget/TextView.java +++ b/core/java/android/widget/TextView.java @@ -5421,6 +5421,62 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener return changed; } + /** + * Move the cursor, if needed, so that it is at an offset that is visible + * to the user. This will not move the cursor if it represents more than + * one character (a selection range). This will only work if the + * TextView contains spannable text; otherwise it will do nothing. + */ + public boolean moveCursorToVisibleOffset() { + if (!(mText instanceof Spannable)) { + return false; + } + int start = Selection.getSelectionStart(mText); + int end = Selection.getSelectionEnd(mText); + if (start != end) { + return false; + } + + // First: make sure the line is visible on screen: + + int line = mLayout.getLineForOffset(start); + + final int top = mLayout.getLineTop(line); + final int bottom = mLayout.getLineTop(line+1); + final int vspace = mBottom - mTop - getExtendedPaddingTop() - getExtendedPaddingBottom(); + int vslack = (bottom - top) / 2; + if (vslack > vspace / 4) + vslack = vspace / 4; + final int vs = mScrollY; + + if (top < (vs+vslack)) { + line = mLayout.getLineForVertical(vs+vslack+(bottom-top)); + } else if (bottom > (vspace+vs-vslack)) { + line = mLayout.getLineForVertical(vspace+vs-vslack-(bottom-top)); + } + + // Next: make sure the character is visible on screen: + + final int hspace = mRight - mLeft - getCompoundPaddingLeft() - getCompoundPaddingRight(); + final int hs = mScrollX; + final int leftChar = mLayout.getOffsetForHorizontal(line, hs); + final int rightChar = mLayout.getOffsetForHorizontal(line, hspace+hs); + + int newStart = start; + if (newStart < leftChar) { + newStart = leftChar; + } else if (newStart > rightChar) { + newStart = rightChar; + } + + if (newStart != start) { + Selection.setSelection((Spannable)mText, newStart); + return true; + } + + return false; + } + @Override public void computeScroll() { if (mScroller != null) { -- cgit v1.2.3-59-g8ed1b From 2bed22744281a093ee5e76eab531819f3c62b0bf Mon Sep 17 00:00:00 2001 From: Romain Guy <> Date: Tue, 24 Mar 2009 18:23:21 -0700 Subject: Automated import from //branches/donutburger/...@140741,140741 --- core/java/android/widget/ListView.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/core/java/android/widget/ListView.java b/core/java/android/widget/ListView.java index aced533192a3..fd5556e8fac9 100644 --- a/core/java/android/widget/ListView.java +++ b/core/java/android/widget/ListView.java @@ -2769,6 +2769,8 @@ public class ListView extends AbsListView { final boolean headerDividers = mHeaderDividersEnabled; final boolean footerDividers = mFooterDividersEnabled; final int first = mFirstPosition; + final boolean areAllItemsSelectable = mAreAllItemsSelectable; + final ListAdapter adapter = mAdapter; if (!mStackFromBottom) { int bottom; @@ -2779,7 +2781,10 @@ public class ListView extends AbsListView { (footerDividers || first + i < footerLimit)) { View child = getChildAt(i); bottom = child.getBottom(); - if (bottom < listBottom) { + // Don't draw dividers next to items that are not enabled + if (bottom < listBottom && (areAllItemsSelectable || + (adapter.isEnabled(first + i) && (i == count - 1 || + adapter.isEnabled(first + i + 1))))) { bounds.top = bottom; bounds.bottom = bottom + dividerHeight; drawDivider(canvas, bounds, i); @@ -2795,7 +2800,10 @@ public class ListView extends AbsListView { (footerDividers || first + i < footerLimit)) { View child = getChildAt(i); top = child.getTop(); - if (top > listTop) { + // Don't draw dividers next to items that are not enabled + if (top > listTop && (areAllItemsSelectable || + (adapter.isEnabled(first + i) && (i == count - 1 || + adapter.isEnabled(first + i + 1))))) { bounds.top = top - dividerHeight; bounds.bottom = top; // Give the method the child ABOVE the divider, so we -- cgit v1.2.3-59-g8ed1b From 77323363091b42060bfd697ffb33ce6b3696ad6f Mon Sep 17 00:00:00 2001 From: Jasper Lin <> Date: Tue, 24 Mar 2009 18:24:57 -0700 Subject: Automated import from //branches/donutburger/...@140749,140749 --- core/res/AndroidManifest.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml index 1b145af033f3..9a569a1a6dd0 100644 --- a/core/res/AndroidManifest.xml +++ b/core/res/AndroidManifest.xml @@ -797,7 +797,7 @@ + android:protectionLevel="signatureOrSystem" /> + android:protectionLevel="signatureOrSystem" /> @@ -909,7 +909,7 @@ + android:protectionLevel="signatureOrSystem" /> -- cgit v1.2.3-59-g8ed1b From 9587f8696aa8a2bb6db4f3203a842e06170b62c3 Mon Sep 17 00:00:00 2001 From: John Huang <> Date: Tue, 24 Mar 2009 18:26:27 -0700 Subject: Automated import from //branches/donutburger/...@140756,140756 --- .../android/internal/telephony/gsm/ApnSetting.java | 8 +- .../telephony/gsm/DataConnectionTracker.java | 87 ++++++++++++++++++++++ 2 files changed, 94 insertions(+), 1 deletion(-) diff --git a/telephony/java/com/android/internal/telephony/gsm/ApnSetting.java b/telephony/java/com/android/internal/telephony/gsm/ApnSetting.java index 2f9141191f0e..3ca39de65dd1 100644 --- a/telephony/java/com/android/internal/telephony/gsm/ApnSetting.java +++ b/telephony/java/com/android/internal/telephony/gsm/ApnSetting.java @@ -32,11 +32,15 @@ public class ApnSetting { String user; String password; String[] types; + int id; + String numeric; - ApnSetting(String carrier, String apn, String proxy, String port, + ApnSetting(int id, String numeric, String carrier, String apn, String proxy, String port, String mmsc, String mmsProxy, String mmsPort, String user, String password, String[] types) { + this.id = id; + this.numeric = numeric; this.carrier = carrier; this.apn = apn; this.proxy = proxy; @@ -52,6 +56,8 @@ public class ApnSetting { public String toString() { StringBuilder sb = new StringBuilder(); sb.append(carrier) + .append(", ").append(id) + .append(", ").append(numeric) .append(", ").append(apn) .append(", ").append(proxy) .append(", ").append(mmsc) diff --git a/telephony/java/com/android/internal/telephony/gsm/DataConnectionTracker.java b/telephony/java/com/android/internal/telephony/gsm/DataConnectionTracker.java index 30b1be89a75f..999a508d8a84 100644 --- a/telephony/java/com/android/internal/telephony/gsm/DataConnectionTracker.java +++ b/telephony/java/com/android/internal/telephony/gsm/DataConnectionTracker.java @@ -20,6 +20,7 @@ import android.app.AlarmManager; import android.app.PendingIntent; import android.content.BroadcastReceiver; import android.content.ContentResolver; +import android.content.ContentValues; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; @@ -28,6 +29,7 @@ import android.database.ContentObserver; import android.database.Cursor; import android.net.NetworkInfo; import android.net.wifi.WifiManager; +import android.net.Uri; import android.os.AsyncResult; import android.os.Handler; import android.os.INetStatService; @@ -149,6 +151,8 @@ final class DataConnectionTracker extends Handler */ private ArrayList waitingApns = null; + private ApnSetting preferredApn = null; + /** * pdpList holds all the PDP connection, i.e. IP Link in GPRS */ @@ -255,6 +259,10 @@ final class DataConnectionTracker extends Handler static final int EVENT_PS_RESTRICT_ENABLED = 30; static final int EVENT_PS_RESTRICT_DISABLED = 31; + static final Uri PREFERAPN_URI = Uri.parse("content://telephony/carriers/preferapn"); + static final String APN_ID = "apn_id"; + private boolean canSetPreferApn = false; + BroadcastReceiver mIntentReceiver = new BroadcastReceiver () { @Override @@ -787,6 +795,8 @@ final class DataConnectionTracker extends Handler String[] types = parseTypes( cursor.getString(cursor.getColumnIndexOrThrow(Telephony.Carriers.TYPE))); ApnSetting apn = new ApnSetting( + cursor.getInt(cursor.getColumnIndexOrThrow(Telephony.Carriers._ID)), + cursor.getString(cursor.getColumnIndexOrThrow(Telephony.Carriers.NUMERIC)), cursor.getString(cursor.getColumnIndexOrThrow(Telephony.Carriers.NAME)), cursor.getString(cursor.getColumnIndexOrThrow(Telephony.Carriers.APN)), cursor.getString(cursor.getColumnIndexOrThrow(Telephony.Carriers.PROXY)), @@ -1459,6 +1469,11 @@ final class DataConnectionTracker extends Handler } if (isApnTypeActive(Phone.APN_TYPE_DEFAULT)) { SystemProperties.set("gsm.defaultpdpcontext.active", "true"); + if (canSetPreferApn && preferredApn == null) { + Log.d(LOG_TAG, "PREFERED APN is null"); + preferredApn = mActiveApn; + setPreferredApn(preferredApn.id); + } } else { SystemProperties.set("gsm.defaultpdpcontext.active", "false"); } @@ -1679,6 +1694,13 @@ final class DataConnectionTracker extends Handler if (allApns.isEmpty()) { if (DBG) log("No APN found for carrier: " + operator); notifyNoData(PdpConnection.PdpFailCause.BAD_APN); + } else { + preferredApn = getPreferredApn(); + Log.d(LOG_TAG, "Get PreferredAPN"); + if (preferredApn != null && !preferredApn.numeric.equals(operator)) { + preferredApn = null; + setPreferredApn(-1); + } } } @@ -1699,6 +1721,22 @@ final class DataConnectionTracker extends Handler */ private ArrayList buildWaitingApns() { ArrayList apnList = new ArrayList(); + String operator = phone.mSIMRecords.getSIMOperatorNumeric(); + + if (mRequestedApnType.equals(Phone.APN_TYPE_DEFAULT)) { + if (canSetPreferApn && preferredApn != null) { + Log.i(LOG_TAG, "Preferred APN:" + operator + ":" + + preferredApn.numeric + ":" + preferredApn); + if (preferredApn.numeric.equals(operator)) { + Log.i(LOG_TAG, "Waiting APN set to preferred APN"); + apnList.add(preferredApn); + return apnList; + } else { + setPreferredApn(-1); + preferredApn = null; + } + } + } if (allApns != null) { for (ApnSetting apn : allApns) { @@ -1745,4 +1783,53 @@ final class DataConnectionTracker extends Handler reconnectAfterFail(cause, reason); } } + + private void setPreferredApn(int pos) { + if (!canSetPreferApn) { + return; + } + + ContentResolver resolver = phone.getContext().getContentResolver(); + resolver.delete(PREFERAPN_URI, null, null); + + if (pos >= 0) { + ContentValues values = new ContentValues(); + values.put(APN_ID, pos); + resolver.insert(PREFERAPN_URI, values); + } + } + + private ApnSetting getPreferredApn() { + if (allApns.isEmpty()) { + return null; + } + + Cursor cursor = phone.getContext().getContentResolver().query( + PREFERAPN_URI, new String[] { "_id", "name", "apn" }, + null, null, Telephony.Carriers.DEFAULT_SORT_ORDER); + + if (cursor != null) { + canSetPreferApn = true; + } else { + canSetPreferApn = false; + } + + if (canSetPreferApn && cursor.getCount() > 0) { + int pos; + cursor.moveToFirst(); + pos = cursor.getInt(cursor.getColumnIndexOrThrow(Telephony.Carriers._ID)); + for(ApnSetting p:allApns) { + if (p.id == pos) { + cursor.close(); + return p; + } + } + } + + if (cursor != null) { + cursor.close(); + } + + return null; + } } -- cgit v1.2.3-59-g8ed1b From ce8f3a8eca07291bf0f8f187b0d677204a897111 Mon Sep 17 00:00:00 2001 From: Satoshi Kataoka <> Date: Tue, 24 Mar 2009 18:27:59 -0700 Subject: Automated import from //branches/donutburger/...@140765,140765 --- .../android/internal/widget/EditStyledText.java | 733 ++++++++++++++++----- 1 file changed, 559 insertions(+), 174 deletions(-) diff --git a/core/java/com/android/internal/widget/EditStyledText.java b/core/java/com/android/internal/widget/EditStyledText.java index 8a4675a4c82f..b7af4e45a240 100644 --- a/core/java/com/android/internal/widget/EditStyledText.java +++ b/core/java/com/android/internal/widget/EditStyledText.java @@ -23,14 +23,21 @@ import android.net.Uri; import android.os.Bundle; import android.text.Editable; import android.text.Html; +import android.text.Layout; import android.text.Spannable; +import android.text.method.ArrowKeyMovementMethod; import android.text.style.AbsoluteSizeSpan; +import android.text.style.AlignmentSpan; import android.text.style.ForegroundColorSpan; import android.text.style.ImageSpan; import android.util.AttributeSet; import android.util.Log; +import android.view.KeyEvent; import android.view.MotionEvent; +import android.view.View; +import android.view.inputmethod.InputMethodManager; import android.widget.EditText; +import android.widget.TextView; /** * EditStyledText extends EditText for managing the flow and status to edit @@ -57,6 +64,10 @@ public class EditStyledText extends EditText { public static final int MODE_COLOR = 4; /** The mode of selection. */ public static final int MODE_SELECT = 5; + /** The mode of changing alignment. */ + public static final int MODE_ALIGN = 6; + /** The mode of changing cut. */ + public static final int MODE_CUT = 7; /** * The state of selection. @@ -85,6 +96,7 @@ public class EditStyledText extends EditText { */ public interface EditStyledTextNotifier { public void notifyHintMsg(int msgId); + public void notifyStateChanged(int mode, int state); } private EditStyledTextNotifier mESTInterface; @@ -167,14 +179,23 @@ public class EditStyledText extends EditText { sizesendints); } + public void setAlignAlertParams(CharSequence aligntitle, + CharSequence[] alignnames) { + mToast.setAlignAlertParams(aligntitle, alignnames); + } + @Override public boolean onTouchEvent(MotionEvent event) { + if (mManager.isSoftKeyBlocked() && + event.getAction() == MotionEvent.ACTION_UP) { + cancelLongPress(); + } final boolean superResult = super.onTouchEvent(event); if (event.getAction() == MotionEvent.ACTION_UP) { if (DBG) { Log.d(LOG_TAG, "--- onTouchEvent"); } - mManager.onTouchScreen(); + mManager.onCursorMoved(); } return superResult; } @@ -201,6 +222,13 @@ public class EditStyledText extends EditText { mManager.onStartCopy(); } + /** + * Start "Cut" action. + */ + public void onStartCut() { + mManager.onStartCut(); + } + /** * Start "Paste" action. */ @@ -222,6 +250,13 @@ public class EditStyledText extends EditText { mManager.onStartColor(); } + /** + * Start changing "Alignment" action. + */ + public void onStartAlign() { + mManager.onStartAlign(); + } + /** * Start "Select" action. */ @@ -236,6 +271,13 @@ public class EditStyledText extends EditText { mManager.onStartSelectAll(); } + /** + * Fix Selected Item. + */ + public void onFixSelectedItem() { + mManager.onFixSelectedItem(); + } + /** * InsertImage to TextView by using URI * @@ -256,13 +298,6 @@ public class EditStyledText extends EditText { mManager.onInsertImage(resId); } - /** - * Fix Selected Item. - */ - public void fixSelectedItem() { - mManager.onFixSelectItem(); - } - /** * Set Size of the Item. * @@ -283,12 +318,8 @@ public class EditStyledText extends EditText { mManager.setItemColor(color); } - public void onShowColorAlert() { - mToast.onShowColorAlertDialog(); - } - - public void onShowSizeAlert() { - mToast.onShowSizeAlertDialog(); + public void setAlignment(Layout.Alignment align) { + mManager.setAlignment(align); } /** @@ -300,6 +331,10 @@ public class EditStyledText extends EditText { return mManager.isEditting(); } + public boolean isSoftKeyBlocked() { + return mManager.isSoftKeyBlocked(); + } + /** * Get the mode of the action. * @@ -318,7 +353,12 @@ public class EditStyledText extends EditText { return mManager.getSelectState(); } - public String getBody() { + /** + * Get the state of the selection. + * + * @return The state of the selection. + */ + public String getHtml() { return mConverter.getConvertedBody(); } @@ -333,6 +373,28 @@ public class EditStyledText extends EditText { mManager = new EditorManager(this); mConverter = new StyledTextConverter(this); mToast = new StyledTextToast(this); + setMovementMethod(new StyledTextArrowKeyMethod(mManager)); + } + + /** + * Show Color Selecting Dialog. + */ + private void onShowColorAlert() { + mToast.onShowColorAlertDialog(); + } + + /** + * Show Size Selecting Dialog. + */ + private void onShowSizeAlert() { + mToast.onShowSizeAlertDialog(); + } + + /** + * Show Alignment Selecting Dialog. + */ + private void onShowAlignAlert() { + mToast.onShowAlignAlertDialog(); } /** @@ -347,6 +409,20 @@ public class EditStyledText extends EditText { } } + /** + * Notify the event that the mode and state are changed. + * + * @param mode + * Mode of the editing action. + * @param state + * Mode of the selection state. + */ + private void notifyStateChanged(int mode, int state) { + if (mESTInterface != null) { + mESTInterface.notifyStateChanged(mode, state); + } + } + @Override public Bundle getInputExtras(boolean create) { Bundle bundle = super.getInputExtras(create); @@ -357,17 +433,16 @@ public class EditStyledText extends EditText { } /** - * Object which manages the flow and status of editing actions. + * EditorManager manages the flow and status of editing actions. */ private class EditorManager { private boolean mEditFlag = false; + private boolean mSoftKeyBlockFlag = false; private int mMode = 0; private int mState = 0; private int mCurStart = 0; private int mCurEnd = 0; private EditStyledText mEST; - private Editable mTextSelectBuffer; - private CharSequence mTextCopyBufer; EditorManager(EditStyledText est) { mEST = est; @@ -375,57 +450,58 @@ public class EditStyledText extends EditText { public void onStartEdit() { if (DBG) { - Log.d(LOG_TAG, "--- onEdit"); + Log.d(LOG_TAG, "--- onStartEdit"); } handleResetEdit(); + mEST.notifyStateChanged(mMode, mState); } public void onEndEdit() { if (DBG) { - Log.d(LOG_TAG, "--- onClickCancel"); + Log.d(LOG_TAG, "--- onEndEdit"); } handleCancel(); + mEST.notifyStateChanged(mMode, mState); } public void onStartCopy() { if (DBG) { - Log.d(LOG_TAG, "--- onClickCopy"); + Log.d(LOG_TAG, "--- onStartCopy"); } handleCopy(); + mEST.notifyStateChanged(mMode, mState); } - public void onStartPaste() { + public void onStartCut() { if (DBG) { - Log.d(LOG_TAG, "--- onClickPaste"); + Log.d(LOG_TAG, "--- onStartCut"); } - handlePaste(); + handleCut(); + mEST.notifyStateChanged(mMode, mState); } - public void onStartSize() { + public void onStartPaste() { if (DBG) { - Log.d(LOG_TAG, "--- onClickSize"); + Log.d(LOG_TAG, "--- onStartPaste"); } - handleSize(); + handlePaste(); + mEST.notifyStateChanged(mMode, mState); } - public void setItemSize(int size) { + public void onStartSize() { if (DBG) { - Log.d(LOG_TAG, "--- onClickSizeItem"); - } - if (mState == STATE_SELECTED || mState == STATE_SELECT_FIX) { - changeSizeSelectedText(size); - handleResetEdit(); + Log.d(LOG_TAG, "--- onStartSize"); } + handleSize(); + mEST.notifyStateChanged(mMode, mState); } - public void setItemColor(int color) { + public void onStartAlign() { if (DBG) { - Log.d(LOG_TAG, "--- onClickColorItem"); - } - if (mState == STATE_SELECTED || mState == STATE_SELECT_FIX) { - changeColorSelectedText(color); - handleResetEdit(); + Log.d(LOG_TAG, "--- onStartAlignRight"); } + handleAlign(); + mEST.notifyStateChanged(mMode, mState); } public void onStartColor() { @@ -433,6 +509,7 @@ public class EditStyledText extends EditText { Log.d(LOG_TAG, "--- onClickColor"); } handleColor(); + mEST.notifyStateChanged(mMode, mState); } public void onStartSelect() { @@ -443,32 +520,36 @@ public class EditStyledText extends EditText { if (mState == STATE_SELECT_OFF) { handleSelect(); } else { - offSelect(); + unsetSelect(); handleSelect(); } + mEST.notifyStateChanged(mMode, mState); } - public void onStartSelectAll() { - if (DBG) { - Log.d(LOG_TAG, "--- onClickSelectAll"); - } - handleSelectAll(); - } - - public void onTouchScreen() { + public void onCursorMoved() { if (DBG) { Log.d(LOG_TAG, "--- onClickView"); } if (mState == STATE_SELECT_ON || mState == STATE_SELECTED) { handleSelect(); + mEST.notifyStateChanged(mMode, mState); + } + } + + public void onStartSelectAll() { + if (DBG) { + Log.d(LOG_TAG, "--- onClickSelectAll"); } + handleSelectAll(); + mEST.notifyStateChanged(mMode, mState); } - public void onFixSelectItem() { + public void onFixSelectedItem() { if (DBG) { Log.d(LOG_TAG, "--- onClickComplete"); } handleComplete(); + mEST.notifyStateChanged(mMode, mState); } public void onInsertImage(Uri uri) { @@ -476,27 +557,65 @@ public class EditStyledText extends EditText { Log.d(LOG_TAG, "--- onInsertImage by URI: " + uri.getPath() + "," + uri.toString()); } - - mEST.getText().append("a"); - mEST.getText().setSpan(new ImageSpan(mEST.getContext(), uri), - mEST.getText().length() - 1, mEST.getText().length(), + int curpos = mEST.getSelectionStart(); + mEST.getText().insert(curpos, "a"); + ImageSpan is = new ImageSpan(mEST.getContext(), uri); + mEST.getText().setSpan(is, + curpos, curpos + 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + mEST.notifyStateChanged(mMode, mState); } public void onInsertImage(int resID) { if (DBG) { Log.d(LOG_TAG, "--- onInsertImage by resID"); } - mEST.getText().append("b"); + int curpos = mEST.getSelectionStart(); + mEST.getText().insert(curpos, "a"); mEST.getText().setSpan(new ImageSpan(mEST.getContext(), resID), - mEST.getText().length() - 1, mEST.getText().length(), + curpos, curpos + 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + mEST.notifyStateChanged(mMode, mState); + } + + public void setItemSize(int size) { + if (DBG) { + Log.d(LOG_TAG, "--- onClickSizeItem"); + } + if (mState == STATE_SELECTED || mState == STATE_SELECT_FIX) { + changeSizeSelectedText(size); + handleResetEdit(); + } + } + + public void setItemColor(int color) { + if (DBG) { + Log.d(LOG_TAG, "--- onClickColorItem"); + } + if (mState == STATE_SELECTED || mState == STATE_SELECT_FIX) { + changeColorSelectedText(color); + handleResetEdit(); + } + } + + public void setAlignment(Layout.Alignment align) { + if (DBG) { + Log.d(LOG_TAG, "--- onClickColorItem"); + } + if (mState == STATE_SELECTED || mState == STATE_SELECT_FIX) { + changeAlign(align); + handleResetEdit(); + } } public boolean isEditting() { return mEditFlag; } + public boolean isSoftKeyBlocked() { + return this.mSoftKeyBlockFlag; + } + public int getEditMode() { return mMode; } @@ -505,6 +624,42 @@ public class EditStyledText extends EditText { return mState; } + public int getSelectionStart() { + return mCurStart; + } + + public int getSelectionEnd() { + return mCurEnd; + } + + private void doNextHandle() { + if (DBG) { + Log.d(LOG_TAG, "--- doNextHandle: " + mMode + "," + mState); + } + switch (mMode) { + case MODE_COPY: + handleCopy(); + break; + case MODE_CUT: + handleCut(); + break; + case MODE_PASTE: + handlePaste(); + break; + case MODE_SIZE: + handleSize(); + break; + case MODE_COLOR: + handleColor(); + break; + case MODE_ALIGN: + handleAlign(); + break; + default: + break; + } + } + private void handleCancel() { if (DBG) { Log.d(LOG_TAG, "--- handleCancel"); @@ -512,7 +667,9 @@ public class EditStyledText extends EditText { mMode = MODE_NOTHING; mState = STATE_SELECT_OFF; mEditFlag = false; - offSelect(); + Log.d(LOG_TAG, "--- handleCancel:" + mEST.getInputType()); + unblockSoftKey(); + unsetSelect(); } private void handleComplete() { @@ -525,122 +682,115 @@ public class EditStyledText extends EditText { if (mState == STATE_SELECTED) { mState = STATE_SELECT_FIX; } - switch (mMode) { - case MODE_COPY: - handleCopy(); - break; - case MODE_COLOR: - handleColor(); - break; - case MODE_SIZE: - handleSize(); - break; - default: - break; - } + doNextHandle(); } - private void handleCopy() { + private void handleTextViewFunc(int mode, int id) { if (DBG) { - Log.d(LOG_TAG, "--- handleCopy: " + mMode + "," + mState); + Log.d(LOG_TAG, "--- handleTextView: " + mMode + "," + mState + + "," + id); } if (!mEditFlag) { return; } if (mMode == MODE_NOTHING || mMode == MODE_SELECT) { - mMode = MODE_COPY; + mMode = mode; if (mState == STATE_SELECTED) { mState = STATE_SELECT_FIX; - storeSelectedText(); + handleTextViewFunc(mode, id); } else { handleSelect(); } - } else if (mMode != MODE_COPY) { + } else if (mMode != mode) { handleCancel(); - mMode = MODE_COPY; - handleCopy(); + mMode = mode; + handleTextViewFunc(mode, id); } else if (mState == STATE_SELECT_FIX) { - mEST.setHintMessage(HINT_MSG_NULL); - storeSelectedText(); + mEST.onTextContextMenuItem(id); handleResetEdit(); } } - private void handlePaste() { + private void handleCopy() { if (DBG) { - Log.d(LOG_TAG, "--- handlePaste"); - } - if (!mEditFlag) { - return; + Log.d(LOG_TAG, "--- handleCopy: " + mMode + "," + mState); } - if (mTextSelectBuffer != null && mTextCopyBufer.length() > 0) { - mTextSelectBuffer.insert(mEST.getSelectionStart(), - mTextCopyBufer); - } else { - mEST.setHintMessage(HINT_MSG_COPY_BUF_BLANK); + handleTextViewFunc(MODE_COPY, android.R.id.copy); + } + + private void handleCut() { + if (DBG) { + Log.d(LOG_TAG, "--- handleCopy: " + mMode + "," + mState); } + handleTextViewFunc(MODE_CUT, android.R.id.cut); } - private void handleSize() { + private void handlePaste() { if (DBG) { - Log.d(LOG_TAG, "--- handleSize: " + mMode + "," + mState); + Log.d(LOG_TAG, "--- handlePaste"); } if (!mEditFlag) { - Log.e(LOG_TAG, "--- Editing is not started for handlesize."); return; } - if (mMode == MODE_NOTHING || mMode == MODE_SELECT) { - mMode = MODE_SIZE; - if (mState == STATE_SELECTED) { - mState = STATE_SELECT_FIX; - handleSize(); - } else { - handleSelect(); - } - } else if (mMode != MODE_SIZE) { - handleCancel(); - mMode = MODE_SIZE; - handleSize(); - } else { - if (mState == STATE_SELECT_FIX) { - mEST.setHintMessage(HINT_MSG_NULL); - mEST.onShowSizeAlert(); - } else { - Log.d(LOG_TAG, "--- handlesize: do nothing"); - } - } + mEST.onTextContextMenuItem(android.R.id.paste); } - private void handleColor() { + private void handleSetSpan(int mode) { if (DBG) { - Log.d(LOG_TAG, "--- handleSize: " + mMode + "," + mState); + Log.d(LOG_TAG, "--- handleSetSpan:" + mEditFlag + "," + + mState + ',' + mMode); } if (!mEditFlag) { - Log.e(LOG_TAG, "--- Editing is not started for handlecolor."); + Log.e(LOG_TAG, "--- handleSetSpan: Editing is not started."); return; } if (mMode == MODE_NOTHING || mMode == MODE_SELECT) { - mMode = MODE_COLOR; + mMode = mode; if (mState == STATE_SELECTED) { mState = STATE_SELECT_FIX; - handleColor(); + handleSetSpan(mode); } else { handleSelect(); } - } else if (mMode != MODE_COLOR) { + } else if (mMode != mode) { handleCancel(); - mMode = MODE_COLOR; - handleSize(); + mMode = mode; + handleSetSpan(mode); } else { if (mState == STATE_SELECT_FIX) { mEST.setHintMessage(HINT_MSG_NULL); - mEST.onShowColorAlert(); + switch (mode) { + case MODE_COLOR: + mEST.onShowColorAlert(); + break; + case MODE_SIZE: + mEST.onShowSizeAlert(); + break; + case MODE_ALIGN: + mEST.onShowAlignAlert(); + break; + default: + Log.e(LOG_TAG, "--- handleSetSpan: invalid mode."); + break; + } } else { - Log.d(LOG_TAG, "--- handlecolor: do nothing"); + Log.d(LOG_TAG, "--- handleSetSpan: do nothing."); } } } + private void handleSize() { + handleSetSpan(MODE_SIZE); + } + + private void handleColor() { + handleSetSpan(MODE_COLOR); + } + + private void handleAlign() { + handleSetSpan(MODE_ALIGN); + } + private void handleSelect() { if (DBG) { Log.d(LOG_TAG, "--- handleSelect:" + mEditFlag + "," + mState); @@ -653,19 +803,20 @@ public class EditStyledText extends EditText { Log.e(LOG_TAG, "Selection is off, but selected"); } setSelectStartPos(); + blockSoftKey(); mEST.setHintMessage(HINT_MSG_SELECT_END); } else if (mState == STATE_SELECT_ON) { if (isTextSelected()) { Log.e(LOG_TAG, "Selection now start, but selected"); } - setSelectEndPos(); + setSelectedEndPos(); mEST.setHintMessage(HINT_MSG_PUSH_COMPETE); doNextHandle(); } else if (mState == STATE_SELECTED) { if (!isTextSelected()) { Log.e(LOG_TAG, "Selection is done, but not selected"); } - setSelectEndPos(); + setSelectedEndPos(); doNextHandle(); } } @@ -678,28 +829,7 @@ public class EditStyledText extends EditText { return; } mEST.selectAll(); - } - - private void doNextHandle() { - if (DBG) { - Log.d(LOG_TAG, "--- doNextHandle: " + mMode + "," + mState); - } - switch (mMode) { - case MODE_COPY: - handleCopy(); - break; - case MODE_PASTE: - handlePaste(); - break; - case MODE_SIZE: - handleSize(); - break; - case MODE_COLOR: - handleColor(); - break; - default: - break; - } + mState = STATE_SELECTED; } private void handleResetEdit() { @@ -711,14 +841,17 @@ public class EditStyledText extends EditText { mEST.setHintMessage(HINT_MSG_SELECT_START); } - // Methods of selection - private void onSelect() { + private void setSelection() { if (DBG) { Log.d(LOG_TAG, "--- onSelect:" + mCurStart + "," + mCurEnd); } if (mCurStart >= 0 && mCurStart <= mEST.getText().length() && mCurEnd >= 0 && mCurEnd <= mEST.getText().length()) { - mEST.setSelection(mCurStart, mCurEnd); + if (mCurStart < mCurEnd) { + mEST.setSelection(mCurStart, mCurEnd); + } else { + mEST.setSelection(mCurEnd, mCurStart); + } mState = STATE_SELECTED; } else { Log.e(LOG_TAG, @@ -728,7 +861,7 @@ public class EditStyledText extends EditText { } } - private void offSelect() { + private void unsetSelect() { if (DBG) { Log.d(LOG_TAG, "--- offSelect"); } @@ -745,22 +878,23 @@ public class EditStyledText extends EditText { mState = STATE_SELECT_ON; } - private void setSelectEndPos() { + private void setSelectedEndPos() { if (DBG) { - Log.d(LOG_TAG, "--- setSelectEndPos:" - + mEST.getSelectionStart()); + Log.d(LOG_TAG, "--- setSelectEndPos:"); } - int curpos = mEST.getSelectionStart(); - if (curpos < mCurStart) { - if (DBG) { - Log.d(LOG_TAG, "--- setSelectEndPos: swap is done."); - } - mCurEnd = mCurStart; - mCurStart = curpos; + if (mEST.getSelectionStart() == mCurStart) { + setSelectedEndPos(mEST.getSelectionEnd()); } else { - mCurEnd = curpos; + setSelectedEndPos(mEST.getSelectionStart()); + } + } + + public void setSelectedEndPos(int pos) { + if (DBG) { + Log.d(LOG_TAG, "--- setSelectedEndPos:"); } - onSelect(); + mCurEnd = pos; + setSelection(); } private boolean isTextSelected() { @@ -773,30 +907,93 @@ public class EditStyledText extends EditText { mState == STATE_SELECT_FIX); } - private void storeSelectedText() { + private void setStyledTextSpan(Object span, int start, int end) { if (DBG) { - Log.d(LOG_TAG, "--- storeSelectedText"); + Log.d(LOG_TAG, "--- setStyledTextSpan:" + mMode + "," + + start + "," + end); } - mTextSelectBuffer = mEST.getText(); - mTextCopyBufer = mTextSelectBuffer.subSequence(mCurStart, mCurEnd); + mEST.getText().setSpan(span, start, end, + Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); } private void changeSizeSelectedText(int size) { if (DBG) { - Log.d(LOG_TAG, "--- changeSizeSelectedText:" + size + "," - + mCurStart + "," + mCurEnd); + Log.d(LOG_TAG, "--- changeAlign:" + size); } - mEST.getText().setSpan(new AbsoluteSizeSpan(size), mCurStart, - mCurEnd, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + setStyledTextSpan(new AbsoluteSizeSpan(size), + mCurStart, mCurEnd); } private void changeColorSelectedText(int color) { if (DBG) { - Log.d(LOG_TAG, "--- changeCollorSelectedText:" + color + "," - + mCurStart + "," + mCurEnd); + Log.d(LOG_TAG, "--- changeAlign:" + color); + } + setStyledTextSpan(new ForegroundColorSpan(color), + mCurStart, mCurEnd); + } + + private void changeAlign(Layout.Alignment align) { + if (DBG) { + Log.d(LOG_TAG, "--- changeAlign:" + align); + } + setStyledTextSpan(new AlignmentSpan.Standard(align), + findLineStart(mEST.getText(), mCurStart), + findLineEnd(mEST.getText(), mCurEnd)); + } + + private int findLineStart(Editable text, int current) { + if (DBG) { + Log.d(LOG_TAG, "--- findLineStart: curr:" + current + + ", length:" + text.length()); + } + int pos = current; + for (; pos > 0; pos--) { + if (text.charAt(pos) == '\n') { + pos++; + break; + } + } + return pos; + } + + private int findLineEnd(Editable text, int current) { + if (DBG) { + Log.d(LOG_TAG, "--- findLineEnd: curr:" + current + + ", length:" + text.length()); + } + int pos = current; + for (; pos < text.length(); pos++) { + if (text.charAt(pos) == '\n') { + pos--; + break; + } + } + return pos; + } + + private void blockSoftKey() { + if (DBG) { + Log.d(LOG_TAG, "--- blockSoftKey:"); } - mEST.getText().setSpan(new ForegroundColorSpan(color), mCurStart, - mCurEnd, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + InputMethodManager imm = (InputMethodManager) mEST.getContext(). + getSystemService(Context.INPUT_METHOD_SERVICE); + imm.hideSoftInputFromWindow(mEST.getWindowToken(), 0); + mEST.setOnClickListener( + new OnClickListener() { + public void onClick(View v) { + Log.d(LOG_TAG, "--- ontrackballclick:"); + onFixSelectedItem(); + } + }); + mSoftKeyBlockFlag = true; + } + + private void unblockSoftKey() { + if (DBG) { + Log.d(LOG_TAG, "--- unblockSoftKey:"); + } + mEST.setOnClickListener(null); + this.mSoftKeyBlockFlag = false; } } @@ -809,6 +1006,9 @@ public class EditStyledText extends EditText { public String getConvertedBody() { String htmlBody = Html.toHtml(mEST.getText()); + if (DBG) { + Log.d(LOG_TAG, "--- getConvertedBody:" + htmlBody); + } return htmlBody; } } @@ -817,11 +1017,13 @@ public class EditStyledText extends EditText { Builder mBuilder; CharSequence mColorTitle; CharSequence mSizeTitle; + CharSequence mAlignTitle; CharSequence[] mColorNames; CharSequence[] mColorInts; CharSequence[] mSizeNames; CharSequence[] mSizeDisplayInts; CharSequence[] mSizeSendInts; + CharSequence[] mAlignNames; EditStyledText mEST; public StyledTextToast(EditStyledText est) { @@ -848,6 +1050,12 @@ public class EditStyledText extends EditText { mSizeSendInts = sizesendints; } + public void setAlignAlertParams(CharSequence aligntitle, + CharSequence[] alignnames) { + mAlignTitle = aligntitle; + mAlignNames = alignnames; + } + public boolean checkColorAlertParams() { if (DBG) { Log.d(LOG_TAG, "--- checkParams"); @@ -873,13 +1081,30 @@ public class EditStyledText extends EditText { } if (mBuilder == null) { Log.e(LOG_TAG, "--- builder is null."); + return false; } else if (mSizeTitle == null || mSizeNames == null || mSizeDisplayInts == null || mSizeSendInts == null) { Log.e(LOG_TAG, "--- size alert params are null."); + return false; } else if (mSizeNames.length != mSizeDisplayInts.length && mSizeSendInts.length != mSizeDisplayInts.length) { Log.e(LOG_TAG, "--- the length of size alert params are " + "different."); + return false; + } + return true; + } + + public boolean checkAlignAlertParams() { + if (DBG) { + Log.d(LOG_TAG, "--- checkAlignAlertParams"); + } + if (mBuilder == null) { + Log.e(LOG_TAG, "--- builder is null."); + return false; + } else if (mAlignTitle == null) { + Log.e(LOG_TAG, "--- align alert params are null."); + return false; } return true; } @@ -919,7 +1144,7 @@ public class EditStyledText extends EditText { setItems(mSizeNames, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { - Log.d("EETVM", "mBuilder.onclick:" + which); + Log.d(LOG_TAG, "mBuilder.onclick:" + which); int size = Integer .parseInt((String) mSizeDisplayInts[which]); mEST.setItemSize(size); @@ -927,5 +1152,165 @@ public class EditStyledText extends EditText { }); mBuilder.show(); } + + private void onShowAlignAlertDialog() { + if (DBG) { + Log.d(LOG_TAG, "--- onShowAlertDialog"); + } + if (!checkAlignAlertParams()) { + return; + } + mBuilder.setTitle(mAlignTitle); + mBuilder.setIcon(0); + mBuilder. + setItems(mAlignNames, + new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int which) { + Log.d(LOG_TAG, "mBuilder.onclick:" + which); + Layout.Alignment align = Layout.Alignment.ALIGN_NORMAL; + switch (which) { + case 0: + align = Layout.Alignment.ALIGN_NORMAL; + break; + case 1: + align = Layout.Alignment.ALIGN_CENTER; + break; + case 2: + align = Layout.Alignment.ALIGN_OPPOSITE; + break; + default: + break; + } + mEST.setAlignment(align); + } + }); + mBuilder.show(); + } + } + + private class StyledTextArrowKeyMethod extends ArrowKeyMovementMethod { + EditorManager mManager; + StyledTextArrowKeyMethod(EditorManager manager) { + super(); + mManager = manager; + } + + @Override + public boolean onKeyDown(TextView widget, Spannable buffer, + int keyCode, KeyEvent event) { + if (!mManager.isSoftKeyBlocked()) { + return super.onKeyDown(widget, buffer, keyCode, event); + } + if (executeDown(widget, buffer, keyCode)) { + return true; + } + return false; + } + + private int getEndPos(TextView widget) { + int end; + if (widget.getSelectionStart() == mManager.getSelectionStart()) { + end = widget.getSelectionEnd(); + } else { + end = widget.getSelectionStart(); + } + return end; + } + + private boolean up(TextView widget, Spannable buffer) { + if (DBG) { + Log.d(LOG_TAG, "--- up:"); + } + Layout layout = widget.getLayout(); + int end = getEndPos(widget); + int line = layout.getLineForOffset(end); + if (line > 0) { + int to; + if (layout.getParagraphDirection(line) == + layout.getParagraphDirection(line - 1)) { + float h = layout.getPrimaryHorizontal(end); + to = layout.getOffsetForHorizontal(line - 1, h); + } else { + to = layout.getLineStart(line - 1); + } + mManager.setSelectedEndPos(to); + mManager.onCursorMoved(); + return true; + } + return false; + } + + private boolean down(TextView widget, Spannable buffer) { + if (DBG) { + Log.d(LOG_TAG, "--- down:"); + } + Layout layout = widget.getLayout(); + int end = getEndPos(widget); + int line = layout.getLineForOffset(end); + if (line < layout.getLineCount() - 1) { + int to; + if (layout.getParagraphDirection(line) == + layout.getParagraphDirection(line + 1)) { + float h = layout.getPrimaryHorizontal(end); + to = layout.getOffsetForHorizontal(line + 1, h); + } else { + to = layout.getLineStart(line + 1); + } + mManager.setSelectedEndPos(to); + mManager.onCursorMoved(); + return true; + } + return false; + } + + private boolean left(TextView widget, Spannable buffer) { + if (DBG) { + Log.d(LOG_TAG, "--- left:"); + } + Layout layout = widget.getLayout(); + int to = layout.getOffsetToLeftOf(getEndPos(widget)); + mManager.setSelectedEndPos(to); + mManager.onCursorMoved(); + return true; + } + + private boolean right(TextView widget, Spannable buffer) { + if (DBG) { + Log.d(LOG_TAG, "--- right:"); + } + Layout layout = widget.getLayout(); + int to = layout.getOffsetToRightOf(getEndPos(widget)); + mManager.setSelectedEndPos(to); + mManager.onCursorMoved(); + return true; + } + + private boolean executeDown(TextView widget, Spannable buffer, + int keyCode) { + if (DBG) { + Log.d(LOG_TAG, "--- executeDown: " + keyCode); + } + boolean handled = false; + + switch (keyCode) { + case KeyEvent.KEYCODE_DPAD_UP: + handled |= up(widget, buffer); + break; + case KeyEvent.KEYCODE_DPAD_DOWN: + handled |= down(widget, buffer); + break; + case KeyEvent.KEYCODE_DPAD_LEFT: + handled |= left(widget, buffer); + break; + case KeyEvent.KEYCODE_DPAD_RIGHT: + handled |= right(widget, buffer); + break; + case KeyEvent.KEYCODE_DPAD_CENTER: + mManager.onFixSelectedItem(); + handled = true; + break; + } + return handled; + } } } -- cgit v1.2.3-59-g8ed1b From 2547afed02e92525a40bd3362240ac338daf87d9 Mon Sep 17 00:00:00 2001 From: Eric Fischer <> Date: Tue, 24 Mar 2009 18:28:46 -0700 Subject: Automated import from //branches/donutburger/...@140778,140778 --- core/res/res/values-ja/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml index 25d906f17a57..e85690098af6 100644 --- a/core/res/res/values-ja/strings.xml +++ b/core/res/res/values-ja/strings.xml @@ -595,7 +595,7 @@ "åˆå‰0時" "åˆå‰0時" - + "%B%-dæ—¥" "%Yå¹´%B%-dæ—¥" @@ -631,7 +631,7 @@ - + "%B%-dæ—¥" "日曜日" -- cgit v1.2.3-59-g8ed1b From c36bde662fd679d4cd74d786655ae39d097daf1c Mon Sep 17 00:00:00 2001 From: Eric Fischer <> Date: Tue, 24 Mar 2009 18:30:27 -0700 Subject: Automated import from //branches/donutburger/...@140780,140780 --- core/java/android/app/DatePickerDialog.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/core/java/android/app/DatePickerDialog.java b/core/java/android/app/DatePickerDialog.java index ee5e0d5b577c..863cbcc4d113 100644 --- a/core/java/android/app/DatePickerDialog.java +++ b/core/java/android/app/DatePickerDialog.java @@ -47,6 +47,7 @@ public class DatePickerDialog extends AlertDialog implements OnClickListener, private final OnDateSetListener mCallBack; private final Calendar mCalendar; private final java.text.DateFormat mDateFormat; + private final java.text.DateFormat mTitleDateFormat; private final String[] mWeekDays; private int mInitialYear; @@ -108,6 +109,8 @@ public class DatePickerDialog extends AlertDialog implements OnClickListener, mWeekDays = symbols.getShortWeekdays(); mDateFormat = DateFormat.getMediumDateFormat(context); + mTitleDateFormat = java.text.DateFormat. + getDateInstance(java.text.DateFormat.FULL); mCalendar = Calendar.getInstance(); updateTitle(mInitialYear, mInitialMonth, mInitialDay); @@ -126,7 +129,7 @@ public class DatePickerDialog extends AlertDialog implements OnClickListener, @Override public void show() { super.show(); - + /* Sometimes the full month is displayed causing the title * to be very long, in those cases ensure it doesn't wrap to * 2 lines (as that looks jumpy) and ensure we ellipsize the end. @@ -160,8 +163,7 @@ public class DatePickerDialog extends AlertDialog implements OnClickListener, mCalendar.set(Calendar.YEAR, year); mCalendar.set(Calendar.MONTH, month); mCalendar.set(Calendar.DAY_OF_MONTH, day); - String weekday = mWeekDays[mCalendar.get(Calendar.DAY_OF_WEEK)]; - setTitle(weekday + ", " + mDateFormat.format(mCalendar.getTime())); + setTitle(mTitleDateFormat.format(mCalendar.getTime())); } @Override -- cgit v1.2.3-59-g8ed1b From d2bf42a96e052019d71f10cba652246fe09e09cb Mon Sep 17 00:00:00 2001 From: Eric Fischer <> Date: Tue, 24 Mar 2009 18:31:12 -0700 Subject: Automated import from //branches/donutburger/...@140781,140781 --- services/java/com/android/server/status/DateView.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/java/com/android/server/status/DateView.java b/services/java/com/android/server/status/DateView.java index 7c44d672171b..78bfd5ee689f 100644 --- a/services/java/com/android/server/status/DateView.java +++ b/services/java/com/android/server/status/DateView.java @@ -4,12 +4,12 @@ import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; -import android.text.format.DateFormat; import android.util.AttributeSet; import android.util.Log; import android.widget.TextView; import android.view.MotionEvent; +import java.text.DateFormat; import java.util.Date; public final class DateView extends TextView { @@ -51,7 +51,7 @@ public final class DateView extends TextView { private final void updateClock() { Date now = new Date(); - setText(DateFormat.getLongDateFormat(getContext()).format(now)); + setText(DateFormat.getDateInstance(DateFormat.LONG).format(now)); } void setUpdates(boolean update) { -- cgit v1.2.3-59-g8ed1b From 1a9f7399bb32c81ad5cc8c9d74ab3065b4a150ac Mon Sep 17 00:00:00 2001 From: Niko Catania <> Date: Tue, 24 Mar 2009 18:32:47 -0700 Subject: Automated import from //branches/donutburger/...@140800,140800 --- media/java/android/media/AudioService.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/media/java/android/media/AudioService.java b/media/java/android/media/AudioService.java index f30aebebc4e5..2e3e46014136 100644 --- a/media/java/android/media/AudioService.java +++ b/media/java/android/media/AudioService.java @@ -567,7 +567,6 @@ public class AudioService extends IAudioService.Stub { /** * @see #setVibrateSetting(int, int) - * @hide */ public static int getValueForVibrateSetting(int existingValue, int vibrateType, int vibrateSetting) { @@ -661,7 +660,6 @@ public class AudioService extends IAudioService.Stub { } /** @see AudioManager#playSoundEffect(int, float) */ - /* @hide FIXME: unhide before release */ public void playSoundEffectVolume(int effectType, float volume) { sendMsg(mAudioHandler, MSG_PLAY_SOUND_EFFECT, SHARED_MSG, SENDMSG_NOOP, effectType, (int) (volume * 1000), null, 0); -- cgit v1.2.3-59-g8ed1b From 8516e44aa7c1c56e07cd5e06eb26d35d7ef8b440 Mon Sep 17 00:00:00 2001 From: Evan Millar <> Date: Tue, 24 Mar 2009 18:33:33 -0700 Subject: Automated import from //branches/donutburger/...@140803,140803 --- preloaded-classes | 1 + 1 file changed, 1 insertion(+) diff --git a/preloaded-classes b/preloaded-classes index f051a1467351..ffcdc87c59fd 100644 --- a/preloaded-classes +++ b/preloaded-classes @@ -590,6 +590,7 @@ android.widget.ZoomButton android.widget.ZoomControls com.android.internal.database.ArrayListCursor com.android.internal.database.SortCursor +com.android.internal.appwidget.IAppWidgetService$Stub com.android.internal.http.multipart.FilePart com.android.internal.http.multipart.MultipartEntity com.android.internal.http.multipart.Part -- cgit v1.2.3-59-g8ed1b From b24b2970a8ff713ece1b732b55cb064cb87eb1c7 Mon Sep 17 00:00:00 2001 From: Mathias Agopian <> Date: Tue, 24 Mar 2009 18:34:22 -0700 Subject: Automated import from //branches/donutburger/...@140807,140807 --- core/res/assets/images/android-logo-mask.png | Bin 0 -> 4932 bytes core/res/assets/images/android-logo-shine.png | Bin 0 -> 20345 bytes core/res/assets/images/android_320x480.png | Bin 3098 -> 0 bytes core/res/assets/images/boot_robot.png | Bin 1001 -> 0 bytes core/res/assets/images/boot_robot_glow.png | Bin 2083 -> 0 bytes core/res/assets/images/cylon_dot.png | Bin 748 -> 0 bytes core/res/assets/images/cylon_left.png | Bin 1283 -> 0 bytes core/res/assets/images/cylon_right.png | Bin 1259 -> 0 bytes libs/surfaceflinger/BootAnimation.cpp | 199 +++----------------------- libs/surfaceflinger/BootAnimation.h | 10 +- 10 files changed, 23 insertions(+), 186 deletions(-) create mode 100644 core/res/assets/images/android-logo-mask.png create mode 100644 core/res/assets/images/android-logo-shine.png delete mode 100644 core/res/assets/images/android_320x480.png delete mode 100644 core/res/assets/images/boot_robot.png delete mode 100644 core/res/assets/images/boot_robot_glow.png delete mode 100644 core/res/assets/images/cylon_dot.png delete mode 100644 core/res/assets/images/cylon_left.png delete mode 100644 core/res/assets/images/cylon_right.png diff --git a/core/res/assets/images/android-logo-mask.png b/core/res/assets/images/android-logo-mask.png new file mode 100644 index 000000000000..e78af5f84238 Binary files /dev/null and b/core/res/assets/images/android-logo-mask.png differ diff --git a/core/res/assets/images/android-logo-shine.png b/core/res/assets/images/android-logo-shine.png new file mode 100644 index 000000000000..98692df45483 Binary files /dev/null and b/core/res/assets/images/android-logo-shine.png differ diff --git a/core/res/assets/images/android_320x480.png b/core/res/assets/images/android_320x480.png deleted file mode 100644 index d2665bb7221a..000000000000 Binary files a/core/res/assets/images/android_320x480.png and /dev/null differ diff --git a/core/res/assets/images/boot_robot.png b/core/res/assets/images/boot_robot.png deleted file mode 100644 index f4555afe7419..000000000000 Binary files a/core/res/assets/images/boot_robot.png and /dev/null differ diff --git a/core/res/assets/images/boot_robot_glow.png b/core/res/assets/images/boot_robot_glow.png deleted file mode 100644 index 2a67a3f0c7a4..000000000000 Binary files a/core/res/assets/images/boot_robot_glow.png and /dev/null differ diff --git a/core/res/assets/images/cylon_dot.png b/core/res/assets/images/cylon_dot.png deleted file mode 100644 index 150b8b162d69..000000000000 Binary files a/core/res/assets/images/cylon_dot.png and /dev/null differ diff --git a/core/res/assets/images/cylon_left.png b/core/res/assets/images/cylon_left.png deleted file mode 100644 index 50c6296fbafd..000000000000 Binary files a/core/res/assets/images/cylon_left.png and /dev/null differ diff --git a/core/res/assets/images/cylon_right.png b/core/res/assets/images/cylon_right.png deleted file mode 100644 index 89b7d719d0bd..000000000000 Binary files a/core/res/assets/images/cylon_right.png and /dev/null differ diff --git a/libs/surfaceflinger/BootAnimation.cpp b/libs/surfaceflinger/BootAnimation.cpp index 2b30336b78b1..03edbf380f94 100644 --- a/libs/surfaceflinger/BootAnimation.cpp +++ b/libs/surfaceflinger/BootAnimation.cpp @@ -187,44 +187,20 @@ bool BootAnimation::threadLoop() { } bool BootAnimation::android() { - initTexture(&mAndroid[0], mAssets, "images/android_320x480.png"); - initTexture(&mAndroid[1], mAssets, "images/boot_robot.png"); - initTexture(&mAndroid[2], mAssets, "images/boot_robot_glow.png"); - - // erase screen - glDisable(GL_SCISSOR_TEST); - glBindTexture(GL_TEXTURE_2D, mAndroid[0].name); + initTexture(&mAndroid[0], mAssets, "images/android-logo-mask.png"); + initTexture(&mAndroid[1], mAssets, "images/android-logo-shine.png"); // clear screen + glDisable(GL_DITHER); + glDisable(GL_SCISSOR_TEST); glClear(GL_COLOR_BUFFER_BIT); eglSwapBuffers(mDisplay, mSurface); // wait ~1s - usleep(800000); - - // fade in - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glTexEnvx(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - const int steps = 8; - for (int i = 1; i < steps; i++) { - float fade = i / float(steps); - glColor4f(1, 1, 1, fade * fade); - glClear(GL_COLOR_BUFFER_BIT); - glDrawTexiOES(0, 0, 0, mAndroid[0].w, mAndroid[0].h); - eglSwapBuffers(mDisplay, mSurface); - } - - // draw last frame - glTexEnvx(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); - glDisable(GL_BLEND); - glDrawTexiOES(0, 0, 0, mAndroid[0].w, mAndroid[0].h); - eglSwapBuffers(mDisplay, mSurface); - // update rect for the robot - const int x = mWidth - mAndroid[1].w - 33; - const int y = (mHeight - mAndroid[1].h) / 2 - 1; - const Rect updateRect(x, y, x + mAndroid[1].w, y + mAndroid[1].h); + const GLint xc = (mWidth - mAndroid[0].w) / 2; + const GLint yc = (mHeight - mAndroid[0].h) / 2; + const Rect updateRect(xc, yc, xc + mAndroid[0].w, yc + mAndroid[0].h); // draw and update only what we need mNativeWindowSurface->setSwapRectangle(updateRect.left, @@ -234,166 +210,31 @@ bool BootAnimation::android() { glScissor(updateRect.left, mHeight - updateRect.bottom, updateRect.width(), updateRect.height()); + // Blend state + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glTexEnvx(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); + const nsecs_t startTime = systemTime(); do { - // glow speed and shape - nsecs_t time = systemTime() - startTime; - float t = ((4.0f / (360.0f * us2ns(16667))) * time); - t = t - floorf(t); - const float fade = 0.5f + 0.5f * sinf(t * 2 * M_PI); + double time = systemTime() - startTime; + float t = 4.0f * float(time / us2ns(16667)) / mAndroid[1].w; + GLint offset = (1 - (t - floorf(t))) * mAndroid[1].w; + GLint x = xc - offset; - // fade the glow in and out glDisable(GL_BLEND); - glBindTexture(GL_TEXTURE_2D, mAndroid[2].name); - glTexEnvx(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - glColor4f(fade, fade, fade, fade); - glDrawTexiOES(updateRect.left, mHeight - updateRect.bottom, 0, - updateRect.width(), updateRect.height()); - - // draw the robot - glEnable(GL_BLEND); glBindTexture(GL_TEXTURE_2D, mAndroid[1].name); - glTexEnvx(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); - glDrawTexiOES(updateRect.left, mHeight - updateRect.bottom, 0, - updateRect.width(), updateRect.height()); + glDrawTexiOES(x, yc, 0, mAndroid[1].w, mAndroid[1].h); + glDrawTexiOES(x + mAndroid[1].w, yc, 0, mAndroid[1].w, mAndroid[1].h); - // make sure sleep a lot to not take too much CPU away from - // the boot process. With this "glow" animation there is no - // visible difference. - usleep(16667 * 4); + glEnable(GL_BLEND); + glBindTexture(GL_TEXTURE_2D, mAndroid[0].name); + glDrawTexiOES(xc, yc, 0, mAndroid[0].w, mAndroid[0].h); eglSwapBuffers(mDisplay, mSurface); } while (!exitPending()); glDeleteTextures(1, &mAndroid[0].name); glDeleteTextures(1, &mAndroid[1].name); - glDeleteTextures(1, &mAndroid[2].name); - return false; -} - -bool BootAnimation::cylon() { - // initialize the textures... - initTexture(&mLeftTrail, mAssets, "images/cylon_left.png"); - initTexture(&mRightTrail, mAssets, "images/cylon_right.png"); - initTexture(&mBrightSpot, mAssets, "images/cylon_dot.png"); - - int w = mWidth; - int h = mHeight; - - const Point c(w / 2, h / 2); - const GLint amplitude = 60; - const int scx = c.x - amplitude - mBrightSpot.w / 2; - const int scy = c.y - mBrightSpot.h / 2; - const int scw = amplitude * 2 + mBrightSpot.w; - const int sch = mBrightSpot.h; - const Rect updateRect(scx, h - scy - sch, scx + scw, h - scy); - - // erase screen - glDisable(GL_SCISSOR_TEST); - glClear(GL_COLOR_BUFFER_BIT); - - eglSwapBuffers(mDisplay, mSurface); - - glClear(GL_COLOR_BUFFER_BIT); - - mNativeWindowSurface->setSwapRectangle(updateRect.left, - updateRect.top, updateRect.width(), updateRect.height()); - - glEnable(GL_SCISSOR_TEST); - glEnable(GL_BLEND); - glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); - - // clear the screen to white - Point p; - float t = 0; - float alpha = 1.0f; - const nsecs_t startTime = systemTime(); - nsecs_t fadeTime = 0; - - do { - // Set scissor in interesting area - glScissor(scx, scy, scw, sch); - - // erase screen - glClear(GL_COLOR_BUFFER_BIT); - - // compute wave - const float a = (t * 2 * M_PI) - M_PI / 2; - const float sn = sinf(a); - const float cs = cosf(a); - GLint x = GLint(amplitude * sn); - float derivative = cs; - - glTexEnvx(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); - - if (derivative > 0) { - // vanishing trail... - p.x = (-amplitude + c.x) - mBrightSpot.w / 2; - p.y = c.y - mLeftTrail.h / 2; - float fade = 2.0f * (0.5f - t); - //fade *= fade; - glColor4f(fade, fade, fade, fade); - glBindTexture(GL_TEXTURE_2D, mLeftTrail.name); - glDrawTexiOES(p.x, p.y, 0, mLeftTrail.w, mLeftTrail.h); - - // trail... - p.x = (x + c.x) - (mRightTrail.w + mBrightSpot.w / 2) + 16; - p.y = c.y - mRightTrail.h / 2; - fade = t < 0.25f ? t * 4.0f : 1.0f; - fade *= fade; - glColor4f(fade, fade, fade, fade); - glBindTexture(GL_TEXTURE_2D, mRightTrail.name); - glDrawTexiOES(p.x, p.y, 0, mRightTrail.w, mRightTrail.h); - } else { - // vanishing trail.. - p.x = (amplitude + c.x) - (mRightTrail.w + mBrightSpot.w / 2) + 16; - p.y = c.y - mRightTrail.h / 2; - float fade = 2.0f * (0.5f - (t - 0.5f)); - //fade *= fade; - glColor4f(fade, fade, fade, fade); - glBindTexture(GL_TEXTURE_2D, mRightTrail.name); - glDrawTexiOES(p.x, p.y, 0, mRightTrail.w, mRightTrail.h); - - // trail... - p.x = (x + c.x) - mBrightSpot.w / 2; - p.y = c.y - mLeftTrail.h / 2; - fade = t < 0.5f + 0.25f ? (t - 0.5f) * 4.0f : 1.0f; - fade *= fade; - glColor4f(fade, fade, fade, fade); - glBindTexture(GL_TEXTURE_2D, mLeftTrail.name); - glDrawTexiOES(p.x, p.y, 0, mLeftTrail.w, mLeftTrail.h); - } - - const Point p(x + c.x - mBrightSpot.w / 2, c.y - mBrightSpot.h / 2); - glBindTexture(GL_TEXTURE_2D, mBrightSpot.name); - glColor4f(1, 0.5, 0.5, 1); - glDrawTexiOES(p.x, p.y, 0, mBrightSpot.w, mBrightSpot.h); - - // update animation - nsecs_t time = systemTime() - startTime; - t = ((4.0f / (360.0f * us2ns(16667))) * time); - t = t - floorf(t); - - eglSwapBuffers(mDisplay, mSurface); - - if (exitPending()) { - if (fadeTime == 0) { - fadeTime = time; - } - time -= fadeTime; - alpha = 1.0f - ((float(time) * 6.0f) / float(s2ns(1))); - - session()->openTransaction(); - mFlingerSurface->setAlpha(alpha * alpha); - session()->closeTransaction(); - } - } while (alpha > 0); - - // cleanup - glFinish(); - glDeleteTextures(1, &mLeftTrail.name); - glDeleteTextures(1, &mRightTrail.name); - glDeleteTextures(1, &mBrightSpot.name); return false; } diff --git a/libs/surfaceflinger/BootAnimation.h b/libs/surfaceflinger/BootAnimation.h index b20cea09a491..3fb6670b3ef4 100644 --- a/libs/surfaceflinger/BootAnimation.h +++ b/libs/surfaceflinger/BootAnimation.h @@ -62,16 +62,12 @@ private: status_t initTexture(Texture* texture, AssetManager& asset, const char* name); bool android(); - bool cylon(); sp mSession; AssetManager mAssets; - Texture mLeftTrail; - Texture mRightTrail; - Texture mBrightSpot; - Texture mAndroid[3]; - int mWidth; - int mHeight; + Texture mAndroid[2]; + int mWidth; + int mHeight; EGLDisplay mDisplay; EGLDisplay mContext; EGLDisplay mSurface; -- cgit v1.2.3-59-g8ed1b From d01721d5ca5bfa943760ed61cc99ca1ffc044c50 Mon Sep 17 00:00:00 2001 From: Niko Catania <> Date: Tue, 24 Mar 2009 18:35:10 -0700 Subject: Automated import from //branches/donutburger/...@140811,140811 --- api/current.xml | 28 ++++++++++++++++++++++++++++ media/java/android/media/AudioTrack.java | 2 -- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/api/current.xml b/api/current.xml index a68e51021658..88b6077bb883 100644 --- a/api/current.xml +++ b/api/current.xml @@ -64924,6 +64924,23 @@ visibility="public" > + + + + + + + + + + Date: Tue, 24 Mar 2009 18:36:00 -0700 Subject: Automated import from //branches/donutburger/...@140817,140817 --- .../android/gdata/client/AndroidGDataClient.java | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/core/java/com/google/android/gdata/client/AndroidGDataClient.java b/core/java/com/google/android/gdata/client/AndroidGDataClient.java index fe7d8601c2e0..998f940e63a1 100644 --- a/core/java/com/google/android/gdata/client/AndroidGDataClient.java +++ b/core/java/com/google/android/gdata/client/AndroidGDataClient.java @@ -51,7 +51,7 @@ public class AndroidGDataClient implements GDataClient { private static final String X_HTTP_METHOD_OVERRIDE = "X-HTTP-Method-Override"; - private static final String USER_AGENT_APP_VERSION = "Android-GData/1.0"; + private static final String DEFAULT_USER_AGENT_APP_VERSION = "Android-GData/1.1"; private static final int MAX_REDIRECTS = 10; @@ -121,7 +121,7 @@ public class AndroidGDataClient implements GDataClient { * @deprecated Use AndroidGDAtaClient(Context) instead. */ public AndroidGDataClient(ContentResolver resolver) { - mHttpClient = new GoogleHttpClient(resolver, USER_AGENT_APP_VERSION, + mHttpClient = new GoogleHttpClient(resolver, DEFAULT_USER_AGENT_APP_VERSION, true /* gzip capable */); mHttpClient.enableCurlLogging(TAG, Log.VERBOSE); mResolver = resolver; @@ -136,7 +136,21 @@ public class AndroidGDataClient implements GDataClient { * SSL session persistence. */ public AndroidGDataClient(Context context) { - mHttpClient = new GoogleHttpClient(context, USER_AGENT_APP_VERSION, + this(context, DEFAULT_USER_AGENT_APP_VERSION); + } + + /** + * Creates a new AndroidGDataClient. + * + * @param context The ContentResolver to get URL rewriting rules from + * through the Android proxy server, using null to indicate not using proxy. + * The context will also be used by GoogleHttpClient for configuration of + * SSL session persistence. + * @param appAndVersion The application name and version to be used as the basis of the + * User-Agent. e.g., Android-GData/1.5.0. + */ + public AndroidGDataClient(Context context, String appAndVersion) { + mHttpClient = new GoogleHttpClient(context, appAndVersion, true /* gzip capable */); mHttpClient.enableCurlLogging(TAG, Log.VERBOSE); mResolver = context.getContentResolver(); -- cgit v1.2.3-59-g8ed1b From 08905cc3362d8737290ceba96077aa2d234ab378 Mon Sep 17 00:00:00 2001 From: Dianne Hackborn <> Date: Tue, 24 Mar 2009 18:36:53 -0700 Subject: Automated import from //branches/donutburger/...@140818,140818 --- media/jni/soundpool/NOTICE | 190 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 190 insertions(+) create mode 100644 media/jni/soundpool/NOTICE diff --git a/media/jni/soundpool/NOTICE b/media/jni/soundpool/NOTICE new file mode 100644 index 000000000000..c5b1efa7aac7 --- /dev/null +++ b/media/jni/soundpool/NOTICE @@ -0,0 +1,190 @@ + + Copyright (c) 2005-2008, The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + -- cgit v1.2.3-59-g8ed1b From f63220f58e29673eba1c6228c04b43fb680af5f2 Mon Sep 17 00:00:00 2001 From: Dianne Hackborn <> Date: Tue, 24 Mar 2009 18:38:43 -0700 Subject: Automated import from //branches/donutburger/...@140828,140828 --- api/current.xml | 11 +++++++++++ core/java/android/content/Intent.java | 23 ++++++++++++++++++---- .../com/android/server/PackageManagerService.java | 8 +++++++- .../android/server/am/ActivityManagerService.java | 6 +----- 4 files changed, 38 insertions(+), 10 deletions(-) diff --git a/api/current.xml b/api/current.xml index 88b6077bb883..d90abbba01bc 100644 --- a/api/current.xml +++ b/api/current.xml @@ -28390,6 +28390,17 @@ visibility="public" > + + not receive this broadcast. *

My include the following extras: *

    *
  • {@link #EXTRA_UID} containing the integer uid assigned to the new package. @@ -1135,6 +1136,17 @@ public class Intent implements Parcelable { */ @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) public static final String ACTION_PACKAGE_ADDED = "android.intent.action.PACKAGE_ADDED"; + /** + * Broadcast Action: A new version of an application package has been + * installed, replacing an existing version that was previously installed. + * The data contains the name of the package. + *

    My include the following extras: + *

      + *
    • {@link #EXTRA_UID} containing the integer uid assigned to the new package. + *
    + */ + @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) + public static final String ACTION_PACKAGE_REPLACED = "android.intent.action.PACKAGE_REPLACED"; /** * Broadcast Action: An existing application package has been removed from * the device. The data contains the name of the package. The package @@ -1163,7 +1175,9 @@ public class Intent implements Parcelable { * Broadcast Action: The user has restarted a package, and all of its * processes have been killed. All runtime state * associated with it (processes, alarms, notifications, etc) should - * be removed. The data contains the name of the package. + * be removed. Note that the restarted package does not + * receive this broadcast. + * The data contains the name of the package. *
      *
    • {@link #EXTRA_UID} containing the integer uid assigned to the package. *
    @@ -1173,8 +1187,9 @@ public class Intent implements Parcelable { /** * Broadcast Action: The user has cleared the data of a package. This should * be preceded by {@link #ACTION_PACKAGE_RESTARTED}, after which all of - * its persistent data is erased and this broadcast sent. The data contains - * the name of the package. + * its persistent data is erased and this broadcast sent. + * Note that the cleared package does not + * receive this broadcast. The data contains the name of the package. *
      *
    • {@link #EXTRA_UID} containing the integer uid assigned to the package. *
    diff --git a/services/java/com/android/server/PackageManagerService.java b/services/java/com/android/server/PackageManagerService.java index 2cf47df57df9..edbb0ce0e746 100644 --- a/services/java/com/android/server/PackageManagerService.java +++ b/services/java/com/android/server/PackageManagerService.java @@ -3248,12 +3248,18 @@ class PackageManagerService extends IPackageManager.Stub { res.removedInfo.sendBroadcast(false, true); Bundle extras = new Bundle(1); extras.putInt(Intent.EXTRA_UID, res.uid); - if (res.removedInfo.removedPackage != null) { + final boolean update = res.removedInfo.removedPackage != null; + if (update) { extras.putBoolean(Intent.EXTRA_REPLACING, true); } sendPackageBroadcast(Intent.ACTION_PACKAGE_ADDED, res.pkg.applicationInfo.packageName, extras); + if (update) { + sendPackageBroadcast(Intent.ACTION_PACKAGE_REPLACED, + res.pkg.applicationInfo.packageName, + extras); + } } Runtime.getRuntime().gc(); } diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java index 9e2ecbac1ce7..da567a8dcee7 100644 --- a/services/java/com/android/server/am/ActivityManagerService.java +++ b/services/java/com/android/server/am/ActivityManagerService.java @@ -10142,11 +10142,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen // this decision. boolean skip = false; if (intent.ACTION_PACKAGE_ADDED.equals(intent.getAction())) { - // If this is replacing an existing package, then we allow it - // to see the broadcast for it to restart itself. - if (!intent.getBooleanExtra(Intent.EXTRA_REPLACING, false)) { - skip = true; - } + skip = true; } else if (intent.ACTION_PACKAGE_RESTARTED.equals(intent.getAction())) { skip = true; } else if (intent.ACTION_PACKAGE_DATA_CLEARED.equals(intent.getAction())) { -- cgit v1.2.3-59-g8ed1b From 128e729c493042d694df9d285ea390e25e2c3fde Mon Sep 17 00:00:00 2001 From: Joe Onorato <> Date: Tue, 24 Mar 2009 18:41:31 -0700 Subject: Automated import from //branches/donutburger/...@140846,140846 --- .../com/android/server/PowerManagerService.java | 235 +++++++++++++-------- 1 file changed, 150 insertions(+), 85 deletions(-) diff --git a/services/java/com/android/server/PowerManagerService.java b/services/java/com/android/server/PowerManagerService.java index 5c7ab930b09c..890c58c197f8 100644 --- a/services/java/com/android/server/PowerManagerService.java +++ b/services/java/com/android/server/PowerManagerService.java @@ -135,8 +135,8 @@ class PowerManagerService extends IPowerManager.Stub implements LocalPowerManage private boolean mDoneBooting = false; private int mStayOnConditions = 0; - private int mNotificationQueue = -1; - private int mNotificationWhy; + private int[] mBroadcastQueue = new int[] { -1, -1, -1 }; + private int[] mBroadcastWhy = new int[3]; private int mPartialCount = 0; private int mPowerState; private boolean mOffBecauseOfUser; @@ -170,6 +170,7 @@ class PowerManagerService extends IPowerManager.Stub implements LocalPowerManage = new BrightnessState(KEYBOARD_BRIGHT_BIT); private final BrightnessState mButtonBrightness = new BrightnessState(BUTTON_BRIGHT_BIT); + private boolean mStillNeedSleepNotification; private boolean mIsPowered = false; private IActivityManager mActivityService; private IBatteryStats mBatteryStats; @@ -390,7 +391,7 @@ class PowerManagerService extends IPowerManager.Stub implements LocalPowerManage mHandler = new Handler(); mBroadcastWakeLock = new UnsynchronizedWakeLock( - PowerManager.PARTIAL_WAKE_LOCK, "sleep_notification", true); + PowerManager.PARTIAL_WAKE_LOCK, "sleep_broadcast", true); mStayOnWhilePluggedInScreenDimLock = new UnsynchronizedWakeLock( PowerManager.SCREEN_DIM_WAKE_LOCK, "StayOnWhilePluggedIn Screen Dim", false); mStayOnWhilePluggedInPartialLock = new UnsynchronizedWakeLock( @@ -798,8 +799,10 @@ class PowerManagerService extends IPowerManager.Stub implements LocalPowerManage + " mStayOnConditions=" + mStayOnConditions); pw.println(" mOffBecauseOfUser=" + mOffBecauseOfUser + " mUserState=" + mUserState); - pw.println(" mNotificationQueue=" + mNotificationQueue - + " mNotificationWhy=" + mNotificationWhy); + pw.println(" mBroadcastQueue={" + mBroadcastQueue[0] + ',' + mBroadcastQueue[1] + + ',' + mBroadcastQueue[2] + "}"); + pw.println(" mBroadcastWhy={" + mBroadcastWhy[0] + ',' + mBroadcastWhy[1] + + ',' + mBroadcastWhy[2] + "}"); pw.println(" mPokey=" + mPokey + " mPokeAwakeonSet=" + mPokeAwakeOnSet); pw.println(" mKeyboardVisible=" + mKeyboardVisible + " mUserActivityAllowed=" + mUserActivityAllowed); @@ -924,29 +927,52 @@ class PowerManagerService extends IPowerManager.Stub implements LocalPowerManage private void sendNotificationLocked(boolean on, int why) { - - if (!on) { - mNotificationWhy = why; + // Add to the queue. + int index = 0; + while (mBroadcastQueue[index] != -1) { + index++; + } + mBroadcastQueue[index] = on ? 1 : 0; + mBroadcastWhy[index] = why; + + // If we added it position 2, then there is a pair that can be stripped. + // If we added it position 1 and we're turning the screen off, we can strip + // the pair and do nothing, because the screen is already off, and therefore + // keyguard has already been enabled. + // However, if we added it at position 1 and we're turning it on, then position + // 0 was to turn it off, and we can't strip that, because keyguard needs to come + // on, so have to run the queue then. + if (index == 2) { + // Also, while we're collapsing them, if it's going to be an "off," and one + // is off because of user, then use that, regardless of whether it's the first + // or second one. + if (!on && why == WindowManagerPolicy.OFF_BECAUSE_OF_USER) { + mBroadcastWhy[0] = WindowManagerPolicy.OFF_BECAUSE_OF_USER; + } + mBroadcastQueue[0] = on ? 1 : 0; + mBroadcastQueue[1] = -1; + mBroadcastQueue[2] = -1; + index = 0; + } + if (index == 1 && !on) { + mBroadcastQueue[0] = -1; + mBroadcastQueue[1] = -1; + index = -1; + // The wake lock was being held, but we're not actually going to do any + // broadcasts, so release the wake lock. + EventLog.writeEvent(LOG_POWER_SCREEN_BROADCAST_STOP, 1, mBroadcastWakeLock.mCount); + mBroadcastWakeLock.release(); } - int value = on ? 1 : 0; - if (mNotificationQueue == -1) { - // empty + // Now send the message. + if (index >= 0) { // Acquire the broadcast wake lock before changing the power // state. It will be release after the broadcast is sent. + // We always increment the ref count for each notification in the queue + // and always decrement when that notification is handled. mBroadcastWakeLock.acquire(); EventLog.writeEvent(LOG_POWER_SCREEN_BROADCAST_SEND, mBroadcastWakeLock.mCount); - mNotificationQueue = value; mHandler.post(mNotificationTask); - } else if (mNotificationQueue != value) { - // it's a pair, so cancel it - mNotificationQueue = -1; - mHandler.removeCallbacks(mNotificationTask); - EventLog.writeEvent(LOG_POWER_SCREEN_BROADCAST_STOP, 1, mBroadcastWakeLock.mCount); - mBroadcastWakeLock.release(); - } else { - // else, same so do nothing -- maybe we should warn? - Log.w(TAG, "Duplicate notification: on=" + on + " why=" + why); } } @@ -954,64 +980,69 @@ class PowerManagerService extends IPowerManager.Stub implements LocalPowerManage { public void run() { - int value; - int why; - WindowManagerPolicy policy; - synchronized (mLocks) { - policy = getPolicyLocked(); - value = mNotificationQueue; - why = mNotificationWhy; - mNotificationQueue = -1; - } - if (value == 1) { - mScreenOnStart = SystemClock.uptimeMillis(); - - policy.screenTurnedOn(); - try { - ActivityManagerNative.getDefault().wakingUp(); - } catch (RemoteException e) { - // ignore it + while (true) { + int value; + int why; + WindowManagerPolicy policy; + synchronized (mLocks) { + value = mBroadcastQueue[0]; + why = mBroadcastWhy[0]; + for (int i=0; i<2; i++) { + mBroadcastQueue[i] = mBroadcastQueue[i+1]; + mBroadcastWhy[i] = mBroadcastWhy[i+1]; + } + policy = getPolicyLocked(); } + if (value == 1) { + mScreenOnStart = SystemClock.uptimeMillis(); + + policy.screenTurnedOn(); + try { + ActivityManagerNative.getDefault().wakingUp(); + } catch (RemoteException e) { + // ignore it + } - if (mSpew) { - Log.d(TAG, "mBroadcastWakeLock=" + mBroadcastWakeLock); - } - if (mContext != null && ActivityManagerNative.isSystemReady()) { - mContext.sendOrderedBroadcast(mScreenOnIntent, null, - mScreenOnBroadcastDone, mHandler, 0, null, null); - } else { - synchronized (mLocks) { - EventLog.writeEvent(LOG_POWER_SCREEN_BROADCAST_STOP, 2, - mBroadcastWakeLock.mCount); - mBroadcastWakeLock.release(); + if (mSpew) { + Log.d(TAG, "mBroadcastWakeLock=" + mBroadcastWakeLock); + } + if (mContext != null && ActivityManagerNative.isSystemReady()) { + mContext.sendOrderedBroadcast(mScreenOnIntent, null, + mScreenOnBroadcastDone, mHandler, 0, null, null); + } else { + synchronized (mLocks) { + EventLog.writeEvent(LOG_POWER_SCREEN_BROADCAST_STOP, 2, + mBroadcastWakeLock.mCount); + mBroadcastWakeLock.release(); + } } } - } - else if (value == 0) { - mScreenOffStart = SystemClock.uptimeMillis(); - - policy.screenTurnedOff(why); - try { - ActivityManagerNative.getDefault().goingToSleep(); - } catch (RemoteException e) { - // ignore it. - } + else if (value == 0) { + mScreenOffStart = SystemClock.uptimeMillis(); + + policy.screenTurnedOff(why); + try { + ActivityManagerNative.getDefault().goingToSleep(); + } catch (RemoteException e) { + // ignore it. + } - if (mContext != null && ActivityManagerNative.isSystemReady()) { - mContext.sendOrderedBroadcast(mScreenOffIntent, null, - mScreenOffBroadcastDone, mHandler, 0, null, null); - } else { - synchronized (mLocks) { - EventLog.writeEvent(LOG_POWER_SCREEN_BROADCAST_STOP, 3, - mBroadcastWakeLock.mCount); - mBroadcastWakeLock.release(); + if (mContext != null && ActivityManagerNative.isSystemReady()) { + mContext.sendOrderedBroadcast(mScreenOffIntent, null, + mScreenOffBroadcastDone, mHandler, 0, null, null); + } else { + synchronized (mLocks) { + EventLog.writeEvent(LOG_POWER_SCREEN_BROADCAST_STOP, 3, + mBroadcastWakeLock.mCount); + mBroadcastWakeLock.release(); + } } } - } - else { - // If we're in this case, then this handler is running for a previous - // paired transaction. mBroadcastWakeLock will already have been released - // in sendNotificationLocked. + else { + // If we're in this case, then this handler is running for a previous + // paired transaction. mBroadcastWakeLock will already have been released. + break; + } } } }; @@ -1235,6 +1266,14 @@ class PowerManagerService extends IPowerManager.Stub implements LocalPowerManage if (oldScreenOn != newScreenOn) { if (newScreenOn) { + // When the user presses the power button, we need to always send out the + // notification that it's going to sleep so the keyguard goes on. But + // we can't do that until the screen fades out, so we don't show the keyguard + // too early. + if (mStillNeedSleepNotification) { + sendNotificationLocked(false, WindowManagerPolicy.OFF_BECAUSE_OF_USER); + } + // Turn on the screen UNLESS there was a prior // preventScreenOn(true) request. (Note that the lifetime // of a single preventScreenOn() request is limited to 5 @@ -1290,7 +1329,7 @@ class PowerManagerService extends IPowerManager.Stub implements LocalPowerManage } mPowerState &= ~SCREEN_ON_BIT; if (!mScreenBrightness.animating) { - err = screenOffFinishedAnimating(becauseOfUser); + err = screenOffFinishedAnimatingLocked(becauseOfUser); } else { mOffBecauseOfUser = becauseOfUser; err = 0; @@ -1301,7 +1340,7 @@ class PowerManagerService extends IPowerManager.Stub implements LocalPowerManage } } - private int screenOffFinishedAnimating(boolean becauseOfUser) { + private int screenOffFinishedAnimatingLocked(boolean becauseOfUser) { // I don't think we need to check the current state here because all of these // Power.setScreenState and sendNotificationLocked can both handle being // called multiple times in the same state. -joeo @@ -1345,10 +1384,12 @@ class PowerManagerService extends IPowerManager.Stub implements LocalPowerManage if (ANIMATE_KEYBOARD_LIGHTS) { if ((newState & KEYBOARD_BRIGHT_BIT) == 0) { mKeyboardBrightness.setTargetLocked(Power.BRIGHTNESS_OFF, - ANIM_STEPS, INITIAL_KEYBOARD_BRIGHTNESS); + ANIM_STEPS, INITIAL_KEYBOARD_BRIGHTNESS, + preferredBrightness); } else { mKeyboardBrightness.setTargetLocked(preferredBrightness, - ANIM_STEPS, INITIAL_KEYBOARD_BRIGHTNESS); + ANIM_STEPS, INITIAL_KEYBOARD_BRIGHTNESS, + Power.BRIGHTNESS_OFF); } startAnimation = true; } else { @@ -1364,10 +1405,12 @@ class PowerManagerService extends IPowerManager.Stub implements LocalPowerManage if (ANIMATE_BUTTON_LIGHTS) { if ((newState & BUTTON_BRIGHT_BIT) == 0) { mButtonBrightness.setTargetLocked(Power.BRIGHTNESS_OFF, - ANIM_STEPS, INITIAL_BUTTON_BRIGHTNESS); + ANIM_STEPS, INITIAL_BUTTON_BRIGHTNESS, + preferredBrightness); } else { mButtonBrightness.setTargetLocked(preferredBrightness, - ANIM_STEPS, INITIAL_BUTTON_BRIGHTNESS); + ANIM_STEPS, INITIAL_BUTTON_BRIGHTNESS, + Power.BRIGHTNESS_OFF); } startAnimation = true; } else { @@ -1381,6 +1424,23 @@ class PowerManagerService extends IPowerManager.Stub implements LocalPowerManage if ((difference & (SCREEN_ON_BIT | SCREEN_BRIGHT_BIT)) != 0) { if (ANIMATE_SCREEN_LIGHTS) { + int nominalCurrentValue; + switch (oldState & (SCREEN_BRIGHT_BIT|SCREEN_ON_BIT)) { + case SCREEN_BRIGHT_BIT | SCREEN_ON_BIT: + nominalCurrentValue = preferredBrightness; + break; + case SCREEN_ON_BIT: + nominalCurrentValue = Power.BRIGHTNESS_DIM; + break; + case 0: + nominalCurrentValue = Power.BRIGHTNESS_OFF; + break; + case SCREEN_BRIGHT_BIT: + default: + // not possible + nominalCurrentValue = (int)mScreenBrightness.curValue; + break; + } if ((newState & SCREEN_BRIGHT_BIT) == 0) { // dim or turn off backlight, depending on if the screen is on // the scale is because the brightness ramp isn't linear and this biases @@ -1398,7 +1458,7 @@ class PowerManagerService extends IPowerManager.Stub implements LocalPowerManage steps = (int)(ANIM_STEPS*ratio*scale); } mScreenBrightness.setTargetLocked(Power.BRIGHTNESS_OFF, - steps, INITIAL_SCREEN_BRIGHTNESS); + steps, INITIAL_SCREEN_BRIGHTNESS, nominalCurrentValue); } else { int steps; if ((oldState & SCREEN_ON_BIT) != 0) { @@ -1417,11 +1477,11 @@ class PowerManagerService extends IPowerManager.Stub implements LocalPowerManage mScreenOffTime = SystemClock.elapsedRealtime(); } mScreenBrightness.setTargetLocked(Power.BRIGHTNESS_DIM, - steps, INITIAL_SCREEN_BRIGHTNESS); + steps, INITIAL_SCREEN_BRIGHTNESS, nominalCurrentValue); } } else { mScreenBrightness.setTargetLocked(preferredBrightness, - ANIM_STEPS, INITIAL_SCREEN_BRIGHTNESS); + ANIM_STEPS, INITIAL_SCREEN_BRIGHTNESS, nominalCurrentValue); } startAnimation = true; } else { @@ -1502,16 +1562,20 @@ class PowerManagerService extends IPowerManager.Stub implements LocalPowerManage + " delta=" + delta); } - void setTargetLocked(int target, int stepsToTarget, int initialValue) { + void setTargetLocked(int target, int stepsToTarget, int initialValue, + int nominalCurrentValue) { if (!initialized) { initialized = true; curValue = (float)initialValue; } targetValue = target; - delta = (targetValue-curValue) / stepsToTarget; + delta = (targetValue-nominalCurrentValue) / stepsToTarget; if (mSpew) { + String noticeMe = nominalCurrentValue == curValue ? "" : " ******************"; Log.i(TAG, "Setting target " + mask + ": cur=" + curValue - + " target=" + targetValue + " delta=" + delta); + + " target=" + targetValue + " delta=" + delta + + " nominalCurrentValue=" + nominalCurrentValue + + noticeMe); } animating = true; } @@ -1543,7 +1607,7 @@ class PowerManagerService extends IPowerManager.Stub implements LocalPowerManage animating = more; if (!more) { if (mask == SCREEN_BRIGHT_BIT && curIntValue == Power.BRIGHTNESS_OFF) { - screenOffFinishedAnimating(mOffBecauseOfUser); + screenOffFinishedAnimatingLocked(mOffBecauseOfUser); } } return more; @@ -1695,6 +1759,7 @@ class PowerManagerService extends IPowerManager.Stub implements LocalPowerManage } } EventLog.writeEvent(LOG_POWER_SLEEP_REQUESTED, numCleared); + mStillNeedSleepNotification = true; mUserState = SCREEN_OFF; setPowerState(SCREEN_OFF, false, true); cancelTimerLocked(); -- cgit v1.2.3-59-g8ed1b From 95e4baf51ee38edd8a659d965a685adec24c98a9 Mon Sep 17 00:00:00 2001 From: Karl Rosaen <> Date: Tue, 24 Mar 2009 18:42:18 -0700 Subject: Automated import from //branches/donutburger/...@140847,140847 --- core/res/res/drawable/ic_emergency.png | Bin 653 -> 605 bytes core/res/res/layout/keyguard_screen_glogin_unlock.xml | 2 +- core/res/res/layout/keyguard_screen_lock.xml | 2 +- .../res/layout/keyguard_screen_sim_pin_landscape.xml | 11 +---------- .../res/res/layout/keyguard_screen_sim_pin_portrait.xml | 3 ++- .../res/res/layout/keyguard_screen_unlock_landscape.xml | 4 ++-- core/res/res/layout/keyguard_screen_unlock_portrait.xml | 4 ++-- 7 files changed, 9 insertions(+), 17 deletions(-) diff --git a/core/res/res/drawable/ic_emergency.png b/core/res/res/drawable/ic_emergency.png index d99abf83e725..45d0f21736c3 100755 Binary files a/core/res/res/drawable/ic_emergency.png and b/core/res/res/drawable/ic_emergency.png differ diff --git a/core/res/res/layout/keyguard_screen_glogin_unlock.xml b/core/res/res/layout/keyguard_screen_glogin_unlock.xml index 4834b28a945f..74ff3b029cca 100644 --- a/core/res/res/layout/keyguard_screen_glogin_unlock.xml +++ b/core/res/res/layout/keyguard_screen_glogin_unlock.xml @@ -120,7 +120,7 @@ android:layout_height="wrap_content" android:layout_gravity="center" android:drawableLeft="@drawable/ic_emergency" - android:drawablePadding="3dip" + android:drawablePadding="8dip" android:text="@android:string/lockscreen_emergency_call" /> diff --git a/core/res/res/layout/keyguard_screen_lock.xml b/core/res/res/layout/keyguard_screen_lock.xml index 952fc5d9dc60..b5fbace14861 100644 --- a/core/res/res/layout/keyguard_screen_lock.xml +++ b/core/res/res/layout/keyguard_screen_lock.xml @@ -211,7 +211,7 @@ android:layout_marginTop="5dip" android:layout_gravity="center_horizontal" android:drawableLeft="@drawable/ic_emergency" - android:drawablePadding="3dip" + android:drawablePadding="8dip" android:text="@android:string/lockscreen_emergency_call" /> diff --git a/core/res/res/layout/keyguard_screen_sim_pin_landscape.xml b/core/res/res/layout/keyguard_screen_sim_pin_landscape.xml index 881652ba6cbb..4c583d84eeb2 100644 --- a/core/res/res/layout/keyguard_screen_sim_pin_landscape.xml +++ b/core/res/res/layout/keyguard_screen_sim_pin_landscape.xml @@ -87,12 +87,7 @@ android:layout_weight="1.0" android:layout_marginBottom="8dip" android:layout_marginRight="8dip" - android:paddingLeft="4dip" - android:paddingRight="4dip" - android:paddingTop="8dip" - android:paddingBottom="8dip" android:textSize="18sp" - android:drawablePadding="3dip" />
*/ public final class InputMethodManager { - static final boolean DEBUG = true; + static final boolean DEBUG = false; static final String TAG = "InputMethodManager"; static final Object mInstanceSync = new Object(); -- cgit v1.2.3-59-g8ed1b From 9c7960dbd44fea285d21a289349801767180125b Mon Sep 17 00:00:00 2001 From: Evan Millar <> Date: Tue, 24 Mar 2009 19:21:47 -0700 Subject: Automated import from //branches/donutburger/...@141049,141049 --- core/res/res/values-ja/strings.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml index dedc019cbf3c..262e7e4f91a4 100644 --- a/core/res/res/values-ja/strings.xml +++ b/core/res/res/values-ja/strings.xml @@ -829,4 +829,7 @@ + + "発信" -- cgit v1.2.3-59-g8ed1b From ef49c57bdcdb6c808870570c205434b002431c37 Mon Sep 17 00:00:00 2001 From: Dianne Hackborn <> Date: Tue, 24 Mar 2009 19:27:32 -0700 Subject: Automated import from //branches/donutburger/...@141079,141079 --- services/java/com/android/server/WindowManagerService.java | 1 + 1 file changed, 1 insertion(+) diff --git a/services/java/com/android/server/WindowManagerService.java b/services/java/com/android/server/WindowManagerService.java index dba245aac028..18fd74f0d0b0 100644 --- a/services/java/com/android/server/WindowManagerService.java +++ b/services/java/com/android/server/WindowManagerService.java @@ -2365,6 +2365,7 @@ public class WindowManagerService extends IWindowManager.Stub implements Watchdo ttoken.startingWindow = null; ttoken.startingMoved = true; startingWindow.mToken = wtoken; + startingWindow.mRootToken = wtoken; startingWindow.mAppToken = wtoken; mWindows.remove(startingWindow); ttoken.windows.remove(startingWindow); -- cgit v1.2.3-59-g8ed1b From 8faf457da6ab73b13c346a160c14302acbceadd7 Mon Sep 17 00:00:00 2001 From: Mike Cleron <> Date: Tue, 24 Mar 2009 19:28:31 -0700 Subject: Automated import from //branches/donutburger/...@141083,141083 --- core/res/res/layout/time_picker.xml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/core/res/res/layout/time_picker.xml b/core/res/res/layout/time_picker.xml index c601e0e83077..6ba5e81ef278 100644 --- a/core/res/res/layout/time_picker.xml +++ b/core/res/res/layout/time_picker.xml @@ -49,10 +49,8 @@ android:id="@+id/amPm" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_marginTop="46dip" + android:layout_marginTop="43dip" android:layout_marginLeft="5dip" - android:paddingTop="2dip" - android:paddingBottom="2dip" android:paddingLeft="20dip" android:paddingRight="20dip" style="?android:attr/textAppearanceLargeInverse" -- cgit v1.2.3-59-g8ed1b From c1e8446279381bdd728688d10285951ef8228ed1 Mon Sep 17 00:00:00 2001 From: Joe Onorato <> Date: Tue, 24 Mar 2009 19:29:20 -0700 Subject: Automated import from //branches/donutburger/...@141086,141086 --- .../java/com/android/server/HardwareService.java | 47 +++++++++++++++++++++- .../android/server/NotificationManagerService.java | 1 + 2 files changed, 46 insertions(+), 2 deletions(-) diff --git a/services/java/com/android/server/HardwareService.java b/services/java/com/android/server/HardwareService.java index 7466a376926f..42367ef86a8e 100755 --- a/services/java/com/android/server/HardwareService.java +++ b/services/java/com/android/server/HardwareService.java @@ -21,8 +21,10 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.pm.PackageManager; +import android.os.Handler; import android.os.Hardware; import android.os.IHardwareService; +import android.os.Message; import android.os.Power; import android.os.PowerManager; import android.os.Process; @@ -45,6 +47,9 @@ public class HardwareService extends IHardwareService.Stub { static final int LIGHT_FLASH_NONE = 0; static final int LIGHT_FLASH_TIMED = 1; + private boolean mAttentionLightOn; + private boolean mPulsing; + HardwareService(Context context) { // Reset the hardware to a default state, in case this is a runtime // restart instead of a fresh boot. @@ -217,10 +222,48 @@ public class HardwareService extends IHardwareService.Stub { public void setAttentionLight(boolean on) { // Not worthy of a permission. We shouldn't have a flashlight permission. - setLight_native(mNativePointer, LIGHT_ID_ATTENTION, on ? 0xffffffff : 0, - LIGHT_FLASH_NONE, 0, 0); + synchronized (this) { + mAttentionLightOn = on; + mPulsing = false; + setLight_native(mNativePointer, LIGHT_ID_ATTENTION, on ? 0xffffffff : 0, + LIGHT_FLASH_NONE, 0, 0); + } } + public void pulseBreathingLight() { + synchronized (this) { + // HACK: Added at the last minute of cupcake -- design this better; + // Don't reuse the attention light -- make another one. + if (false) { + Log.d(TAG, "pulseBreathingLight mAttentionLightOn=" + mAttentionLightOn + + " mPulsing=" + mPulsing); + } + if (!mAttentionLightOn && !mPulsing) { + mPulsing = true; + setLight_native(mNativePointer, LIGHT_ID_ATTENTION, 0xff101010, + LIGHT_FLASH_NONE, 0, 0); + mH.sendMessageDelayed(Message.obtain(mH, 1), 3000); + } + } + } + + private Handler mH = new Handler() { + @Override + public void handleMessage(Message msg) { + synchronized (this) { + if (false) { + Log.d(TAG, "pulse cleanup handler firing mPulsing=" + mPulsing); + } + if (mPulsing) { + mPulsing = false; + setLight_native(mNativePointer, LIGHT_ID_ATTENTION, + mAttentionLightOn ? 0xffffffff : 0, + LIGHT_FLASH_NONE, 0, 0); + } + } + } + }; + private void doCancelVibrate() { synchronized (this) { if (mThread != null) { diff --git a/services/java/com/android/server/NotificationManagerService.java b/services/java/com/android/server/NotificationManagerService.java index c4b058709bc5..6ed8b4c6accb 100644 --- a/services/java/com/android/server/NotificationManagerService.java +++ b/services/java/com/android/server/NotificationManagerService.java @@ -588,6 +588,7 @@ class NotificationManagerService extends INotificationManager.Stub long identity = Binder.clearCallingIdentity(); try { r.statusBarKey = mStatusBarService.addIcon(icon, n); + mHardware.pulseBreathingLight(); } finally { Binder.restoreCallingIdentity(identity); -- cgit v1.2.3-59-g8ed1b From e5a1a260c63932ffce7ad816898533639d2cb681 Mon Sep 17 00:00:00 2001 From: Jeff Hamilton <> Date: Tue, 24 Mar 2009 19:32:51 -0700 Subject: Automated import from //branches/donutburger/...@141106,141106 --- api/3.xml | 6 +++--- api/current.xml | 6 +++--- core/java/android/widget/CursorAdapter.java | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/api/3.xml b/api/3.xml index 512fef8b184f..c75281319230 100644 --- a/api/3.xml +++ b/api/3.xml @@ -125608,7 +125608,7 @@ native="false" synchronized="false" static="false" - final="true" + final="false" deprecated="not deprecated" visibility="public" > @@ -125652,7 +125652,7 @@ native="false" synchronized="false" static="false" - final="true" + final="false" deprecated="not deprecated" visibility="public" > @@ -125665,7 +125665,7 @@ native="false" synchronized="false" static="false" - final="true" + final="false" deprecated="not deprecated" visibility="public" > diff --git a/api/current.xml b/api/current.xml index e5910c812b44..d6887241b63f 100644 --- a/api/current.xml +++ b/api/current.xml @@ -146513,7 +146513,7 @@ native="false" synchronized="false" static="false" - final="true" + final="false" deprecated="not deprecated" visibility="public" > @@ -146557,7 +146557,7 @@ native="false" synchronized="false" static="false" - final="true" + final="false" deprecated="not deprecated" visibility="public" > @@ -146570,7 +146570,7 @@ native="false" synchronized="false" static="false" - final="true" + final="false" deprecated="not deprecated" visibility="public" > diff --git a/core/java/android/widget/CursorAdapter.java b/core/java/android/widget/CursorAdapter.java index 898e501a183f..da90a9f40294 100644 --- a/core/java/android/widget/CursorAdapter.java +++ b/core/java/android/widget/CursorAdapter.java @@ -127,7 +127,7 @@ public abstract class CursorAdapter extends BaseAdapter implements Filterable, /** * @see android.widget.ListAdapter#getCount() */ - public final int getCount() { + public int getCount() { if (mDataValid && mCursor != null) { return mCursor.getCount(); } else { @@ -138,7 +138,7 @@ public abstract class CursorAdapter extends BaseAdapter implements Filterable, /** * @see android.widget.ListAdapter#getItem(int) */ - public final Object getItem(int position) { + public Object getItem(int position) { if (mDataValid && mCursor != null) { mCursor.moveToPosition(position); return mCursor; @@ -150,7 +150,7 @@ public abstract class CursorAdapter extends BaseAdapter implements Filterable, /** * @see android.widget.ListAdapter#getItemId(int) */ - public final long getItemId(int position) { + public long getItemId(int position) { if (mDataValid && mCursor != null) { if (mCursor.moveToPosition(position)) { return mCursor.getLong(mRowIDColumn); -- cgit v1.2.3-59-g8ed1b From 51376451f1ce78c7201d9559d0e953d165bfce87 Mon Sep 17 00:00:00 2001 From: Satoshi Kataoka <> Date: Tue, 24 Mar 2009 19:33:42 -0700 Subject: Automated import from //branches/donutburger/...@141112,141112 --- core/java/com/android/internal/widget/EditStyledText.java | 1 - 1 file changed, 1 deletion(-) diff --git a/core/java/com/android/internal/widget/EditStyledText.java b/core/java/com/android/internal/widget/EditStyledText.java index 1eba5c251007..4a0a87fe43b1 100644 --- a/core/java/com/android/internal/widget/EditStyledText.java +++ b/core/java/com/android/internal/widget/EditStyledText.java @@ -983,7 +983,6 @@ public class EditStyledText extends EditText { int pos = current; for (; pos < text.length(); pos++) { if (text.charAt(pos) == '\n') { - pos--; break; } } -- cgit v1.2.3-59-g8ed1b From 5c70839ae3b06a03c82032a77fc44405cf1de2de Mon Sep 17 00:00:00 2001 From: Satoshi Kataoka <> Date: Tue, 24 Mar 2009 19:36:12 -0700 Subject: Automated import from //branches/donutburger/...@141126,141126 --- core/java/com/android/internal/widget/EditStyledText.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/java/com/android/internal/widget/EditStyledText.java b/core/java/com/android/internal/widget/EditStyledText.java index 4a0a87fe43b1..da10d742a8dc 100644 --- a/core/java/com/android/internal/widget/EditStyledText.java +++ b/core/java/com/android/internal/widget/EditStyledText.java @@ -1046,7 +1046,7 @@ public class EditStyledText extends EditText { ((ImageSpan) images[j]).getSource()); } uris.add(Uri.parse( - ((ImageSpan) images[j]).toString())); + ((ImageSpan) images[j]).getSource())); } } } -- cgit v1.2.3-59-g8ed1b From 10865523140286db1fa0838673a0a59b42e82a95 Mon Sep 17 00:00:00 2001 From: Mike Reed <> Date: Tue, 24 Mar 2009 19:38:00 -0700 Subject: Automated import from //branches/donutburger/...@141139,141139 --- data/fonts/DroidSansJapanese.ttf | Bin 0 -> 1174432 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100755 data/fonts/DroidSansJapanese.ttf diff --git a/data/fonts/DroidSansJapanese.ttf b/data/fonts/DroidSansJapanese.ttf new file mode 100755 index 000000000000..ca7922122ab5 Binary files /dev/null and b/data/fonts/DroidSansJapanese.ttf differ -- cgit v1.2.3-59-g8ed1b From 6eb7298019c2e59877939474e7d77e8334192a98 Mon Sep 17 00:00:00 2001 From: Satoshi Kataoka <> Date: Tue, 24 Mar 2009 19:39:54 -0700 Subject: Automated import from //branches/donutburger/...@141149,141149 --- core/java/com/android/internal/widget/EditStyledText.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/core/java/com/android/internal/widget/EditStyledText.java b/core/java/com/android/internal/widget/EditStyledText.java index da10d742a8dc..3da9753479ce 100644 --- a/core/java/com/android/internal/widget/EditStyledText.java +++ b/core/java/com/android/internal/widget/EditStyledText.java @@ -471,6 +471,7 @@ public class EditStyledText extends EditText { if (DBG) { Log.d(LOG_TAG, "--- onStartEdit"); } + Log.d(LOG_TAG, "--- onstartedit:" + this.getSelectionStart() + this.getSelectionEnd()); handleResetEdit(); mEST.notifyStateChanged(mMode, mState); } @@ -855,6 +856,7 @@ public class EditStyledText extends EditText { if (DBG) { Log.d(LOG_TAG, "Reset Editor"); } + blockSoftKey(); handleCancel(); mEditFlag = true; mEST.setHintMessage(HINT_MSG_SELECT_START); @@ -967,8 +969,7 @@ public class EditStyledText extends EditText { } int pos = current; for (; pos > 0; pos--) { - if (text.charAt(pos) == '\n') { - pos++; + if (text.charAt(pos - 1) == '\n') { break; } } @@ -982,7 +983,7 @@ public class EditStyledText extends EditText { } int pos = current; for (; pos < text.length(); pos++) { - if (text.charAt(pos) == '\n') { + if (pos > 0 && text.charAt(pos - 1) == '\n') { break; } } -- cgit v1.2.3-59-g8ed1b From df6601ac91493a7368effbe198e0181627a2cd34 Mon Sep 17 00:00:00 2001 From: Satoshi Kataoka <> Date: Tue, 24 Mar 2009 19:42:46 -0700 Subject: Automated import from //branches/donutburger/...@141168,141168 --- core/java/com/android/internal/widget/EditStyledText.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/core/java/com/android/internal/widget/EditStyledText.java b/core/java/com/android/internal/widget/EditStyledText.java index 3da9753479ce..b36707e17da0 100644 --- a/core/java/com/android/internal/widget/EditStyledText.java +++ b/core/java/com/android/internal/widget/EditStyledText.java @@ -933,8 +933,13 @@ public class EditStyledText extends EditText { Log.d(LOG_TAG, "--- setStyledTextSpan:" + mMode + "," + start + "," + end); } - mEST.getText().setSpan(span, start, end, - Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + if (start < end) { + mEST.getText().setSpan(span, start, end, + Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + } else { + mEST.getText().setSpan(span, end, start, + Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + } } private void changeSizeSelectedText(int size) { -- cgit v1.2.3-59-g8ed1b From 32048300e917c9181927ac017d02855bbde940ef Mon Sep 17 00:00:00 2001 From: Satoshi Kataoka <> Date: Tue, 24 Mar 2009 19:48:28 -0700 Subject: Automated import from //branches/donutburger/...@141195,141195 --- core/java/android/text/Html.java | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/core/java/android/text/Html.java b/core/java/android/text/Html.java index 6f0be3a64f8d..200bbf4a1500 100644 --- a/core/java/android/text/Html.java +++ b/core/java/android/text/Html.java @@ -151,26 +151,22 @@ public class Html { for (int i = 0; i < text.length(); i = next) { next = text.nextSpanTransition(i, len, ParagraphStyle.class); ParagraphStyle[] style = text.getSpans(i, next, ParagraphStyle.class); - if (style.length > 0) { - out.append("
0) { - out.append(">"); + out.append("
"); } withinDiv(out, text, i, next); -- cgit v1.2.3-59-g8ed1b From 78c131473165830c8d042a0f445ca858aaa7a4b1 Mon Sep 17 00:00:00 2001 From: Jean-Michel Trivi <> Date: Tue, 24 Mar 2009 19:48:58 -0700 Subject: Automated import from //branches/donutburger/...@141200,141200 --- include/media/AudioRecord.h | 1 + media/libmedia/AudioRecord.cpp | 9 +++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/include/media/AudioRecord.h b/include/media/AudioRecord.h index ff6485536cfe..7164b78e0735 100644 --- a/include/media/AudioRecord.h +++ b/include/media/AudioRecord.h @@ -335,6 +335,7 @@ private: uint32_t mNotificationFrames; uint32_t mRemainingFrames; uint32_t mMarkerPosition; + bool mMarkerReached; uint32_t mNewPosition; uint32_t mUpdatePeriod; }; diff --git a/media/libmedia/AudioRecord.cpp b/media/libmedia/AudioRecord.cpp index 7594ff0ca066..5c800c3efb2e 100644 --- a/media/libmedia/AudioRecord.cpp +++ b/media/libmedia/AudioRecord.cpp @@ -200,6 +200,7 @@ status_t AudioRecord::set( // TODO: add audio hardware input latency here mLatency = (1000*mFrameCount) / mSampleRate; mMarkerPosition = 0; + mMarkerReached = false; mNewPosition = 0; mUpdatePeriod = 0; @@ -293,6 +294,9 @@ status_t AudioRecord::stop() if (android_atomic_and(~1, &mActive) == 1) { mAudioRecord->stop(); + // the record head position will reset to 0, so if a marker is set, we need + // to activate it again + mMarkerReached = false; if (t != 0) { t->requestExit(); } else { @@ -317,6 +321,7 @@ status_t AudioRecord::setMarkerPosition(uint32_t marker) if (mCbf == 0) return INVALID_OPERATION; mMarkerPosition = marker; + mMarkerReached = false; return NO_ERROR; } @@ -492,10 +497,10 @@ bool AudioRecord::processAudioBuffer(const sp& thread) size_t readSize; // Manage marker callback - if (mMarkerPosition > 0) { + if (!mMarkerReached && (mMarkerPosition > 0)) { if (mCblk->user >= mMarkerPosition) { mCbf(EVENT_MARKER, mUserData, (void *)&mMarkerPosition); - mMarkerPosition = 0; + mMarkerReached = true; } } -- cgit v1.2.3-59-g8ed1b From 1fba3bdbf7fd0a10e797ca7b30306ce23f853389 Mon Sep 17 00:00:00 2001 From: Dave Sparks <> Date: Tue, 24 Mar 2009 19:50:38 -0700 Subject: Automated import from //branches/donutburger/...@141210,141210 --- data/sounds/OriginalAudio.mk | 1 + data/sounds/effects/VideoRecord.ogg | Bin 0 -> 14969 bytes data/sounds/effects/VideoRecord.wav | Bin 0 -> 152342 bytes 3 files changed, 1 insertion(+) create mode 100644 data/sounds/effects/VideoRecord.ogg create mode 100644 data/sounds/effects/VideoRecord.wav diff --git a/data/sounds/OriginalAudio.mk b/data/sounds/OriginalAudio.mk index 87229838253a..dbd6ad372deb 100644 --- a/data/sounds/OriginalAudio.mk +++ b/data/sounds/OriginalAudio.mk @@ -64,5 +64,6 @@ PRODUCT_COPY_FILES += \ $(LOCAL_PATH)/effects/KeypressSpacebar.ogg:system/media/audio/ui/KeypressSpacebar.ogg \ $(LOCAL_PATH)/effects/KeypressDelete.ogg:system/media/audio/ui/KeypressDelete.ogg \ $(LOCAL_PATH)/effects/KeypressReturn.ogg:system/media/audio/ui/KeypressReturn.ogg \ + $(LOCAL_PATH)/effects/VideoRecord.ogg:system/media/audio/ui/VideoRecord.ogg \ $(LOCAL_PATH)/newwavelabs/CrazyDream.ogg:system/media/audio/ringtones/CrazyDream.ogg \ $(LOCAL_PATH)/newwavelabs/DreamTheme.ogg:system/media/audio/ringtones/DreamTheme.ogg diff --git a/data/sounds/effects/VideoRecord.ogg b/data/sounds/effects/VideoRecord.ogg new file mode 100644 index 000000000000..54febbfea6a4 Binary files /dev/null and b/data/sounds/effects/VideoRecord.ogg differ diff --git a/data/sounds/effects/VideoRecord.wav b/data/sounds/effects/VideoRecord.wav new file mode 100644 index 000000000000..0f70e58efc96 Binary files /dev/null and b/data/sounds/effects/VideoRecord.wav differ -- cgit v1.2.3-59-g8ed1b From 4a0029f95db144ba735b35e636400e8ce535383f Mon Sep 17 00:00:00 2001 From: Niko Catania <> Date: Tue, 24 Mar 2009 19:51:09 -0700 Subject: Automated import from //branches/donutburger/...@141213,141213 --- api/current.xml | 131 ++++++++++++++++++++++++++++++ media/java/android/media/MediaPlayer.java | 12 +-- 2 files changed, 132 insertions(+), 11 deletions(-) diff --git a/api/current.xml b/api/current.xml index d6887241b63f..2260abb5abab 100644 --- a/api/current.xml +++ b/api/current.xml @@ -66329,6 +66329,19 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Date: Tue, 24 Mar 2009 19:55:37 -0700 Subject: Automated import from //branches/donutburger/...@141259,141259 --- core/res/res/values-ar-rEG/arrays.xml | 32 ++++++++++++++++++++++++++++++++ core/res/res/values-ar-rIL/arrays.xml | 32 ++++++++++++++++++++++++++++++++ core/res/res/values-bg-rBG/arrays.xml | 32 ++++++++++++++++++++++++++++++++ core/res/res/values-ca-rES/arrays.xml | 32 ++++++++++++++++++++++++++++++++ core/res/res/values-da-rDK/arrays.xml | 32 ++++++++++++++++++++++++++++++++ core/res/res/values-de-rAT/arrays.xml | 32 ++++++++++++++++++++++++++++++++ core/res/res/values-de-rCH/arrays.xml | 32 ++++++++++++++++++++++++++++++++ core/res/res/values-de-rDE/arrays.xml | 32 ++++++++++++++++++++++++++++++++ core/res/res/values-de-rLI/arrays.xml | 32 ++++++++++++++++++++++++++++++++ core/res/res/values-el-rGR/arrays.xml | 32 ++++++++++++++++++++++++++++++++ core/res/res/values-en-rCA/arrays.xml | 32 ++++++++++++++++++++++++++++++++ core/res/res/values-en-rIN/arrays.xml | 32 ++++++++++++++++++++++++++++++++ core/res/res/values-en-rNZ/arrays.xml | 32 ++++++++++++++++++++++++++++++++ core/res/res/values-fi-rFI/arrays.xml | 32 ++++++++++++++++++++++++++++++++ core/res/res/values-fr-rBE/arrays.xml | 32 ++++++++++++++++++++++++++++++++ core/res/res/values-fr-rCA/arrays.xml | 32 ++++++++++++++++++++++++++++++++ core/res/res/values-fr-rCH/arrays.xml | 32 ++++++++++++++++++++++++++++++++ core/res/res/values-he-rIL/arrays.xml | 32 ++++++++++++++++++++++++++++++++ core/res/res/values-hi-rIN/arrays.xml | 32 ++++++++++++++++++++++++++++++++ core/res/res/values-hu-rHU/arrays.xml | 32 ++++++++++++++++++++++++++++++++ core/res/res/values-id-rID/arrays.xml | 32 ++++++++++++++++++++++++++++++++ core/res/res/values-it-rCH/arrays.xml | 32 ++++++++++++++++++++++++++++++++ core/res/res/values-ko-rKR/arrays.xml | 32 ++++++++++++++++++++++++++++++++ core/res/res/values-lt-rLT/arrays.xml | 32 ++++++++++++++++++++++++++++++++ core/res/res/values-lv-rLV/arrays.xml | 32 ++++++++++++++++++++++++++++++++ core/res/res/values-nl-rBE/arrays.xml | 32 ++++++++++++++++++++++++++++++++ core/res/res/values-nl-rNL/arrays.xml | 32 ++++++++++++++++++++++++++++++++ core/res/res/values-no-rNO/arrays.xml | 32 ++++++++++++++++++++++++++++++++ core/res/res/values-pl-rPL/arrays.xml | 32 ++++++++++++++++++++++++++++++++ core/res/res/values-pt-rBR/arrays.xml | 32 ++++++++++++++++++++++++++++++++ core/res/res/values-pt-rPT/arrays.xml | 32 ++++++++++++++++++++++++++++++++ core/res/res/values-ro-rRO/arrays.xml | 32 ++++++++++++++++++++++++++++++++ core/res/res/values-ru-rRU/arrays.xml | 32 ++++++++++++++++++++++++++++++++ core/res/res/values-sk-rSK/arrays.xml | 32 ++++++++++++++++++++++++++++++++ core/res/res/values-sl-rSI/arrays.xml | 32 ++++++++++++++++++++++++++++++++ core/res/res/values-sr-rRS/arrays.xml | 32 ++++++++++++++++++++++++++++++++ core/res/res/values-sv-rSE/arrays.xml | 32 ++++++++++++++++++++++++++++++++ core/res/res/values-th-rTH/arrays.xml | 32 ++++++++++++++++++++++++++++++++ core/res/res/values-tl-rPH/arrays.xml | 32 ++++++++++++++++++++++++++++++++ core/res/res/values-tr-rTR/arrays.xml | 32 ++++++++++++++++++++++++++++++++ core/res/res/values-uk-rUA/arrays.xml | 32 ++++++++++++++++++++++++++++++++ core/res/res/values-vi-rVN/arrays.xml | 32 ++++++++++++++++++++++++++++++++ core/res/res/values-zh-rCN/arrays.xml | 32 ++++++++++++++++++++++++++++++++ core/res/res/values-zh-rTW/arrays.xml | 32 ++++++++++++++++++++++++++++++++ 44 files changed, 1408 insertions(+) create mode 100644 core/res/res/values-ar-rEG/arrays.xml create mode 100644 core/res/res/values-ar-rIL/arrays.xml create mode 100644 core/res/res/values-bg-rBG/arrays.xml create mode 100644 core/res/res/values-ca-rES/arrays.xml create mode 100644 core/res/res/values-da-rDK/arrays.xml create mode 100644 core/res/res/values-de-rAT/arrays.xml create mode 100644 core/res/res/values-de-rCH/arrays.xml create mode 100644 core/res/res/values-de-rDE/arrays.xml create mode 100644 core/res/res/values-de-rLI/arrays.xml create mode 100644 core/res/res/values-el-rGR/arrays.xml create mode 100644 core/res/res/values-en-rCA/arrays.xml create mode 100644 core/res/res/values-en-rIN/arrays.xml create mode 100644 core/res/res/values-en-rNZ/arrays.xml create mode 100644 core/res/res/values-fi-rFI/arrays.xml create mode 100644 core/res/res/values-fr-rBE/arrays.xml create mode 100644 core/res/res/values-fr-rCA/arrays.xml create mode 100644 core/res/res/values-fr-rCH/arrays.xml create mode 100644 core/res/res/values-he-rIL/arrays.xml create mode 100644 core/res/res/values-hi-rIN/arrays.xml create mode 100644 core/res/res/values-hu-rHU/arrays.xml create mode 100644 core/res/res/values-id-rID/arrays.xml create mode 100644 core/res/res/values-it-rCH/arrays.xml create mode 100644 core/res/res/values-ko-rKR/arrays.xml create mode 100644 core/res/res/values-lt-rLT/arrays.xml create mode 100644 core/res/res/values-lv-rLV/arrays.xml create mode 100644 core/res/res/values-nl-rBE/arrays.xml create mode 100644 core/res/res/values-nl-rNL/arrays.xml create mode 100644 core/res/res/values-no-rNO/arrays.xml create mode 100644 core/res/res/values-pl-rPL/arrays.xml create mode 100644 core/res/res/values-pt-rBR/arrays.xml create mode 100644 core/res/res/values-pt-rPT/arrays.xml create mode 100644 core/res/res/values-ro-rRO/arrays.xml create mode 100644 core/res/res/values-ru-rRU/arrays.xml create mode 100644 core/res/res/values-sk-rSK/arrays.xml create mode 100644 core/res/res/values-sl-rSI/arrays.xml create mode 100644 core/res/res/values-sr-rRS/arrays.xml create mode 100644 core/res/res/values-sv-rSE/arrays.xml create mode 100644 core/res/res/values-th-rTH/arrays.xml create mode 100644 core/res/res/values-tl-rPH/arrays.xml create mode 100644 core/res/res/values-tr-rTR/arrays.xml create mode 100644 core/res/res/values-uk-rUA/arrays.xml create mode 100644 core/res/res/values-vi-rVN/arrays.xml create mode 100644 core/res/res/values-zh-rCN/arrays.xml create mode 100644 core/res/res/values-zh-rTW/arrays.xml diff --git a/core/res/res/values-ar-rEG/arrays.xml b/core/res/res/values-ar-rEG/arrays.xml new file mode 100644 index 000000000000..1180cb31697e --- /dev/null +++ b/core/res/res/values-ar-rEG/arrays.xml @@ -0,0 +1,32 @@ + + + + + + + 26820553 + 30802498 + + + + 4 + + + diff --git a/core/res/res/values-ar-rIL/arrays.xml b/core/res/res/values-ar-rIL/arrays.xml new file mode 100644 index 000000000000..87c1231cf5dd --- /dev/null +++ b/core/res/res/values-ar-rIL/arrays.xml @@ -0,0 +1,32 @@ + + + + + + + 31046051 + 34851612 + + + + 4 + + + diff --git a/core/res/res/values-bg-rBG/arrays.xml b/core/res/res/values-bg-rBG/arrays.xml new file mode 100644 index 000000000000..3cfcbfde237b --- /dev/null +++ b/core/res/res/values-bg-rBG/arrays.xml @@ -0,0 +1,32 @@ + + + + + + + 42733883 + 25485830 + + + + 4 + + + diff --git a/core/res/res/values-ca-rES/arrays.xml b/core/res/res/values-ca-rES/arrays.xml new file mode 100644 index 000000000000..7f5667cb966e --- /dev/null +++ b/core/res/res/values-ca-rES/arrays.xml @@ -0,0 +1,32 @@ + + + + + + + 40413496 + -3713379 + + + + 6 + + + diff --git a/core/res/res/values-da-rDK/arrays.xml b/core/res/res/values-da-rDK/arrays.xml new file mode 100644 index 000000000000..4d0abd033ea0 --- /dev/null +++ b/core/res/res/values-da-rDK/arrays.xml @@ -0,0 +1,32 @@ + + + + + + + 55679423 + 12577114 + + + + 4 + + + diff --git a/core/res/res/values-de-rAT/arrays.xml b/core/res/res/values-de-rAT/arrays.xml new file mode 100644 index 000000000000..e8855cf652e1 --- /dev/null +++ b/core/res/res/values-de-rAT/arrays.xml @@ -0,0 +1,32 @@ + + + + + + + 48209206 + 16372778 + + + + 4 + + + diff --git a/core/res/res/values-de-rCH/arrays.xml b/core/res/res/values-de-rCH/arrays.xml new file mode 100644 index 000000000000..f2982e9f54d9 --- /dev/null +++ b/core/res/res/values-de-rCH/arrays.xml @@ -0,0 +1,32 @@ + + + + + + + 46948020 + 7448206 + + + + 4 + + + diff --git a/core/res/res/values-de-rDE/arrays.xml b/core/res/res/values-de-rDE/arrays.xml new file mode 100644 index 000000000000..3680fd33f21c --- /dev/null +++ b/core/res/res/values-de-rDE/arrays.xml @@ -0,0 +1,32 @@ + + + + + + + 55679423 + 9735672 + + + + 4 + + + diff --git a/core/res/res/values-de-rLI/arrays.xml b/core/res/res/values-de-rLI/arrays.xml new file mode 100644 index 000000000000..0481b764b798 --- /dev/null +++ b/core/res/res/values-de-rLI/arrays.xml @@ -0,0 +1,32 @@ + + + + + + + 47141076 + 9521482 + + + + 4 + + + diff --git a/core/res/res/values-el-rGR/arrays.xml b/core/res/res/values-el-rGR/arrays.xml new file mode 100644 index 000000000000..0329ca3d55df --- /dev/null +++ b/core/res/res/values-el-rGR/arrays.xml @@ -0,0 +1,32 @@ + + + + + + + 39074208 + 21824312 + + + + 4 + + + diff --git a/core/res/res/values-en-rCA/arrays.xml b/core/res/res/values-en-rCA/arrays.xml new file mode 100644 index 000000000000..00c7ca421f98 --- /dev/null +++ b/core/res/res/values-en-rCA/arrays.xml @@ -0,0 +1,32 @@ + + + + + + + 49875832 + -97150726 + + + + 3 + + + diff --git a/core/res/res/values-en-rIN/arrays.xml b/core/res/res/values-en-rIN/arrays.xml new file mode 100644 index 000000000000..d5b2889c59f2 --- /dev/null +++ b/core/res/res/values-en-rIN/arrays.xml @@ -0,0 +1,32 @@ + + + + + + + 20593684 + 78962880 + + + + 3 + + + diff --git a/core/res/res/values-en-rNZ/arrays.xml b/core/res/res/values-en-rNZ/arrays.xml new file mode 100644 index 000000000000..6340b95ac9e6 --- /dev/null +++ b/core/res/res/values-en-rNZ/arrays.xml @@ -0,0 +1,32 @@ + + + + + + + -41286480 + 174776217 + + + + 4 + + + diff --git a/core/res/res/values-fi-rFI/arrays.xml b/core/res/res/values-fi-rFI/arrays.xml new file mode 100644 index 000000000000..2e2395376f61 --- /dev/null +++ b/core/res/res/values-fi-rFI/arrays.xml @@ -0,0 +1,32 @@ + + + + + + + 60169653 + 24939480 + + + + 4 + + + diff --git a/core/res/res/values-fr-rBE/arrays.xml b/core/res/res/values-fr-rBE/arrays.xml new file mode 100644 index 000000000000..9e93a0922154 --- /dev/null +++ b/core/res/res/values-fr-rBE/arrays.xml @@ -0,0 +1,32 @@ + + + + + + + 50854509 + 4376678 + + + + 5 + + + diff --git a/core/res/res/values-fr-rCA/arrays.xml b/core/res/res/values-fr-rCA/arrays.xml new file mode 100644 index 000000000000..00c7ca421f98 --- /dev/null +++ b/core/res/res/values-fr-rCA/arrays.xml @@ -0,0 +1,32 @@ + + + + + + + 49875832 + -97150726 + + + + 3 + + + diff --git a/core/res/res/values-fr-rCH/arrays.xml b/core/res/res/values-fr-rCH/arrays.xml new file mode 100644 index 000000000000..f2982e9f54d9 --- /dev/null +++ b/core/res/res/values-fr-rCH/arrays.xml @@ -0,0 +1,32 @@ + + + + + + + 46948020 + 7448206 + + + + 4 + + + diff --git a/core/res/res/values-he-rIL/arrays.xml b/core/res/res/values-he-rIL/arrays.xml new file mode 100644 index 000000000000..87c1231cf5dd --- /dev/null +++ b/core/res/res/values-he-rIL/arrays.xml @@ -0,0 +1,32 @@ + + + + + + + 31046051 + 34851612 + + + + 4 + + + diff --git a/core/res/res/values-hi-rIN/arrays.xml b/core/res/res/values-hi-rIN/arrays.xml new file mode 100644 index 000000000000..d5b2889c59f2 --- /dev/null +++ b/core/res/res/values-hi-rIN/arrays.xml @@ -0,0 +1,32 @@ + + + + + + + 20593684 + 78962880 + + + + 3 + + + diff --git a/core/res/res/values-hu-rHU/arrays.xml b/core/res/res/values-hu-rHU/arrays.xml new file mode 100644 index 000000000000..833bb24304b1 --- /dev/null +++ b/core/res/res/values-hu-rHU/arrays.xml @@ -0,0 +1,32 @@ + + + + + + + 47162494 + 19503304 + + + + 4 + + + diff --git a/core/res/res/values-id-rID/arrays.xml b/core/res/res/values-id-rID/arrays.xml new file mode 100644 index 000000000000..512cace1a568 --- /dev/null +++ b/core/res/res/values-id-rID/arrays.xml @@ -0,0 +1,32 @@ + + + + + + + -789275 + 113921327 + + + + 3 + + + diff --git a/core/res/res/values-it-rCH/arrays.xml b/core/res/res/values-it-rCH/arrays.xml new file mode 100644 index 000000000000..f2982e9f54d9 --- /dev/null +++ b/core/res/res/values-it-rCH/arrays.xml @@ -0,0 +1,32 @@ + + + + + + + 46948020 + 7448206 + + + + 4 + + + diff --git a/core/res/res/values-ko-rKR/arrays.xml b/core/res/res/values-ko-rKR/arrays.xml new file mode 100644 index 000000000000..e245def469e9 --- /dev/null +++ b/core/res/res/values-ko-rKR/arrays.xml @@ -0,0 +1,32 @@ + + + + + + + 37560908 + 126987705 + + + + 4 + + + diff --git a/core/res/res/values-lt-rLT/arrays.xml b/core/res/res/values-lt-rLT/arrays.xml new file mode 100644 index 000000000000..0d5a3aa8253b --- /dev/null +++ b/core/res/res/values-lt-rLT/arrays.xml @@ -0,0 +1,32 @@ + + + + + + + 55169438 + 23881275 + + + + 4 + + + diff --git a/core/res/res/values-lv-rLV/arrays.xml b/core/res/res/values-lv-rLV/arrays.xml new file mode 100644 index 000000000000..d9ba7a44afc0 --- /dev/null +++ b/core/res/res/values-lv-rLV/arrays.xml @@ -0,0 +1,32 @@ + + + + + + + 55879635 + 24603189 + + + + 4 + + + diff --git a/core/res/res/values-nl-rBE/arrays.xml b/core/res/res/values-nl-rBE/arrays.xml new file mode 100644 index 000000000000..9e93a0922154 --- /dev/null +++ b/core/res/res/values-nl-rBE/arrays.xml @@ -0,0 +1,32 @@ + + + + + + + 50854509 + 4376678 + + + + 5 + + + diff --git a/core/res/res/values-nl-rNL/arrays.xml b/core/res/res/values-nl-rNL/arrays.xml new file mode 100644 index 000000000000..fe5422bf953b --- /dev/null +++ b/core/res/res/values-nl-rNL/arrays.xml @@ -0,0 +1,32 @@ + + + + + + + 51589256 + 4774396 + + + + 4 + + + diff --git a/core/res/res/values-no-rNO/arrays.xml b/core/res/res/values-no-rNO/arrays.xml new file mode 100644 index 000000000000..500e8e1edf1d --- /dev/null +++ b/core/res/res/values-no-rNO/arrays.xml @@ -0,0 +1,32 @@ + + + + + + + 59910761 + 10749092 + + + + 4 + + + diff --git a/core/res/res/values-pl-rPL/arrays.xml b/core/res/res/values-pl-rPL/arrays.xml new file mode 100644 index 000000000000..950248c4d545 --- /dev/null +++ b/core/res/res/values-pl-rPL/arrays.xml @@ -0,0 +1,32 @@ + + + + + + + 52235474 + 21004057 + + + + 4 + + + diff --git a/core/res/res/values-pt-rBR/arrays.xml b/core/res/res/values-pt-rBR/arrays.xml new file mode 100644 index 000000000000..389d0c4fc0a7 --- /dev/null +++ b/core/res/res/values-pt-rBR/arrays.xml @@ -0,0 +1,32 @@ + + + + + + + -22863878 + -43244097 + + + + 3 + + + diff --git a/core/res/res/values-pt-rPT/arrays.xml b/core/res/res/values-pt-rPT/arrays.xml new file mode 100644 index 000000000000..a1ba15aa9c8a --- /dev/null +++ b/core/res/res/values-pt-rPT/arrays.xml @@ -0,0 +1,32 @@ + + + + + + + 38707163 + -9135517 + + + + 4 + + + diff --git a/core/res/res/values-ro-rRO/arrays.xml b/core/res/res/values-ro-rRO/arrays.xml new file mode 100644 index 000000000000..c5579d0e4d45 --- /dev/null +++ b/core/res/res/values-ro-rRO/arrays.xml @@ -0,0 +1,32 @@ + + + + + + + 45943161 + 24966760 + + + + 4 + + + diff --git a/core/res/res/values-ru-rRU/arrays.xml b/core/res/res/values-ru-rRU/arrays.xml new file mode 100644 index 000000000000..733fdc07de1c --- /dev/null +++ b/core/res/res/values-ru-rRU/arrays.xml @@ -0,0 +1,32 @@ + + + + + + + 55750449 + 37621136 + + + + 2 + + + diff --git a/core/res/res/values-sk-rSK/arrays.xml b/core/res/res/values-sk-rSK/arrays.xml new file mode 100644 index 000000000000..b065ba52431a --- /dev/null +++ b/core/res/res/values-sk-rSK/arrays.xml @@ -0,0 +1,32 @@ + + + + + + + 48669026 + 19699024 + + + + 4 + + + diff --git a/core/res/res/values-sl-rSI/arrays.xml b/core/res/res/values-sl-rSI/arrays.xml new file mode 100644 index 000000000000..41581571d9a8 --- /dev/null +++ b/core/res/res/values-sl-rSI/arrays.xml @@ -0,0 +1,32 @@ + + + + + + + 46151241 + 14995463 + + + + 4 + + + diff --git a/core/res/res/values-sr-rRS/arrays.xml b/core/res/res/values-sr-rRS/arrays.xml new file mode 100644 index 000000000000..98dc954dbdb1 --- /dev/null +++ b/core/res/res/values-sr-rRS/arrays.xml @@ -0,0 +1,32 @@ + + + + + + + 44016521 + 21005859 + + + + 4 + + + diff --git a/core/res/res/values-sv-rSE/arrays.xml b/core/res/res/values-sv-rSE/arrays.xml new file mode 100644 index 000000000000..988d356ff16d --- /dev/null +++ b/core/res/res/values-sv-rSE/arrays.xml @@ -0,0 +1,32 @@ + + + + + + + 59330650 + 18067360 + + + + 4 + + + diff --git a/core/res/res/values-th-rTH/arrays.xml b/core/res/res/values-th-rTH/arrays.xml new file mode 100644 index 000000000000..fe765922b955 --- /dev/null +++ b/core/res/res/values-th-rTH/arrays.xml @@ -0,0 +1,32 @@ + + + + + + + 15870032 + 100992541 + + + + 4 + + + diff --git a/core/res/res/values-tl-rPH/arrays.xml b/core/res/res/values-tl-rPH/arrays.xml new file mode 100644 index 000000000000..2edac64dd7c2 --- /dev/null +++ b/core/res/res/values-tl-rPH/arrays.xml @@ -0,0 +1,32 @@ + + + + + + + 12879721 + 121774017 + + + + 4 + + + diff --git a/core/res/res/values-tr-rTR/arrays.xml b/core/res/res/values-tr-rTR/arrays.xml new file mode 100644 index 000000000000..f045cfff50bd --- /dev/null +++ b/core/res/res/values-tr-rTR/arrays.xml @@ -0,0 +1,32 @@ + + + + + + + 41034435 + 28977556 + + + + 3 + + + diff --git a/core/res/res/values-uk-rUA/arrays.xml b/core/res/res/values-uk-rUA/arrays.xml new file mode 100644 index 000000000000..746befd86918 --- /dev/null +++ b/core/res/res/values-uk-rUA/arrays.xml @@ -0,0 +1,32 @@ + + + + + + + 48379433 + 31165580 + + + + 3 + + + diff --git a/core/res/res/values-vi-rVN/arrays.xml b/core/res/res/values-vi-rVN/arrays.xml new file mode 100644 index 000000000000..6b220815fa21 --- /dev/null +++ b/core/res/res/values-vi-rVN/arrays.xml @@ -0,0 +1,32 @@ + + + + + + + 14058324 + 108277199 + + + + 4 + + + diff --git a/core/res/res/values-zh-rCN/arrays.xml b/core/res/res/values-zh-rCN/arrays.xml new file mode 100644 index 000000000000..16da6d91e49f --- /dev/null +++ b/core/res/res/values-zh-rCN/arrays.xml @@ -0,0 +1,32 @@ + + + + + + + 39937795 + 116387224 + + + + 2 + + + diff --git a/core/res/res/values-zh-rTW/arrays.xml b/core/res/res/values-zh-rTW/arrays.xml new file mode 100644 index 000000000000..be0795b84af0 --- /dev/null +++ b/core/res/res/values-zh-rTW/arrays.xml @@ -0,0 +1,32 @@ + + + + + + + 25022112 + 121478019 + + + + 3 + + + -- cgit v1.2.3-59-g8ed1b From 304eefa6a33da9b75b4075cc7eb170cf4ced4cdb Mon Sep 17 00:00:00 2001 From: Romain Guy <> Date: Tue, 24 Mar 2009 20:01:49 -0700 Subject: Automated import from //branches/donutburger/...@141314,141314 --- core/java/android/widget/ListView.java | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/core/java/android/widget/ListView.java b/core/java/android/widget/ListView.java index fd5556e8fac9..4d5032ea3129 100644 --- a/core/java/android/widget/ListView.java +++ b/core/java/android/widget/ListView.java @@ -2054,18 +2054,19 @@ public class ListView extends AbsListView { */ private boolean handleHorizontalFocusWithinListItem(int direction) { if (direction != View.FOCUS_LEFT && direction != View.FOCUS_RIGHT) { - throw new IllegalArgumentException("direction must be one of {View.FOCUS_LEFT, View.FOCUS_RIGHT}"); + throw new IllegalArgumentException("direction must be one of" + + " {View.FOCUS_LEFT, View.FOCUS_RIGHT}"); } final int numChildren = getChildCount(); if (mItemsCanFocus && numChildren > 0 && mSelectedPosition != INVALID_POSITION) { final View selectedView = getSelectedView(); - if (selectedView.hasFocus() && selectedView instanceof ViewGroup) { + if (selectedView != null && selectedView.hasFocus() && + selectedView instanceof ViewGroup) { + final View currentFocus = selectedView.findFocus(); final View nextFocus = FocusFinder.getInstance().findNextFocus( - (ViewGroup) selectedView, - currentFocus, - direction); + (ViewGroup) selectedView, currentFocus, direction); if (nextFocus != null) { // do the math to get interesting rect in next focus' coordinates currentFocus.getFocusedRect(mTempRect); @@ -2079,11 +2080,8 @@ public class ListView extends AbsListView { // if the global result is going to be some other view within this // list. this is to acheive the overall goal of having // horizontal d-pad navigation remain in the current item. - final View globalNextFocus = FocusFinder.getInstance() - .findNextFocus( - (ViewGroup) getRootView(), - currentFocus, - direction); + final View globalNextFocus = FocusFinder.getInstance().findNextFocus( + (ViewGroup) getRootView(), currentFocus, direction); if (globalNextFocus != null) { return isViewAncestorOf(globalNextFocus, this); } -- cgit v1.2.3-59-g8ed1b From c2d251a1170e722f87c48d70a923e62e6c305fdc Mon Sep 17 00:00:00 2001 From: Mark Womack <> Date: Tue, 24 Mar 2009 20:03:11 -0700 Subject: Automated import from //branches/donutburger/...@141325,141325 --- core/java/android/provider/Checkin.java | 1 + 1 file changed, 1 insertion(+) diff --git a/core/java/android/provider/Checkin.java b/core/java/android/provider/Checkin.java index 7c8a33132b2e..a87f5fa23a61 100644 --- a/core/java/android/provider/Checkin.java +++ b/core/java/android/provider/Checkin.java @@ -180,6 +180,7 @@ public final class Checkin { MARKET_REASON_PARSE_MANIFEST_MALFORMED, MARKET_REASON_PARSE_MANIFEST_EMPTY, MARKET_REASON_UNKNOWN, + MARKET_STALE_INSTALL_ATTEMPT, } } -- cgit v1.2.3-59-g8ed1b From 49a1a9b5a9d467411067207b4714068084a910ee Mon Sep 17 00:00:00 2001 From: Dianne Hackborn <> Date: Tue, 24 Mar 2009 20:06:11 -0700 Subject: Automated import from //branches/donutburger/...@141347,141347 --- core/java/android/widget/TextView.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java index 01b65b6adf83..81516b9158dc 100644 --- a/core/java/android/widget/TextView.java +++ b/core/java/android/widget/TextView.java @@ -727,7 +727,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener | EditorInfo.TYPE_TEXT_FLAG_MULTI_LINE); } else if (phone) { mInput = DialerKeyListener.getInstance(); - inputType = EditorInfo.TYPE_CLASS_PHONE; + mInputType = inputType = EditorInfo.TYPE_CLASS_PHONE; } else if (numeric != 0) { mInput = DigitsKeyListener.getInstance((numeric & SIGNED) != 0, (numeric & DECIMAL) != 0); -- cgit v1.2.3-59-g8ed1b From 886f3d69b79748fe937725e33b8bbb3d67ab82c7 Mon Sep 17 00:00:00 2001 From: Bob Lee <> Date: Tue, 24 Mar 2009 20:06:51 -0700 Subject: Automated import from //branches/donutburger/...@141355,141355 --- .../net/http/CertificateChainValidator.java | 23 ++- core/java/android/net/http/HttpsConnection.java | 159 +++++++++++---------- .../android/internal/logging/AndroidHandler.java | 16 +-- preloaded-classes | 1 + 4 files changed, 97 insertions(+), 102 deletions(-) diff --git a/core/java/android/net/http/CertificateChainValidator.java b/core/java/android/net/http/CertificateChainValidator.java index 0edbe5b7e1a1..91fa90079923 100644 --- a/core/java/android/net/http/CertificateChainValidator.java +++ b/core/java/android/net/http/CertificateChainValidator.java @@ -43,7 +43,8 @@ class CertificateChainValidator { /** * The singleton instance of the certificate chain validator */ - private static CertificateChainValidator sInstance; + private static final CertificateChainValidator sInstance + = new CertificateChainValidator(); /** * Default trust manager (used to perform CA certificate validation) @@ -54,10 +55,6 @@ class CertificateChainValidator { * @return The singleton instance of the certificator chain validator */ public static CertificateChainValidator getInstance() { - if (sInstance == null) { - sInstance = new CertificateChainValidator(); - } - return sInstance; } @@ -159,13 +156,11 @@ class CertificateChainValidator { // report back to the user. // try { - synchronized (mDefaultTrustManager) { - mDefaultTrustManager.checkServerTrusted( - serverCertificates, "RSA"); + mDefaultTrustManager.checkServerTrusted( + serverCertificates, "RSA"); - // no errors!!! - return null; - } + // no errors!!! + return null; } catch (CertificateException e) { if (HttpLog.LOGV) { HttpLog.v( @@ -191,10 +186,8 @@ class CertificateChainValidator { // check if the last certificate in the chain (root) is trusted X509Certificate[] rootCertificateChain = { currCertificate }; try { - synchronized (mDefaultTrustManager) { - mDefaultTrustManager.checkServerTrusted( - rootCertificateChain, "RSA"); - } + mDefaultTrustManager.checkServerTrusted( + rootCertificateChain, "RSA"); } catch (CertificateExpiredException e) { String errorMessage = e.getMessage(); if (errorMessage == null) { diff --git a/core/java/android/net/http/HttpsConnection.java b/core/java/android/net/http/HttpsConnection.java index fe02d3ea6430..55b733f3ea6f 100644 --- a/core/java/android/net/http/HttpsConnection.java +++ b/core/java/android/net/http/HttpsConnection.java @@ -17,61 +17,41 @@ package android.net.http; import android.content.Context; - -import junit.framework.Assert; - -import java.io.IOException; - -import java.security.cert.X509Certificate; - -import java.net.Socket; -import java.net.InetSocketAddress; - -import javax.net.ssl.SSLContext; -import javax.net.ssl.SSLException; -import javax.net.ssl.SSLSocket; -import javax.net.ssl.SSLSocketFactory; -import javax.net.ssl.TrustManager; -import javax.net.ssl.X509TrustManager; - +import android.util.Log; +import org.apache.harmony.xnet.provider.jsse.FileClientSessionCache; +import org.apache.harmony.xnet.provider.jsse.SSLClientSessionCache; +import org.apache.harmony.xnet.provider.jsse.SSLContextImpl; import org.apache.http.Header; -import org.apache.http.HttpClientConnection; import org.apache.http.HttpException; import org.apache.http.HttpHost; -import org.apache.http.HttpRequest; -import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; import org.apache.http.ParseException; import org.apache.http.ProtocolVersion; import org.apache.http.StatusLine; -import org.apache.http.impl.DefaultHttpClientConnection; import org.apache.http.message.BasicHttpRequest; import org.apache.http.params.BasicHttpParams; -import org.apache.http.params.HttpParams; import org.apache.http.params.HttpConnectionParams; +import org.apache.http.params.HttpParams; -/** - * Simple exception we throw if the SSL connection is closed by the user. - * - * {@hide} - */ -class SSLConnectionClosedByUserException extends SSLException { - - public SSLConnectionClosedByUserException(String reason) { - super(reason); - } -} +import javax.net.ssl.SSLException; +import javax.net.ssl.SSLSocket; +import javax.net.ssl.SSLSocketFactory; +import javax.net.ssl.TrustManager; +import javax.net.ssl.X509TrustManager; +import java.io.File; +import java.io.IOException; +import java.net.InetSocketAddress; +import java.net.Socket; +import java.security.KeyManagementException; +import java.security.cert.X509Certificate; /** * A Connection connecting to a secure http server or tunneling through * a http proxy server to a https server. + * + * @hide */ -class HttpsConnection extends Connection { - - /** - * SSL context - */ - private static SSLContext mSslContext = null; +public class HttpsConnection extends Connection { /** * SSL socket factory @@ -79,42 +59,59 @@ class HttpsConnection extends Connection { private static SSLSocketFactory mSslSocketFactory = null; static { - // initialize the socket factory + // This intiialization happens in the zygote. It triggers some + // lazy initialization that can will benefit later invocations of + // initializeEngine(). + initializeEngine(null); + } + + /** + * @hide + * + * @param sessionDir directory to cache SSL sessions + */ + public static void initializeEngine(File sessionDir) { try { - mSslContext = SSLContext.getInstance("TLS"); - if (mSslContext != null) { - // here, trust managers is a single trust-all manager - TrustManager[] trustManagers = new TrustManager[] { - new X509TrustManager() { - public X509Certificate[] getAcceptedIssuers() { - return null; - } + SSLClientSessionCache cache = null; + if (sessionDir != null) { + Log.d("HttpsConnection", "Caching SSL sessions in " + + sessionDir + "."); + cache = FileClientSessionCache.usingDirectory(sessionDir); + } - public void checkClientTrusted( - X509Certificate[] certs, String authType) { - } + SSLContextImpl sslContext = new SSLContextImpl(); - public void checkServerTrusted( - X509Certificate[] certs, String authType) { - } + // here, trust managers is a single trust-all manager + TrustManager[] trustManagers = new TrustManager[] { + new X509TrustManager() { + public X509Certificate[] getAcceptedIssuers() { + return null; } - }; - mSslContext.init(null, trustManagers, null); - mSslSocketFactory = mSslContext.getSocketFactory(); - } - } catch (Exception t) { - if (HttpLog.LOGV) { - HttpLog.v("HttpsConnection: failed to initialize the socket factory"); + public void checkClientTrusted( + X509Certificate[] certs, String authType) { + } + + public void checkServerTrusted( + X509Certificate[] certs, String authType) { + } + } + }; + + sslContext.engineInit(null, trustManagers, null, cache, null); + + synchronized (HttpsConnection.class) { + mSslSocketFactory = sslContext.engineGetSocketFactory(); } + } catch (KeyManagementException e) { + throw new RuntimeException(e); + } catch (IOException e) { + throw new RuntimeException(e); } } - /** - * @return The shared SSL context. - */ - /*package*/ static SSLContext getContext() { - return mSslContext; + private synchronized static SSLSocketFactory getSocketFactory() { + return mSslSocketFactory; } /** @@ -252,10 +249,8 @@ class HttpsConnection extends Connection { if (statusCode == HttpStatus.SC_OK) { try { - synchronized (mSslSocketFactory) { - sslSock = (SSLSocket) mSslSocketFactory.createSocket( + sslSock = (SSLSocket) getSocketFactory().createSocket( proxySock, mHost.getHostName(), mHost.getPort(), true); - } } catch(IOException e) { if (sslSock != null) { sslSock.close(); @@ -288,14 +283,11 @@ class HttpsConnection extends Connection { } else { // if we do not have a proxy, we simply connect to the host try { - synchronized (mSslSocketFactory) { - sslSock = (SSLSocket) mSslSocketFactory.createSocket(); - - sslSock.setSoTimeout(SOCKET_TIMEOUT); - sslSock.connect(new InetSocketAddress(mHost.getHostName(), - mHost.getPort())); - - } + sslSock = (SSLSocket) getSocketFactory().createSocket(); + + sslSock.setSoTimeout(SOCKET_TIMEOUT); + sslSock.connect(new InetSocketAddress(mHost.getHostName(), + mHost.getPort())); } catch(IOException e) { if (sslSock != null) { sslSock.close(); @@ -371,6 +363,7 @@ class HttpsConnection extends Connection { BasicHttpParams params = new BasicHttpParams(); params.setIntParameter(HttpConnectionParams.SOCKET_BUFFER_SIZE, 8192); conn.bind(sslSock, params); + return conn; } @@ -425,3 +418,15 @@ class HttpsConnection extends Connection { return "https"; } } + +/** + * Simple exception we throw if the SSL connection is closed by the user. + * + * {@hide} + */ +class SSLConnectionClosedByUserException extends SSLException { + + public SSLConnectionClosedByUserException(String reason) { + super(reason); + } +} diff --git a/core/java/com/android/internal/logging/AndroidHandler.java b/core/java/com/android/internal/logging/AndroidHandler.java index d9fcf60756ea..c4a147959a9b 100644 --- a/core/java/com/android/internal/logging/AndroidHandler.java +++ b/core/java/com/android/internal/logging/AndroidHandler.java @@ -151,7 +151,7 @@ public class AndroidHandler extends Handler { Log.e("AndroidHandler", "Error logging message.", e); } } - + /** * Converts a {@link java.util.logging.Logger} logging level into an Android one. * @@ -159,20 +159,16 @@ public class AndroidHandler extends Handler { * * @return The resulting Android logging level. */ - static int getAndroidLevel(Level level) - { + static int getAndroidLevel(Level level) { int value = level.intValue(); - - if (value >= Level.SEVERE.intValue()) { + if (value >= 1000) { // SEVERE return Log.ERROR; - } else if (value >= Level.WARNING.intValue()) { + } else if (value >= 900) { // WARNING return Log.WARN; - } else if (value >= Level.INFO.intValue()) { + } else if (value >= 800) { // INFO return Log.INFO; - } else if (value >= Level.CONFIG.intValue()) { + } else { return Log.DEBUG; - } else { - return Log.VERBOSE; } } diff --git a/preloaded-classes b/preloaded-classes index ffcdc87c59fd..e3197b415ea7 100644 --- a/preloaded-classes +++ b/preloaded-classes @@ -241,6 +241,7 @@ android.net.http.AndroidHttpClient$1 android.net.http.AndroidHttpClient$2 android.net.http.AndroidHttpClient$CurlLogger android.net.http.DomainNameChecker +android.net.http.CertificateChainValidator android.net.http.EventHandler android.net.http.HttpsConnection android.net.http.RequestQueue -- cgit v1.2.3-59-g8ed1b From 8a7dc17790b7f24e8e819eca46d14c4471230eba Mon Sep 17 00:00:00 2001 From: Chris Tate <> Date: Tue, 24 Mar 2009 20:11:42 -0700 Subject: Automated import from //branches/donutburger/...@141391,141391 --- core/java/android/app/ActivityThread.java | 7 ++++++- services/java/com/android/server/am/ActivityManagerService.java | 7 +++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java index cb1e903d2bb3..acf41eeb0f3b 100644 --- a/core/java/android/app/ActivityThread.java +++ b/core/java/android/app/ActivityThread.java @@ -114,6 +114,7 @@ public final class ActivityThread { private static final boolean DEBUG = false; private static final boolean localLOGV = DEBUG ? Config.LOGD : Config.LOGV; private static final boolean DEBUG_BROADCAST = false; + private static final boolean DEBUG_RESULTS = false; private static final long MIN_TIME_BETWEEN_GCS = 5*1000; private static final Pattern PATTERN_SEMICOLON = Pattern.compile(";"); private static final int SQLITE_MEM_RELEASED_EVENT_LOG_TAG = 75003; @@ -2118,6 +2119,8 @@ public final class ActivityThread { public final void sendActivityResult( IBinder token, String id, int requestCode, int resultCode, Intent data) { + if (DEBUG_RESULTS) Log.v(TAG, "sendActivityResult: id=" + id + + " req=" + requestCode + " res=" + resultCode + " data=" + data); ArrayList list = new ArrayList(); list.add(new ResultInfo(id, requestCode, resultCode, data)); mAppThread.scheduleSendResult(token, list); @@ -2993,6 +2996,8 @@ public final class ActivityThread { if (ri.mData != null) { ri.mData.setExtrasClassLoader(r.activity.getClassLoader()); } + if (DEBUG_RESULTS) Log.v(TAG, + "Delivering result to activity " + r + " : " + ri); r.activity.dispatchActivityResult(ri.mResultWho, ri.mRequestCode, ri.mResultCode, ri.mData); } catch (Exception e) { @@ -3008,7 +3013,7 @@ public final class ActivityThread { private final void handleSendResult(ResultData res) { ActivityRecord r = mActivities.get(res.token); - if (localLOGV) Log.v(TAG, "Handling send result to " + r); + if (DEBUG_RESULTS) Log.v(TAG, "Handling send result to " + r); if (r != null) { final boolean resumed = !r.paused; if (!r.activity.mFinished && r.activity.mDecor != null diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java index da567a8dcee7..a7dac6164bba 100644 --- a/services/java/com/android/server/am/ActivityManagerService.java +++ b/services/java/com/android/server/am/ActivityManagerService.java @@ -3427,7 +3427,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen */ private final boolean requestFinishActivityLocked(IBinder token, int resultCode, Intent resultData, String reason) { - if (localLOGV) Log.v( + if (DEBUG_RESULTS) Log.v( TAG, "Finishing activity: token=" + token + ", result=" + resultCode + ", data=" + resultData); @@ -3490,7 +3490,9 @@ public final class ActivityManagerService extends ActivityManagerNative implemen // send the result HistoryRecord resultTo = r.resultTo; if (resultTo != null) { - if (DEBUG_RESULTS) Log.v(TAG, "Adding result to " + resultTo); + if (DEBUG_RESULTS) Log.v(TAG, "Adding result to " + resultTo + + " who=" + r.resultWho + " req=" + r.requestCode + + " res=" + resultCode + " data=" + resultData); if (r.info.applicationInfo.uid > 0) { grantUriPermissionFromIntentLocked(r.info.applicationInfo.uid, r.packageName, resultData, r); @@ -3499,6 +3501,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen resultData); r.resultTo = null; } + else if (DEBUG_RESULTS) Log.v(TAG, "No result destination from " + r); // Make sure this HistoryRecord is not holding on to other resources, // because clients have remote IPC references to this object so we -- cgit v1.2.3-59-g8ed1b From 64c62ba503c73eee1fb647ffcc1b3df287640ab1 Mon Sep 17 00:00:00 2001 From: Joe Onorato <> Date: Tue, 24 Mar 2009 20:13:57 -0700 Subject: Automated import from //branches/donutburger/...@141409,141409 --- services/java/com/android/server/PowerManagerService.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/services/java/com/android/server/PowerManagerService.java b/services/java/com/android/server/PowerManagerService.java index 2fac5f719f0c..a900b3e5a307 100644 --- a/services/java/com/android/server/PowerManagerService.java +++ b/services/java/com/android/server/PowerManagerService.java @@ -929,6 +929,10 @@ class PowerManagerService extends IPowerManager.Stub implements LocalPowerManage private void sendNotificationLocked(boolean on, int why) { + if (!on) { + mStillNeedSleepNotification = false; + } + // Add to the queue. int index = 0; while (mBroadcastQueue[index] != -1) { -- cgit v1.2.3-59-g8ed1b From 0818aca466719cedcdb7c12bf92dece07f4765c7 Mon Sep 17 00:00:00 2001 From: Dirk Dougherty <> Date: Tue, 24 Mar 2009 20:19:21 -0700 Subject: Automated import from //branches/donutburger/...@141445,141445 --- docs/html/sdk/1.5_r1/index.jd | 62 +++++++ docs/html/sdk/1.5_r1/installing.jd | 312 +++++++++++++++++++++++++++++++++++ docs/html/sdk/1.5_r1/requirements.jd | 42 +++++ docs/html/sdk/1.5_r1/upgrading.jd | 150 +++++++++++++++++ docs/html/sdk/android-1.5.jd | 248 ++++++++++++++++++++++++++++ docs/html/sdk/sdk_toc.cs | 3 +- 6 files changed, 816 insertions(+), 1 deletion(-) create mode 100644 docs/html/sdk/1.5_r1/index.jd create mode 100644 docs/html/sdk/1.5_r1/installing.jd create mode 100644 docs/html/sdk/1.5_r1/requirements.jd create mode 100644 docs/html/sdk/1.5_r1/upgrading.jd create mode 100644 docs/html/sdk/android-1.5.jd diff --git a/docs/html/sdk/1.5_r1/index.jd b/docs/html/sdk/1.5_r1/index.jd new file mode 100644 index 000000000000..345489ad7480 --- /dev/null +++ b/docs/html/sdk/1.5_r1/index.jd @@ -0,0 +1,62 @@ +page.title=Android 1.5 SDK, Release 1 + +sdk.version=1.5_r1 +sdk.date=April 2009 + +sdk.win_download=android-sdk-windows-1.5_r1.zip +sdk.win_bytes= +sdk.win_checksum= + +sdk.mac_download=android-sdk-mac_x86-1.5_r1.zip +sdk.mac_bytes= +sdk.mac_checksum= + +sdk.linux_download=android-sdk-linux_x86-1.5_r1.zip +sdk.linux_bytes= +sdk.linux_checksum= + + +@jd:body + +

SDK Contents

+ +

Development tools

+ +

The SDK includes a variety 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 included in this SDK is the same as that included in the Android 1.0, Release 2 SDK.

+ +

System Images

+ +

The Android system images listed below are included in this SDK. For more information about a system image — features, applications included, localizations, API changes, and so on — see its Version Notes.

+ + + + + + + + + + + + + + +
System ImageAPI LevelNotesDescription
Android 1.53Version NotesIncludes com.google.android.maps external library and a set of standard development applications.
+ +

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>/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.5_r1/installing.jd b/docs/html/sdk/1.5_r1/installing.jd new file mode 100644 index 000000000000..df9ec3aee89b --- /dev/null +++ b/docs/html/sdk/1.5_r1/installing.jd @@ -0,0 +1,312 @@ +page.title=Installing the Android SDK +sdk.version=1.5_r1 + +@jd:body + + +

This page describes how to install the Android SDK and set up your +development environment. If you haven't downloaded the SDK, you can +do so from the +Download page.

+ +

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 SDK, please skip this page and read the +Upgrading the +SDK document instead. +

+ + +

Preparing for Installation

+ +

Before you get started with the Android SDK, 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. 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.

+ +

Installing the SDK

+ +

After downloading the SDK, unpack the .zip archive to a suitable location on your machine. By default, the SDK files are unpacked into a directory named android_sdk_<platform>_<release>_<build>. The directory contains a link to a local copy of the documentation and the subdirectories tools/, samples/, and others.

+ +

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 using SDK tools.

+ +

Optionally, you can add the path to the SDK tools directory to your path. As mentioned above, the tools/ directory is located in the SDK 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.
  • +
+ +

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. Note that, if you update your SDK, 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 environment for developing Android applications, continue reading the next +section in order to install the Android Development Tools plugin and set up Eclipse. If you choose not to use Eclipse, you can +develop Android applications using other tools — read the guide to developing +in other IDEs.

+ + +

Installing 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, and debug using the Android SDK tools.

+ +

If you are new to Android or want to develop using the Eclipse IDE, +the ADT plugin will be an essential part of your development +environment. In general, using Eclipse with ADT is a highly recommended +approach and is the fastest way to get started. This section describes +how to install ADT into your Eclipse environment. + +

If you prefer to work in a development environment other than Eclipse, +you do not need to install Eclipse or the ADT Plugin. Instead, you can +access the SDK tools directly to build and debug your application.

+ +

Once you have Eclipse 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.3 (Europa)Eclipse 3.4 (Ganymede)
+
    +
  1. Start Eclipse, then select Help > Software Updates > Find + and Install....
  2. + +
  3. In the dialog that appears, select Search for new features to install and click Next.
  4. +
  5. Click New Remote Site.
  6. +
  7. In the resulting dialog box, enter a name for the remote site (e.g. Android Plugin) and enter this as its URL: +
    https://dl-ssl.google.com/android/eclipse/
    +

    Alternatively, you can use http in the Location URL, if you are having + trouble with https (https is preferred for security reasons).

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

    Click OK.

  8. +
  9. You should now see the new site added to the search list (and checked). + Click Finish.
  10. +
  11. In the subsequent Search Results dialog box, select the checkbox for + Android Plugin > Developer Tools. + This will check both features: "Android Developer Tools", and "Android + Editors". The Android Editors feature is optional, but recommended. If + you choose to install it, you need the WST plugin mentioned earlier in this + page. Click Next.
  12. +
  13. Read the license agreement and then select Accept terms of the license agreement. + Click Next.
  14. +
  15. Click Finish.
  16. + +
  17. The ADT plugin is not signed; you can accept the installation anyway + by clicking Install All.
  18. +
  19. Restart Eclipse.
  20. +
+ +
+ +
    +
  1. Start Eclipse, then select Help > Software Updates.... +
  2. +
  3. In the dialog that appears, click the Available Software tab. +
  4. +
  5. Click Add Site... +
  6. +
  7. Enter this as the Location: +
    https://dl-ssl.google.com/android/eclipse/
    +

    Alternatively, you can use http in the Location URL, if you are having + trouble with https (https is preferred for security reasons).

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

    Click OK.

  8. +
  9. Back in the Available Software view, you should see the plugin. Select the checkbox next to + Developer Tools and click Install... +
  10. +
  11. On the subsequent Install window, "Android Developer Tools", and "Android Editors" should both be checked. + The Android Editors feature is optional, but recommended. If + you choose to install it, you need the WST plugin mentioned earlier in this + page. Click Next. +
  12. +
  13. Accept the license agreement and click Finish.
  14. +
  15. Restart Eclipse.
  16. +
+ +
+ +

Now, you just need to modify your Eclipse preferences to point to the Android SDK directory:

+
    +
  1. Select Window > Preferences... to open the Preferences + panel. (Mac OS X: Eclipse > Preferences)
  2. +
  3. Select Android from the left panel.
  4. +
  5. For the SDK Location in the main panel, click Browse... and locate the 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 After +Installation: Next Steps section for suggestions on how to start.

+ + +

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 files to your local machine using a browser and the install the files in Eclipse from there: +

+
    +
  1. Download the ADT zip file (do not unpack it). +
  2. Follow steps 1 and 2 in the default install instructions (above). +
  3. In Eclipse 3.3, click New Archive Site....
    + In Eclipse 3.4, click Add Site..., then Archive... +
  4. Browse and select the downloaded the zip file. +
  5. Follow the remaining procedures, above, starting from steps 5. +
+

+Note that to update your plugin, you will have to follow these steps again instead of the default update instructions.

+ +

Note that the "Android Editors" feature of ADT requires several optional +Eclipse components (for example, WST). If you encounter an error when +installing ADT, your Eclipse installion might not include those 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.

+ + +

After Installation: Next Steps

+

Once you have installed the SDK and the ADT Plugin, 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
  • +
  • Follow the +Notepad Tutorial to build a full Android application
  • +
  • Create a new project for one of the other sample applications +included in <sdk>/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.
  • +
+ + diff --git a/docs/html/sdk/1.5_r1/requirements.jd b/docs/html/sdk/1.5_r1/requirements.jd new file mode 100644 index 000000000000..3f0deca92210 --- /dev/null +++ b/docs/html/sdk/1.5_r1/requirements.jd @@ -0,0 +1,42 @@ +page.title=System Requirements + +sdk.version=1.5_r1 +sdk.date=April 2009 + +@jd:body + +

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

+ +

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 + +
  • +
  • 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.

\ No newline at end of file diff --git a/docs/html/sdk/1.5_r1/upgrading.jd b/docs/html/sdk/1.5_r1/upgrading.jd new file mode 100644 index 000000000000..23cb82c29fa0 --- /dev/null +++ b/docs/html/sdk/1.5_r1/upgrading.jd @@ -0,0 +1,150 @@ +page.title=Upgrading the SDK +sdk.version=1.5_r1 +@jd:body + + + +

This document describes how to move your development environment and existing +Android applications from an Android 1.0 SDK to the Android 1.5, Release 1 SDK. +If you are migrating applications from an earlier SDK, please read the upgrading +document available in the Android 1.0 SDK package. +

+ +

To ensure that your applications are compliant with the Android 1.5 system available +on mobile devices, you need to install the Android 1.5 SDK and port your existing Android +applications to it. The sections below will guide you through the process.

+ +

Installing the Latest SDK

+ +

Download the SDK and unpack it into a safe location.

+ +

After unpacking the new SDK and saving it an appropriate location, you should:

+ +
    +
  • Wipe your emulator data.

    Some data formats have changed since the last + SDK release, so any previously saved data in your emulator must be removed. Open a console/terminal + and navigate to the /tools directory of your new SDK. Launch the + emulator with the -wipe-data option. +

    Windows: emulator -wipe-data
    + Mac/Linux: ./emulator -wipe-data

    +
  • +
  • Update your PATH variable (Mac/Linux; optional).

    If you had previously setup your + PATH variable to point to the SDK tools directory, then you'll need to update it to + point to the new SDK. For example, for a .bashrc or .bash_profile file: + export PATH=$PATH:<your_new_sdk_dir>/tools

    +
  • +
  • If (and only if) you are developing using Ant, you will also need to modify + your build.xml properties to point to the new SDK. +

    Open the default.properties file associated with your build.xml + file (typically located in the same directory). In the default.properties + file, update the sdk-folder property with the full path to + the new SDK directory.

  • +
+ + +

Update your ADT Eclipse Plugin

+ +

If you develop on Eclipse and are migrating from an Android 1.0 +SDK, no update of the ADT plugin is needed — skip to Update your Eclipse SDK Preferences.

+ +

If you are migrating from an earlier version of the SDK, you will +need to update the ADT plugin.

You may also want to upgrade your +ADT plugin when a new version becomes available for your existing version +of the SDK.

+ +

The steps below describe how to update the ADT plugin to the latest +version available.

+ + + + + + + +
Eclipse 3.3 (Europa)Eclipse 3.4 (Ganymede)
+
    +
  1. Select Help > Software Updates > Find and Install....
  2. +
  3. Select Search for updates of the currently installed features and click Finish.
  4. +
  5. If any update for ADT is available, select and install.
  6. +
  7. Restart Eclipse.
  8. +
+

Alternatively,

+
    +
  1. Select Help > Software Updates > Manage Configuration.
  2. + +
  3. Navigate down the tree and select Android Development Tools <version>
  4. +
  5. Select Scan for Updates under Available Tasks.
  6. +
+
+
    +
  1. Select Help > Software Updates...
  2. +
  3. Select the Installed Software tab.
  4. +
  5. Click Update...
  6. +
  7. If an update for ADT is available, select it and click Finish.
  8. +
  9. Restart Eclipse.
  10. +
+
+ +

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 OSX: Eclipse > Preferences)
  2. +
  3. Select Android from the left panel.
  4. +
  5. For the SDK Location in the main panel, click Browse... and locate the SDK directory.
  6. +
  7. Click Apply, then OK.
  8. +
+ +

Migrate Your Applications, if Necessary

+ +

If (and only if) you have written apps in an SDK released previous to +the Android 1.0 SDK, you will need to migrate your applications. After +installing the new SDK and updating the ADT Plugin (if applicable), you +may encounter breakages in your application code, due to +framework and API changes. You'll need to update your code to match the +latest APIs.

+ +

One way to start is to open your project in Eclipse and see where the ADT +identifies errors in your application. From there, you can lookup +specific API changes in the Android 1.0 APIs in the + +Overview of Changes and +API Diffs Report.

+ +

If you have additional trouble updating your code, visit the +Android Developers Group +to seek help from other Android developers.

+ +

If you have modified one of the ApiDemos applications and would like to migrate it +to the new SDK, note that you will need to uninstall the version of ApiDemos that comes +preinstalled in the emulator. For more information, or if you encounter an "reinstallation" +error when running or installing ApiDemos, see the troubleshooting topic +I can't install ApiDemos +apps in my IDE because of a signing error for information about how to solve the problem.

+ diff --git a/docs/html/sdk/android-1.5.jd b/docs/html/sdk/android-1.5.jd new file mode 100644 index 000000000000..55fc4ba6d3b0 --- /dev/null +++ b/docs/html/sdk/android-1.5.jd @@ -0,0 +1,248 @@ +page.title=Android 1.5 Version Notes +sdk.version=1.5_r1 +sys.date=April 2009 +@jd:body + +

+Date: April 2009
+API Level: 3

+ + +

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

+ + + +

Overview

+ +

The Android 1.5 system image delivered in the SDK is the development +counterpart to the Android 1.5 production system image, deployable to +Android-powered handsets starting in February 2009.

+ +

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

+ +

Applications can reference a specific API Level value in their +manifest files, to indicate the minimum version of the Android system +required to run the application. To reference a minimum API Level, applications +can add a minSdkVersion attribute in their manifest files. +The value of the attribute is an integer corresponding to an API Level +identifier. Prior to installing an application, the system then checks the value of +minSdkVersion and allows the install only +if the referenced integer is less than or equal to the API Level integer stored +in the system itself.

+ +

If you use the Android 1.5 system image to build an application +compatible with Android-powered devices running the Android 1.5 +platform, please note that you must set the the +android:minSdkVersion attribute in the application's +manifest to "3", which is the API strictly associated with Android 1.5. +

+ +

Specifically, you define the android:minSdkVersion +attribute in a <uses-sdk> element as a child of +<manifest> in the manifest file. When set, the +attribute looks like this:

+ +
<manifest>
+  ...
+  <uses-sdk minSdkVersion="3" />
+  ...
+</manifest>
+ +

By setting android:minSdkVersion in this way, you ensure +that users will only be able to install your application if their +devices are running the Android 1.5 platform. In turn, this ensures that +your application will function properly on their devices, especially if +it uses APIs introduced in Android 1.5.

+ +

If your application uses APIs introduced in Android 1.5 but does not +declare <uses-sdk minSdkVersion="3" />, then it will +run properly on Android 1.5 devices but not on Android 1.0 +devices. In the latter case, the application will crash at runtime when +it tries to use the Android 1.5 APIs.

+ +

If your application does not use any new APIs introduced in Android +1.5, you can indicate general Android 1.0 compatibility by removing +minSdkVersion or setting the attribute to "1". However, +before publishing your application, you must make sure to compile your +application against the Android 1.0 system image (available in the +Android SDK), to ensure that it builds and functions properly for +Android 1.0 devices. You should test the application against system +images corresponding to the API Levels that the application is designed +to be compatible with.

+ +

If you are sure your application is not using Android 1.5 APIs and +has no need to use them, you might find it easier to keep working in the +Android 1.1 SDK, rather than migrating to the Android 1.5 SDK and having +to do additional testing.

+ + +

External Libraries

+ +

The system image includes these external libraries, which you can +access from your application by adding a +<uses-library>.

+
    +
  • com.google.android.maps — gives your +application access to Google Maps data. Note that, to use Google Maps +data, a Maps API Key is required.
  • +
+ +

Device Compatibility

+ +

The Android 1.5 system image was tested for compatability with the +Android-powered devices listed below:

+ + +

Built-in Applications

+ +

The system image includes these built-in applications:

+
    +
  • Alarm Clock
  • +
  • API Demos
  • +
  • Browser
  • +
  • Calculator
  • +
  • Camera
  • +
  • Contacts
  • +
  • Dev Tools
  • +
  • Dialer
  • +
  • Email
  • +
  • Maps (and StreetView)
  • +
  • Messaging
  • +
  • Music
  • +
  • Pictures
  • +
  • Settings
  • +
+ +

UI Localizations

+ +

The system image provides localized UI strings for the languages +listed below.

+
    +
  • English, US (en_US)
  • +
  • German (de)
  • +
+ +

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

+ +

Resolved Issues

+
    +
  • AlarmClock alert now plays audio/vibe directly, rather than through +AlarmManager. AlarmClock alert starts playing audio/vibe in its +IntentReceiver, rather than on activity start. These changes should +prevent alarms from being blocked by modal dialogs.
  • +
  • Fixes to device sleep.
  • +
  • Single tap no longer opens the in-call dialpad; users now need to +touch and drag it.
  • +
  • Fixes a bug causing approximately 1 in 25 outbound messages to +freeze up the IMAP connection (to a Gmail based server) when transferred +to the Sent folder.
  • +
  • Removes automatic account setup entries that were broken or not +testable. Adds minor fixes to a few of the remaining entries. Makes +improvements to warning dialogs used for a few special cases.
  • +
  • Changes default mail checking interval to every 15 minutes (instead +of defaulting to "never").
  • +
  • Fixes password-quoting bugs in IMAP, so that users can include +special characters in passwords (e.g. spaces).
  • +
  • Fixes various errors in auto and manual account setup
  • +
  • Improves reporting for various connection errors, making it easier +for the user to diagnose failed account setups.
  • +
  • Fixes new-mail notifications for POP3 accounts.
  • +
  • Ensures proper auto-checking of accounts marked as "never +check".
  • +
  • Now displays date and time using user preference (e.g. 24 hr vs. +AM/PM).
  • +
  • Now shows cc: in message view.
  • +
  • Improves recovery from POP3 connection failures.
  • +
  • POP3 parser rules loosened, so the application can work with +non-compliant email servers.
  • +
+ +

New Features

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

API Changes

+ +

Overview

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

API Change Details

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Module or FeatureChange Description
Annotations for test systems
Added {@link android.test.suitebuilder.annotation.LargeTest LargeTest} annotation.
Added {@link android.test.suitebuilder.annotation.MediumTest MediumTest} annotation.
Added {@link android.test.suitebuilder.annotation.SmallTest SmallTest} annotation.
Allow a process to easily know its UID.
Added public method {@link android.os.Process#myUid} to class {@link android.os.Process android.os.Process}
Padding in views
Added public method {@link android.view.View#getBottomPaddingOffset} to class {@link android.view.View android.view.View}.
Added public method {@link android.view.View#getLeftPaddingOffset} to class {@link android.view.View android.view.View}.
Added public method {@link android.view.View#getRightPaddingOffset} to class {@link android.view.View android.view.View}.
Added public method {@link android.view.View#getTopPaddingOffset} to class {@link android.view.View android.view.View}.
Added public method {@link android.view.View#isPaddingOffsetRequired} to class {@link android.view.View android.view.View}.
Marquee support
Added public method {@link android.widget.TextView#setMarqueeRepeatLimit} to class {@link android.widget.TextView}
Added public field {@link android.R.attr#marqueeRepeatLimit android.R.attr.marqueeRepeatLimit}
New permissions
Added public field {@link android.Manifest.permission#BROADCAST_SMS android.Manifest.permission.BROADCAST_SMS}
Added public field {@link android.Manifest.permission#BROADCAST_WAP_PUSH android.Manifest.permission.BROADCAST_WAP_PUSH}
API cleanup
Removed protected constructor java.net.ServerSocket.ServerSocket(java.net.SocketImpl).
+ + + + + + diff --git a/docs/html/sdk/sdk_toc.cs b/docs/html/sdk/sdk_toc.cs index 9a5a18b39b30..8c7a0a764fe6 100644 --- a/docs/html/sdk/sdk_toc.cs +++ b/docs/html/sdk/sdk_toc.cs @@ -2,7 +2,7 @@
  • -

    Android 1.1 SDK, r1

    Android 1.5 SDK, r1

    Current SDK Release

    @@ -22,6 +22,7 @@
  • Android System Images

  • -- cgit v1.2.3-59-g8ed1b From b18b6910b827356136b91ddc7550b2b6cbdeb2db Mon Sep 17 00:00:00 2001 From: Jason Sams <> Date: Tue, 24 Mar 2009 20:21:36 -0700 Subject: Automated import from //branches/donutburger/...@141469,141469 --- camera/libcameraservice/Android.mk | 3 ++- camera/libcameraservice/CameraService.cpp | 30 ++++++++++++++++++++++++++++++ camera/libcameraservice/CameraService.h | 5 +++++ data/sounds/AudioPackage2.mk | 2 ++ data/sounds/OriginalAudio.mk | 1 + data/sounds/effects/camera_click.ogg | Bin 0 -> 5593 bytes 6 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 data/sounds/effects/camera_click.ogg diff --git a/camera/libcameraservice/Android.mk b/camera/libcameraservice/Android.mk index 2dfe659a2e04..96cc512dc5d6 100644 --- a/camera/libcameraservice/Android.mk +++ b/camera/libcameraservice/Android.mk @@ -42,7 +42,8 @@ LOCAL_SRC_FILES:= \ LOCAL_SHARED_LIBRARIES:= \ libui \ libutils \ - libcutils + libcutils \ + libmedia LOCAL_MODULE:= libcameraservice diff --git a/camera/libcameraservice/CameraService.cpp b/camera/libcameraservice/CameraService.cpp index 15e3b21aeaa0..851b2132f648 100644 --- a/camera/libcameraservice/CameraService.cpp +++ b/camera/libcameraservice/CameraService.cpp @@ -28,6 +28,8 @@ #include #include +#include +#include #include "CameraService.h" namespace android { @@ -151,6 +153,19 @@ void CameraService::removeClient(const sp& cameraClient) } } +static sp newMediaPlayer(const char *file) +{ + sp mp = new MediaPlayer(); + if (mp->setDataSource(file) == NO_ERROR) { + mp->setAudioStreamType(AudioSystem::ALARM); + mp->prepare(); + } else { + mp.clear(); + LOGE("Failed to load CameraService sounds."); + } + return mp; +} + CameraService::Client::Client(const sp& cameraService, const sp& cameraClient, pid_t clientPid) { @@ -161,6 +176,9 @@ CameraService::Client::Client(const sp& cameraService, mHardware = openCameraHardware(); mUseOverlay = mHardware->useOverlay(); + mMediaPlayerClick = newMediaPlayer("/system/media/audio/ui/camera_click.ogg"); + mMediaPlayerBeep = newMediaPlayer("/system/media/audio/ui/VideoRecord.ogg"); + // Callback is disabled by default mPreviewCallbackFlag = FRAME_CALLBACK_FLAG_NOOP; LOGD("Client X constructor"); @@ -265,6 +283,9 @@ CameraService::Client::~Client() #endif } + mMediaPlayerBeep.clear(); + mMediaPlayerClick.clear(); + // make sure we tear down the hardware mClientPid = IPCThreadState::self()->getCallingPid(); disconnect(); @@ -464,6 +485,9 @@ status_t CameraService::Client::startPreview() status_t CameraService::Client::startRecording() { + if (mMediaPlayerBeep.get() != NULL) { + mMediaPlayerBeep->start(); + } return startCameraMode(CAMERA_RECORDING_MODE); } @@ -502,6 +526,9 @@ void CameraService::Client::stopRecording() return; } + if (mMediaPlayerBeep.get() != NULL) { + mMediaPlayerBeep->start(); + } mHardware->stopRecording(); LOGV("stopRecording(), hardware stopped OK"); mPreviewBuffer.clear(); @@ -684,6 +711,9 @@ status_t CameraService::Client::takePicture() return INVALID_OPERATION; } + if (mMediaPlayerClick.get() != NULL) { + mMediaPlayerClick->start(); + } return mHardware->takePicture(shutterCallback, yuvPictureCallback, jpegPictureCallback, diff --git a/camera/libcameraservice/CameraService.h b/camera/libcameraservice/CameraService.h index d9b79276a72a..6752f265dabb 100644 --- a/camera/libcameraservice/CameraService.h +++ b/camera/libcameraservice/CameraService.h @@ -27,6 +27,8 @@ class android::MemoryHeapBase; namespace android { +class MediaPlayer; + // ---------------------------------------------------------------------------- #define LIKELY( exp ) (__builtin_expect( (exp) != 0, true )) @@ -178,6 +180,9 @@ private: sp mPreviewBuffer; int mPreviewCallbackFlag; + sp mMediaPlayerClick; + sp mMediaPlayerBeep; + // these are immutable once the object is created, // they don't need to be protected by a lock sp mCameraClient; diff --git a/data/sounds/AudioPackage2.mk b/data/sounds/AudioPackage2.mk index adf785791c61..f2bf76ef3588 100644 --- a/data/sounds/AudioPackage2.mk +++ b/data/sounds/AudioPackage2.mk @@ -45,6 +45,8 @@ PRODUCT_COPY_FILES += \ $(local_path)/effects/KeypressSpacebar.ogg:system/media/audio/ui/KeypressSpacebar.ogg \ $(local_path)/effects/KeypressDelete.ogg:system/media/audio/ui/KeypressDelete.ogg \ $(local_path)/effects/KeypressReturn.ogg:system/media/audio/ui/KeypressReturn.ogg \ + $(LOCAL_PATH)/effects/VideoRecord.ogg:system/media/audio/ui/VideoRecord.ogg \ + $(LOCAL_PATH)/effects/camera_click.ogg:system/media/audio/ui/camera_click.ogg \ $(local_path)/newwavelabs/Big_Easy.ogg:system/media/audio/ringtones/Big_Easy.ogg \ $(local_path)/newwavelabs/Bollywood.ogg:system/media/audio/ringtones/Bollywood.ogg \ $(local_path)/newwavelabs/Cairo.ogg:system/media/audio/ringtones/Cairo.ogg \ diff --git a/data/sounds/OriginalAudio.mk b/data/sounds/OriginalAudio.mk index dbd6ad372deb..291f0b6b997e 100644 --- a/data/sounds/OriginalAudio.mk +++ b/data/sounds/OriginalAudio.mk @@ -65,5 +65,6 @@ PRODUCT_COPY_FILES += \ $(LOCAL_PATH)/effects/KeypressDelete.ogg:system/media/audio/ui/KeypressDelete.ogg \ $(LOCAL_PATH)/effects/KeypressReturn.ogg:system/media/audio/ui/KeypressReturn.ogg \ $(LOCAL_PATH)/effects/VideoRecord.ogg:system/media/audio/ui/VideoRecord.ogg \ + $(LOCAL_PATH)/effects/camera_click.ogg:system/media/audio/ui/camera_click.ogg \ $(LOCAL_PATH)/newwavelabs/CrazyDream.ogg:system/media/audio/ringtones/CrazyDream.ogg \ $(LOCAL_PATH)/newwavelabs/DreamTheme.ogg:system/media/audio/ringtones/DreamTheme.ogg diff --git a/data/sounds/effects/camera_click.ogg b/data/sounds/effects/camera_click.ogg new file mode 100644 index 000000000000..0a769ff91464 Binary files /dev/null and b/data/sounds/effects/camera_click.ogg differ -- cgit v1.2.3-59-g8ed1b From 2c141ec4f068fa7c627e403d2988e15c87f1e985 Mon Sep 17 00:00:00 2001 From: Dave Sparks <> Date: Tue, 24 Mar 2009 20:23:07 -0700 Subject: Automated import from //branches/donutburger/...@141476,141476 --- data/sounds/AudioPackage2.mk | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/data/sounds/AudioPackage2.mk b/data/sounds/AudioPackage2.mk index f2bf76ef3588..8efb11056a6a 100644 --- a/data/sounds/AudioPackage2.mk +++ b/data/sounds/AudioPackage2.mk @@ -10,6 +10,15 @@ local_path:= frameworks/base/data/sounds PRODUCT_COPY_FILES += \ + $(local_path)/F1_MissedCall.ogg:system/media/audio/notifications/F1_MissedCall.ogg \ + $(local_path)/F1_New_MMS.ogg:system/media/audio/notifications/F1_New_MMS.ogg \ + $(local_path)/F1_New_SMS.ogg:system/media/audio/notifications/F1_New_SMS.ogg \ + $(local_path)/Alarm_Buzzer.ogg:system/media/audio/alarms/Alarm_Buzzer.ogg \ + $(local_path)/Alarm_Beep_01.ogg:system/media/audio/alarms/Alarm_Beep_01.ogg \ + $(local_path)/Alarm_Beep_02.ogg:system/media/audio/alarms/Alarm_Beep_02.ogg \ + $(local_path)/Alarm_Classic.ogg:system/media/audio/alarms/Alarm_Classic.ogg \ + $(local_path)/Alarm_Beep_03.ogg:system/media/audio/alarms/Alarm_Beep_03.ogg \ + $(local_path)/Alarm_Rooster_02.ogg:system/media/audio/alarms/Alarm_Rooster_02.ogg \ $(local_path)/Ring_Classic_02.ogg:system/media/audio/ringtones/Ring_Classic_02.ogg \ $(local_path)/Ring_Digital_02.ogg:system/media/audio/ringtones/Ring_Digital_02.ogg \ $(local_path)/Ring_Synth_04.ogg:system/media/audio/ringtones/Ring_Synth_04.ogg \ @@ -40,13 +49,26 @@ PRODUCT_COPY_FILES += \ $(local_path)/newwavelabs/TwirlAway.ogg:system/media/audio/ringtones/TwirlAway.ogg \ $(local_path)/newwavelabs/VeryAlarmed.ogg:system/media/audio/ringtones/VeryAlarmed.ogg \ $(local_path)/newwavelabs/World.ogg:system/media/audio/ringtones/World.ogg \ + $(local_path)/newwavelabs/CaffeineSnake.ogg:system/media/audio/notifications/CaffeineSnake.ogg \ + $(local_path)/newwavelabs/DearDeer.ogg:system/media/audio/notifications/DearDeer.ogg \ + $(local_path)/newwavelabs/DontPanic.ogg:system/media/audio/notifications/DontPanic.ogg \ + $(local_path)/newwavelabs/Highwire.ogg:system/media/audio/notifications/Highwire.ogg \ + $(local_path)/newwavelabs/KzurbSonar.ogg:system/media/audio/notifications/KzurbSonar.ogg \ + $(local_path)/newwavelabs/OnTheHunt.ogg:system/media/audio/notifications/OnTheHunt.ogg \ + $(local_path)/newwavelabs/Voila.ogg:system/media/audio/notifications/Voila.ogg \ + $(local_path)/notifications/Beat_Box_Android.ogg:system/media/audio/notifications/Beat_Box_Android.ogg \ + $(local_path)/notifications/Heaven.ogg:system/media/audio/notifications/Heaven.ogg \ + $(local_path)/notifications/TaDa.ogg:system/media/audio/notifications/TaDa.ogg \ + $(local_path)/notifications/Tinkerbell.ogg:system/media/audio/notifications/Tinkerbell.ogg \ $(local_path)/effects/Effect_Tick.ogg:system/media/audio/ui/Effect_Tick.ogg \ $(local_path)/effects/KeypressStandard.ogg:system/media/audio/ui/KeypressStandard.ogg \ $(local_path)/effects/KeypressSpacebar.ogg:system/media/audio/ui/KeypressSpacebar.ogg \ $(local_path)/effects/KeypressDelete.ogg:system/media/audio/ui/KeypressDelete.ogg \ $(local_path)/effects/KeypressReturn.ogg:system/media/audio/ui/KeypressReturn.ogg \ - $(LOCAL_PATH)/effects/VideoRecord.ogg:system/media/audio/ui/VideoRecord.ogg \ + $(local_path)/effects/VideoRecord.ogg:system/media/audio/ui/VideoRecord.ogg \ $(LOCAL_PATH)/effects/camera_click.ogg:system/media/audio/ui/camera_click.ogg \ + $(local_path)/newwavelabs/CrazyDream.ogg:system/media/audio/ringtones/CrazyDream.ogg \ + $(local_path)/newwavelabs/DreamTheme.ogg:system/media/audio/ringtones/DreamTheme.ogg \ $(local_path)/newwavelabs/Big_Easy.ogg:system/media/audio/ringtones/Big_Easy.ogg \ $(local_path)/newwavelabs/Bollywood.ogg:system/media/audio/ringtones/Bollywood.ogg \ $(local_path)/newwavelabs/Cairo.ogg:system/media/audio/ringtones/Cairo.ogg \ -- cgit v1.2.3-59-g8ed1b From 30e4553803da64faf0b4ee4a425899d9ed32980b Mon Sep 17 00:00:00 2001 From: Dave Sparks <> Date: Tue, 24 Mar 2009 20:24:48 -0700 Subject: Automated import from //branches/donutburger/...@141498,141498 --- data/sounds/AudioPackage2.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/sounds/AudioPackage2.mk b/data/sounds/AudioPackage2.mk index 8efb11056a6a..5bd301de2305 100644 --- a/data/sounds/AudioPackage2.mk +++ b/data/sounds/AudioPackage2.mk @@ -66,7 +66,7 @@ PRODUCT_COPY_FILES += \ $(local_path)/effects/KeypressDelete.ogg:system/media/audio/ui/KeypressDelete.ogg \ $(local_path)/effects/KeypressReturn.ogg:system/media/audio/ui/KeypressReturn.ogg \ $(local_path)/effects/VideoRecord.ogg:system/media/audio/ui/VideoRecord.ogg \ - $(LOCAL_PATH)/effects/camera_click.ogg:system/media/audio/ui/camera_click.ogg \ + $(local_path)/effects/camera_click.ogg:system/media/audio/ui/camera_click.ogg \ $(local_path)/newwavelabs/CrazyDream.ogg:system/media/audio/ringtones/CrazyDream.ogg \ $(local_path)/newwavelabs/DreamTheme.ogg:system/media/audio/ringtones/DreamTheme.ogg \ $(local_path)/newwavelabs/Big_Easy.ogg:system/media/audio/ringtones/Big_Easy.ogg \ -- cgit v1.2.3-59-g8ed1b From 4cf7abeed2c748314327462986e452fc1ccc6e99 Mon Sep 17 00:00:00 2001 From: Mathias Agopian <> Date: Tue, 24 Mar 2009 20:25:29 -0700 Subject: Automated import from //branches/donutburger/...@141502,141502 --- libs/surfaceflinger/LayerOrientationAnim.cpp | 187 ++++++++++++--------------- libs/surfaceflinger/LayerOrientationAnim.h | 3 +- libs/surfaceflinger/SurfaceFlinger.cpp | 3 +- libs/surfaceflinger/SurfaceFlinger.h | 2 + libs/surfaceflinger/Transform.cpp | 19 +++ libs/surfaceflinger/Transform.h | 4 +- 6 files changed, 113 insertions(+), 105 deletions(-) diff --git a/libs/surfaceflinger/LayerOrientationAnim.cpp b/libs/surfaceflinger/LayerOrientationAnim.cpp index 2b72d7ce9487..5fec325b807f 100644 --- a/libs/surfaceflinger/LayerOrientationAnim.cpp +++ b/libs/surfaceflinger/LayerOrientationAnim.cpp @@ -55,6 +55,7 @@ LayerOrientationAnim::LayerOrientationAnim( mOrientationCompleted = false; mFirstRedraw = false; mLastNormalizedTime = 0; + mLastAngle = 0; mLastScale = 0; mNeedsBlending = false; } @@ -94,10 +95,6 @@ void LayerOrientationAnim::validateVisibility(const Transform&) transparentRegionScreen.clear(); mTransformed = true; mCanUseCopyBit = false; - copybit_device_t* copybit = mFlinger->getBlitEngine(); - if (copybit) { - mCanUseCopyBit = true; - } } void LayerOrientationAnim::onOrientationCompleted() @@ -109,35 +106,33 @@ void LayerOrientationAnim::onOrientationCompleted() mFlinger->invalidateLayerVisibility(this); } +const float ROTATION = M_PI * 0.5f; +const float ROTATION_FACTOR = 1.0f; // 1.0 or 2.0 +const float DURATION = ms2ns(200); +const float BOUNCES_PER_SECOND = 1.618f; +const float BOUNCES_AMPLITUDE = (5.0f/180.f) * M_PI; + void LayerOrientationAnim::onDraw(const Region& clip) const { // Animation... - const float MIN_SCALE = 0.5f; - const float DURATION = ms2ns(200); - const float BOUNCES_PER_SECOND = 1.618f; - const float BOUNCES_AMPLITUDE = 1.0f/32.0f; + // FIXME: works only for portrait framebuffers + const Point size(getPhysicalSize()); + const float TARGET_SCALE = size.x * (1.0f / size.y); + const nsecs_t now = systemTime(); - float scale, alpha; + float angle, scale, alpha; if (mOrientationCompleted) { if (mFirstRedraw) { - mFirstRedraw = false; - // make a copy of what's on screen copybit_image_t image; mBitmapIn.getBitmapSurface(&image); const DisplayHardware& hw(graphicPlane(0).displayHardware()); hw.copyBackToImage(image); - - // and erase the screen for this round - glDisable(GL_BLEND); - glDisable(GL_DITHER); - glDisable(GL_SCISSOR_TEST); - glClearColor(0,0,0,0); - glClear(GL_COLOR_BUFFER_BIT); // FIXME: code below is gross + mFirstRedraw = false; mNeedsBlending = false; LayerOrientationAnim* self(const_cast(this)); mFlinger->invalidateLayerVisibility(self); @@ -148,36 +143,39 @@ void LayerOrientationAnim::onDraw(const Region& clip) const const float normalizedTime = (float(now - mFinishTime) / duration); if (normalizedTime <= 1.0f) { const float squaredTime = normalizedTime*normalizedTime; + angle = (ROTATION*ROTATION_FACTOR - mLastAngle)*squaredTime + mLastAngle; scale = (1.0f - mLastScale)*squaredTime + mLastScale; - alpha = (1.0f - normalizedTime); - alpha *= alpha; - alpha *= alpha; + alpha = normalizedTime; } else { mAnim->onAnimationFinished(); + angle = ROTATION; + alpha = 1.0f; scale = 1.0f; - alpha = 0.0f; } } else { const float normalizedTime = float(now - mStartTime) / DURATION; if (normalizedTime <= 1.0f) { mLastNormalizedTime = normalizedTime; const float squaredTime = normalizedTime*normalizedTime; - scale = (MIN_SCALE-1.0f)*squaredTime + 1.0f; - alpha = 1.0f; + angle = ROTATION * squaredTime; + scale = (TARGET_SCALE - 1.0f)*squaredTime + 1.0f; + alpha = 0; } else { mLastNormalizedTime = 1.0f; const float to_seconds = DURATION / seconds(1); const float phi = BOUNCES_PER_SECOND * - (((normalizedTime - 1.0f) * to_seconds)*M_PI*2); - scale = MIN_SCALE + BOUNCES_AMPLITUDE * (1.0f - cosf(phi)); - alpha = 1.0f; + (((normalizedTime - 1.0f) * to_seconds)*M_PI*2); + angle = ROTATION + BOUNCES_AMPLITUDE * sinf(phi); + scale = TARGET_SCALE; + alpha = 0; } + mLastAngle = angle; mLastScale = scale; } - drawScaled(scale, alpha); + drawScaled(angle, scale, alpha); } -void LayerOrientationAnim::drawScaled(float f, float alpha) const +void LayerOrientationAnim::drawScaled(float f, float s, float alpha) const { copybit_image_t dst; const GraphicPlane& plane(graphicPlane(0)); @@ -187,98 +185,83 @@ void LayerOrientationAnim::drawScaled(float f, float alpha) const // clear screen // TODO: with update on demand, we may be able // to not erase the screen at all during the animation - if (!mOrientationCompleted) { - glDisable(GL_BLEND); - glDisable(GL_DITHER); - glDisable(GL_SCISSOR_TEST); - glClearColor(0,0,0,0); - glClear(GL_COLOR_BUFFER_BIT); - } + glDisable(GL_BLEND); + glDisable(GL_DITHER); + glDisable(GL_SCISSOR_TEST); + glClearColor(0,0,0,0); + glClear(GL_COLOR_BUFFER_BIT); - const int w = dst.w*f; - const int h = dst.h*f; - const int xc = uint32_t(dst.w-w)/2; - const int yc = uint32_t(dst.h-h)/2; - const copybit_rect_t drect = { xc, yc, xc+w, yc+h }; + const int w = dst.w; + const int h = dst.h; copybit_image_t src; mBitmap.getBitmapSurface(&src); const copybit_rect_t srect = { 0, 0, src.w, src.h }; - int err = NO_ERROR; - const int can_use_copybit = canUseCopybit(); - if (can_use_copybit) { - copybit_device_t* copybit = mFlinger->getBlitEngine(); - copybit->set_parameter(copybit, COPYBIT_TRANSFORM, 0); - copybit->set_parameter(copybit, COPYBIT_DITHER, COPYBIT_ENABLE); - - if (alpha < 1.0f) { - copybit_image_t srcIn; - mBitmapIn.getBitmapSurface(&srcIn); - region_iterator it(Region(Rect( drect.l, drect.t, drect.r, drect.b ))); - copybit->set_parameter(copybit, COPYBIT_PLANE_ALPHA, 0xFF); - err = copybit->stretch(copybit, &dst, &srcIn, &drect, &srect, &it); - } - if (!err && alpha > 0.0f) { - region_iterator it(Region(Rect( drect.l, drect.t, drect.r, drect.b ))); - copybit->set_parameter(copybit, COPYBIT_PLANE_ALPHA, int(alpha*255)); - err = copybit->stretch(copybit, &dst, &src, &drect, &srect, &it); - } - LOGE_IF(err != NO_ERROR, "copybit failed (%s)", strerror(err)); + GGLSurface t; + t.version = sizeof(GGLSurface); + t.width = src.w; + t.height = src.h; + t.stride = src.w; + t.vstride= src.h; + t.format = src.format; + t.data = (GGLubyte*)(intptr_t(src.base) + src.offset); + + const int targetOrientation = plane.getOrientation(); + if (!targetOrientation) { + f = -f; + } + + Transform tr; + tr.set(f, w*0.5f, h*0.5f); + tr.scale(s, w*0.5f, h*0.5f); + + // FIXME: we should not access mVertices and mDrawingState like that, + // but since we control the animation, we know it's going to work okay. + // eventually we'd need a more formal way of doing things like this. + LayerOrientationAnim& self(const_cast(*this)); + tr.transform(self.mVertices[0], 0, 0); + tr.transform(self.mVertices[1], 0, src.h); + tr.transform(self.mVertices[2], src.w, src.h); + tr.transform(self.mVertices[3], src.w, 0); + + if (!(mFlags & DisplayHardware::SLOW_CONFIG)) { + // Too slow to do this in software + self.mDrawingState.flags |= ISurfaceComposer::eLayerFilter; } - if (!can_use_copybit || err) { - GGLSurface t; - t.version = sizeof(GGLSurface); - t.width = src.w; - t.height = src.h; - t.stride = src.w; - t.vstride= src.h; - t.format = src.format; - t.data = (GGLubyte*)(intptr_t(src.base) + src.offset); - Transform tr; - tr.set(f,0,0,f); - tr.set(xc, yc); - - // FIXME: we should not access mVertices and mDrawingState like that, - // but since we control the animation, we know it's going to work okay. - // eventually we'd need a more formal way of doing things like this. - LayerOrientationAnim& self(const_cast(*this)); + if (UNLIKELY(mTextureName == -1LU)) { + mTextureName = createTexture(); + GLuint w=0, h=0; + const Region dirty(Rect(t.width, t.height)); + loadTexture(dirty, mTextureName, t, w, h); + } + self.mDrawingState.alpha = 255; //-int(alpha*255); + const Region clip(Rect( srect.l, srect.t, srect.r, srect.b )); + drawWithOpenGL(clip, mTextureName, t); + + if (alpha > 0) { + const float sign = (!targetOrientation) ? 1.0f : -1.0f; + tr.set(f + sign*(M_PI * 0.5f * ROTATION_FACTOR), w*0.5f, h*0.5f); + tr.scale(s, w*0.5f, h*0.5f); tr.transform(self.mVertices[0], 0, 0); tr.transform(self.mVertices[1], 0, src.h); tr.transform(self.mVertices[2], src.w, src.h); tr.transform(self.mVertices[3], src.w, 0); - if (!(mFlags & DisplayHardware::SLOW_CONFIG)) { - // Too slow to do this in software - self.mDrawingState.flags |= ISurfaceComposer::eLayerFilter; - } - - if (alpha < 1.0f) { - copybit_image_t src; - mBitmapIn.getBitmapSurface(&src); - t.data = (GGLubyte*)(intptr_t(src.base) + src.offset); - if (UNLIKELY(mTextureNameIn == -1LU)) { - mTextureNameIn = createTexture(); - GLuint w=0, h=0; - const Region dirty(Rect(t.width, t.height)); - loadTexture(dirty, mTextureNameIn, t, w, h); - } - self.mDrawingState.alpha = 255; - const Region clip(Rect( drect.l, drect.t, drect.r, drect.b )); - drawWithOpenGL(clip, mTextureName, t); - } + copybit_image_t src; + mBitmapIn.getBitmapSurface(&src); t.data = (GGLubyte*)(intptr_t(src.base) + src.offset); - if (UNLIKELY(mTextureName == -1LU)) { - mTextureName = createTexture(); + if (UNLIKELY(mTextureNameIn == -1LU)) { + mTextureNameIn = createTexture(); GLuint w=0, h=0; const Region dirty(Rect(t.width, t.height)); - loadTexture(dirty, mTextureName, t, w, h); + loadTexture(dirty, mTextureNameIn, t, w, h); } self.mDrawingState.alpha = int(alpha*255); - const Region clip(Rect( drect.l, drect.t, drect.r, drect.b )); - drawWithOpenGL(clip, mTextureName, t); + const Region clip(Rect( srect.l, srect.t, srect.r, srect.b )); + drawWithOpenGL(clip, mTextureNameIn, t); } } diff --git a/libs/surfaceflinger/LayerOrientationAnim.h b/libs/surfaceflinger/LayerOrientationAnim.h index 73676859bc03..b527c7e59519 100644 --- a/libs/surfaceflinger/LayerOrientationAnim.h +++ b/libs/surfaceflinger/LayerOrientationAnim.h @@ -52,7 +52,7 @@ public: virtual bool needsBlending() const; virtual bool isSecure() const { return false; } private: - void drawScaled(float scale, float alpha) const; + void drawScaled(float angle, float scale, float alpha) const; OrientationAnimation* mAnim; LayerBitmap mBitmap; @@ -62,6 +62,7 @@ private: bool mOrientationCompleted; mutable bool mFirstRedraw; mutable float mLastNormalizedTime; + mutable float mLastAngle; mutable float mLastScale; mutable GLuint mTextureName; mutable GLuint mTextureNameIn; diff --git a/libs/surfaceflinger/SurfaceFlinger.cpp b/libs/surfaceflinger/SurfaceFlinger.cpp index d915a8424b6d..8499b67ac656 100644 --- a/libs/surfaceflinger/SurfaceFlinger.cpp +++ b/libs/surfaceflinger/SurfaceFlinger.cpp @@ -1804,6 +1804,7 @@ status_t GraphicPlane::setOrientation(int orientation) if (orientation == ISurfaceComposer::eOrientationDefault) { // make sure the default orientation is optimal mOrientationTransform.reset(); + mOrientation = orientation; mGlobalTransform = mTransform; return NO_ERROR; } @@ -1824,7 +1825,7 @@ status_t GraphicPlane::setOrientation(int orientation) GraphicPlane::orientationToTransfrom(orientation, w, h, &mOrientationTransform); } - + mOrientation = orientation; mGlobalTransform = mOrientationTransform * mTransform; return NO_ERROR; } diff --git a/libs/surfaceflinger/SurfaceFlinger.h b/libs/surfaceflinger/SurfaceFlinger.h index f7d77640ae3c..3c10481f90c5 100644 --- a/libs/surfaceflinger/SurfaceFlinger.h +++ b/libs/surfaceflinger/SurfaceFlinger.h @@ -122,6 +122,7 @@ public: void setDisplayHardware(DisplayHardware *); void setTransform(const Transform& tr); status_t setOrientation(int orientation); + int getOrientation() const { return mOrientation; } const DisplayHardware& displayHardware() const; const Transform& transform() const; @@ -133,6 +134,7 @@ private: Transform mTransform; Transform mOrientationTransform; Transform mGlobalTransform; + int mOrientation; }; // --------------------------------------------------------------------------- diff --git a/libs/surfaceflinger/Transform.cpp b/libs/surfaceflinger/Transform.cpp index bec7a64036e5..e8b0f45f811b 100644 --- a/libs/surfaceflinger/Transform.cpp +++ b/libs/surfaceflinger/Transform.cpp @@ -103,6 +103,25 @@ void Transform::set( float xx, float xy, mType |= 0x80000000; } +void Transform::set(float radian, float x, float y) +{ + float r00 = cosf(radian); float r01 = -sinf(radian); + float r10 = sinf(radian); float r11 = cosf(radian); + mTransform.set(SkMatrix::kMScaleX, SkFloatToScalar(r00)); + mTransform.set(SkMatrix::kMSkewX, SkFloatToScalar(r01)); + mTransform.set(SkMatrix::kMSkewY, SkFloatToScalar(r10)); + mTransform.set(SkMatrix::kMScaleY, SkFloatToScalar(r11)); + mTransform.set(SkMatrix::kMTransX, SkIntToScalar(x - r00*x - r01*y)); + mTransform.set(SkMatrix::kMTransY, SkIntToScalar(y - r10*x - r11*y)); + mType |= 0x80000000 | SkMatrix::kTranslate_Mask; +} + +void Transform::scale(float s, float x, float y) +{ + mTransform.postScale(s, s, x, y); + mType |= 0x80000000; +} + void Transform::set(int tx, int ty) { if (tx | ty) { diff --git a/libs/surfaceflinger/Transform.h b/libs/surfaceflinger/Transform.h index 0b4835effd3a..4c4528ecd4bd 100644 --- a/libs/surfaceflinger/Transform.h +++ b/libs/surfaceflinger/Transform.h @@ -60,7 +60,9 @@ public: void reset(); void set(float xx, float xy, float yx, float yy); void set(int tx, int ty); - + void set(float radian, float x, float y); + void scale(float s, float x, float y); + Rect makeBounds(int w, int h) const; void transform(GLfixed* point, int x, int y) const; Region transform(const Region& reg) const; -- cgit v1.2.3-59-g8ed1b From d906b720b8a8e6e527325f106ed87246d51a3571 Mon Sep 17 00:00:00 2001 From: Dianne Hackborn <> Date: Tue, 24 Mar 2009 20:26:37 -0700 Subject: Automated import from //branches/donutburger/...@141515,141515 --- core/java/com/android/internal/database/SortCursor.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/core/java/com/android/internal/database/SortCursor.java b/core/java/com/android/internal/database/SortCursor.java index af0efc9195cf..99410bcaa478 100644 --- a/core/java/com/android/internal/database/SortCursor.java +++ b/core/java/com/android/internal/database/SortCursor.java @@ -253,7 +253,15 @@ public class SortCursor extends AbstractCursor if (mCursor != null) { return mCursor.getColumnNames(); } else { - return new String[0]; + // All of the cursors may be empty, but they can still return + // this information. + int length = mCursors.length; + for (int i = 0 ; i < length ; i++) { + if (mCursors[i] != null) { + return mCursors[i].getColumnNames(); + } + } + throw new IllegalStateException("No cursor that can return names"); } } -- cgit v1.2.3-59-g8ed1b From 96f4357e065124eda502ee5ad29b6d327d7ad446 Mon Sep 17 00:00:00 2001 From: Romain Guy <> Date: Tue, 24 Mar 2009 20:27:49 -0700 Subject: Automated import from //branches/donutburger/...@141523,141523 --- .../com/android/server/PackageManagerService.java | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/services/java/com/android/server/PackageManagerService.java b/services/java/com/android/server/PackageManagerService.java index edbb0ce0e746..7fffcb9b436e 100644 --- a/services/java/com/android/server/PackageManagerService.java +++ b/services/java/com/android/server/PackageManagerService.java @@ -3900,14 +3900,26 @@ class PackageManagerService extends IPackageManager.Stub { private boolean deletePackageX(String packageName, boolean sendBroadCast, boolean deleteCodeAndResources, int flags) { PackageRemovedInfo info = new PackageRemovedInfo(); - boolean res = false; + boolean res; synchronized (mInstallLock) { res = deletePackageLI(packageName, deleteCodeAndResources, flags, info); } if(res && sendBroadCast) { - info.sendBroadcast(deleteCodeAndResources, false); + boolean systemUpdate = info.isRemovedPackageSystemUpdate; + info.sendBroadcast(deleteCodeAndResources, systemUpdate); + + // If the removed package was a system update, the old system packaged + // was re-enabled; we need to broadcast this information + if (systemUpdate) { + Bundle extras = new Bundle(1); + extras.putInt(Intent.EXTRA_UID, info.removedUid >= 0 ? info.removedUid : info.uid); + extras.putBoolean(Intent.EXTRA_REPLACING, true); + + sendPackageBroadcast(Intent.ACTION_PACKAGE_ADDED, packageName, extras); + sendPackageBroadcast(Intent.ACTION_PACKAGE_REPLACED, packageName, extras); + } } return res; } @@ -3916,7 +3928,8 @@ class PackageManagerService extends IPackageManager.Stub { String removedPackage; int uid = -1; int removedUid = -1; - + boolean isRemovedPackageSystemUpdate = false; + void sendBroadcast(boolean fullRemove, boolean replacing) { Bundle extras = new Bundle(1); extras.putInt(Intent.EXTRA_UID, removedUid >= 0 ? removedUid : uid); @@ -4002,6 +4015,7 @@ class PackageManagerService extends IPackageManager.Stub { Log.i(TAG, "Deleting system pkg from data partition"); } // Delete the updated package + outInfo.isRemovedPackageSystemUpdate = true; boolean ret = deleteInstalledPackageLI(p, deleteCodeAndResources, flags, outInfo); if (!ret) { return false; -- cgit v1.2.3-59-g8ed1b From b2e3a5db68229b1854faed5e5d2c97cc04b05233 Mon Sep 17 00:00:00 2001 From: Romain Guy <> Date: Tue, 24 Mar 2009 20:28:22 -0700 Subject: Automated import from //branches/donutburger/...@141524,141524 --- core/res/res/layout/always_use_checkbox.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/res/res/layout/always_use_checkbox.xml b/core/res/res/layout/always_use_checkbox.xml index 5e6e3886facb..1f8d256d3712 100644 --- a/core/res/res/layout/always_use_checkbox.xml +++ b/core/res/res/layout/always_use_checkbox.xml @@ -21,7 +21,8 @@ android:layout_width="fill_parent" android:layout_height="wrap_content" android:paddingLeft="14dip" - android:paddingRight="15dip"> + android:paddingRight="15dip" + android:orientation="vertical"> Date: Tue, 24 Mar 2009 20:28:56 -0700 Subject: Automated import from //branches/donutburger/...@141529,141529 --- core/res/res/values-es/strings.xml | 5 ----- core/res/res/values-ja/strings.xml | 3 --- core/res/res/values/strings.xml | 10 +++++++--- 3 files changed, 7 insertions(+), 11 deletions(-) diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml index 9de952890a8b..a18d2d7eb02f 100644 --- a/core/res/res/values-es/strings.xml +++ b/core/res/res/values-es/strings.xml @@ -831,9 +831,4 @@ - - "Marcar número" - "Contacto nuevo" - "Usar %s" diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml index 262e7e4f91a4..dedc019cbf3c 100644 --- a/core/res/res/values-ja/strings.xml +++ b/core/res/res/values-ja/strings.xml @@ -829,7 +829,4 @@ - - "発信" diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml index b8a8eb548b71..6cfdf8f0e8a0 100644 --- a/core/res/res/values/strings.xml +++ b/core/res/res/values/strings.xml @@ -2314,8 +2314,12 @@ - Dial number - New contact - Using %s + + + + Dial number\nusing %s + + + Create contact\nusing %s -- cgit v1.2.3-59-g8ed1b From 03f94303235c67a42e8fbf7daf7dde9d99a319fb Mon Sep 17 00:00:00 2001 From: Mathias Agopian <> Date: Tue, 24 Mar 2009 20:29:21 -0700 Subject: Automated import from //branches/donutburger/...@141532,141532 --- core/res/assets/images/android-logo-mask.png | Bin 4932 -> 5306 bytes core/res/assets/images/android-logo-shine.png | Bin 20345 -> 641 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/core/res/assets/images/android-logo-mask.png b/core/res/assets/images/android-logo-mask.png index e78af5f84238..1e8ab95fa99d 100644 Binary files a/core/res/assets/images/android-logo-mask.png and b/core/res/assets/images/android-logo-mask.png differ diff --git a/core/res/assets/images/android-logo-shine.png b/core/res/assets/images/android-logo-shine.png index 98692df45483..60144f1f7ca7 100644 Binary files a/core/res/assets/images/android-logo-shine.png and b/core/res/assets/images/android-logo-shine.png differ -- cgit v1.2.3-59-g8ed1b From 6ee2e78e1c74a9389db3fc687c7b03fec9494632 Mon Sep 17 00:00:00 2001 From: Dave Sparks <> Date: Tue, 24 Mar 2009 20:35:44 -0700 Subject: Automated import from //branches/donutburger/...@141593,141593 --- media/libmediaplayerservice/MediaPlayerService.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/media/libmediaplayerservice/MediaPlayerService.cpp b/media/libmediaplayerservice/MediaPlayerService.cpp index 40705c6ebcea..31eecac154ce 100644 --- a/media/libmediaplayerservice/MediaPlayerService.cpp +++ b/media/libmediaplayerservice/MediaPlayerService.cpp @@ -456,6 +456,7 @@ void MediaPlayerService::Client::disconnect() Mutex::Autolock l(mLock); p = mPlayer; } + mClient.clear(); mPlayer.clear(); // clear the notification to prevent callbacks to dead client -- cgit v1.2.3-59-g8ed1b From 403914a108fec85c9677f1588b62088a416d5d1e Mon Sep 17 00:00:00 2001 From: Jason Sams <> Date: Tue, 24 Mar 2009 20:36:57 -0700 Subject: Automated import from //branches/donutburger/...@141598,141598 --- camera/libcameraservice/CameraService.cpp | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/camera/libcameraservice/CameraService.cpp b/camera/libcameraservice/CameraService.cpp index 851b2132f648..c5c95b05e7df 100644 --- a/camera/libcameraservice/CameraService.cpp +++ b/camera/libcameraservice/CameraService.cpp @@ -283,8 +283,14 @@ CameraService::Client::~Client() #endif } - mMediaPlayerBeep.clear(); - mMediaPlayerClick.clear(); + if (mMediaPlayerBeep.get() != NULL) { + mMediaPlayerBeep->disconnect(); + mMediaPlayerBeep.clear(); + } + if (mMediaPlayerClick.get() != NULL) { + mMediaPlayerClick->disconnect(); + mMediaPlayerClick.clear(); + } // make sure we tear down the hardware mClientPid = IPCThreadState::self()->getCallingPid(); @@ -711,9 +717,6 @@ status_t CameraService::Client::takePicture() return INVALID_OPERATION; } - if (mMediaPlayerClick.get() != NULL) { - mMediaPlayerClick->start(); - } return mHardware->takePicture(shutterCallback, yuvPictureCallback, jpegPictureCallback, @@ -751,6 +754,10 @@ void CameraService::Client::shutterCallback(void *user) client->mSurface->registerBuffers(buffers); } + + if (client->mMediaPlayerClick.get() != NULL) { + client->mMediaPlayerClick->start(); + } } // picture callback - raw image ready -- cgit v1.2.3-59-g8ed1b From a9f95fbee978e2d134052c2dceea2559b64badb4 Mon Sep 17 00:00:00 2001 From: Wu-cheng Li <> Date: Tue, 24 Mar 2009 20:39:09 -0700 Subject: Automated import from //branches/donutburger/...@141614,141614 --- camera/libcameraservice/CameraService.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/camera/libcameraservice/CameraService.cpp b/camera/libcameraservice/CameraService.cpp index c5c95b05e7df..6a6a811fa790 100644 --- a/camera/libcameraservice/CameraService.cpp +++ b/camera/libcameraservice/CameraService.cpp @@ -731,6 +731,11 @@ void CameraService::Client::shutterCallback(void *user) return; } + // Play shutter sound. + if (client->mMediaPlayerClick.get() != NULL) { + client->mMediaPlayerClick->start(); + } + // Screen goes black after the buffer is unregistered. if (client->mSurface != 0 && !client->mUseOverlay) { client->mSurface->unregisterBuffers(); @@ -754,10 +759,6 @@ void CameraService::Client::shutterCallback(void *user) client->mSurface->registerBuffers(buffers); } - - if (client->mMediaPlayerClick.get() != NULL) { - client->mMediaPlayerClick->start(); - } } // picture callback - raw image ready -- cgit v1.2.3-59-g8ed1b From 997c7612a8cf63748165144b423ff2ae8e73c3e9 Mon Sep 17 00:00:00 2001 From: Nick Pelly <> Date: Tue, 24 Mar 2009 20:44:48 -0700 Subject: Automated import from //branches/donutburger/...@141696,141696 --- core/java/android/server/BluetoothDeviceService.java | 20 +++++++++++++++++++- core/java/android/server/BluetoothEventLoop.java | 4 ++-- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/core/java/android/server/BluetoothDeviceService.java b/core/java/android/server/BluetoothDeviceService.java index a815e573ee78..c61b25ad9887 100644 --- a/core/java/android/server/BluetoothDeviceService.java +++ b/core/java/android/server/BluetoothDeviceService.java @@ -63,8 +63,10 @@ public class BluetoothDeviceService extends IBluetoothDevice.Stub { private BluetoothEventLoop mEventLoop; private IntentFilter mIntentFilter; private boolean mIsAirplaneSensitive; - private final BondState mBondState = new BondState(); // local cache of bondings private int mBluetoothState; + private boolean mRestart = false; // need to call enable() after disable() + + private final BondState mBondState = new BondState(); // local cache of bondings private boolean mIsDiscovering; private final IBatteryStats mBatteryStats; @@ -218,6 +220,11 @@ public class BluetoothDeviceService extends IBluetoothDevice.Stub { } finally { Binder.restoreCallingIdentity(ident); } + + if (mRestart) { + mRestart = false; + enable(); + } } /** Bring up BT and persist BT on in settings */ @@ -252,6 +259,17 @@ public class BluetoothDeviceService extends IBluetoothDevice.Stub { return true; } + /** Forcibly restart Bluetooth if it is on */ + /* package */ synchronized void restart() { + if (mBluetoothState != BluetoothDevice.BLUETOOTH_STATE_ON) { + return; + } + mRestart = true; + if (!disable(false)) { + mRestart = false; + } + } + private synchronized void setBluetoothState(int state) { if (state == mBluetoothState) { return; diff --git a/core/java/android/server/BluetoothEventLoop.java b/core/java/android/server/BluetoothEventLoop.java index 6eabea461dec..11c297cb99e4 100644 --- a/core/java/android/server/BluetoothEventLoop.java +++ b/core/java/android/server/BluetoothEventLoop.java @@ -76,8 +76,7 @@ class BluetoothEventLoop { } break; case EVENT_RESTART_BLUETOOTH: - mBluetoothService.disable(); - mBluetoothService.enable(); + mBluetoothService.restart(); break; } } @@ -170,6 +169,7 @@ class BluetoothEventLoop { if (mode >= 0) { Intent intent = new Intent(BluetoothIntent.SCAN_MODE_CHANGED_ACTION); intent.putExtra(BluetoothIntent.SCAN_MODE, mode); + intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT); mContext.sendBroadcast(intent, BLUETOOTH_PERM); } } -- cgit v1.2.3-59-g8ed1b From e25b51baf43bab5b8c19546a93c0bf73025ffbee Mon Sep 17 00:00:00 2001 From: Andreas Huber <> Date: Tue, 24 Mar 2009 20:47:19 -0700 Subject: Automated import from //branches/donutburger/...@141711,141711 --- camera/libcameraservice/CameraService.cpp | 3 +++ media/libmedia/mediaplayer.cpp | 11 ++++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/camera/libcameraservice/CameraService.cpp b/camera/libcameraservice/CameraService.cpp index 6a6a811fa790..7e5fdbe1561c 100644 --- a/camera/libcameraservice/CameraService.cpp +++ b/camera/libcameraservice/CameraService.cpp @@ -492,6 +492,7 @@ status_t CameraService::Client::startPreview() status_t CameraService::Client::startRecording() { if (mMediaPlayerBeep.get() != NULL) { + mMediaPlayerBeep->seekTo(0); mMediaPlayerBeep->start(); } return startCameraMode(CAMERA_RECORDING_MODE); @@ -533,6 +534,7 @@ void CameraService::Client::stopRecording() } if (mMediaPlayerBeep.get() != NULL) { + mMediaPlayerBeep->seekTo(0); mMediaPlayerBeep->start(); } mHardware->stopRecording(); @@ -733,6 +735,7 @@ void CameraService::Client::shutterCallback(void *user) // Play shutter sound. if (client->mMediaPlayerClick.get() != NULL) { + client->mMediaPlayerClick->seekTo(0); client->mMediaPlayerClick->start(); } diff --git a/media/libmedia/mediaplayer.cpp b/media/libmedia/mediaplayer.cpp index 58419227264b..809316a9f7b9 100644 --- a/media/libmedia/mediaplayer.cpp +++ b/media/libmedia/mediaplayer.cpp @@ -416,8 +416,12 @@ status_t MediaPlayer::seekTo_l(int msec) status_t MediaPlayer::seekTo(int msec) { + mLockThreadId = getThreadId(); Mutex::Autolock _l(mLock); - return seekTo_l(msec); + status_t result = seekTo_l(msec); + mLockThreadId = 0; + + return result; } status_t MediaPlayer::reset() @@ -501,8 +505,9 @@ void MediaPlayer::notify(int msg, int ext1, int ext2) // this will deadlock. // // The threadId hack below works around this for the care of prepare - // within the same process. - + // and seekTo within the same process. + // FIXME: Remember, this is a hack, it's not even a hack that is applied + // consistently for all use-cases, this needs to be revisited. if (mLockThreadId != getThreadId()) { mLock.lock(); locked = true; -- cgit v1.2.3-59-g8ed1b From a8f556ee8cee24674663fd73c7a5b5a919b2d5bb Mon Sep 17 00:00:00 2001 From: Dianne Hackborn <> Date: Tue, 24 Mar 2009 20:47:50 -0700 Subject: Automated import from //branches/donutburger/...@141726,141726 --- core/java/android/app/SearchDialog.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/core/java/android/app/SearchDialog.java b/core/java/android/app/SearchDialog.java index 64288d2e0af3..a0cdb63489c7 100644 --- a/core/java/android/app/SearchDialog.java +++ b/core/java/android/app/SearchDialog.java @@ -49,6 +49,7 @@ import android.view.View; import android.view.ViewGroup; import android.view.Window; import android.view.WindowManager; +import android.view.inputmethod.InputMethodManager; import android.widget.AdapterView; import android.widget.AutoCompleteTextView; import android.widget.Button; @@ -922,6 +923,20 @@ public class SearchDialog extends Dialog implements OnItemClickListener, OnItemS } }; + @Override + public void cancel() { + // We made sure the IME was displayed, so also make sure it is closed + // when we go away. + InputMethodManager imm = (InputMethodManager)getContext() + .getSystemService(Context.INPUT_METHOD_SERVICE); + if (imm != null) { + imm.hideSoftInputFromWindow( + getWindow().getDecorView().getWindowToken(), 0); + } + + super.cancel(); + } + /** * Various ways to launch searches */ -- cgit v1.2.3-59-g8ed1b From 9b16598f701a629a5bf042471ba92ddcfa53f835 Mon Sep 17 00:00:00 2001 From: Ficus Kirkpatrick <> Date: Tue, 24 Mar 2009 20:49:28 -0700 Subject: Automated import from //branches/donutburger/...@141738,141738 --- core/java/android/provider/Telephony.java | 33 ++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/core/java/android/provider/Telephony.java b/core/java/android/provider/Telephony.java index d802c14dfcab..c8f8b40a97c0 100644 --- a/core/java/android/provider/Telephony.java +++ b/core/java/android/provider/Telephony.java @@ -233,18 +233,37 @@ public final class Telephony { */ public static boolean moveMessageToFolder(Context context, Uri uri, int folder) { - if ((uri == null) || ((folder != MESSAGE_TYPE_INBOX) - && (folder != MESSAGE_TYPE_OUTBOX) - && (folder != MESSAGE_TYPE_SENT) - && (folder != MESSAGE_TYPE_DRAFT) - && (folder != MESSAGE_TYPE_FAILED) - && (folder != MESSAGE_TYPE_QUEUED))) { + if (uri == null) { + return false; + } + + boolean markAsUnread = false; + boolean markAsRead = false; + switch(folder) { + case MESSAGE_TYPE_INBOX: + case MESSAGE_TYPE_DRAFT: + break; + case MESSAGE_TYPE_OUTBOX: + case MESSAGE_TYPE_SENT: + markAsRead = true; + break; + case MESSAGE_TYPE_FAILED: + case MESSAGE_TYPE_QUEUED: + markAsUnread = true; + break; + default: return false; } - ContentValues values = new ContentValues(1); + ContentValues values = new ContentValues(2); values.put(TYPE, folder); + if (markAsUnread) { + values.put(READ, Integer.valueOf(0)); + } else if (markAsRead) { + values.put(READ, Integer.valueOf(1)); + } + return 1 == SqliteWrapper.update(context, context.getContentResolver(), uri, values, null, null); } -- cgit v1.2.3-59-g8ed1b From b059eb3587b7c0ecf8230e3e0b19efff0401b645 Mon Sep 17 00:00:00 2001 From: Niko Catania <> Date: Tue, 24 Mar 2009 20:53:55 -0700 Subject: Automated import from //branches/donutburger/...@141782,141782 --- camera/libcameraservice/CameraHardwareStub.cpp | 2 +- camera/libcameraservice/FakeCamera.cpp | 30 ++++++++++++++++++++++++-- camera/libcameraservice/FakeCamera.h | 21 +++++++++++++++--- 3 files changed, 47 insertions(+), 6 deletions(-) diff --git a/camera/libcameraservice/CameraHardwareStub.cpp b/camera/libcameraservice/CameraHardwareStub.cpp index 0f1ae8ea42fe..a7af57c426ee 100644 --- a/camera/libcameraservice/CameraHardwareStub.cpp +++ b/camera/libcameraservice/CameraHardwareStub.cpp @@ -314,7 +314,7 @@ status_t CameraHardwareStub::dump(int fd, const Vector& args) const String8 result; AutoMutex lock(&mLock); if (mFakeCamera != 0) { - mFakeCamera->dump(fd, args); + mFakeCamera->dump(fd); mParameters.dump(fd, args); snprintf(buffer, 255, " preview frame(%d), size (%d), running(%s)\n", mCurrentPreviewFrame, mPreviewFrameSize, mPreviewRunning?"true": "false"); result.append(buffer); diff --git a/camera/libcameraservice/FakeCamera.cpp b/camera/libcameraservice/FakeCamera.cpp index 3592eabcb92d..3daf47dbadeb 100644 --- a/camera/libcameraservice/FakeCamera.cpp +++ b/camera/libcameraservice/FakeCamera.cpp @@ -1,12 +1,39 @@ +/* +** +** Copyright 2008, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + #define LOG_TAG "FakeCamera" #include #include #include +#include + #include "FakeCamera.h" + namespace android { +// TODO: All this rgb to yuv should probably be in a util class. + +// TODO: I think something is wrong in this class because the shadow is kBlue +// and the square color should alternate between kRed and kGreen. However on the +// emulator screen these are all shades of gray. Y seems ok but the U and V are +// probably not. + static int tables_initialized = 0; uint8_t *gYTable, *gCbTable, *gCrTable; @@ -389,7 +416,7 @@ void FakeCamera::drawCheckerboard(uint16_t *dst, int size) } -status_t FakeCamera::dump(int fd, const Vector& args) +void FakeCamera::dump(int fd) const { const size_t SIZE = 256; char buffer[SIZE]; @@ -397,7 +424,6 @@ status_t FakeCamera::dump(int fd, const Vector& args) snprintf(buffer, 255, " width x height (%d x %d), counter (%d), check x-y coordinate(%d, %d)\n", mWidth, mHeight, mCounter, mCheckX, mCheckY); result.append(buffer); ::write(fd, result.string(), result.size()); - return NO_ERROR; } diff --git a/camera/libcameraservice/FakeCamera.h b/camera/libcameraservice/FakeCamera.h index 77c994c1afb1..da9e94474e89 100644 --- a/camera/libcameraservice/FakeCamera.h +++ b/camera/libcameraservice/FakeCamera.h @@ -18,21 +18,36 @@ #ifndef ANDROID_HARDWARE_FAKECAMERA_H #define ANDROID_HARDWARE_FAKECAMERA_H -#include +#include namespace android { +/* + * FakeCamera is used in the CameraHardwareStub to provide a fake video feed + * when the system does not have a camera in hardware. + * The fake video is a moving black and white checkerboard background with a + * bouncing gray square in the foreground. + * This class is not thread-safe. + * + * TODO: Since the major methods provides a raw/uncompressed video feed, rename + * this class to RawVideoSource. + */ + class FakeCamera { public: FakeCamera(int width, int height); ~FakeCamera(); void setSize(int width, int height); - void getNextFrameAsRgb565(uint16_t *buffer); void getNextFrameAsYuv422(uint8_t *buffer); - status_t dump(int fd, const Vector& args); + // Write to the fd a string representing the current state. + void dump(int fd) const; private: + // TODO: remove the uint16_t buffer param everywhere since it is a field of + // this class. + void getNextFrameAsRgb565(uint16_t *buffer); + void drawSquare(uint16_t *buffer, int x, int y, int size, int color, int shadow); void drawCheckerboard(uint16_t *buffer, int size); -- cgit v1.2.3-59-g8ed1b From 0577b26b7fc0a0dba4445c7965e05e98d4253211 Mon Sep 17 00:00:00 2001 From: Jack Palevich <> Date: Tue, 24 Mar 2009 21:01:35 -0700 Subject: Automated import from //branches/donutburger/...@141859,141859 --- core/jni/android/opengl/util.cpp | 43 ++++++++++++++++++++++++++ opengl/java/android/opengl/GLUtils.java | 54 ++++++++++++++------------------- 2 files changed, 66 insertions(+), 31 deletions(-) diff --git a/core/jni/android/opengl/util.cpp b/core/jni/android/opengl/util.cpp index a1059e5a6169..41044db454d7 100644 --- a/core/jni/android/opengl/util.cpp +++ b/core/jni/android/opengl/util.cpp @@ -599,6 +599,44 @@ static int getInternalFormat(SkBitmap::Config config) } } +static int getType(SkBitmap::Config config) +{ + switch(config) { + case SkBitmap::kA8_Config: + return GL_UNSIGNED_BYTE; + case SkBitmap::kARGB_4444_Config: + return GL_UNSIGNED_SHORT_4_4_4_4; + case SkBitmap::kARGB_8888_Config: + return GL_UNSIGNED_BYTE; + case SkBitmap::kIndex8_Config: + return -1; // No type for compressed data. + case SkBitmap::kRGB_565_Config: + return GL_UNSIGNED_SHORT_5_6_5; + default: + return -1; + } +} + +static jint util_getInternalFormat(JNIEnv *env, jclass clazz, + jobject jbitmap) +{ + SkBitmap const * nativeBitmap = + (SkBitmap const *)env->GetIntField(jbitmap, nativeBitmapID); + const SkBitmap& bitmap(*nativeBitmap); + SkBitmap::Config config = bitmap.getConfig(); + return getInternalFormat(config); +} + +static jint util_getType(JNIEnv *env, jclass clazz, + jobject jbitmap) +{ + SkBitmap const * nativeBitmap = + (SkBitmap const *)env->GetIntField(jbitmap, nativeBitmapID); + const SkBitmap& bitmap(*nativeBitmap); + SkBitmap::Config config = bitmap.getConfig(); + return getType(config); +} + static jint util_texImage2D(JNIEnv *env, jclass clazz, jint target, jint level, jint internalformat, jobject jbitmap, jint type, jint border) @@ -610,6 +648,9 @@ static jint util_texImage2D(JNIEnv *env, jclass clazz, if (internalformat < 0) { internalformat = getInternalFormat(config); } + if (type < 0) { + type = getType(config); + } int err = checkFormat(config, internalformat, type); if (err) return err; @@ -694,6 +735,8 @@ static JNINativeMethod gVisiblityMethods[] = { static JNINativeMethod gUtilsMethods[] = { {"nativeClassInit", "()V", (void*)nativeUtilsClassInit }, + { "native_getInternalFormat", "(Landroid/graphics/Bitmap;)I", (void*) util_getInternalFormat }, + { "native_getType", "(Landroid/graphics/Bitmap;)I", (void*) util_getType }, { "native_texImage2D", "(IIILandroid/graphics/Bitmap;II)I", (void*)util_texImage2D }, { "native_texSubImage2D", "(IIIILandroid/graphics/Bitmap;II)I", (void*)util_texSubImage2D }, }; diff --git a/opengl/java/android/opengl/GLUtils.java b/opengl/java/android/opengl/GLUtils.java index df6c557c8163..e150c1967fc2 100644 --- a/opengl/java/android/opengl/GLUtils.java +++ b/opengl/java/android/opengl/GLUtils.java @@ -40,7 +40,6 @@ public final class GLUtils { /** * return the internal format as defined by OpenGL ES of the supplied bitmap. - * * @param bitmap * @return the internal format of the bitmap. */ @@ -48,40 +47,30 @@ public final class GLUtils { if (bitmap == null) { throw new NullPointerException("getInternalFormat can't be used with a null Bitmap"); } - switch (bitmap.getConfig()) { - case ALPHA_8: - return GL10.GL_ALPHA; - case ARGB_4444: - case ARGB_8888: - return GL10.GL_RGBA; - case RGB_565: - return GL10.GL_RGB; + int result = native_getInternalFormat(bitmap); + if (result < 0) { + throw new IllegalArgumentException("Unknown internalformat"); } - throw new IllegalArgumentException("Unknown internalformat"); + return result; } /** - * Return the type as defined by OpenGL ES of the supplied bitmap. + * Return the type as defined by OpenGL ES of the supplied bitmap, if there + * is one. If the bitmap is stored in a compressed format, it may not have + * a valid OpenGL ES type. + * @throws IllegalArgumentException if the bitmap does not have a type. + * @param bitmap + * @return the OpenGL ES type of the bitmap. */ public static int getType(Bitmap bitmap) { if (bitmap == null) { throw new NullPointerException("getType can't be used with a null Bitmap"); } - int type; - switch(bitmap.getConfig()) { - case ARGB_4444: - type = GL10.GL_UNSIGNED_SHORT_4_4_4_4; - break; - case RGB_565: - type = GL10.GL_UNSIGNED_SHORT_5_6_5; - break; - case ALPHA_8: - case ARGB_8888: - default: - type = GL10.GL_UNSIGNED_BYTE; - break; + int result = native_getType(bitmap); + if (result < 0) { + throw new IllegalArgumentException("Unknown type"); } - return type; + return result; } /** @@ -111,15 +100,16 @@ public final class GLUtils { if (bitmap == null) { throw new NullPointerException("texImage2D can't be used with a null Bitmap"); } - int type = getType(bitmap); - if (native_texImage2D(target, level, internalformat, bitmap, type, border)!=0) { + if (native_texImage2D(target, level, internalformat, bitmap, -1, border)!=0) { throw new IllegalArgumentException("invalid Bitmap format"); } } /** * A version of texImage2D() that takes an explicit type parameter - * as defined by the OpenGL ES specification. + * as defined by the OpenGL ES specification. The actual type and + * internalformat of the bitmap must be compatible with the specified + * type and internalformat parameters. * * @param target * @param level @@ -139,7 +129,8 @@ public final class GLUtils { } /** - * A version of texImage2D that determines the internalFormat automatically. + * A version of texImage2D that determines the internalFormat and type + * automatically. * * @param target * @param level @@ -151,8 +142,7 @@ public final class GLUtils { if (bitmap == null) { throw new NullPointerException("texImage2D can't be used with a null Bitmap"); } - int type = getType(bitmap); - if (native_texImage2D(target, level, -1, bitmap, type, border)!=0) { + if (native_texImage2D(target, level, -1, bitmap, -1, border)!=0) { throw new IllegalArgumentException("invalid Bitmap format"); } } @@ -213,6 +203,8 @@ public final class GLUtils { native private static void nativeClassInit(); + native private static int native_getInternalFormat(Bitmap bitmap); + native private static int native_getType(Bitmap bitmap); native private static int native_texImage2D(int target, int level, int internalformat, Bitmap bitmap, int type, int border); native private static int native_texSubImage2D(int target, int level, int xoffset, int yoffset, -- cgit v1.2.3-59-g8ed1b From 5903c977941c731cb4cc0df67cfeb2a3821c47ed Mon Sep 17 00:00:00 2001 From: Jaikumar Ganesh <> Date: Tue, 24 Mar 2009 21:02:13 -0700 Subject: Automated import from //branches/donutburger/...@141864,141864 --- core/java/android/bluetooth/HeadsetBase.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/java/android/bluetooth/HeadsetBase.java b/core/java/android/bluetooth/HeadsetBase.java index fd2d2ab88481..f31e7a2c65ec 100644 --- a/core/java/android/bluetooth/HeadsetBase.java +++ b/core/java/android/bluetooth/HeadsetBase.java @@ -105,7 +105,7 @@ public class HeadsetBase { /* Process an incoming AT command line */ - protected synchronized void handleInput(String input) { + protected void handleInput(String input) { acquireWakeLock(); long timestamp; @@ -267,13 +267,13 @@ public class HeadsetBase { } private native boolean sendURCNative(String urc); - private void acquireWakeLock() { + private synchronized void acquireWakeLock() { if (!mWakeLock.isHeld()) { mWakeLock.acquire(); } } - private void releaseWakeLock() { + private synchronized void releaseWakeLock() { if (mWakeLock.isHeld()) { mWakeLock.release(); } -- cgit v1.2.3-59-g8ed1b From 897ab770477faf0eebc0b87c43598501c173635f Mon Sep 17 00:00:00 2001 From: Eric Fischer <> Date: Tue, 24 Mar 2009 21:02:49 -0700 Subject: Automated import from //branches/donutburger/...@141868,141868 --- core/res/res/values-cs/strings.xml | 74 ++++++++++++--------------------- core/res/res/values-de/strings.xml | 74 ++++++++++++--------------------- core/res/res/values-es/strings.xml | 75 ++++++++++++---------------------- core/res/res/values-fr/strings.xml | 68 ++++++++++++------------------ core/res/res/values-it/strings.xml | 74 ++++++++++++--------------------- core/res/res/values-ja/strings.xml | 30 +++++++------- core/res/res/values-ko/strings.xml | 74 ++++++++++++--------------------- core/res/res/values-nb/strings.xml | 72 ++++++++++++-------------------- core/res/res/values-nl/strings.xml | 74 ++++++++++++--------------------- core/res/res/values-pl/strings.xml | 74 ++++++++++++--------------------- core/res/res/values-ru/strings.xml | 74 ++++++++++++--------------------- core/res/res/values-zh-rCN/strings.xml | 74 ++++++++++++--------------------- core/res/res/values-zh-rTW/strings.xml | 74 ++++++++++++--------------------- 13 files changed, 339 insertions(+), 572 deletions(-) diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml index 27cefb0a46a8..b3fca3ec6180 100644 --- a/core/res/res/values-cs/strings.xml +++ b/core/res/res/values-cs/strings.xml @@ -113,15 +113,11 @@ "Tichý režim" "Zvuk je VYPNUTÃ." "Zvuk je zapnutý" - - - - - - + "Režim V letadle" + "Režim V letadle je ZAPNUTÃ" + "Režim V letadle je VYPNUTÃ" "Nouzový režim" - - + "Systém Android" "ZpoplatnÄ›né služby" "Umožňuje aplikacím provádÄ›t Äinnosti, které vás mohou stát peníze." "VaÅ¡e zprávy" @@ -296,10 +292,8 @@ "Umožňuje povolit Äi zakázat aktualizace polohy prostÅ™ednictvím bezdrátového pÅ™ipojení. Aplikace toto nastavení obvykle nepoužívají." "přístup k vlastnostem Checkin" "Umožňuje Ätení i zápis vlastností nahraných službou Checkin. Běžné aplikace toto nastavení obvykle nevyužívají." - - - - + "zvolit widgety" + "Umožňuje aplikaci sdÄ›lit systému, které aplikace mohou používat které widgety. Aplikace s tímto oprávnÄ›ním mohou zpřístupnit osobní údaje jiným aplikacím. Není urÄeno pro běžné aplikace." "zmÄ›ny stavu telefonu" "Umožňuje aplikaci ovládat telefonní funkce zařízení. Aplikace s tímto oprávnÄ›ním může pÅ™epínat sítÄ› nebo zapnout Äi vypnout bezdrátové pÅ™ipojení telefonu bez vaÅ¡eho svolení." "zjistit stav telefonu" @@ -409,8 +403,7 @@ "Tísňové volání" "SprávnÄ›!" "Zkuste to prosím znovu" - - + "Nabíjení (%d%%)" "PÅ™ipojte dobíjecí zařízení." "Není vložena SIM karta." "V telefonu není žádná karta SIM." @@ -426,8 +419,7 @@ "Sekundy zbývající do dalšího pokusu: %d." "ZapomnÄ›li jste gesto?" "Gesta: PříliÅ¡ mnoho pokusů" - - + "Chcete-li telefon odemknout, pÅ™ihlaste se pomocí svého úÄtu Google" "Uživatelské jméno (e-mail)" "Heslo" "PÅ™ihlásit se" @@ -435,16 +427,13 @@ "h:mm AA" "%-l:%M%P" "%-l:%M%p" - - - - + "%-l%P" + "%-l%p" "Vymazat oznámení" "Žádná oznámení" "Probíhající" "Oznámení" - - + "%d%%" "Nabíjení..." "Prosím pÅ™ipojte dobíjecí zařízení" "Baterie je vybitá:" @@ -566,8 +555,7 @@ "MÄ›síÄnÄ›" "RoÄnÄ›" "Video nelze pÅ™ehrát" - - + "Omlouváme se, ale toto video nelze pÅ™enášet datovým proudem do tohoto zařízení." "Toto video bohužel nelze pÅ™ehrát." "OK" "dop." @@ -594,13 +582,11 @@ "Poledne" "půlnoc" "Půlnoc" - - + "%B %-d" "%B %-d, %Y" - - + "%B %Y" "%H:%M:%S" "%H:%M:%S %-d. %B %Y" "%3$s. %2$s – %8$s. %7$s" @@ -628,10 +614,8 @@ "%2$s %3$s, %4$s, %5$s – %7$s %8$s, %9$s, %10$s" "%1$s, %3$s. %2$s %4$s, %5$s – %6$s, %8$s. %7$s %9$s, %10$s" "%-d. %b %Y" - - - - + "%b %Y" + "%b %-d" "nedÄ›le" @@ -814,20 +798,16 @@ "Nebyly nalezeny žádné odpovídající aktivity." "aktualizovat statistiku použití souÄástí" "Umožňuje zmÄ›nu shromáždÄ›ných statistických údajů o použití souÄástí. Není urÄeno pro běžné aplikace." - - - - - - - - - - - - - - - + "Poklepáním můžete ovládat pÅ™iblížení" + "Chyba pÅ™i spouÅ¡tÄ›ní widgetu" + "PÅ™ejít" + "Hledat" + "Odeslat" + "Další" + "Hotovo" + "Spustit" + + + diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml index 8619084493f0..54e8864accff 100644 --- a/core/res/res/values-de/strings.xml +++ b/core/res/res/values-de/strings.xml @@ -113,15 +113,11 @@ "Lautlos" "Ton ist bereits AUS" "Ton ist momentan AN" - - - - - - + "Flugzeugmodus" + "Flugzeugmodus ist AN" + "Flugzeugmodus ist AUS" "Abgesicherter Modus" - - + "Android System" "Kostenpflichtige Dienste" "Ermöglicht Anwendungen die Ausführung eventuell kostenpflichtiger Aktionen." "Ihre Nachrichten" @@ -296,10 +292,8 @@ "Ermöglicht die Aktivierung/Deaktivierung der Radio-Benachrichtigungen über Standort-Updates. Nicht für normale Anwendungen vorgesehen." "Auf Check-In-Eigenschaften zugreifen" "Ermöglicht den Schreib-/Lesezugriff auf vom Check-In-Service hochgeladene Elemente. Nicht für normale Anwendungen vorgesehen." - - - - + "Widgets auswählen" + "Ermöglicht der Anwendung, dem System zu melden, welche Widgets von welcher Anwendung verwendet werden können. Mit dieser Berechtigung können Anwendungen anderen Anwendungen Zugriff auf persönliche Daten gewähren. Nicht für normale Anwendungen vorgesehen." "Telefonstatus ändern" "Ermöglicht einer Anwendung, die Telefonfunktionen des Gerätes zu steuern. Eine Anwendung mit dieser Berechtigung kann unter anderem das Netzwerk wechseln oder das Radio des Telefons ein- und ausschalten, ohne Sie darüber zu informieren." "Telefonstatus lesen" @@ -409,8 +403,7 @@ "Notruf" "Korrekt!" "Tut uns leid. Versuchen Sie es noch einmal." - - + "Wird geladen (%d%%)" "Bitte Ladegerät anschließen" "Keine SIM-Karte." "Keine SIM-Karte im Telefon." @@ -426,8 +419,7 @@ "Versuchen Sie es in %d Sekunden erneut." "Muster vergessen?" "Zu viele Versuche!" - - + "Melden Sie sich zum Entsperren mit Ihrem Google-Konto an." "Nutzername (E-Mail)" "Passwort" "Anmelden" @@ -435,16 +427,13 @@ "h:mm AA" "%-l:%M%P" "%-l:%M%p" - - - - + "%-l%P" + "%-l%p" "Benachrichtigungen löschen" "Keine Benachrichtigungen" "Aktuell" "Benachrichtigungen" - - + "%d%%" "Wird aufgeladen..." "Ladegerät anschließen" "Akku ist fast leer." @@ -566,8 +555,7 @@ "Monatlich" "Jährlich" "Video kann nicht wiedergegeben werden." - - + "Leider ist dieses Video nicht für Streaming auf diesem Gerät gültig." "Dieses Video kann leider nicht abgespielt werden." "OK" "AM" @@ -594,13 +582,11 @@ "Mittag" "Mitternacht" "Mitternacht" - - + "%B %-d" "%-d. %B %Y" - - + "%B %Y" "%H:%M:%S" "%H:%M:%S %-d. %B %Y" "%3$s. %2$s – %8$s. %7$s" @@ -628,10 +614,8 @@ "%3$s. %2$s %4$s, %5$s – %8$s. %7$s %9$s, %10$s" "%1$s, %3$s. %2$s %4$s, %5$s – %6$s, %8$s. %7$s %9$s, %10$s" "%-d. %b %Y" - - - - + "%b %Y" + "%b %-d" "Sonntag" @@ -814,20 +798,16 @@ "Keine passenden Aktivitäten gefunden" "Nutzungsstatistik der Komponente aktualisieren" "Ermöglicht die Änderung von gesammelten Nutzungsstatistiken der Komponente. Nicht für normale Anwendungen vorgesehen." - - - - - - - - - - - - - - - + "Für Zoomeinstellung zweimal berühren" + "Fehler beim Vergrößern des Widgets" + "Los" + "Suchen" + "Senden" + "Weiter" + "Fertig" + "Ausführen" + + + diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml index a18d2d7eb02f..8cacdc47339c 100644 --- a/core/res/res/values-es/strings.xml +++ b/core/res/res/values-es/strings.xml @@ -113,15 +113,11 @@ "Modo silencio" "El sonido está desactivado. Activar." "El sonido está activado. Desactivar." - - - - - - + "Modo avión" + "Modo avión ACTIVADO" + "Modo avión DESACTIVADO" "Modo seguro" - - + "Sistema Android" "Servicios por los que tienes que pagar" "Permite que las aplicaciones realicen acciones por las que puede que tengas que pagar." "Tus mensajes" @@ -296,10 +292,8 @@ "Permite habilitar/inhabilitar las notificaciones de actualización de la señal móvil. No está destinado al uso por parte de aplicaciones normales." "acceder a propiedades de registro" "Permite el acceso de lectura/escritura a las propiedades cargadas por el servicio de registro. No está destinado al uso por parte de aplicaciones normales." - - - - + "seleccionar widgets" + "Permite que una aplicación indique al sistema los widgets que puede utilizar cada aplicación. Se trata de un permiso que no pueden utilizar las aplicaciones normales y que permite que una aplicación conceda acceso a datos personales a otras aplicaciones." "modificar estado del teléfono" "Permite que la aplicación controle las funciones de teléfono del dispositivo. Una aplicación con este permiso puede cambiar redes, activar y desactivar la señal móvil, etc., sin necesidad de notificar al usuario." "leer el estado del teléfono" @@ -409,8 +403,7 @@ "Llamada de emergencia" "Correcto" "Inténtalo de nuevo" - - + "Cargando (%d%%)" "Conecta el cargador" "Falta la tarjeta SIM" "No se ha insertado ninguna tarjeta SIM en el teléfono." @@ -426,8 +419,7 @@ "Espera %d segundos y vuelve a intentarlo." "¿Has olvidado el patrón?" "Se han realizado demasiados intentos incorrectos de creación del patrón." - - + "Para desbloquear el teléfono, accede a tu cuenta de Google." "Nombre de usuario (correo electrónico)" "Contraseña" "Acceder" @@ -435,16 +427,13 @@ "h:mm AA" "%-l:%M%P" "%-l:%M%p" - - - - + "%-l%P" + "%-l%p" "Cerrar notificaciones" "No tienes notificaciones" "Entrante" "Notificaciones" - - + "%d%%" "Cargando..." "Conecta el cargador" "Se está agotando la batería:" @@ -566,8 +555,7 @@ "Mensualmente" "Anualmente" "No se puede reproducir el vídeo." - - + "Este vídeo no se puede transmitir al dispositivo." "Este vídeo no se puede reproducir." "Aceptar" "a.m." @@ -594,13 +582,11 @@ "Mediodía" "medianoche" "Medianoche" - - + "%B %-d" "%-d %B, %Y" - - + "%B %Y" "%H:%M:%S" "%H:%M:%S %B %-d, %Y" "%3$s %2$s – %8$s %7$s" @@ -628,10 +614,8 @@ "%2$s %3$s, %4$s, %5$s – %7$s %8$s, %9$s, %10$s" "%1$s, %2$s %3$s, %4$s, %5$s – %6$s, %7$s %8$s, %9$s, %10$s" "%-d de %b de %Y" - - - - + "%b %Y" + "%b %-d" "Domingo" @@ -814,21 +798,16 @@ "No se ha encontrado ninguna actividad coincidente." "actualizar estadísticas de uso de componentes" "Permite la modificación de estadísticas recopiladas sobre el uso de componentes. No está destinado al uso por parte de aplicaciones normales." - - - - - - - - - - - - - - - + "Pulsa dos veces para acceder al control de zoom." + "Error al aumentar el widget" + "Ir" + "Buscar" + "Enviar" + "Siguiente" + "Hecho" + "Ejecutar" + + + - diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml index b4b9318bef28..6e76fe720235 100644 --- a/core/res/res/values-fr/strings.xml +++ b/core/res/res/values-fr/strings.xml @@ -113,15 +113,11 @@ "Mode silencieux" "Le son est désactivé." "Le son est activé." - - - - - - + "Mode Avion" + "Le mode Avion est activé." + "Le mode Avion est désactivé." "Mode sécurisé" - - + "Système Android" "Services payants" "Permet aux applications d\'effectuer des opérations payantes." "Vos messages" @@ -296,10 +292,8 @@ "Permet l\'activation/la désactivation des notifications de mises à jour de la position géographique provenant de la radio. Les applications normales n\'utilisent pas cette fonctionnalité." "Accès aux propriétés d\'enregistrement" "Permet un accès en lecture/écriture à des propriétés envoyées par le service d\'inscription. Les applications normales n\'utilisent pas cette fonctionnalité." - - - - + "choisir les widgets" + "Permet à l\'application de signaler au système quels widgets peuvent être utilisés par quelle application. Grâce à cette autorisation, les applications peuvent accorder l\'accès à des données personnelles à d\'autres applications. Cette option n\'est pas utilisée par les applications standard." "Modification de l\'état du téléphone" "Permet à une application de contrôler les fonctionnalités téléphoniques de l\'appareil. Une application bénéficiant de cette autorisation peut changer de réseau, éteindre et allumer la radio du téléphone, etc., sans vous en avertir." "Lecture de l\'état du téléphone" @@ -409,8 +403,7 @@ "Appel d\'urgence" "Combinaison correcte !" "Désolé. Merci de réessayer." - - + "Chargement (%d %%)" "Branchez votre chargeur." "Aucune carte SIM n\'a été trouvée." "Aucune carte SIM n\'est insérée dans le téléphone." @@ -426,8 +419,7 @@ "Réessayez dans %d secondes." "Motif oublié ?" "Trop de tentatives de motif !" - - + "Pour déverrouiller le téléphone, connectez-vous à l\'aide de votre compte Google." "Nom d\'utilisateur (e-mail)" "Mot de passe" "Se connecter" @@ -435,15 +427,13 @@ "h:mm AA" "%-l:%M%P" "%-l:%M%p" - - - - + "%-l%P" + "%-l%p" "Effacer les notifications" "Aucune notification" "En cours" "Notifications" - "%d %%" + "%d%%" "Chargement..." "Branchez le chargeur" "Le niveau de la batterie est bas :" @@ -565,8 +555,7 @@ "Tous les mois" "Tous les ans" "Échec de la lecture de la vidéo" - - + "Désolé, cette vidéo ne peut être lue sur cet appareil." "Désolé, impossible de lire cette vidéo." "OK" "AM" @@ -593,12 +582,11 @@ "Midi" "minuit" "Minuit" - "%-d %B" + "%B %-d" "%-d %B %Y" - - + "%B %Y" "%H:%M:%S" "%H:%M:%S %-d %B %Y" "%3$s %2$s – %8$s %7$s" @@ -626,9 +614,8 @@ "%3$s %2$s %4$s, %5$s – %8$s %7$s %9$s, %10$s" "%1$s %3$s %2$s %4$s, %5$s – %6$s %8$s %7$s %9$s, %10$s" "%-d %b %Y" - - - "%-d %b" + "%b %Y" + "%b %-d" "dimanche" @@ -811,19 +798,16 @@ "Aucune activité correspondante trouvée" "mettre à jour les données statistiques du composant" "Permet de modifier les données statistiques collectées du composant. Cette option n\'est pas utilisée par les applications standard." - "Tapez deux fois pour le zoom" - - - - - - - - - - - + "Appuyer deux fois pour régler le zoom" + "Erreur lors de l\'agrandissement du widget" + "OK" + "Rechercher" + "Envoyer" + "Suivant" + "Terminé" + "Exécuter" + - + diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml index f987ae2d586c..50e25c027311 100644 --- a/core/res/res/values-it/strings.xml +++ b/core/res/res/values-it/strings.xml @@ -113,15 +113,11 @@ "Modalità silenziosa" "Audio non attivo" "Audio attivo" - - - - - - + "Modalità in volo" + "Modalità in volo attiva" + "Modalità in volo non attiva" "Modalità provvisoria" - - + "Sistema Android" "Servizi che prevedono un costo" "Consentono alle applicazioni di svolgere operazioni che possono comportare un costo." "I tuoi messaggi" @@ -296,10 +292,8 @@ "Consente l\'attivazione/disattivazione delle notifiche di aggiornamento della posizione dal segnale cellulare. Da non usare per normali applicazioni." "accesso a proprietà di archiviazione" "Consente l\'accesso di lettura/scrittura alle proprietà caricate dal servizio di archiviazione. Da non usare per normali applicazioni." - - - - + "scegliere widget" + "Consente all\'applicazione di indicare al sistema quali widget possono essere utilizzati e da quale applicazione. Con questa autorizzazione, le applicazioni possono consentire ad altre applicazioni di accedere a dati personali. Da non usare per normali applicazioni." "modifica stato del telefono" "Consente all\'applicazione di controllare le funzioni telefoniche del dispositivo. Un\'applicazione con questa autorizzazione può cambiare rete, attivare e disattivare il segnale cellulare e così via, senza alcuna notifica." "lettura stato del telefono" @@ -409,8 +403,7 @@ "Chiamata di emergenza" "Corretta." "Riprova" - - + "In carica (%d%%)" "Collegare il caricabatterie." "Nessuna SIM presente." "Nessuna SIM presente nel telefono." @@ -426,8 +419,7 @@ "Riprova fra %d secondi." "Hai dimenticato la sequenza?" "Troppi tentativi di inserimento della sequenza." - - + "Per sbloccare, accedi tramite il tuo account Google" "Nome utente (email)" "Password" "Accedi" @@ -435,16 +427,13 @@ "h:mm AA" "%-l:%M%P" "%-l:%M%p" - - - - + "%-l%P" + "%-l%p" "Cancella notifiche" "Nessuna notifica" "In corso" "Notifiche" - - + "%d%%" "In carica..." "Collegare il caricabatterie" "Batteria quasi scarica:" @@ -566,8 +555,7 @@ "Mensilmente" "Annualmente" "Impossibile riprodurre il video" - - + "Spiacenti, questo video non è valido per lo streaming su questo dispositivo." "Spiacenti. Impossibile riprodurre il video." "OK" "AM" @@ -594,13 +582,11 @@ "Mezzogiorno" "mezzanotte" "Mezzanotte" - - + "%B %-d" "%B %-d, %Y" - - + "%B %Y" "%H:%M:%S" "%H:%M:%S %-d %B, %Y" "%3$s %2$s – %8$s %7$s" @@ -628,10 +614,8 @@ "%3$s %2$s %4$s, %5$s – %8$s %7$s %9$s, %10$s" "%1$s, %3$s %2$s, %4$s, %5$s – %6$s, %8$s %7$s, %9$s, %10$s" "%-d %b, %Y" - - - - + "%b %Y" + "%-d %b" "Domenica" @@ -814,20 +798,16 @@ "Nessuna attività corrispondente trovata" "aggiornare le statistiche di utilizzo dei componenti" "Consente la modifica delle statistiche di utilizzo dei componenti raccolte. Da non usare per normali applicazioni." - - - - - - - - - - - - - - - + "Tocca due volte per il comando dello zoom" + "Errore durante l\'ampliamento del widget" + "Vai" + "Cerca" + "Invia" + "Avanti" + "Fine" + "Esegui" + + + diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml index dedc019cbf3c..6e7530c13bfa 100644 --- a/core/res/res/values-ja/strings.xml +++ b/core/res/res/values-ja/strings.xml @@ -103,22 +103,20 @@ "ワイヤレス接続をONã«ã™ã‚‹" "ワイヤレス接続をOFFã«ã™ã‚‹" "ç”»é¢ã‚’ロック" - "é›»æºã‚ªãƒ•" + "é›»æºã‚’切る" "シャットダウン中..." "æºå¸¯é›»è©±ã®é›»æºã‚’切りã¾ã™ã€‚" "最近使ã£ãŸã‚¢ãƒ—リケーションã¯ã‚りã¾ã›ã‚“。" "æºå¸¯é›»è©±ã‚ªãƒ—ション" "ç”»é¢ãƒ­ãƒƒã‚¯" - "é›»æºã‚ªãƒ•" + "é›»æºã‚’切る" "マナーモード" - "音声オフ" - "サウンド:オン" + "サウンドOFF" + "サウンドON" - - - - + "機内モードON" + "機内モードOFF" "セーフモード" @@ -306,7 +304,7 @@ "端末ã®é›»è©±æ©Ÿèƒ½ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’アプリケーションã«è¨±å¯ã—ã¾ã™ã€‚アプリケーションã¯ã€ã“ã®æºå¸¯é›»è©±ã®é›»è©±ç•ªå·ã€é€šè©±ä¸­ã‹ã©ã†ã‹ã€é€šè©±ç›¸æ‰‹ã®é›»è©±ç•ªå·ãªã©ã‚’特定ã§ãã¾ã™ã€‚" "端末ã®ã‚¹ãƒªãƒ¼ãƒ—を無効ã«ã™ã‚‹" "端末ã®ã‚¹ãƒªãƒ¼ãƒ—を無効ã«ã™ã‚‹ã“ã¨ã‚’アプリケーションã«è¨±å¯ã—ã¾ã™ã€‚" - "æºå¸¯é›»è©±ã®é›»æºã®ã‚ªãƒ³/オフ" + "é›»æºã®ON/OFF" "æºå¸¯é›»è©±ã®é›»æºã®ã‚ªãƒ³/オフをアプリケーションã«è¨±å¯ã—ã¾ã™ã€‚" "å‡ºè·æ™‚試験モードã§ã®å®Ÿè¡Œ" "æºå¸¯é›»è©±ã®ãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢ã¸ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’完全ã«è¨±å¯ã—ã¦ã€ä½Žãƒ¬ãƒ™ãƒ«ã®ãƒ¡ãƒ¼ã‚«ãƒ¼ãƒ†ã‚¹ãƒˆã¨ã—ã¦å®Ÿè¡Œã—ã¾ã™ã€‚メーカーã®ãƒ†ã‚¹ãƒˆãƒ¢ãƒ¼ãƒ‰ã§æºå¸¯é›»è©±ã‚’使用ã™ã‚‹ã¨ãã®ã¿åˆ©ç”¨ã§ãã¾ã™ã€‚" @@ -577,7 +575,7 @@ "%2$s%1$s~%5$s%4$s" "%2$s %3$s~%5$s %6$s" "%2$s~%5$s" - "%1$s~%2$s" + "%1$s - %2$s" "%3$s%2$s%1$s" "%3$s%2$s" "%3$sã€%1$s" @@ -595,7 +593,7 @@ "åˆå‰0時" "åˆå‰0時" - "%B%-dæ—¥" + "%Yå¹´%B%-dæ—¥" @@ -725,8 +723,8 @@ "OK" "キャンセル" "注æ„" - "オン" - "オフ" + "ON" + "OFF" "ã‚¢ãƒ—ãƒªã‚±ãƒ¼ã‚·ãƒ§ãƒ³ã‚’é¸æŠž" "常ã«ã“ã®æ“作ã§ä½¿ç”¨ã™ã‚‹" "ホームã®[設定]>[アプリケーション]>[アプリケーションã®ç®¡ç†]ã§ãƒ‡ãƒ•ォルト設定をクリアã—ã¾ã™ã€‚" @@ -750,7 +748,7 @@ "ç€ä¿¡éŸ³é‡" "Bluetoothç€ä¿¡éŸ³é‡" "アラームã®éŸ³é‡" - "通知音ã®éŸ³é‡" + "通知音é‡" "音é‡" "デフォルトã®ç€ä¿¡éŸ³" "端末ã®åŸºæœ¬ç€ä¿¡éŸ³ï¼ˆ%1$s)" @@ -829,4 +827,8 @@ + + + + diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml index faa1267cfb48..f44332aeefe5 100644 --- a/core/res/res/values-ko/strings.xml +++ b/core/res/res/values-ko/strings.xml @@ -113,15 +113,11 @@ "ë¬´ìŒ ëª¨ë“œ" "소리 꺼ì§" "소리 켜ì§" - - - - - - + "비행기 모드" + "비행기 모드 사용 안함" + "비행기 모드 사용" "안전 모드" - - + "Android 시스템" "ìš”ê¸ˆì´ ë¶€ê³¼ë˜ëŠ” 서비스" "ì‘ìš©í”„ë¡œê·¸ëž¨ì´ ìš”ê¸ˆì´ ë¶€ê³¼ë  ìˆ˜ 있는 ìž‘ì—…ì„ í•  수 있습니다." "메시지" @@ -296,10 +292,8 @@ "ë¬´ì„ ì˜ ìœ„ì¹˜ ì—…ë°ì´íЏ ì•Œë¦¼ì„ í™œì„±í™”í•˜ê±°ë‚˜ 비활성화할 수 있습니다. ì¼ë°˜ ì‘용프로그램ì—서는 사용하지 않습니다." "ì²´í¬ì¸ ì†ì„± 액세스" "ì²´í¬ì¸ 서비스ì—서 업로드한 ì†ì„±ì— 대한 ì½ê¸°/쓰기 액세스를 허용합니다. ì¼ë°˜ ì‘용프로그램ì—서는 사용하지 않습니다." - - - - + "위젯 ì„ íƒ" + "ì‘ìš©í”„ë¡œê·¸ëž¨ì´ ì‘용프로그램ì—서 사용할 수 있는 ìœ„ì ¯ì„ ì‹œìŠ¤í…œì— ì•Œë¦´ 수 있습니다. ì´ ê¶Œí•œì„ ê°–ëŠ” ì‘ìš©í”„ë¡œê·¸ëž¨ì€ ê°œì¸ ë°ì´í„°ì— 대한 액세스 ê¶Œí•œì„ ë‹¤ë¥¸ ì‘ìš©í”„ë¡œê·¸ëž¨ì— ë¶€ì—¬í•  수 있습니다. ì¼ë°˜ ì‘용프로그램ì—서는 사용하지 않습니다." "전화기 ìƒíƒœ 수정" "ì‘ìš©í”„ë¡œê·¸ëž¨ì´ ìž¥ì¹˜ì˜ ì „í™” ê¸°ëŠ¥ì„ ì œì–´í•  수 있습니다. ì´ ê¶Œí•œì„ ê°–ëŠ” ì‘ìš©í”„ë¡œê·¸ëž¨ì€ ì‚¬ìš©ìžì—게 알리지 않고 네트워í¬ë¥¼ 전환하거나, ì „í™” 무선 ê¸°ëŠ¥ì„ ì¼œê³  ëŒ ìˆ˜ 있습니다." "전화기 ìƒíƒœ ì½ê¸°" @@ -409,8 +403,7 @@ "ë¹„ìƒ ì „í™”" "맞습니다." "죄송합니다. 다시 시ë„하세요." - - + "ì¶©ì „ 중(%d%%)" "충전기를 연결하세요." "SIM 카드가 없습니다." "ì „í™”ê¸°ì— SIM 카드가 없습니다." @@ -426,8 +419,7 @@ "%dì´ˆ í›„ì— ë‹¤ì‹œ 입력하세요." "íŒ¨í„´ì„ ìžŠìœ¼ì…¨ë‚˜ìš”?" "íŒ¨í„´ì„ ë„ˆë¬´ ë§Žì´ ì‹œë„했습니다." - - + "잠금해제하려면 Google 계정으로 로그ì¸í•˜ì„¸ìš”." "ì‚¬ìš©ìž ì´ë¦„(ì´ë©”ì¼)" "비밀번호" "로그ì¸" @@ -435,16 +427,13 @@ "h:mm AA" "%-l:%M%P" "%-l:%M%p" - - - - + "%-l%P" + "%-l%p" "알림 지우기" "알림 ì—†ìŒ" "사용 중" "알림" - - + "%d%%" "ì¶©ì „ 중..." "충전기를 연결하세요." "배터리 ì „ì›ì´ 부족합니다." @@ -566,8 +555,7 @@ "매월" "매년" "ë™ì˜ìƒ ìž¬ìƒ ì•ˆ ë¨" - - + "죄송합니다. ì´ ê¸°ê¸°ë¡œì˜ ìŠ¤íŠ¸ë¦¬ë°ì— ì í•©í•˜ì§€ ì•Šì€ ë™ì˜ìƒìž…니다." "죄송합니다. ë™ì˜ìƒì„ 재ìƒí•  수 없습니다." "확ì¸" "AM" @@ -594,13 +582,11 @@ "정오" "ìžì •" "ìžì •" - - + "%B %-d" "%Y, %B %-d" - - + "%B %Y" "%H:%M:%S" "%Y, %B %-d, %H:%M:%S" "%2$s %3$s – %7$s %8$s" @@ -628,10 +614,8 @@ "%2$s %3$s, %4$s, %5$s – %7$s %8$s, %9$s, %10$s" "%4$s, %2$s %3$s, %1$s, %5$s – %9$s, %7$s %8$s, %6$s, %10$s" "%Y %b, %-d" - - - - + "%b %Y" + "%b %-d" "ì¼ìš”ì¼" @@ -814,20 +798,16 @@ "ì¼ì¹˜í•˜ëŠ” 활ë™ì´ 없습니다." "구성요소 사용 통계 ì—…ë°ì´íЏ" "ìˆ˜ì§‘ëœ êµ¬ì„±ìš”ì†Œ 사용 통계를 수정할 수 있는 ê¶Œí•œì„ ë¶€ì—¬í•©ë‹ˆë‹¤. ì¼ë°˜ ì‘ìš©í”„ë¡œê·¸ëž¨ì€ ì´ ê¶Œí•œì„ ì‚¬ìš©í•  수 없습니다." - - - - - - - - - - - - - - - + "확대/축소하려면 ë‘ ë²ˆ 탭하세요." + "ìœ„ì ¯ì„ í™•ìž¥í•˜ëŠ” 오류가 ë°œìƒí–ˆìŠµë‹ˆë‹¤." + "ì´ë™" + "검색" + "전송" + "다ìŒ" + "완료" + "실행" + + + diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml index 61b89282a75e..7bed159c51ca 100644 --- a/core/res/res/values-nb/strings.xml +++ b/core/res/res/values-nb/strings.xml @@ -113,15 +113,11 @@ "Stillemodus" "Lyden er av" "Lyden er pÃ¥" - - - - - - + "Flymodus" + "Flymodus er pÃ¥" + "Flymodus er av" "Sikkermodus" - - + "Android-system" "Betaltjenester" "Lar applikasjoner utføre operasjoner som kan koste deg penger." "Meldinger" @@ -296,10 +292,8 @@ "Lar applikasjonen slÃ¥ av/pÃ¥ varsling om plasseringsendringer fra radioen. Ikke ment for vanlige applikasjoner." "fÃ¥ tilgang til egenskaper for innsjekking" "Gir lese- og skrivetilgang til egenskaper lastet opp av innsjekkingstjenesten. Ikke ment for vanlige applikasjoner." - - - - + "velg gadgeter" + "Lar applikasjonen fortelle systemet hvilke gadgeter som kan brukes av hvilke applikasjoner. Med denne rettigheten kan applikasjoner andre applikasjoner tilgang til personlig data. Ikke ment for vanlige applikasjoner." "endre telefontilstand" "Lar applikasjonen kontrollere telefonfunksjonaliteten i enheten. En applikasjon med denne rettigheten kan endre nettverk, slÃ¥ telefonens radio av eller pÃ¥ og lignende uten noensinne Ã¥ varsle brukeren." "lese telefontilstand" @@ -409,8 +403,7 @@ "Nødanrop" "Riktig!" "Beklager, prøv igjen:" - - + "Lader (%d%%)" "Koble til en batterilader." "Mangler SIM-kort." "Ikke noe SIM-kort i telefonen." @@ -426,8 +419,7 @@ "Prøv igjen om %d sekunder." "Glemt mønsteret?" "Too many pattern attempts!" - - + "To unlock,BREAKsign in with your Google account" "Username (email)" "Password" "Sign in" @@ -435,16 +427,13 @@ "h:mm AA" "%-l:%M%P" "%-l:%M%p" - - - - + "%-l%P" + "%-l%p" "Fjern varslinger" "Ingen varslinger" "Aktiviteter" "Varslinger" - - + "%d%%" "Lader…" "Koble til en lader" "Batteriet er nesten tomt:" @@ -565,10 +554,9 @@ "Hver %s" "En gang i mÃ¥neden" "En gang i Ã¥ret" - "Cannot play video" - - - "Sorry, this video cannot be played." + "Kan ikke spille video" + "Beklager, denne videoen er ikke gyldig for streaming til denne enheten." + "Beklager, kan ikke spille denne videoen." "OK" "AM" "PM" @@ -599,8 +587,7 @@ "%-d. %B %Y" - - + "%B %Y" "%H:%M:%S" "%H:%M:%S %-d. %B %Y" "%2$s %3$s – %7$s %8$s" @@ -628,8 +615,7 @@ "%3$s. %2$s %4$s %5$s – %8$s. %7$s %9$s %10$s" "%1$s %3$s. %2$s %4$s %5$s – %6$s %8$s. %7$s %9$s %10$s" "%-d. %b %Y" - - + "%b %Y" @@ -814,20 +800,16 @@ "Fant ingen tilsvarende aktiviteter" "oppdater statistikk over komponentbruk" "Tillater endring av innsamlet data om bruk av komponenter. Ikke ment for vanlige applikasjoner." - - - - - - - - - - - - - - - + "Trykk to ganger for zoomkontroll" + "Feil under oppakking av gadget" + "GÃ¥" + "Søk" + "Send" + "Neste" + "Utført" + "Utfør" + + + diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml index 2a67cd174641..fc7ddcaf4380 100644 --- a/core/res/res/values-nl/strings.xml +++ b/core/res/res/values-nl/strings.xml @@ -113,15 +113,11 @@ "Stille modus" "Geluid is UIT" "Geluid is AAN" - - - - - - + "Vliegmodus" + "Vliegmodus is AAN" + "Vliegmodus is UIT" "Veilige modus" - - + "Android-systeem" "Services waarvoor u moet betalen" "Toepassingen toestaan activiteiten uit te voeren waarvoor mogelijk kosten in rekening worden gebracht." "Uw berichten" @@ -296,10 +292,8 @@ "Hiermee kunnen updatemeldingen voor locaties van de radio worden ingeschakeld/uitgeschakeld. Niet voor gebruik door normale toepassingen." "toegang tot checkin-eigenschappen" "Hiermee wordt lees-/schrijftoegang gegeven tot eigenschappen die door de checkin-service zijn geüpload. Niet voor gebruik door normale toepassingen." - - - - + "widgets kiezen" + "Hiermee kan een toepassing het systeem melden welke widgets door welke toepassing kunnen worden gebruikt. Met deze toestemming kunnen toepassingen andere toepassingen toegang geven tot persoonlijke gegevens. Niet voor gebruik door normale toepassingen." "telefoonstatus wijzigen" "Hiermee kan de toepassing de telefoonfuncties van het apparaat beheren. Een toepassing met deze machtiging kan schakelen tussen netwerken, de radio van de telefoon in- of uitschakelen en dergelijke zonder dat u hiervan op de hoogte wordt gesteld." "telefoonstatus lezen" @@ -409,8 +403,7 @@ "Noodoproep" "Juist!" "Probeer het opnieuw" - - + "Opladen (%d%%)" "Sluit de oplader aan." "Geen SIM-kaart." "Geen SIM-kaart in telefoon." @@ -426,8 +419,7 @@ "Probeer het over %d seconden opnieuw." "Patroon vergeten?" "Te veel patroonpogingen!" - - + "Om te ontgrendelen, moet U zich eerst bij uw Google-account aanmelden" "Gebruikersnaam (e-mail)" "Wachtwoord" "Aanmelden" @@ -435,16 +427,13 @@ "h:mm AA" "%-l:%M%P" "%-l:%M%p" - - - - + "%-l%P" + "%-l%p" "Meldingen wissen" "Geen meldingen" "Actief" "Meldingen" - - + "%d%%" "Opladen..." "Sluit de oplader aan" "De accu raakt op:" @@ -566,8 +555,7 @@ "Maandelijks" "Jaarlijks" "Video kan niet worden afgespeeld" - - + "Deze video kan helaas niet worden gestreamd naar dit apparaat." "Deze video kan niet worden afgespeeld." "OK" "am" @@ -594,13 +582,11 @@ "Twaalf uur \'s middags" "middernacht" "Middernacht" - - + "%B %-d" "%B %-d, %Y" - - + "%B %Y" "%H:%M:%S" "%H:%M:%S %B %-d, %Y" "%2$s %3$s – %7$s %8$s" @@ -628,10 +614,8 @@ "%2$s %3$s, %4$s, %5$s – %7$s %8$s, %9$s, %10$s" "%1$s, %2$s %3$s, %4$s, %5$s – %6$s, %7$s %8$s, %9$s, %10$s" "%b %-d, %Y" - - - - + "%b %Y" + "%b %-d" "Zondag" @@ -814,20 +798,16 @@ "Geen overeenkomende activiteiten gevonden" "gebruiksstatistieken van component bijwerken" "Hiermee kunnen verzamelde gebruiksstatistieken van een component worden gewijzigd. Niet voor gebruik door normale toepassingen." - - - - - - - - - - - - - - - + "Tik twee keer voor zoomregeling" + "Fout bij uitbreiden van widget" + "Ga" + "Zoeken" + "Verzenden" + "Volgende" + "Gereed" + "Uitvoeren" + + + diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml index 8c1f61b4cf57..9ac2795c6ba1 100644 --- a/core/res/res/values-pl/strings.xml +++ b/core/res/res/values-pl/strings.xml @@ -113,15 +113,11 @@ "Tryb cichy" "DźwiÄ™k jest wyłączony" "DźwiÄ™k jest włączony" - - - - - - + "Tryb lotniczy" + "Tryb lotniczy jest włączony" + "Tryb lotniczy jest wyłączony" "Tryb awaryjny" - - + "System Android" "UsÅ‚ugi pÅ‚atne" "Pozwól aplikacjom na wykonywanie pÅ‚atnych operacji." "Twoje wiadomoÅ›ci" @@ -296,10 +292,8 @@ "Pozwala włączyć/wyłączyć powiadomienia o aktualizacji poÅ‚ożenia przez radio. Nie wykorzystywane przez normalne aplikacje." "dostÄ™p do wÅ‚aÅ›ciwoÅ›ci usÅ‚ugi rezerwacji" "Pozwala na dostÄ™p z uprawnieniami do odczytu/zapisu do wÅ‚aÅ›ciwoÅ›ci przesÅ‚anych przez usÅ‚ugÄ™ rezerwacji. Nie wykorzystywane przez normalne aplikacje." - - - - + "wybieranie widżetów" + "Zezwala aplikacjom na wskazywanie systemowi, które widżety mogÄ… być używane przez inne aplikacje. Z użyciem tego pozwolenia aplikacje mogÄ… udzielać dostÄ™pu do danych osobistych innym aplikacjom. Nie jest ono przeznaczone dla zwykÅ‚ych aplikacji." "zmiana stanu telefonu" "Pozwala aplikacji na kontrolowanie funkcji telefonu w urzÄ…dzeniu. Aplikacja z tymi uprawnieniami może przełączać sieci, włączać i wyłączać radio itp. bez informowania użytkownika." "czytanie stanu telefonu" @@ -409,8 +403,7 @@ "Połączenie alarmowe" "Poprawnie!" "Niestety, spróbuj ponownie" - - + "Åadowanie (%d%%)" "Podłącz Å‚adowarkÄ™." "Brak karty SIM." "Brak karty SIM w telefonie." @@ -426,8 +419,7 @@ "Spróbuj ponownie za %d sekund." "ZapomniaÅ‚eÅ› wzoru?" "Zbyt wiele prób narysowania wzoru!" - - + "Aby odblokować, zaloguj siÄ™ za pomocÄ… konta Google" "Nazwa użytkownika (e-mail)" "HasÅ‚o" "Zaloguj" @@ -435,16 +427,13 @@ "h:mm AA" "%-l:%M%P" "%-l:%M%p" - - - - + "%-l%P" + "%-l%p" "Wyczyść powiadomienia" "Brak powiadomieÅ„" "TrwajÄ…ce" "Powiadomienia" - - + "%d%%" "Åadowanie..." "Podłącz Å‚adowarkÄ™" "Bateria siÄ™ rozÅ‚adowuje:" @@ -566,8 +555,7 @@ "MiesiÄ™cznie" "Co roku" "Nie można odtworzyć filmu wideo" - - + "Przepraszamy, ten film wideo nie nadaje siÄ™ do przesyÅ‚ania strumieniowego do tego urzÄ…dzenia." "Niestety, nie można odtworzyć tego filmu wideo." "OK" "rano" @@ -594,13 +582,11 @@ "PoÅ‚udnie" "północ" "Północ" - - + "%B %-d" "%B %-d, %Y" - - + "%B %Y" "%H:%M:%S" "%H:%M:%S %B %-d, %Y" "%2$s %3$s – %7$s %8$s" @@ -628,10 +614,8 @@ "%2$s %3$s, %4$s, %5$s – %7$s %8$s, %9$s, %10$s" "%1$s, %2$s %3$s, %4$s, %5$s – %6$s, %7$s %8$s, %9$s, %10$s" "%b %-d, %Y" - - - - + "%b %Y" + "%b %-d" "niedziela" @@ -814,20 +798,16 @@ "Nie znaleziono pasujÄ…cych dziaÅ‚aÅ„" "aktualizowanie statystyk użycia komponentu" "Zezwala na modyfikacje zebranych statystyk użycia komponentu. Nieprzeznaczone dla zwykÅ‚ych aplikacji." - - - - - - - - - - - - - - - + "Dotknij dwukrotnie, aby sterować powiÄ™kszeniem" + "Błąd podczas wyodrÄ™bniania widżetu" + "Przejdź" + "Szukaj" + "WyÅ›lij" + "Dalej" + "Gotowe" + "Wykonaj" + + + diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml index 4a99da51fc61..07b58ed1d79a 100644 --- a/core/res/res/values-ru/strings.xml +++ b/core/res/res/values-ru/strings.xml @@ -113,15 +113,11 @@ "Беззвучный режим" "Звук выключен" "Звук включен" - - - - - - + "Режим полета" + "Режим полета ВКЛЮЧЕÐ" + "Режим полета ВЫКЛЮЧЕÐ" "БезопаÑный режим" - - + "СиÑтема Android" "Платные Ñлужбы" "Разрешить приложениÑм выполнÑть дейÑтвиÑ, за которые может взиматьÑÑ Ð¿Ð»Ð°Ñ‚Ð°." "СообщениÑ" @@ -296,10 +292,8 @@ "Разрешает включение/отключение уведомлений о меÑтоположении по радиоÑвÑзи. Ðе иÑпользуетÑÑ Ð¾Ð±Ñ‹Ñ‡Ð½Ñ‹Ð¼Ð¸ приложениÑми." "открывать ÑвойÑтва проверки" "Разрешает доÑтуп на чтение и запиÑÑŒ к ÑвойÑтвам, загруженным Ñлужбой проверки. Ðе иÑпользуетÑÑ Ð¾Ð±Ñ‹Ñ‡Ð½Ñ‹Ð¼Ð¸ приложениÑми." - - - - + "выбирать виджеты" + "ПозволÑет приложению Ñообщить ÑиÑтеме, какие Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð¼Ð¾Ð³ÑƒÑ‚ иÑпользовать какие виджеты. Это разрешение позволÑет приложениÑм предоÑтавлÑть другим приложениÑм доÑтуп к личной информации. Ðе предназначено Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ð±Ñ‹Ñ‡Ð½Ñ‹Ð¼Ð¸ приложениÑми." "изменÑть ÑоÑтоÑние телефона" "ПозволÑет приложению управлÑть телефонными функциÑми уÑтройÑтва. Приложение Ñ Ñ‚Ð°ÐºÐ¸Ð¼Ð¸ полномочиÑми может переключать Ñети, включать и выключать радиоÑвÑзь и Ñ‚.д., не ÑÐ¾Ð¾Ð±Ñ‰Ð°Ñ Ð²Ð°Ð¼ об Ñтом." "Ñчитывать ÑоÑтоÑние телефона" @@ -409,8 +403,7 @@ "ЭкÑтренный вызов" "Верно!" "Ðеверно, попробуйте еще раз" - - + "Идет зарÑдка (%d%%)" "Подключите зарÑдное уÑтройÑтво." "Ðет SIM-карты." "Ð’ телефоне нет SIM-карты." @@ -426,8 +419,7 @@ "Повторите попытку через %d Ñек." "Забыли комбинацию?" "Слишком много попыток ввеÑти комбинацию!" - - + "Ð”Ð»Ñ Ñ€Ð°Ð·Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²ÐºÐ¸ войдите Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Ñвоего аккаунта Google" "Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ (Ð°Ð´Ñ€ÐµÑ Ñлектронной почты)" "Пароль" "Войти" @@ -435,16 +427,13 @@ "h:mm AA" "%-l:%M%P" "%-l:%M%p" - - - - + "%-l%P" + "%-l%p" "ОчиÑтить уведомлениÑ" "Ðет уведомлений" "Текущие" "УведомлениÑ" - - + "%d%%" "Идет зарÑдка..." "Подключите зарÑдное уÑтройÑтво" "Ð‘Ð°Ñ‚Ð°Ñ€ÐµÑ ÑадитÑÑ:" @@ -566,8 +555,7 @@ "ЕжемеÑÑчно" "Ежегодно" "Ðе удаетÑÑ Ð²Ð¾ÑпроизвеÑти видео" - - + "К Ñожалению, Ñто видео не подходит Ð´Ð»Ñ Ð¿Ð¾Ñ‚Ð¾ÐºÐ¾Ð²Ð¾Ð³Ð¾ воÑÐ¿Ñ€Ð¾Ð¸Ð·Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð½Ð° данном уÑтройÑтве." "К Ñожалению, Ñто видео Ð½ÐµÐ»ÑŒÐ·Ñ Ð²Ð¾ÑпроизвеÑти." "ОК" "AM" @@ -594,13 +582,11 @@ "Полдень" "полночь" "Полночь" - - + "%-d %B" "%-d %B %Y" - - + "%Y %B г." "%H:%M:%S" "%H:%M:%S %-d %B %Y" "%3$s %2$s – %8$s %7$s" @@ -628,10 +614,8 @@ "%3$s %2$s %4$s, %5$s – %8$s %7$s %9$s, %10$s" "%1$s, %3$s %2$s %4$s, %5$s – %6$s, %8$s %7$s %9$s, %10$s" "%-d %b %Y" - - - - + "%b %Y г." + "%-d %b" "воÑкреÑенье" @@ -814,20 +798,16 @@ "ПодходÑщих дейÑтвий не найдено" "обновлÑть ÑтатиÑтику иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñ‚Ð¾Ð²" "ПозволÑет изменÑть Ñобранную ÑтатиÑтику иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñ‚Ð¾Ð². Ðе предназначено Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ð±Ñ‹Ñ‡Ð½Ñ‹Ð¼Ð¸ приложениÑми." - - - - - - - - - - - - - - - + "Ðажмите дважды Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¼Ð°Ñштаба" + "Ошибка при наполнении виджета" + "Выбрать" + "ПоиÑк" + "Отправить" + "Далее" + "Готово" + "Выполнить" + + + diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml index b31c4f42c718..54b0b97d9691 100644 --- a/core/res/res/values-zh-rCN/strings.xml +++ b/core/res/res/values-zh-rCN/strings.xml @@ -113,15 +113,11 @@ "é™éŸ³æ¨¡å¼" "声音已关闭" "声音已开å¯" - - - - - - + "飞行模å¼" + "飞行模å¼å·²å¼€å¯" + "飞行模å¼å·²å…³é—­" "安全模å¼" - - + "Android 系统" "éœ€è¦æ‚¨æ”¯ä»˜è´¹ç”¨çš„æœåŠ¡" "å…è®¸åº”ç”¨ç¨‹åºæ‰§è¡Œå¯èƒ½éœ€è¦æ‚¨æ”¯ä»˜è´¹ç”¨çš„æ“ä½œã€‚" "您的信æ¯" @@ -296,10 +292,8 @@ "å…许å¯ç”¨/ç¦ç”¨æ¥è‡ªæ”¶éŸ³æœºçš„ä½ç½®æ›´æ–°é€šçŸ¥ã€‚普通应用程åºä¸èƒ½ä½¿ç”¨æ­¤æƒé™ã€‚" "访问检入属性" "å…许对检入æœåŠ¡ä¸Šä¼ çš„å±žæ€§è¿›è¡Œè¯»/写访问。普通应用程åºä¸èƒ½ä½¿ç”¨æ­¤æƒé™ã€‚" - - - - + "选择窗å£å°éƒ¨ä»¶" + "å…许应用程åºå‘Šè¯‰ç³»ç»Ÿå“ªä¸ªåº”用程åºå¯ä»¥ä½¿ç”¨å“ªäº›çª—å£å°éƒ¨ä»¶ã€‚具有该æƒé™çš„应用程åºå¯ä»¥å…许其他应用程åºè®¿é—®ä¸ªäººæ•°æ®ã€‚普通应用程åºä¸é€‚åˆä½¿ç”¨æ­¤æƒé™ã€‚" "修改手机状æ€" "å…è®¸åº”ç”¨ç¨‹åºæŽ§åˆ¶è®¾å¤‡çš„æ‰‹æœºåŠŸèƒ½ã€‚å…·æœ‰æ­¤æƒé™çš„应用程åºå¯èƒ½ä¼šåˆ‡æ¢ç½‘络,打开和关闭手机收音机以åŠç±»ä¼¼æ“作,而ä¸ä¼šé€šçŸ¥æ‚¨ã€‚" "è¯»å–æ‰‹æœºçжæ€" @@ -409,8 +403,7 @@ "紧急电è¯" "正确ï¼" "很抱歉,请é‡è¯•" - - + "正在充电 (%d%%)" "连接您的充电器。" "没有 SIM å¡ã€‚" "手机中无 SIM å¡ã€‚" @@ -426,8 +419,7 @@ "%d ç§’åŽé‡è¯•。" "忘记了图案?" "图案å°è¯•次数太多ï¼" - - + "è¦è§£é™¤é”定,请使用您的 Google 叿ˆ·ç™»å½•" "用户å(电å­é‚®ä»¶ï¼‰" "密ç " "登录" @@ -435,16 +427,13 @@ "h:mm AA" "%-l:%M%P" "%-l:%M%p" - - - - + "%P%-l点" + "%p%-l点" "清除通知" "无通知" "正在进行的" "通知" - - + "%d%%" "正在充电..." "请连接充电器" "电é‡åœ¨å‡å°‘:" @@ -566,8 +555,7 @@ "æ¯æœˆ" "æ¯å¹´" "无法播放视频" - - + "抱歉,该视频ä¸é€‚åˆåœ¨æ­¤è®¾å¤‡ä¸Šæ’­æ”¾ã€‚" "很抱歉,此视频ä¸èƒ½æ’­æ”¾ã€‚" "确定" "上åˆ" @@ -594,13 +582,11 @@ "中åˆ" "åˆå¤œ" "åˆå¤œ" - - + "%B 月 %-d æ—¥" "%Y å¹´ %B 月 %-d æ—¥" - - + "%Y å¹´ %B 月" "%H:%M:%S" "%Y å¹´ %B 月 %-d æ—¥ %H:%M:%S" "%2$s 月 %3$s 日至 %7$s 月 %8$s æ—¥" @@ -628,10 +614,8 @@ "%4$s å¹´ %2$s 月 %3$s æ—¥ %5$s 至 %9$s å¹´ %7$s 月 %8$s æ—¥ %10$s" "%4$s å¹´ %2$s 月 %3$s æ—¥%1$s %5$s 至 %9$s å¹´ %7$s 月 %8$s æ—¥%6$s %10$s" "%Y å¹´ %b 月 %-d æ—¥" - - - - + "%Y å¹´ %b 月" + "%b 月 %-d æ—¥" "周日" @@ -814,20 +798,16 @@ "找ä¸åˆ°åŒ¹é…的活动" "更新组件使用情况统计" "å…许修改收集的组件使用情况统计。普通应用程åºä¸èƒ½ä½¿ç”¨æ­¤æƒé™ã€‚" - - - - - - - - - - - - - - - + "åŒå‡»å¯ä»¥è¿›è¡Œç¼©æ”¾æŽ§åˆ¶" + "放大窗å£å°éƒ¨ä»¶æ—¶å‡ºé”™" + "开始" + "æœç´¢" + "å‘é€" + "下一步" + "完æˆ" + "执行" + + + diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml index d88ca653b971..d02f4b13b148 100644 --- a/core/res/res/values-zh-rTW/strings.xml +++ b/core/res/res/values-zh-rTW/strings.xml @@ -113,15 +113,11 @@ "éœéŸ³æ¨¡å¼" "音效已關閉" "è²éŸ³å·²é–‹å•Ÿ" - - - - - - + "飛航模å¼" + "飛航模å¼ç‚º [開啟]" + "飛航模å¼ç‚º [關閉]" "安全模å¼" - - + "Android 系統" "需è¦é¡å¤–費用的æœå‹™ã€‚" "若您å…許應用程å¼åŸ·è¡Œæ­¤æ“作,å¯èƒ½éœ€è¦æ”¯ä»˜ä¸€äº›è²»ç”¨ã€‚" "您的簡訊" @@ -296,10 +292,8 @@ "å…許啟用/åœç”¨ç„¡ç·šé€šè¨Šä½ç½®æ›´æ–°é€šçŸ¥ã€‚一般應用程å¼ä¸æœƒä½¿ç”¨æ­¤åŠŸèƒ½ã€‚" "å­˜å–登機é¸é …" "å…許讀寫登機æœå‹™ä¸Šå‚³çš„資料。一般應用程å¼ä¸æœƒä½¿ç”¨æ­¤åŠŸèƒ½ã€‚" - - - - + "鏿“‡å°å·¥å…·" + "å…許應用程å¼å‘ŠçŸ¥ç³»çµ±å“ªå€‹æ‡‰ç”¨ç¨‹å¼å¯ä»¥ä½¿ç”¨å“ªäº›å°å·¥å…·ã€‚開啟此權é™å¾Œï¼Œæ‡‰ç”¨ç¨‹å¼æœƒè®“其他程å¼ä½¿ç”¨å€‹äººè³‡æ–™ï¼Œä½†ä¸€èˆ¬æ‡‰ç”¨ç¨‹å¼ä¸é©åˆä½¿ç”¨æ­¤åŠŸèƒ½ã€‚" "修改手機狀態" "å…è¨±æ‡‰ç”¨ç¨‹å¼æŽ§åˆ¶é›»è©±åŠŸèƒ½ã€‚æ“æœ‰æ­¤æ¬Šé™çš„程å¼å¯è‡ªè¡Œåˆ‡æ›ç¶²è·¯ã€é–‹é—œç„¡ç·šé€šè¨ŠåŠŸèƒ½ã€‚" "è®€å–æ‰‹æ©Ÿç‹€æ…‹" @@ -409,8 +403,7 @@ "緊急電話" "正確ï¼" "抱歉,請å†è©¦ä¸€æ¬¡" - - + "正在充電 (%d%%)" "請連接充電器。" "沒有 SIM å¡ã€‚" "手機未æ’å…¥ SIM å¡ã€‚" @@ -426,8 +419,7 @@ "%d 秒後å†è©¦ä¸€æ¬¡ã€‚" "忘記解鎖圖形?" "解鎖圖形出錯次數éŽå¤šï¼" - - + "è‹¥è¦è§£é™¤éŽ–å®šï¼Œè«‹ä½¿ç”¨ Google 帳戶登入" "使用者å稱 (é›»å­éƒµä»¶)" "密碼" "登入" @@ -435,16 +427,13 @@ "h:mm AA" "%-l:%M%P" "%-l:%M%p" - - - - + "%-l%P" + "%-l%p" "清除通知" "沒有通知" "進行中" "通知" - - + "%d%%" "充電中" "請連接充電器" "電池電é‡å³å°‡ä¸è¶³ï¼š" @@ -566,8 +555,7 @@ "æ¯æœˆ" "æ¯å¹´" "無法播放影片" - - + "很抱歉,影片格å¼ç„¡æ•ˆï¼Œè£ç½®ç„¡æ³•進行串æµè™•ç†ã€‚" "抱歉,無法撥放此影片。" "確定" "上åˆ" @@ -594,13 +582,11 @@ "中åˆ" "åˆå¤œ" "åˆå¤œ" - - + "%B%-d" "%B %-d,%Y" - - + "%B%Y" "%H:%M:%S" "%H:%M:%S %B %-d,%Y" "%2$s %3$s – %7$s %8$s" @@ -628,10 +614,8 @@ "%2$s %3$s,%4$s,%5$s – %7$s %8$s,%9$s,%10$s" "%1$s,%2$s %3$s,%4$s,%5$s – %6$s,%7$s %8$s,%9$s,%10$s" "%b %-d,%Y" - - - - + "%b%Y" + "%b%-d" "星期日" @@ -814,20 +798,16 @@ "找ä¸åˆ°ç¬¦åˆçš„æ´»å‹•" "更新元件使用統計資料" "å…許修改收集到的元件使用統計資料。一般應用程å¼ä¸æœƒä½¿ç”¨æ­¤åŠŸèƒ½ã€‚" - - - - - - - - - - - - - - - + "點兩下以進行縮放控制" + "擴大å°å·¥å…·æ™‚發生錯誤" + "é–‹å§‹" + "æœå°‹" + "傳é€" + "下一步" + "完æˆ" + "執行" + + + -- cgit v1.2.3-59-g8ed1b From bb93d5598daa3312318c29401815bddf1df8c4de Mon Sep 17 00:00:00 2001 From: Romain Guy <> Date: Tue, 24 Mar 2009 21:04:15 -0700 Subject: Automated import from //branches/donutburger/...@141885,141885 --- core/java/android/view/ViewGroup.java | 8 ++++++-- core/java/android/view/ViewRoot.java | 5 +++-- core/java/android/view/animation/TranslateAnimation.java | 1 - 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java index dc7b299cade7..39aecfdf52d1 100644 --- a/core/java/android/view/ViewGroup.java +++ b/core/java/android/view/ViewGroup.java @@ -2327,8 +2327,12 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager final boolean drawAnimation = (child.mPrivateFlags & DRAW_ANIMATION) == DRAW_ANIMATION; do { - if (drawAnimation && parent instanceof View) { - ((View) parent).mPrivateFlags |= DRAW_ANIMATION; + if (drawAnimation) { + if (parent instanceof View) { + ((View) parent).mPrivateFlags |= DRAW_ANIMATION; + } else if (parent instanceof ViewRoot) { + ((ViewRoot) parent).mIsAnimating = true; + } } parent = parent.invalidateChildInParent(location, dirty); } while (parent != null); diff --git a/core/java/android/view/ViewRoot.java b/core/java/android/view/ViewRoot.java index fbb4d42b18fb..18ee9aeb8f68 100644 --- a/core/java/android/view/ViewRoot.java +++ b/core/java/android/view/ViewRoot.java @@ -33,7 +33,6 @@ import android.util.Config; import android.util.Log; import android.util.EventLog; import android.util.SparseArray; -import android.util.DisplayMetrics; import android.view.View.MeasureSpec; import android.view.inputmethod.InputConnection; import android.view.inputmethod.InputMethodManager; @@ -128,6 +127,7 @@ public final class ViewRoot extends Handler implements ViewParent, int mWidth; int mHeight; Rect mDirty; // will be a graphics.Region soon + boolean mIsAnimating; final View.AttachInfo mAttachInfo; @@ -1183,7 +1183,7 @@ public final class ViewRoot extends Handler implements ViewParent, } try { - if (!dirty.isEmpty()) { + if (!dirty.isEmpty() || mIsAnimating) { long startTime; if (DEBUG_ORIENTATION || DEBUG_DRAW) { @@ -1210,6 +1210,7 @@ public final class ViewRoot extends Handler implements ViewParent, } dirty.setEmpty(); + mIsAnimating = false; mAttachInfo.mDrawingTime = SystemClock.uptimeMillis(); canvas.translate(0, -yoff); mView.mPrivateFlags |= View.DRAWN; diff --git a/core/java/android/view/animation/TranslateAnimation.java b/core/java/android/view/animation/TranslateAnimation.java index a785d437a1de..d2ff754ac327 100644 --- a/core/java/android/view/animation/TranslateAnimation.java +++ b/core/java/android/view/animation/TranslateAnimation.java @@ -156,7 +156,6 @@ public class TranslateAnimation extends Animation { if (mFromYDelta != mToYDelta) { dy = mFromYDelta + ((mToYDelta - mFromYDelta) * interpolatedTime); } - t.getMatrix().setTranslate(dx, dy); } -- cgit v1.2.3-59-g8ed1b From 98594c73bf7bb30dae452a723449790760f3cd01 Mon Sep 17 00:00:00 2001 From: Mike Lockwood <> Date: Tue, 24 Mar 2009 21:04:47 -0700 Subject: Automated import from //branches/donutburger/...@141909,141909 --- core/java/android/server/BluetoothA2dpService.java | 41 ++++++++++++++++++++-- 1 file changed, 38 insertions(+), 3 deletions(-) diff --git a/core/java/android/server/BluetoothA2dpService.java b/core/java/android/server/BluetoothA2dpService.java index 3c507074af83..5c4e56da165e 100644 --- a/core/java/android/server/BluetoothA2dpService.java +++ b/core/java/android/server/BluetoothA2dpService.java @@ -58,6 +58,7 @@ public class BluetoothA2dpService extends IBluetoothA2dp.Stub { private static final String BLUETOOTH_ENABLED = "bluetooth_enabled"; private static final int MESSAGE_CONNECT_TO = 1; + private static final int MESSAGE_DISCONNECT = 2; private final Context mContext; private final IntentFilter mIntentFilter; @@ -65,6 +66,11 @@ public class BluetoothA2dpService extends IBluetoothA2dp.Stub { private final AudioManager mAudioManager; private final BluetoothDevice mBluetooth; + // list of disconnected sinks to process after a delay + private final ArrayList mPendingDisconnects = new ArrayList(); + // number of active sinks + private int mSinkCount = 0; + private class SinkState { public String address; public int state; @@ -164,6 +170,9 @@ public class BluetoothA2dpService extends IBluetoothA2dp.Stub { connectSink(address); } break; + case MESSAGE_DISCONNECT: + handleDeferredDisconnect((String)msg.obj); + break; } } }; @@ -338,6 +347,9 @@ public class BluetoothA2dpService extends IBluetoothA2dp.Stub { } private synchronized void onSinkConnected(String path) { + // if we are reconnected, do not process previous disconnect event. + mPendingDisconnects.remove(path); + if (mAudioDevices == null) return; // bluez 3.36 quietly disconnects the previous sink when a new sink // is connected, so we need to mark all previously connected sinks as @@ -363,8 +375,23 @@ public class BluetoothA2dpService extends IBluetoothA2dp.Stub { } private synchronized void onSinkDisconnected(String path) { - mAudioManager.setBluetoothA2dpOn(false); - updateState(path, BluetoothA2dp.STATE_DISCONNECTED); + // This is to work around a problem in bluez that results + // sink disconnect events being sent, immediately followed by a reconnect. + // To avoid unnecessary audio routing changes, we defer handling + // sink disconnects until after a short delay. + mPendingDisconnects.add(path); + Message msg = Message.obtain(mHandler, MESSAGE_DISCONNECT, path); + mHandler.sendMessageDelayed(msg, 2000); + } + + private synchronized void handleDeferredDisconnect(String path) { + if (mPendingDisconnects.contains(path)) { + mPendingDisconnects.remove(path); + if (mSinkCount == 1) { + mAudioManager.setBluetoothA2dpOn(false); + } + updateState(path, BluetoothA2dp.STATE_DISCONNECTED); + } } private synchronized void onSinkPlaying(String path) { @@ -432,6 +459,13 @@ public class BluetoothA2dpService extends IBluetoothA2dp.Stub { if (state != prevState) { if (DBG) log("state " + address + " (" + path + ") " + prevState + "->" + state); + + // keep track of the number of active sinks + if (prevState == BluetoothA2dp.STATE_DISCONNECTED) { + mSinkCount++; + } else if (state == BluetoothA2dp.STATE_DISCONNECTED) { + mSinkCount--; + } Intent intent = new Intent(BluetoothA2dp.SINK_STATE_CHANGED_ACTION); intent.putExtra(BluetoothIntent.ADDRESS, address); @@ -441,7 +475,8 @@ public class BluetoothA2dpService extends IBluetoothA2dp.Stub { if ((prevState == BluetoothA2dp.STATE_CONNECTED || prevState == BluetoothA2dp.STATE_PLAYING) && - (state != BluetoothA2dp.STATE_CONNECTED && + (state != BluetoothA2dp.STATE_CONNECTING && + state != BluetoothA2dp.STATE_CONNECTED && state != BluetoothA2dp.STATE_PLAYING)) { // disconnected intent = new Intent(AudioManager.ACTION_AUDIO_BECOMING_NOISY); -- cgit v1.2.3-59-g8ed1b From c4dd60fd4a8df20f01f3f43c3e7b15a5252f51a7 Mon Sep 17 00:00:00 2001 From: Suchi Amalapurapu <> Date: Tue, 24 Mar 2009 21:10:53 -0700 Subject: Automated import from //branches/donutburger/...@141958,141958 --- services/java/com/android/server/PackageManagerService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/java/com/android/server/PackageManagerService.java b/services/java/com/android/server/PackageManagerService.java index 7fffcb9b436e..9e062f4dc1e7 100644 --- a/services/java/com/android/server/PackageManagerService.java +++ b/services/java/com/android/server/PackageManagerService.java @@ -1948,7 +1948,7 @@ class PackageManagerService extends IPackageManager.Stub { } // The signature has changed, but this package is in the system // image... let's recover! - pkg.mSignatures = pkgSetting.signatures.mSignatures; + pkgSetting.signatures.mSignatures = pkg.mSignatures; // However... if this package is part of a shared user, but it // doesn't match the signature of the shared user, let's fail. // What this means is that you can't change the signatures -- cgit v1.2.3-59-g8ed1b From f9204e55892c9987e5f85fe67e51c1a1d1935696 Mon Sep 17 00:00:00 2001 From: Nick Pelly <> Date: Tue, 24 Mar 2009 21:15:00 -0700 Subject: Automated import from //branches/donutburger/...@141979,141979 --- core/java/android/server/BluetoothDeviceService.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/core/java/android/server/BluetoothDeviceService.java b/core/java/android/server/BluetoothDeviceService.java index c61b25ad9887..f1a7d2571e76 100644 --- a/core/java/android/server/BluetoothDeviceService.java +++ b/core/java/android/server/BluetoothDeviceService.java @@ -51,6 +51,7 @@ import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; +import java.util.Iterator; import java.util.Map; import com.android.internal.app.IBatteryStats; @@ -189,14 +190,14 @@ public class BluetoothDeviceService extends IBluetoothDevice.Stub { // Remove remoteServiceChannelCallbacks HashMap callbacksMap = mEventLoop.getRemoteServiceChannelCallbacks(); - IBluetoothDeviceCallback callback; - for (String address : callbacksMap.keySet()) { - callback = callbacksMap.get(address); + for (Iterator i = callbacksMap.keySet().iterator(); i.hasNext();) { + String address = i.next(); + IBluetoothDeviceCallback callback = callbacksMap.get(address); try { callback.onGetRemoteServiceChannelResult(address, BluetoothError.ERROR_DISABLED); } catch (RemoteException e) {} - callbacksMap.remove(address); + i.remove(); } // update mode -- cgit v1.2.3-59-g8ed1b From 3d515fd4b0cf23f4be2e962a838f15bfd7a98f49 Mon Sep 17 00:00:00 2001 From: Andy McFadden <> Date: Tue, 24 Mar 2009 21:16:04 -0700 Subject: Automated import from //branches/donutburger/...@141992,141992 --- camera/libcameraservice/FakeCamera.h | 1 + 1 file changed, 1 insertion(+) diff --git a/camera/libcameraservice/FakeCamera.h b/camera/libcameraservice/FakeCamera.h index da9e94474e89..f7f880328a4c 100644 --- a/camera/libcameraservice/FakeCamera.h +++ b/camera/libcameraservice/FakeCamera.h @@ -19,6 +19,7 @@ #define ANDROID_HARDWARE_FAKECAMERA_H #include +#include namespace android { -- cgit v1.2.3-59-g8ed1b From 59e5ba47dd43e102c35def18b4871a16a4d7114a Mon Sep 17 00:00:00 2001 From: Ficus Kirkpatrick <> Date: Tue, 24 Mar 2009 21:16:34 -0700 Subject: Automated import from //branches/donutburger/...@141997,141997 --- core/java/android/provider/Telephony.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/core/java/android/provider/Telephony.java b/core/java/android/provider/Telephony.java index c8f8b40a97c0..61ab2288cb6f 100644 --- a/core/java/android/provider/Telephony.java +++ b/core/java/android/provider/Telephony.java @@ -30,6 +30,7 @@ import android.telephony.gsm.SmsMessage; import android.text.TextUtils; import android.text.util.Regex; import android.util.Config; +import android.util.Log; import java.util.HashSet; import java.util.Set; @@ -1103,18 +1104,22 @@ public final class Telephony { uriBuilder.appendQueryParameter("recipient", recipient); } + Uri uri = uriBuilder.build(); Cursor cursor = SqliteWrapper.query(context, context.getContentResolver(), - uriBuilder.build(), ID_PROJECTION, null, null, null); + uri, ID_PROJECTION, null, null, null); if (cursor != null) { try { if (cursor.moveToFirst()) { return cursor.getLong(0); + } else { + Log.e(TAG, "getOrCreateThreadId returned no rows!"); } } finally { cursor.close(); } } + Log.e(TAG, "getOrCreateThreadId failed with uri " + uri.toString()); throw new IllegalArgumentException("Unable to find or allocate a thread ID."); } } -- cgit v1.2.3-59-g8ed1b From db028c8894c7665fc393b2fc1be57a56eb7dc150 Mon Sep 17 00:00:00 2001 From: Dave Sparks <> Date: Tue, 24 Mar 2009 21:18:23 -0700 Subject: Automated import from //branches/donutburger/...@142022,142022 --- data/sounds/effects/VideoRecord.ogg | Bin 14969 -> 5582 bytes data/sounds/effects/VideoRecord.wav | Bin 152342 -> 33728 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/data/sounds/effects/VideoRecord.ogg b/data/sounds/effects/VideoRecord.ogg index 54febbfea6a4..1450522f6d93 100644 Binary files a/data/sounds/effects/VideoRecord.ogg and b/data/sounds/effects/VideoRecord.ogg differ diff --git a/data/sounds/effects/VideoRecord.wav b/data/sounds/effects/VideoRecord.wav index 0f70e58efc96..5809d93c011d 100644 Binary files a/data/sounds/effects/VideoRecord.wav and b/data/sounds/effects/VideoRecord.wav differ -- cgit v1.2.3-59-g8ed1b From 272beb63834e213ee35a83741a5e2ae1279999d5 Mon Sep 17 00:00:00 2001 From: Eric Laurent <> Date: Tue, 24 Mar 2009 21:23:54 -0700 Subject: Automated import from //branches/donutburger/...@142065,142065 --- media/libmedia/AudioRecord.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/media/libmedia/AudioRecord.cpp b/media/libmedia/AudioRecord.cpp index 5c800c3efb2e..986f88ee100c 100644 --- a/media/libmedia/AudioRecord.cpp +++ b/media/libmedia/AudioRecord.cpp @@ -532,7 +532,14 @@ bool AudioRecord::processAudioBuffer(const sp& thread) readSize = audioBuffer.size; // Sanity check on returned size - if (ssize_t(readSize) <= 0) break; + if (ssize_t(readSize) <= 0) { + // The callback is done filling buffers + // Keep this thread going to handle timed events and + // still try to get more data in intervals of WAIT_PERIOD_MS + // but don't just loop and block the CPU, so wait + usleep(WAIT_PERIOD_MS*1000); + break; + } if (readSize > reqSize) readSize = reqSize; audioBuffer.size = readSize; -- cgit v1.2.3-59-g8ed1b From b45f124a041adf81b3ac8b8dec6b396e751e92d7 Mon Sep 17 00:00:00 2001 From: Romain Guy <> Date: Tue, 24 Mar 2009 21:30:00 -0700 Subject: Automated import from //branches/donutburger/...@142129,142129 --- core/java/android/widget/ListView.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/core/java/android/widget/ListView.java b/core/java/android/widget/ListView.java index 4d5032ea3129..7e30f7ba68d2 100644 --- a/core/java/android/widget/ListView.java +++ b/core/java/android/widget/ListView.java @@ -1393,6 +1393,11 @@ public class ListView extends AbsListView { resetList(); invokeOnItemScrollListener(); return; + } else if (mItemCount != mAdapter.getCount()) { + throw new IllegalStateException("The content of the adapter has changed but " + + "ListView did not receive a notification. Make sure the content of " + + "your adapter is not modified from a background thread, but only " + + "from the UI thread."); } setSelectedPositionInt(mNextSelectedPosition); -- cgit v1.2.3-59-g8ed1b From fd92c5743975663d2082177b88a3c3a1edaea442 Mon Sep 17 00:00:00 2001 From: Yu Shan Emily Lau <> Date: Tue, 24 Mar 2009 21:31:10 -0700 Subject: Automated import from //branches/donutburger/...@142149,142149 --- .../mediaframeworktest/unit/MediaMetadataRetrieverTest.java | 13 ++++++------- .../unit/MediaRecorderPrepareStateUnitTest.java | 4 ++-- .../unit/MediaRecorderResetStateUnitTest.java | 4 ++-- .../unit/MediaRecorderSetAudioEncoderStateUnitTest.java | 4 ++-- .../unit/MediaRecorderSetAudioSourceStateUnitTest.java | 4 ++-- .../unit/MediaRecorderSetOutputFileStateUnitTest.java | 4 ++-- .../unit/MediaRecorderSetOutputFormatStateUnitTest.java | 4 ++-- .../unit/MediaRecorderStartStateUnitTest.java | 4 ++-- .../unit/MediaRecorderStopStateUnitTest.java | 4 ++-- 9 files changed, 22 insertions(+), 23 deletions(-) diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/MediaMetadataRetrieverTest.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/MediaMetadataRetrieverTest.java index 4fa673509fbb..61a8a296d318 100644 --- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/MediaMetadataRetrieverTest.java +++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/MediaMetadataRetrieverTest.java @@ -22,8 +22,7 @@ import android.graphics.Bitmap; import java.io.FileOutputStream; import android.test.AndroidTestCase; import com.android.mediaframeworktest.MediaNames; -import android.test.suitebuilder.annotation.LargeTest; -import android.test.suitebuilder.annotation.Suppress; +import android.test.suitebuilder.annotation.*; /** * WARNING: @@ -35,7 +34,7 @@ public class MediaMetadataRetrieverTest extends AndroidTestCase { private static final String TAG = "MediaMetadataRetrieverTest"; // Test album art extraction. - @LargeTest + @MediumTest public static void testAlbumArt() throws Exception { Log.v(TAG, "testAlbumArt starts."); MediaMetadataRetriever retriever = new MediaMetadataRetriever(); @@ -109,7 +108,7 @@ public class MediaMetadataRetrieverTest extends AndroidTestCase { // If the specified call order and valid media file is used, no exception // should be thrown. - @LargeTest + @MediumTest public static void testBasicNormalMethodCallSequence() throws Exception { MediaMetadataRetriever retriever = new MediaMetadataRetriever(); retriever.setMode(MediaMetadataRetriever.MODE_GET_METADATA_ONLY); @@ -136,7 +135,7 @@ public class MediaMetadataRetrieverTest extends AndroidTestCase { // If setDataSource() has not been called, both captureFrame() and extractMetadata() must // return null. - @LargeTest + @MediumTest public static void testBasicAbnormalMethodCallSequence() { MediaMetadataRetriever retriever = new MediaMetadataRetriever(); retriever.setMode(MediaMetadataRetriever.MODE_GET_METADATA_ONLY); @@ -145,7 +144,7 @@ public class MediaMetadataRetrieverTest extends AndroidTestCase { } // Test setDataSource() - @LargeTest + @MediumTest public static void testSetDataSource() { MediaMetadataRetriever retriever = new MediaMetadataRetriever(); retriever.setMode(MediaMetadataRetriever.MODE_GET_METADATA_ONLY); @@ -190,7 +189,7 @@ public class MediaMetadataRetrieverTest extends AndroidTestCase { // Due to the lack of permission to access hardware decoder, any calls // attempting to capture a frame will fail. These are commented out for now // until we find a solution to this access permission problem. - @LargeTest + @MediumTest public static void testIntendedUsage() { // By default, capture frame and retrieve metadata MediaMetadataRetriever retriever = new MediaMetadataRetriever(); diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/MediaRecorderPrepareStateUnitTest.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/MediaRecorderPrepareStateUnitTest.java index bde000bac6a1..134144d005b9 100644 --- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/MediaRecorderPrepareStateUnitTest.java +++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/MediaRecorderPrepareStateUnitTest.java @@ -18,7 +18,7 @@ package com.android.mediaframeworktest.unit; import android.media.MediaRecorder; import android.test.AndroidTestCase; -import android.test.suitebuilder.annotation.LargeTest; +import android.test.suitebuilder.annotation.MediumTest; import android.test.suitebuilder.annotation.Suppress; import java.io.IOException; @@ -59,7 +59,7 @@ public class MediaRecorderPrepareStateUnitTest extends AndroidTestCase implement } } - @LargeTest + @MediumTest public void testPrepare() { mTestTemplate.runTestOnMethod(this); } diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/MediaRecorderResetStateUnitTest.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/MediaRecorderResetStateUnitTest.java index 80532c35184f..cae9e31c3cad 100644 --- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/MediaRecorderResetStateUnitTest.java +++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/MediaRecorderResetStateUnitTest.java @@ -18,7 +18,7 @@ package com.android.mediaframeworktest.unit; import android.media.MediaRecorder; import android.test.AndroidTestCase; -import android.test.suitebuilder.annotation.LargeTest; +import android.test.suitebuilder.annotation.MediumTest; import android.test.suitebuilder.annotation.Suppress; /** @@ -54,7 +54,7 @@ public class MediaRecorderResetStateUnitTest extends AndroidTestCase implements recorder.reset(); } - @LargeTest + @MediumTest public void testReset() { mTestTemplate.runTestOnMethod(this); } diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/MediaRecorderSetAudioEncoderStateUnitTest.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/MediaRecorderSetAudioEncoderStateUnitTest.java index e387a77fd71c..4b5a8183087b 100644 --- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/MediaRecorderSetAudioEncoderStateUnitTest.java +++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/MediaRecorderSetAudioEncoderStateUnitTest.java @@ -18,7 +18,7 @@ package com.android.mediaframeworktest.unit; import android.media.MediaRecorder; import android.test.AndroidTestCase; -import android.test.suitebuilder.annotation.LargeTest; +import android.test.suitebuilder.annotation.MediumTest; import android.test.suitebuilder.annotation.Suppress; /** @@ -54,7 +54,7 @@ public class MediaRecorderSetAudioEncoderStateUnitTest extends AndroidTestCase i recorder.setAudioEncoder(MediaRecorderStateUnitTestTemplate.AUDIO_ENCODER); } - @LargeTest + @MediumTest public void testSetAudioEncoder() { mTestTemplate.runTestOnMethod(this); } diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/MediaRecorderSetAudioSourceStateUnitTest.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/MediaRecorderSetAudioSourceStateUnitTest.java index 60af54c53af8..f8ab48cf178e 100644 --- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/MediaRecorderSetAudioSourceStateUnitTest.java +++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/MediaRecorderSetAudioSourceStateUnitTest.java @@ -18,7 +18,7 @@ package com.android.mediaframeworktest.unit; import android.media.MediaRecorder; import android.test.AndroidTestCase; -import android.test.suitebuilder.annotation.LargeTest; +import android.test.suitebuilder.annotation.MediumTest; import android.test.suitebuilder.annotation.Suppress; /** @@ -54,7 +54,7 @@ public class MediaRecorderSetAudioSourceStateUnitTest extends AndroidTestCase im recorder.setAudioSource(MediaRecorderStateUnitTestTemplate.AUDIO_SOURCE); } - @LargeTest + @MediumTest public void testSetAudioSource() { mTestTemplate.runTestOnMethod(this); } diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/MediaRecorderSetOutputFileStateUnitTest.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/MediaRecorderSetOutputFileStateUnitTest.java index 37d97e9d2c2e..712a7586f53f 100644 --- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/MediaRecorderSetOutputFileStateUnitTest.java +++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/MediaRecorderSetOutputFileStateUnitTest.java @@ -18,7 +18,7 @@ package com.android.mediaframeworktest.unit; import android.media.MediaRecorder; import android.test.AndroidTestCase; -import android.test.suitebuilder.annotation.LargeTest; +import android.test.suitebuilder.annotation.MediumTest; import android.test.suitebuilder.annotation.Suppress; /** @@ -51,7 +51,7 @@ public class MediaRecorderSetOutputFileStateUnitTest extends AndroidTestCase imp recorder.setOutputFile(MediaRecorderStateUnitTestTemplate.RECORD_OUTPUT_PATH); } - @LargeTest + @MediumTest public void testSetOutputFile() { mTestTemplate.runTestOnMethod(this); } diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/MediaRecorderSetOutputFormatStateUnitTest.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/MediaRecorderSetOutputFormatStateUnitTest.java index a7ee2d4473a6..cacdd87557c0 100644 --- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/MediaRecorderSetOutputFormatStateUnitTest.java +++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/MediaRecorderSetOutputFormatStateUnitTest.java @@ -18,7 +18,7 @@ package com.android.mediaframeworktest.unit; import android.media.MediaRecorder; import android.test.AndroidTestCase; -import android.test.suitebuilder.annotation.LargeTest; +import android.test.suitebuilder.annotation.MediumTest; import android.test.suitebuilder.annotation.Suppress; /** @@ -54,7 +54,7 @@ public class MediaRecorderSetOutputFormatStateUnitTest extends AndroidTestCase i recorder.setOutputFormat(MediaRecorderStateUnitTestTemplate.OUTPUT_FORMAT); } - @LargeTest + @MediumTest public void testSetOutputFormat() { mTestTemplate.runTestOnMethod(this); } diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/MediaRecorderStartStateUnitTest.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/MediaRecorderStartStateUnitTest.java index 4af596756a82..d1232fcfba40 100644 --- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/MediaRecorderStartStateUnitTest.java +++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/MediaRecorderStartStateUnitTest.java @@ -18,7 +18,7 @@ package com.android.mediaframeworktest.unit; import android.media.MediaRecorder; import android.test.AndroidTestCase; -import android.test.suitebuilder.annotation.LargeTest; +import android.test.suitebuilder.annotation.MediumTest; import android.test.suitebuilder.annotation.Suppress; /** @@ -54,7 +54,7 @@ public class MediaRecorderStartStateUnitTest extends AndroidTestCase implements recorder.start(); } - @LargeTest + @MediumTest public void testStart() { mTestTemplate.runTestOnMethod(this); } diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/MediaRecorderStopStateUnitTest.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/MediaRecorderStopStateUnitTest.java index 5475900e341e..873759540684 100644 --- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/MediaRecorderStopStateUnitTest.java +++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/unit/MediaRecorderStopStateUnitTest.java @@ -18,7 +18,7 @@ package com.android.mediaframeworktest.unit; import android.media.MediaRecorder; import android.test.AndroidTestCase; -import android.test.suitebuilder.annotation.LargeTest; +import android.test.suitebuilder.annotation.MediumTest; import android.test.suitebuilder.annotation.Suppress; /** @@ -54,7 +54,7 @@ public class MediaRecorderStopStateUnitTest extends AndroidTestCase implements M recorder.stop(); } - @LargeTest + @MediumTest public void testStop() { mTestTemplate.runTestOnMethod(this); } -- cgit v1.2.3-59-g8ed1b From 7379823e59e3769a9c547fe253def34bbffcaf38 Mon Sep 17 00:00:00 2001 From: Ed Heyl <> Date: Tue, 24 Mar 2009 21:32:21 -0700 Subject: Automated import from //branches/donutburger/...@142239,142239 --- services/java/com/android/server/am/ActivityManagerService.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java index a7dac6164bba..d676c00b952e 100644 --- a/services/java/com/android/server/am/ActivityManagerService.java +++ b/services/java/com/android/server/am/ActivityManagerService.java @@ -5992,7 +5992,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen final boolean clearWhenTaskReset = (target.intent.getFlags() &Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET) != 0; - if (!finishOnTaskLaunch && target.resultTo != null) { + if (!finishOnTaskLaunch && !clearWhenTaskReset && target.resultTo != null) { // If this activity is sending a reply to a previous // activity, we can't do anything with it now until // we reach the start of the reply chain. @@ -6002,7 +6002,7 @@ public final class ActivityManagerService extends ActivityManagerNative implemen if (replyChainEnd < 0) { replyChainEnd = targetI; } - } else if (!finishOnTaskLaunch && allowTaskReparenting + } else if (!finishOnTaskLaunch && !clearWhenTaskReset && allowTaskReparenting && target.taskAffinity != null && !target.taskAffinity.equals(task.affinity)) { // If this activity has an affinity for another -- cgit v1.2.3-59-g8ed1b From 543d69d0eabfea24502b74215abea880f443afcb Mon Sep 17 00:00:00 2001 From: Suchi Amalapurapu <> Date: Tue, 24 Mar 2009 22:24:47 -0700 Subject: Automated import from //branches/donutburger/...@142291,142291 --- .../android/view/WindowOrientationListener.java | 43 ++++++++++++++-------- 1 file changed, 28 insertions(+), 15 deletions(-) diff --git a/core/java/android/view/WindowOrientationListener.java b/core/java/android/view/WindowOrientationListener.java index f1f5f707285d..1b7cf8f4a099 100755 --- a/core/java/android/view/WindowOrientationListener.java +++ b/core/java/android/view/WindowOrientationListener.java @@ -106,7 +106,7 @@ public abstract class WindowOrientationListener { private static final int _DATA_Z = 2; // Angle around x-axis thats considered almost perfect vertical to hold // the device - private static final int PIVOT = 30; + private static final int PIVOT = 20; // Angle around x-asis that's considered almost too vertical. Beyond // this angle will not result in any orientation changes. f phone faces uses, // the device is leaning backward. @@ -114,22 +114,26 @@ public abstract class WindowOrientationListener { // Angle about x-axis that's considered negative vertical. Beyond this // angle will not result in any orientation changes. If phone faces uses, // the device is leaning forward. - private static final int PIVOT_LOWER = 0; + private static final int PIVOT_LOWER = -10; // Upper threshold limit for switching from portrait to landscape - private static final int PL_UPPER = 280; + private static final int PL_UPPER = 285; // Lower threshold limit for switching from landscape to portrait private static final int LP_LOWER = 320; // Lower threshold limt for switching from portrait to landscape - private static final int PL_LOWER = 240; + private static final int PL_LOWER = 265; // Upper threshold limit for switching from landscape to portrait - private static final int LP_UPPER = 360; + private static final int LP_UPPER = 355; // Internal value used for calculating linear variant - private static final float PL_LINEAR_FACTOR = - ((float)(PL_UPPER-PL_LOWER))/((float)(PIVOT_UPPER-PIVOT_LOWER)); + private static final float PL_LF_UPPER = + ((float)(PL_UPPER-PL_LOWER))/((float)(PIVOT_UPPER-PIVOT)); + private static final float PL_LF_LOWER = + ((float)(PL_UPPER-PL_LOWER))/((float)(PIVOT-PIVOT_LOWER)); // Internal value used for calculating linear variant - private static final float LP_LINEAR_FACTOR = - ((float)(LP_UPPER - LP_LOWER))/((float)(PIVOT_UPPER-PIVOT_LOWER)); + private static final float LP_LF_UPPER = + ((float)(LP_UPPER - LP_LOWER))/((float)(PIVOT_UPPER-PIVOT)); + private static final float LP_LF_LOWER = + ((float)(LP_UPPER - LP_LOWER))/((float)(PIVOT-PIVOT_LOWER)); public void onSensorChanged(SensorEvent event) { float[] values = event.values; @@ -138,7 +142,7 @@ public abstract class WindowOrientationListener { float Z = values[_DATA_Z]; float OneEightyOverPi = 57.29577957855f; float gravity = (float) Math.sqrt(X*X+Y*Y+Z*Z); - float zyangle = Math.abs((float)Math.asin(Z/gravity)*OneEightyOverPi); + float zyangle = (float)Math.asin(Z/gravity)*OneEightyOverPi; int rotation = mSensorRotation; if ((zyangle <= PIVOT_UPPER) && (zyangle >= PIVOT_LOWER)) { // Check orientation only if the phone is flat enough @@ -152,20 +156,29 @@ public abstract class WindowOrientationListener { while (orientation < 0) { orientation += 360; } - - float delta = (float)Math.abs(zyangle - PIVOT); + float delta = zyangle - PIVOT; if (((orientation >= 0) && (orientation <= LP_UPPER)) || (orientation >= PL_LOWER)) { float threshold; if (mSensorRotation == Surface.ROTATION_90) { - threshold = LP_LOWER + (LP_LINEAR_FACTOR * delta) ; + if (delta < 0) { + // delta is negative + threshold = LP_LOWER - (LP_LF_LOWER * delta); + //threshold = LP_LOWER + (LP_LF_LOWER * delta); + } else { + threshold = LP_LOWER + (LP_LF_UPPER * delta); + } } else { - threshold = PL_UPPER - (PL_LINEAR_FACTOR * delta); + if (delta < 0) { + //delta is negative + threshold = PL_UPPER+(PL_LF_LOWER * delta); + } else { + threshold = PL_UPPER-(PL_LF_UPPER * delta); + } } rotation = (orientation >= PL_LOWER && orientation <= threshold) ? Surface.ROTATION_90 : Surface.ROTATION_0; } - } if (rotation != mSensorRotation) { mSensorRotation = rotation; -- cgit v1.2.3-59-g8ed1b From 592d0650d5bfc673082c4e58ac8ba2dc3103c842 Mon Sep 17 00:00:00 2001 From: Joe Onorato <> Date: Tue, 24 Mar 2009 22:25:52 -0700 Subject: Automated import from //branches/donutburger/...@142301,142301 --- core/java/android/widget/RemoteViews.java | 87 +++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) diff --git a/core/java/android/widget/RemoteViews.java b/core/java/android/widget/RemoteViews.java index e000d2e22781..7936f6535d9f 100644 --- a/core/java/android/widget/RemoteViews.java +++ b/core/java/android/widget/RemoteViews.java @@ -669,50 +669,137 @@ public class RemoteViews implements Parcelable, Filter { setInt(viewId, "setTextColor", color); } + /** + * Call a method taking one boolean on a view in the layout for this RemoteViews. + * + * @param viewId The id of the view whose text should change + * @param methodName The name of the method to call. + * @param value The value to pass to the method. + */ public void setBoolean(int viewId, String methodName, boolean value) { addAction(new ReflectionAction(viewId, methodName, ReflectionAction.BOOLEAN, value)); } + /** + * Call a method taking one byte on a view in the layout for this RemoteViews. + * + * @param viewId The id of the view whose text should change + * @param methodName The name of the method to call. + * @param value The value to pass to the method. + */ public void setByte(int viewId, String methodName, byte value) { addAction(new ReflectionAction(viewId, methodName, ReflectionAction.BYTE, value)); } + /** + * Call a method taking one short on a view in the layout for this RemoteViews. + * + * @param viewId The id of the view whose text should change + * @param methodName The name of the method to call. + * @param value The value to pass to the method. + */ public void setShort(int viewId, String methodName, short value) { addAction(new ReflectionAction(viewId, methodName, ReflectionAction.SHORT, value)); } + /** + * Call a method taking one int on a view in the layout for this RemoteViews. + * + * @param viewId The id of the view whose text should change + * @param methodName The name of the method to call. + * @param value The value to pass to the method. + */ public void setInt(int viewId, String methodName, int value) { addAction(new ReflectionAction(viewId, methodName, ReflectionAction.INT, value)); } + /** + * Call a method taking one long on a view in the layout for this RemoteViews. + * + * @param viewId The id of the view whose text should change + * @param methodName The name of the method to call. + * @param value The value to pass to the method. + */ public void setLong(int viewId, String methodName, long value) { addAction(new ReflectionAction(viewId, methodName, ReflectionAction.LONG, value)); } + /** + * Call a method taking one float on a view in the layout for this RemoteViews. + * + * @param viewId The id of the view whose text should change + * @param methodName The name of the method to call. + * @param value The value to pass to the method. + */ public void setFloat(int viewId, String methodName, float value) { addAction(new ReflectionAction(viewId, methodName, ReflectionAction.FLOAT, value)); } + /** + * Call a method taking one double on a view in the layout for this RemoteViews. + * + * @param viewId The id of the view whose text should change + * @param methodName The name of the method to call. + * @param value The value to pass to the method. + */ public void setDouble(int viewId, String methodName, double value) { addAction(new ReflectionAction(viewId, methodName, ReflectionAction.DOUBLE, value)); } + /** + * Call a method taking one char on a view in the layout for this RemoteViews. + * + * @param viewId The id of the view whose text should change + * @param methodName The name of the method to call. + * @param value The value to pass to the method. + */ public void setChar(int viewId, String methodName, char value) { addAction(new ReflectionAction(viewId, methodName, ReflectionAction.CHAR, value)); } + /** + * Call a method taking one String on a view in the layout for this RemoteViews. + * + * @param viewId The id of the view whose text should change + * @param methodName The name of the method to call. + * @param value The value to pass to the method. + */ public void setString(int viewId, String methodName, String value) { addAction(new ReflectionAction(viewId, methodName, ReflectionAction.STRING, value)); } + /** + * Call a method taking one CharSequence on a view in the layout for this RemoteViews. + * + * @param viewId The id of the view whose text should change + * @param methodName The name of the method to call. + * @param value The value to pass to the method. + */ public void setCharSequence(int viewId, String methodName, CharSequence value) { addAction(new ReflectionAction(viewId, methodName, ReflectionAction.CHAR_SEQUENCE, value)); } + /** + * Call a method taking one Uri on a view in the layout for this RemoteViews. + * + * @param viewId The id of the view whose text should change + * @param methodName The name of the method to call. + * @param value The value to pass to the method. + */ public void setUri(int viewId, String methodName, Uri value) { addAction(new ReflectionAction(viewId, methodName, ReflectionAction.URI, value)); } + /** + * Call a method taking one Bitmap on a view in the layout for this RemoteViews. + * @more + *

    The bitmap will be flattened into the parcel if this object is + * sent across processes, so it may end up using a lot of memory, and may be fairly slow.

    + * + * @param viewId The id of the view whose text should change + * @param methodName The name of the method to call. + * @param value The value to pass to the method. + */ public void setBitmap(int viewId, String methodName, Bitmap value) { addAction(new ReflectionAction(viewId, methodName, ReflectionAction.BITMAP, value)); } -- cgit v1.2.3-59-g8ed1b From 079c6f64f998c62028290d9ef4c8b88ef0f7563c Mon Sep 17 00:00:00 2001 From: Cedric Beust <> Date: Tue, 24 Mar 2009 22:28:03 -0700 Subject: Automated import from //branches/donutburger/...@142318,142318 --- core/java/android/provider/Settings.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index b0ee479fcddb..68eeccd259e2 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -2313,6 +2313,11 @@ public final class Settings { */ public static final String GMAIL_DISALLOW_IMAGE_PREVIEWS = "gmail_disallow_image_previews"; + /** + * The maximal size in bytes allowed for attachments when composing messages in Gmail + */ + public static final String GMAIL_MAX_ATTACHMENT_SIZE = "gmail_max_attachment_size_bytes"; + /** * The timeout in milliseconds that Gmail uses when opening a connection and reading * from it. A missing value or a value of -1 instructs Gmail to use the defaults provided -- cgit v1.2.3-59-g8ed1b From 1d4613c1ec6ddf8aec3f723a7cab4253d19f9e66 Mon Sep 17 00:00:00 2001 From: John Huang <> Date: Tue, 24 Mar 2009 22:31:33 -0700 Subject: Automated import from //branches/donutburger/...@142336,142336 --- .../java/com/android/internal/telephony/gsm/DataConnectionTracker.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/telephony/java/com/android/internal/telephony/gsm/DataConnectionTracker.java b/telephony/java/com/android/internal/telephony/gsm/DataConnectionTracker.java index 999a508d8a84..02a684146adb 100644 --- a/telephony/java/com/android/internal/telephony/gsm/DataConnectionTracker.java +++ b/telephony/java/com/android/internal/telephony/gsm/DataConnectionTracker.java @@ -1693,6 +1693,7 @@ final class DataConnectionTracker extends Handler if (allApns.isEmpty()) { if (DBG) log("No APN found for carrier: " + operator); + preferredApn = null; notifyNoData(PdpConnection.PdpFailCause.BAD_APN); } else { preferredApn = getPreferredApn(); @@ -1819,7 +1820,7 @@ final class DataConnectionTracker extends Handler cursor.moveToFirst(); pos = cursor.getInt(cursor.getColumnIndexOrThrow(Telephony.Carriers._ID)); for(ApnSetting p:allApns) { - if (p.id == pos) { + if (p.id == pos && p.canHandleType(mRequestedApnType)) { cursor.close(); return p; } -- cgit v1.2.3-59-g8ed1b From 627bba736d022c39696b7c582a6af5592d2b8c33 Mon Sep 17 00:00:00 2001 From: Dianne Hackborn <> Date: Tue, 24 Mar 2009 22:32:56 -0700 Subject: Automated import from //branches/donutburger/...@142347,142347 --- core/java/android/os/BatteryStats.java | 115 ++++++++++++++++-- .../com/android/internal/app/IBatteryStats.aidl | 2 + .../com/android/internal/os/BatteryStatsImpl.java | 133 ++++++++++++++++++--- .../java/com/android/server/TelephonyRegistry.java | 11 ++ .../com/android/server/am/BatteryStatsService.java | 15 +++ .../com/android/server/status/StatusBarPolicy.java | 24 +++- 6 files changed, 270 insertions(+), 30 deletions(-) diff --git a/core/java/android/os/BatteryStats.java b/core/java/android/os/BatteryStats.java index d492b6ae2c69..c72b8286dbfd 100644 --- a/core/java/android/os/BatteryStats.java +++ b/core/java/android/os/BatteryStats.java @@ -4,8 +4,6 @@ import java.io.PrintWriter; import java.util.Formatter; import java.util.Map; -import com.android.internal.os.BatteryStatsImpl.Timer; - import android.util.Log; import android.util.Printer; import android.util.SparseArray; @@ -92,6 +90,8 @@ public abstract class BatteryStats implements Parcelable { private static final String BATTERY_DATA = "battery"; private static final String WIFI_LOCK_DATA = "wifilock"; private static final String MISC_DATA = "misc"; + private static final String SIGNAL_STRENGTH_DATA = "signal"; + private static final String DATA_CONNECTION_DATA = "dataconn"; private final StringBuilder mFormatBuilder = new StringBuilder(8); private final Formatter mFormatter = new Formatter(mFormatBuilder); @@ -122,7 +122,7 @@ public abstract class BatteryStats implements Parcelable { /** * Temporary for debugging. */ - public abstract void logState(); + public abstract void logState(Printer pw, String prefix); } /** @@ -293,6 +293,48 @@ public abstract class BatteryStats implements Parcelable { */ public abstract long getPhoneOnTime(long batteryRealtime, int which); + public static final int SIGNAL_STRENGTH_NONE_OR_UNKNOWN = 0; + public static final int SIGNAL_STRENGTH_POOR = 1; + public static final int SIGNAL_STRENGTH_MODERATE = 2; + public static final int SIGNAL_STRENGTH_GOOD = 3; + public static final int SIGNAL_STRENGTH_GREAT = 4; + + static final String[] SIGNAL_STRENGTH_NAMES = { + "none", "poor", "moderate", "good", "great" + }; + + public static final int NUM_SIGNAL_STRENGTH_BINS = 5; + + /** + * Returns the time in milliseconds that the phone has been running with + * the given signal strength. + * + * {@hide} + */ + public abstract long getPhoneSignalStrengthTime(int strengthBin, + long batteryRealtime, int which); + + public static final int DATA_CONNECTION_NONE = 0; + public static final int DATA_CONNECTION_GPRS = 1; + public static final int DATA_CONNECTION_EDGE = 2; + public static final int DATA_CONNECTION_UMTS = 3; + public static final int DATA_CONNECTION_OTHER = 4; + + static final String[] DATA_CONNECTION_NAMES = { + "none", "gprs", "edge", "umts", "other" + }; + + public static final int NUM_DATA_CONNECTION_TYPES = 5; + + /** + * Returns the time in milliseconds that the phone has been running with + * the given data connection. + * + * {@hide} + */ + public abstract long getPhoneDataConnectionTime(int dataType, + long batteryRealtime, int which); + /** * Returns the time in milliseconds that wifi has been on while the device was * running on battery. @@ -561,6 +603,20 @@ public abstract class BatteryStats implements Parcelable { screenOnTime / 1000, phoneOnTime / 1000, wifiOnTime / 1000, wifiRunningTime / 1000, bluetoothOnTime / 1000); + // Dump signal strength stats + Object[] args = new Object[NUM_SIGNAL_STRENGTH_BINS]; + for (int i=0; i Date: Tue, 24 Mar 2009 22:35:57 -0700 Subject: Automated import from //branches/donutburger/...@142372,142372 --- core/jni/android_media_AudioTrack.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/core/jni/android_media_AudioTrack.cpp b/core/jni/android_media_AudioTrack.cpp index f625ffbffc4b..b8d6586d4db2 100644 --- a/core/jni/android_media_AudioTrack.cpp +++ b/core/jni/android_media_AudioTrack.cpp @@ -744,6 +744,7 @@ static jint android_media_AudioTrack_get_min_buff_size(JNIEnv *env, jobject thi // Ensure that buffer depth covers at least audio hardware latency uint32_t minBufCount = afLatency / ((1000 * afFrameCount)/afSamplingRate); + if (minBufCount < 2) minBufCount = 2; uint32_t minFrameCount = (afFrameCount*sampleRateInHertz*minBufCount)/afSamplingRate; int minBuffSize = minFrameCount * (audioFormat == javaAudioTrackFields.PCM16 ? 2 : 1) -- cgit v1.2.3-59-g8ed1b From 3d78f9ab080c582443d1b78d933c899b52588fb2 Mon Sep 17 00:00:00 2001 From: Jean-Michel Trivi <> Date: Tue, 24 Mar 2009 22:36:44 -0700 Subject: Automated import from //branches/donutburger/...@142376,142376 --- media/java/android/media/JetPlayer.java | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/media/java/android/media/JetPlayer.java b/media/java/android/media/JetPlayer.java index 6539d8467d7b..c9efac5cdb19 100644 --- a/media/java/android/media/JetPlayer.java +++ b/media/java/android/media/JetPlayer.java @@ -63,6 +63,12 @@ public class JetPlayer private static final int JET_EVENT_CHAN_SHIFT = 14; // shift to get MIDI channel to bit 0 private static final int JET_EVENT_TRACK_SHIFT = 18; // shift to get track ID to bit 0 private static final int JET_EVENT_SEG_SHIFT = 24; // shift to get segment ID to bit 0 + + // to keep in sync with values used in external/sonivox/arm-wt-22k/Android.mk + // Jet rendering audio parameters + private static final int JET_OUTPUT_RATE = 22050; // _SAMPLE_RATE_22050 in Android.mk + private static final int JET_OUTPUT_CHANNEL_CONFIG = + AudioFormat.CHANNEL_CONFIGURATION_STEREO; // NUM_OUTPUT_CHANNELS=2 in Android.mk //-------------------------------------------- @@ -102,8 +108,9 @@ public class JetPlayer // Constructor, finalize //------------------------ public static JetPlayer getJetPlayer() { - if (singletonRef == null) + if (singletonRef == null) { singletonRef = new JetPlayer(); + } return singletonRef; } @@ -121,10 +128,19 @@ public class JetPlayer if ((mInitializationLooper = Looper.myLooper()) == null) { mInitializationLooper = Looper.getMainLooper(); } - - native_setup(new WeakReference(this), - JetPlayer.getMaxTracks(), - 1200); //TODO parametrize this (?) + + int buffSizeInBytes = AudioTrack.getMinBufferSize(JET_OUTPUT_RATE, + JET_OUTPUT_CHANNEL_CONFIG, AudioFormat.ENCODING_PCM_16BIT); + + if ((buffSizeInBytes != AudioTrack.ERROR) + && (buffSizeInBytes != AudioTrack.ERROR_BAD_VALUE)) { + + native_setup(new WeakReference(this), + JetPlayer.getMaxTracks(), + // bytes to frame conversion: sample format is ENCODING_PCM_16BIT, 2 channels + // 1200 == minimum buffer size in frames on generation 1 hardware + Math.max(1200, buffSizeInBytes / 4)); + } } -- cgit v1.2.3-59-g8ed1b From c485a60a32342ff4e5db5c707f28a0816b4c2ff4 Mon Sep 17 00:00:00 2001 From: Dianne Hackborn <> Date: Tue, 24 Mar 2009 22:39:49 -0700 Subject: Automated import from //branches/donutburger/...@142397,142397 --- .../com/android/server/WindowManagerService.java | 82 +++++++++++++--------- 1 file changed, 49 insertions(+), 33 deletions(-) diff --git a/services/java/com/android/server/WindowManagerService.java b/services/java/com/android/server/WindowManagerService.java index 18fd74f0d0b0..56f8bc15d92f 100644 --- a/services/java/com/android/server/WindowManagerService.java +++ b/services/java/com/android/server/WindowManagerService.java @@ -390,6 +390,8 @@ public class WindowManagerService extends IWindowManager.Stub implements Watchdo final Rect mTempRect = new Rect(); + final Configuration mTempConfiguration = new Configuration(); + public static WindowManagerService main(Context context, PowerManagerService pm, boolean haveInputMethods) { WMThread thr = new WMThread(context, pm, haveInputMethods); @@ -2174,16 +2176,19 @@ public class WindowManagerService extends IWindowManager.Stub implements Watchdo ActivityInfo.CONFIG_ORIENTATION); } } - return computeNewConfiguration(); + return computeNewConfigurationLocked(); } } // No obvious action we need to take, but if our current // state mismatches the activity maanager's, update it if (appConfig != null) { - Configuration wmConfig = computeNewConfiguration(); - if (wmConfig.diff(appConfig) != 0) { - return wmConfig; + mTempConfiguration.setToDefaults(); + if (computeNewConfigurationLocked(mTempConfiguration)) { + if (appConfig.diff(mTempConfiguration) != 0) { + Log.i(TAG, "Config changed: " + mTempConfiguration); + return new Configuration(mTempConfiguration); + } } } } finally { @@ -3628,38 +3633,49 @@ public class WindowManagerService extends IWindowManager.Stub implements Watchdo public Configuration computeNewConfiguration() { synchronized (mWindowMap) { - if (mDisplay == null) { - return null; - } - Configuration config = new Configuration(); - mQueue.getInputConfiguration(config); - final int dw = mDisplay.getWidth(); - final int dh = mDisplay.getHeight(); - int orientation = Configuration.ORIENTATION_SQUARE; - if (dw < dh) { - orientation = Configuration.ORIENTATION_PORTRAIT; - } else if (dw > dh) { - orientation = Configuration.ORIENTATION_LANDSCAPE; - } - config.orientation = orientation; - config.keyboardHidden = Configuration.KEYBOARDHIDDEN_NO; - config.hardKeyboardHidden = Configuration.HARDKEYBOARDHIDDEN_NO; - mPolicy.adjustConfigurationLw(config); - Log.i(TAG, "Input configuration changed: " + config); - long now = SystemClock.uptimeMillis(); - //Log.i(TAG, "Config changing, gc pending: " + mFreezeGcPending + ", now " + now); - if (mFreezeGcPending != 0) { - if (now > (mFreezeGcPending+1000)) { - //Log.i(TAG, "Gc! " + now + " > " + (mFreezeGcPending+1000)); - mH.removeMessages(H.FORCE_GC); - Runtime.getRuntime().gc(); - mFreezeGcPending = now; - } - } else { + return computeNewConfigurationLocked(); + } + } + + Configuration computeNewConfigurationLocked() { + Configuration config = new Configuration(); + if (!computeNewConfigurationLocked(config)) { + return null; + } + Log.i(TAG, "Config changed: " + config); + long now = SystemClock.uptimeMillis(); + //Log.i(TAG, "Config changing, gc pending: " + mFreezeGcPending + ", now " + now); + if (mFreezeGcPending != 0) { + if (now > (mFreezeGcPending+1000)) { + //Log.i(TAG, "Gc! " + now + " > " + (mFreezeGcPending+1000)); + mH.removeMessages(H.FORCE_GC); + Runtime.getRuntime().gc(); mFreezeGcPending = now; } - return config; + } else { + mFreezeGcPending = now; + } + return config; + } + + boolean computeNewConfigurationLocked(Configuration config) { + if (mDisplay == null) { + return false; } + mQueue.getInputConfiguration(config); + final int dw = mDisplay.getWidth(); + final int dh = mDisplay.getHeight(); + int orientation = Configuration.ORIENTATION_SQUARE; + if (dw < dh) { + orientation = Configuration.ORIENTATION_PORTRAIT; + } else if (dw > dh) { + orientation = Configuration.ORIENTATION_LANDSCAPE; + } + config.orientation = orientation; + config.keyboardHidden = Configuration.KEYBOARDHIDDEN_NO; + config.hardKeyboardHidden = Configuration.HARDKEYBOARDHIDDEN_NO; + mPolicy.adjustConfigurationLw(config); + return true; } // ------------------------------------------------------------- -- cgit v1.2.3-59-g8ed1b From 00f5eca412248a32325442c982f97303dacae94b Mon Sep 17 00:00:00 2001 From: Mathias Agopian <> Date: Tue, 24 Mar 2009 22:42:15 -0700 Subject: Automated import from //branches/donutburger/...@142430,142430 --- libs/surfaceflinger/BootAnimation.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/libs/surfaceflinger/BootAnimation.cpp b/libs/surfaceflinger/BootAnimation.cpp index 03edbf380f94..db403857323a 100644 --- a/libs/surfaceflinger/BootAnimation.cpp +++ b/libs/surfaceflinger/BootAnimation.cpp @@ -164,9 +164,7 @@ status_t BootAnimation::readyToRun() { // initialize GL glShadeModel(GL_FLAT); - glEnable(GL_DITHER); glEnable(GL_TEXTURE_2D); - glEnable(GL_SCISSOR_TEST); glTexEnvx(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); return NO_ERROR; @@ -196,8 +194,6 @@ bool BootAnimation::android() { glClear(GL_COLOR_BUFFER_BIT); eglSwapBuffers(mDisplay, mSurface); - // wait ~1s - const GLint xc = (mWidth - mAndroid[0].w) / 2; const GLint yc = (mHeight - mAndroid[0].h) / 2; const Rect updateRect(xc, yc, xc + mAndroid[0].w, yc + mAndroid[0].h); @@ -216,7 +212,8 @@ bool BootAnimation::android() { const nsecs_t startTime = systemTime(); do { - double time = systemTime() - startTime; + nsecs_t now = systemTime(); + double time = now - startTime; float t = 4.0f * float(time / us2ns(16667)) / mAndroid[1].w; GLint offset = (1 - (t - floorf(t))) * mAndroid[1].w; GLint x = xc - offset; @@ -231,6 +228,11 @@ bool BootAnimation::android() { glDrawTexiOES(xc, yc, 0, mAndroid[0].w, mAndroid[0].h); eglSwapBuffers(mDisplay, mSurface); + + // 12fps: don't animate too fast to preserve CPU + const nsecs_t sleepTime = 83333 - ns2us(systemTime() - now); + if (sleepTime > 0) + usleep(sleepTime); } while (!exitPending()); glDeleteTextures(1, &mAndroid[0].name); -- cgit v1.2.3-59-g8ed1b From 2764f30a74484870de03fa1a2aca0c01f991c711 Mon Sep 17 00:00:00 2001 From: Mathias Agopian <> Date: Tue, 24 Mar 2009 22:43:22 -0700 Subject: Automated import from //branches/donutburger/...@142446,142446 --- libs/surfaceflinger/LayerOrientationAnim.cpp | 187 +++++++++++++++------------ libs/surfaceflinger/LayerOrientationAnim.h | 3 +- libs/surfaceflinger/SurfaceFlinger.cpp | 3 +- libs/surfaceflinger/SurfaceFlinger.h | 2 - libs/surfaceflinger/Transform.cpp | 19 --- libs/surfaceflinger/Transform.h | 4 +- 6 files changed, 105 insertions(+), 113 deletions(-) diff --git a/libs/surfaceflinger/LayerOrientationAnim.cpp b/libs/surfaceflinger/LayerOrientationAnim.cpp index 5fec325b807f..2b72d7ce9487 100644 --- a/libs/surfaceflinger/LayerOrientationAnim.cpp +++ b/libs/surfaceflinger/LayerOrientationAnim.cpp @@ -55,7 +55,6 @@ LayerOrientationAnim::LayerOrientationAnim( mOrientationCompleted = false; mFirstRedraw = false; mLastNormalizedTime = 0; - mLastAngle = 0; mLastScale = 0; mNeedsBlending = false; } @@ -95,6 +94,10 @@ void LayerOrientationAnim::validateVisibility(const Transform&) transparentRegionScreen.clear(); mTransformed = true; mCanUseCopyBit = false; + copybit_device_t* copybit = mFlinger->getBlitEngine(); + if (copybit) { + mCanUseCopyBit = true; + } } void LayerOrientationAnim::onOrientationCompleted() @@ -106,33 +109,35 @@ void LayerOrientationAnim::onOrientationCompleted() mFlinger->invalidateLayerVisibility(this); } -const float ROTATION = M_PI * 0.5f; -const float ROTATION_FACTOR = 1.0f; // 1.0 or 2.0 -const float DURATION = ms2ns(200); -const float BOUNCES_PER_SECOND = 1.618f; -const float BOUNCES_AMPLITUDE = (5.0f/180.f) * M_PI; - void LayerOrientationAnim::onDraw(const Region& clip) const { // Animation... + const float MIN_SCALE = 0.5f; + const float DURATION = ms2ns(200); + const float BOUNCES_PER_SECOND = 1.618f; + const float BOUNCES_AMPLITUDE = 1.0f/32.0f; - // FIXME: works only for portrait framebuffers - const Point size(getPhysicalSize()); - const float TARGET_SCALE = size.x * (1.0f / size.y); - const nsecs_t now = systemTime(); - float angle, scale, alpha; + float scale, alpha; if (mOrientationCompleted) { if (mFirstRedraw) { + mFirstRedraw = false; + // make a copy of what's on screen copybit_image_t image; mBitmapIn.getBitmapSurface(&image); const DisplayHardware& hw(graphicPlane(0).displayHardware()); hw.copyBackToImage(image); + + // and erase the screen for this round + glDisable(GL_BLEND); + glDisable(GL_DITHER); + glDisable(GL_SCISSOR_TEST); + glClearColor(0,0,0,0); + glClear(GL_COLOR_BUFFER_BIT); // FIXME: code below is gross - mFirstRedraw = false; mNeedsBlending = false; LayerOrientationAnim* self(const_cast(this)); mFlinger->invalidateLayerVisibility(self); @@ -143,39 +148,36 @@ void LayerOrientationAnim::onDraw(const Region& clip) const const float normalizedTime = (float(now - mFinishTime) / duration); if (normalizedTime <= 1.0f) { const float squaredTime = normalizedTime*normalizedTime; - angle = (ROTATION*ROTATION_FACTOR - mLastAngle)*squaredTime + mLastAngle; scale = (1.0f - mLastScale)*squaredTime + mLastScale; - alpha = normalizedTime; + alpha = (1.0f - normalizedTime); + alpha *= alpha; + alpha *= alpha; } else { mAnim->onAnimationFinished(); - angle = ROTATION; - alpha = 1.0f; scale = 1.0f; + alpha = 0.0f; } } else { const float normalizedTime = float(now - mStartTime) / DURATION; if (normalizedTime <= 1.0f) { mLastNormalizedTime = normalizedTime; const float squaredTime = normalizedTime*normalizedTime; - angle = ROTATION * squaredTime; - scale = (TARGET_SCALE - 1.0f)*squaredTime + 1.0f; - alpha = 0; + scale = (MIN_SCALE-1.0f)*squaredTime + 1.0f; + alpha = 1.0f; } else { mLastNormalizedTime = 1.0f; const float to_seconds = DURATION / seconds(1); const float phi = BOUNCES_PER_SECOND * - (((normalizedTime - 1.0f) * to_seconds)*M_PI*2); - angle = ROTATION + BOUNCES_AMPLITUDE * sinf(phi); - scale = TARGET_SCALE; - alpha = 0; + (((normalizedTime - 1.0f) * to_seconds)*M_PI*2); + scale = MIN_SCALE + BOUNCES_AMPLITUDE * (1.0f - cosf(phi)); + alpha = 1.0f; } - mLastAngle = angle; mLastScale = scale; } - drawScaled(angle, scale, alpha); + drawScaled(scale, alpha); } -void LayerOrientationAnim::drawScaled(float f, float s, float alpha) const +void LayerOrientationAnim::drawScaled(float f, float alpha) const { copybit_image_t dst; const GraphicPlane& plane(graphicPlane(0)); @@ -185,83 +187,98 @@ void LayerOrientationAnim::drawScaled(float f, float s, float alpha) const // clear screen // TODO: with update on demand, we may be able // to not erase the screen at all during the animation - glDisable(GL_BLEND); - glDisable(GL_DITHER); - glDisable(GL_SCISSOR_TEST); - glClearColor(0,0,0,0); - glClear(GL_COLOR_BUFFER_BIT); + if (!mOrientationCompleted) { + glDisable(GL_BLEND); + glDisable(GL_DITHER); + glDisable(GL_SCISSOR_TEST); + glClearColor(0,0,0,0); + glClear(GL_COLOR_BUFFER_BIT); + } - const int w = dst.w; - const int h = dst.h; + const int w = dst.w*f; + const int h = dst.h*f; + const int xc = uint32_t(dst.w-w)/2; + const int yc = uint32_t(dst.h-h)/2; + const copybit_rect_t drect = { xc, yc, xc+w, yc+h }; copybit_image_t src; mBitmap.getBitmapSurface(&src); const copybit_rect_t srect = { 0, 0, src.w, src.h }; + int err = NO_ERROR; + const int can_use_copybit = canUseCopybit(); + if (can_use_copybit) { + copybit_device_t* copybit = mFlinger->getBlitEngine(); + copybit->set_parameter(copybit, COPYBIT_TRANSFORM, 0); + copybit->set_parameter(copybit, COPYBIT_DITHER, COPYBIT_ENABLE); + + if (alpha < 1.0f) { + copybit_image_t srcIn; + mBitmapIn.getBitmapSurface(&srcIn); + region_iterator it(Region(Rect( drect.l, drect.t, drect.r, drect.b ))); + copybit->set_parameter(copybit, COPYBIT_PLANE_ALPHA, 0xFF); + err = copybit->stretch(copybit, &dst, &srcIn, &drect, &srect, &it); + } - GGLSurface t; - t.version = sizeof(GGLSurface); - t.width = src.w; - t.height = src.h; - t.stride = src.w; - t.vstride= src.h; - t.format = src.format; - t.data = (GGLubyte*)(intptr_t(src.base) + src.offset); - - const int targetOrientation = plane.getOrientation(); - if (!targetOrientation) { - f = -f; - } - - Transform tr; - tr.set(f, w*0.5f, h*0.5f); - tr.scale(s, w*0.5f, h*0.5f); - - // FIXME: we should not access mVertices and mDrawingState like that, - // but since we control the animation, we know it's going to work okay. - // eventually we'd need a more formal way of doing things like this. - LayerOrientationAnim& self(const_cast(*this)); - tr.transform(self.mVertices[0], 0, 0); - tr.transform(self.mVertices[1], 0, src.h); - tr.transform(self.mVertices[2], src.w, src.h); - tr.transform(self.mVertices[3], src.w, 0); - - if (!(mFlags & DisplayHardware::SLOW_CONFIG)) { - // Too slow to do this in software - self.mDrawingState.flags |= ISurfaceComposer::eLayerFilter; + if (!err && alpha > 0.0f) { + region_iterator it(Region(Rect( drect.l, drect.t, drect.r, drect.b ))); + copybit->set_parameter(copybit, COPYBIT_PLANE_ALPHA, int(alpha*255)); + err = copybit->stretch(copybit, &dst, &src, &drect, &srect, &it); + } + LOGE_IF(err != NO_ERROR, "copybit failed (%s)", strerror(err)); } + if (!can_use_copybit || err) { + GGLSurface t; + t.version = sizeof(GGLSurface); + t.width = src.w; + t.height = src.h; + t.stride = src.w; + t.vstride= src.h; + t.format = src.format; + t.data = (GGLubyte*)(intptr_t(src.base) + src.offset); - if (UNLIKELY(mTextureName == -1LU)) { - mTextureName = createTexture(); - GLuint w=0, h=0; - const Region dirty(Rect(t.width, t.height)); - loadTexture(dirty, mTextureName, t, w, h); - } - self.mDrawingState.alpha = 255; //-int(alpha*255); - const Region clip(Rect( srect.l, srect.t, srect.r, srect.b )); - drawWithOpenGL(clip, mTextureName, t); - - if (alpha > 0) { - const float sign = (!targetOrientation) ? 1.0f : -1.0f; - tr.set(f + sign*(M_PI * 0.5f * ROTATION_FACTOR), w*0.5f, h*0.5f); - tr.scale(s, w*0.5f, h*0.5f); + Transform tr; + tr.set(f,0,0,f); + tr.set(xc, yc); + + // FIXME: we should not access mVertices and mDrawingState like that, + // but since we control the animation, we know it's going to work okay. + // eventually we'd need a more formal way of doing things like this. + LayerOrientationAnim& self(const_cast(*this)); tr.transform(self.mVertices[0], 0, 0); tr.transform(self.mVertices[1], 0, src.h); tr.transform(self.mVertices[2], src.w, src.h); tr.transform(self.mVertices[3], src.w, 0); + if (!(mFlags & DisplayHardware::SLOW_CONFIG)) { + // Too slow to do this in software + self.mDrawingState.flags |= ISurfaceComposer::eLayerFilter; + } + + if (alpha < 1.0f) { + copybit_image_t src; + mBitmapIn.getBitmapSurface(&src); + t.data = (GGLubyte*)(intptr_t(src.base) + src.offset); + if (UNLIKELY(mTextureNameIn == -1LU)) { + mTextureNameIn = createTexture(); + GLuint w=0, h=0; + const Region dirty(Rect(t.width, t.height)); + loadTexture(dirty, mTextureNameIn, t, w, h); + } + self.mDrawingState.alpha = 255; + const Region clip(Rect( drect.l, drect.t, drect.r, drect.b )); + drawWithOpenGL(clip, mTextureName, t); + } - copybit_image_t src; - mBitmapIn.getBitmapSurface(&src); t.data = (GGLubyte*)(intptr_t(src.base) + src.offset); - if (UNLIKELY(mTextureNameIn == -1LU)) { - mTextureNameIn = createTexture(); + if (UNLIKELY(mTextureName == -1LU)) { + mTextureName = createTexture(); GLuint w=0, h=0; const Region dirty(Rect(t.width, t.height)); - loadTexture(dirty, mTextureNameIn, t, w, h); + loadTexture(dirty, mTextureName, t, w, h); } self.mDrawingState.alpha = int(alpha*255); - const Region clip(Rect( srect.l, srect.t, srect.r, srect.b )); - drawWithOpenGL(clip, mTextureNameIn, t); + const Region clip(Rect( drect.l, drect.t, drect.r, drect.b )); + drawWithOpenGL(clip, mTextureName, t); } } diff --git a/libs/surfaceflinger/LayerOrientationAnim.h b/libs/surfaceflinger/LayerOrientationAnim.h index b527c7e59519..73676859bc03 100644 --- a/libs/surfaceflinger/LayerOrientationAnim.h +++ b/libs/surfaceflinger/LayerOrientationAnim.h @@ -52,7 +52,7 @@ public: virtual bool needsBlending() const; virtual bool isSecure() const { return false; } private: - void drawScaled(float angle, float scale, float alpha) const; + void drawScaled(float scale, float alpha) const; OrientationAnimation* mAnim; LayerBitmap mBitmap; @@ -62,7 +62,6 @@ private: bool mOrientationCompleted; mutable bool mFirstRedraw; mutable float mLastNormalizedTime; - mutable float mLastAngle; mutable float mLastScale; mutable GLuint mTextureName; mutable GLuint mTextureNameIn; diff --git a/libs/surfaceflinger/SurfaceFlinger.cpp b/libs/surfaceflinger/SurfaceFlinger.cpp index 8499b67ac656..d915a8424b6d 100644 --- a/libs/surfaceflinger/SurfaceFlinger.cpp +++ b/libs/surfaceflinger/SurfaceFlinger.cpp @@ -1804,7 +1804,6 @@ status_t GraphicPlane::setOrientation(int orientation) if (orientation == ISurfaceComposer::eOrientationDefault) { // make sure the default orientation is optimal mOrientationTransform.reset(); - mOrientation = orientation; mGlobalTransform = mTransform; return NO_ERROR; } @@ -1825,7 +1824,7 @@ status_t GraphicPlane::setOrientation(int orientation) GraphicPlane::orientationToTransfrom(orientation, w, h, &mOrientationTransform); } - mOrientation = orientation; + mGlobalTransform = mOrientationTransform * mTransform; return NO_ERROR; } diff --git a/libs/surfaceflinger/SurfaceFlinger.h b/libs/surfaceflinger/SurfaceFlinger.h index 3c10481f90c5..f7d77640ae3c 100644 --- a/libs/surfaceflinger/SurfaceFlinger.h +++ b/libs/surfaceflinger/SurfaceFlinger.h @@ -122,7 +122,6 @@ public: void setDisplayHardware(DisplayHardware *); void setTransform(const Transform& tr); status_t setOrientation(int orientation); - int getOrientation() const { return mOrientation; } const DisplayHardware& displayHardware() const; const Transform& transform() const; @@ -134,7 +133,6 @@ private: Transform mTransform; Transform mOrientationTransform; Transform mGlobalTransform; - int mOrientation; }; // --------------------------------------------------------------------------- diff --git a/libs/surfaceflinger/Transform.cpp b/libs/surfaceflinger/Transform.cpp index e8b0f45f811b..bec7a64036e5 100644 --- a/libs/surfaceflinger/Transform.cpp +++ b/libs/surfaceflinger/Transform.cpp @@ -103,25 +103,6 @@ void Transform::set( float xx, float xy, mType |= 0x80000000; } -void Transform::set(float radian, float x, float y) -{ - float r00 = cosf(radian); float r01 = -sinf(radian); - float r10 = sinf(radian); float r11 = cosf(radian); - mTransform.set(SkMatrix::kMScaleX, SkFloatToScalar(r00)); - mTransform.set(SkMatrix::kMSkewX, SkFloatToScalar(r01)); - mTransform.set(SkMatrix::kMSkewY, SkFloatToScalar(r10)); - mTransform.set(SkMatrix::kMScaleY, SkFloatToScalar(r11)); - mTransform.set(SkMatrix::kMTransX, SkIntToScalar(x - r00*x - r01*y)); - mTransform.set(SkMatrix::kMTransY, SkIntToScalar(y - r10*x - r11*y)); - mType |= 0x80000000 | SkMatrix::kTranslate_Mask; -} - -void Transform::scale(float s, float x, float y) -{ - mTransform.postScale(s, s, x, y); - mType |= 0x80000000; -} - void Transform::set(int tx, int ty) { if (tx | ty) { diff --git a/libs/surfaceflinger/Transform.h b/libs/surfaceflinger/Transform.h index 4c4528ecd4bd..0b4835effd3a 100644 --- a/libs/surfaceflinger/Transform.h +++ b/libs/surfaceflinger/Transform.h @@ -60,9 +60,7 @@ public: void reset(); void set(float xx, float xy, float yx, float yy); void set(int tx, int ty); - void set(float radian, float x, float y); - void scale(float s, float x, float y); - + Rect makeBounds(int w, int h) const; void transform(GLfixed* point, int x, int y) const; Region transform(const Region& reg) const; -- cgit v1.2.3-59-g8ed1b From 97d00b3150df9eb434f51f486a6104bb16a16cec Mon Sep 17 00:00:00 2001 From: Romain Guy <> Date: Tue, 24 Mar 2009 22:45:53 -0700 Subject: Automated import from //branches/donutburger/...@142465,142465 --- api/current.xml | 284 +++++++++++++++++++++ .../AccelerateDecelerateInterpolator.java | 1 + .../view/animation/AccelerateInterpolator.java | 15 +- .../android/view/animation/AnimationUtils.java | 89 +++---- .../view/animation/AnticipateInterpolator.java | 56 ++++ .../animation/AnticipateOvershootInterpolator.java | 83 ++++++ .../android/view/animation/BounceInterpolator.java | 51 ++++ .../view/animation/OvershootInterpolator.java | 59 +++++ core/res/res/anim/anticipate_interpolator.xml | 21 ++ .../res/anim/anticipate_overshoot_interpolator.xml | 21 ++ core/res/res/anim/bounce_interpolator.xml | 21 ++ core/res/res/anim/overshoot_interpolator.xml | 21 ++ core/res/res/values/attrs.xml | 21 +- core/res/res/values/public.xml | 16 +- 14 files changed, 702 insertions(+), 57 deletions(-) create mode 100644 core/java/android/view/animation/AnticipateInterpolator.java create mode 100644 core/java/android/view/animation/AnticipateOvershootInterpolator.java create mode 100644 core/java/android/view/animation/BounceInterpolator.java create mode 100644 core/java/android/view/animation/OvershootInterpolator.java create mode 100644 core/res/res/anim/anticipate_interpolator.xml create mode 100644 core/res/res/anim/anticipate_overshoot_interpolator.xml create mode 100644 core/res/res/anim/bounce_interpolator.xml create mode 100644 core/res/res/anim/overshoot_interpolator.xml diff --git a/api/current.xml b/api/current.xml index 2260abb5abab..ab2857df7f37 100644 --- a/api/current.xml +++ b/api/current.xml @@ -1361,6 +1361,39 @@ visibility="public" > + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + depth) @@ -126,23 +125,21 @@ public class AnimationUtils { } - public static LayoutAnimationController loadLayoutAnimation( - Context context, int id) throws NotFoundException { + public static LayoutAnimationController loadLayoutAnimation(Context context, int id) + throws NotFoundException { XmlResourceParser parser = null; try { parser = context.getResources().getAnimation(id); return createLayoutAnimationFromXml(context, parser); } catch (XmlPullParserException ex) { - NotFoundException rnf = new NotFoundException( - "Can't load animation resource ID #0x" + - Integer.toHexString(id)); + NotFoundException rnf = new NotFoundException("Can't load animation resource ID #0x" + + Integer.toHexString(id)); rnf.initCause(ex); throw rnf; } catch (IOException ex) { - NotFoundException rnf = new NotFoundException( - "Can't load animation resource ID #0x" + - Integer .toHexString(id)); + NotFoundException rnf = new NotFoundException("Can't load animation resource ID #0x" + + Integer.toHexString(id)); rnf.initCause(ex); throw rnf; } finally { @@ -150,24 +147,21 @@ public class AnimationUtils { } } - private static LayoutAnimationController createLayoutAnimationFromXml( - Context c, XmlPullParser parser) - throws XmlPullParserException, IOException { - return createLayoutAnimationFromXml(c, parser, - Xml.asAttributeSet(parser)); + private static LayoutAnimationController createLayoutAnimationFromXml(Context c, + XmlPullParser parser) throws XmlPullParserException, IOException { + + return createLayoutAnimationFromXml(c, parser, Xml.asAttributeSet(parser)); } - private static LayoutAnimationController createLayoutAnimationFromXml( - Context c, XmlPullParser parser, AttributeSet attrs) - throws XmlPullParserException, IOException { + private static LayoutAnimationController createLayoutAnimationFromXml(Context c, + XmlPullParser parser, AttributeSet attrs) throws XmlPullParserException, IOException { LayoutAnimationController controller = null; int type; int depth = parser.getDepth(); - while (((type = parser.next()) != XmlPullParser.END_TAG - || parser.getDepth() > depth) + while (((type = parser.next()) != XmlPullParser.END_TAG || parser.getDepth() > depth) && type != XmlPullParser.END_DOCUMENT) { if (type != XmlPullParser.START_TAG) { @@ -181,8 +175,7 @@ public class AnimationUtils { } else if ("gridLayoutAnimation".equals(name)) { controller = new GridLayoutAnimationController(c, attrs); } else { - throw new RuntimeException("Unknown layout animation name: " + - name); + throw new RuntimeException("Unknown layout animation name: " + name); } } @@ -197,9 +190,7 @@ public class AnimationUtils { * @param fromLeft is the object to be animated coming from the left * @return The new animation */ - public static Animation makeInAnimation(Context c, boolean fromLeft) - { - + public static Animation makeInAnimation(Context c, boolean fromLeft) { Animation a; if (fromLeft) { a = AnimationUtils.loadAnimation(c, com.android.internal.R.anim.slide_in_left); @@ -220,9 +211,7 @@ public class AnimationUtils { * @param toRight is the object to be animated exiting to the right * @return The new animation */ - public static Animation makeOutAnimation(Context c, boolean toRight) - { - + public static Animation makeOutAnimation(Context c, boolean toRight) { Animation a; if (toRight) { a = AnimationUtils.loadAnimation(c, com.android.internal.R.anim.slide_out_right); @@ -243,9 +232,7 @@ public class AnimationUtils { * @param c Context for loading resources * @return The new animation */ - public static Animation makeInChildBottomAnimation(Context c) - { - + public static Animation makeInChildBottomAnimation(Context c) { Animation a; a = AnimationUtils.loadAnimation(c, com.android.internal.R.anim.slide_in_child_bottom); a.setInterpolator(new AccelerateInterpolator()); @@ -261,23 +248,19 @@ public class AnimationUtils { * @return The animation object reference by the specified id * @throws NotFoundException */ - public static Interpolator loadInterpolator(Context context, int id) - throws NotFoundException { - + public static Interpolator loadInterpolator(Context context, int id) throws NotFoundException { XmlResourceParser parser = null; try { parser = context.getResources().getAnimation(id); return createInterpolatorFromXml(context, parser); } catch (XmlPullParserException ex) { - NotFoundException rnf = new NotFoundException( - "Can't load animation resource ID #0x" - + Integer.toHexString(id)); + NotFoundException rnf = new NotFoundException("Can't load animation resource ID #0x" + + Integer.toHexString(id)); rnf.initCause(ex); throw rnf; } catch (IOException ex) { - NotFoundException rnf = new NotFoundException( - "Can't load animation resource ID #0x" - + Integer.toHexString(id)); + NotFoundException rnf = new NotFoundException("Can't load animation resource ID #0x" + + Integer.toHexString(id)); rnf.initCause(ex); throw rnf; } finally { @@ -287,12 +270,12 @@ public class AnimationUtils { } private static Interpolator createInterpolatorFromXml(Context c, XmlPullParser parser) - throws XmlPullParserException, IOException { + throws XmlPullParserException, IOException { Interpolator interpolator = null; // Make sure we are on a start tag. - int type = parser.getEventType(); + int type; int depth = parser.getDepth(); while (((type=parser.next()) != XmlPullParser.END_TAG || parser.getDepth() > depth) @@ -317,6 +300,14 @@ public class AnimationUtils { interpolator = new AccelerateDecelerateInterpolator(c, attrs); } else if (name.equals("cycleInterpolator")) { interpolator = new CycleInterpolator(c, attrs); + } else if (name.equals("anticipateInterpolator")) { + interpolator = new AnticipateInterpolator(c, attrs); + } else if (name.equals("overshootInterpolator")) { + interpolator = new OvershootInterpolator(c, attrs); + } else if (name.equals("anticipateOvershootInterpolator")) { + interpolator = new AnticipateOvershootInterpolator(c, attrs); + } else if (name.equals("bounceInterpolator")) { + interpolator = new BounceInterpolator(c, attrs); } else { throw new RuntimeException("Unknown interpolator name: " + parser.getName()); } diff --git a/core/java/android/view/animation/AnticipateInterpolator.java b/core/java/android/view/animation/AnticipateInterpolator.java new file mode 100644 index 000000000000..a6f110e8c4a6 --- /dev/null +++ b/core/java/android/view/animation/AnticipateInterpolator.java @@ -0,0 +1,56 @@ +/* + * Copyright (C) 2009 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.view.animation; + +import android.content.Context; +import android.content.res.TypedArray; +import android.util.AttributeSet; + +/** + * An interpolator where the change starts backward then flings forward. + */ +public class AnticipateInterpolator implements Interpolator { + private final float mTension; + + public AnticipateInterpolator() { + mTension = 2.0f; + } + + /** + * @param tension Amount of anticipation. When tension equals 0.0f, there is + * no anticipation and the interpolator becomes a simple + * acceleration interpolator. + */ + public AnticipateInterpolator(float tension) { + mTension = tension; + } + + public AnticipateInterpolator(Context context, AttributeSet attrs) { + TypedArray a = context.obtainStyledAttributes(attrs, + com.android.internal.R.styleable.AnticipateInterpolator); + + mTension = + a.getFloat(com.android.internal.R.styleable.AnticipateInterpolator_tension, 2.0f); + + a.recycle(); + } + + public float getInterpolation(float t) { + // a(t) = t * t * ((tension + 1) * t - tension) + return t * t * ((mTension + 1) * t - mTension); + } +} diff --git a/core/java/android/view/animation/AnticipateOvershootInterpolator.java b/core/java/android/view/animation/AnticipateOvershootInterpolator.java new file mode 100644 index 000000000000..3dc972278b78 --- /dev/null +++ b/core/java/android/view/animation/AnticipateOvershootInterpolator.java @@ -0,0 +1,83 @@ +/* + * Copyright (C) 2009 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.view.animation; + +import android.content.Context; +import android.content.res.TypedArray; +import android.util.AttributeSet; +import static com.android.internal.R.styleable.AnticipateOvershootInterpolator_extraTension; +import static com.android.internal.R.styleable.AnticipateOvershootInterpolator_tension; +import static com.android.internal.R.styleable.AnticipateOvershootInterpolator; + +/** + * An interpolator where the change starts backward then flings forward and overshoots + * the target value and finally goes back to the final value. + */ +public class AnticipateOvershootInterpolator implements Interpolator { + private final float mTension; + + public AnticipateOvershootInterpolator() { + mTension = 2.0f * 1.5f; + } + + /** + * @param tension Amount of anticipation/overshoot. When tension equals 0.0f, + * there is no anticipation/overshoot and the interpolator becomes + * a simple acceleration/deceleration interpolator. + */ + public AnticipateOvershootInterpolator(float tension) { + mTension = tension * 1.5f; + } + + /** + * @param tension Amount of anticipation/overshoot. When tension equals 0.0f, + * there is no anticipation/overshoot and the interpolator becomes + * a simple acceleration/deceleration interpolator. + * @param extraTension Amount by which to multiply the tension. For instance, + * to get the same overshoot as an OvershootInterpolator with + * a tension of 2.0f, you would use an extraTension of 1.5f. + */ + public AnticipateOvershootInterpolator(float tension, float extraTension) { + mTension = tension * extraTension; + } + + public AnticipateOvershootInterpolator(Context context, AttributeSet attrs) { + TypedArray a = context.obtainStyledAttributes(attrs, AnticipateOvershootInterpolator); + + mTension = a.getFloat(AnticipateOvershootInterpolator_tension, 2.0f) * + a.getFloat(AnticipateOvershootInterpolator_extraTension, 1.5f); + + a.recycle(); + } + + private static float a(float t, float s) { + return t * t * ((s + 1) * t - s); + } + + private static float o(float t, float s) { + return t * t * ((s + 1) * t + s); + } + + public float getInterpolation(float t) { + // a(t, s) = t * t * ((s + 1) * t - s) + // o(t, s) = t * t * ((s + 1) * t + s) + // f(t) = 0.5 * a(t * 2, tension * extraTension), when t < 0.5 + // f(t) = 0.5 * (o(t * 2 - 2, tension * extraTension) + 2), when t <= 1.0 + if (t < 0.5f) return 0.5f * a(t * 2.0f, mTension); + else return 0.5f * (o(t * 2.0f - 2.0f, mTension) + 2.0f); + } +} diff --git a/core/java/android/view/animation/BounceInterpolator.java b/core/java/android/view/animation/BounceInterpolator.java new file mode 100644 index 000000000000..f79e7303f478 --- /dev/null +++ b/core/java/android/view/animation/BounceInterpolator.java @@ -0,0 +1,51 @@ +/* + * Copyright (C) 2009 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.view.animation; + +import android.content.Context; +import android.content.res.TypedArray; +import android.util.AttributeSet; + +/** + * An interpolator where the change bounces at the end. + */ +public class BounceInterpolator implements Interpolator { + public BounceInterpolator() { + } + + @SuppressWarnings({"UnusedDeclaration"}) + public BounceInterpolator(Context context, AttributeSet attrs) { + } + + private static float bounce(float t) { + return t * t * 8.0f; + } + + public float getInterpolation(float t) { + // _b(t) = t * t * 8 + // bs(t) = _b(t) for t < 0.3535 + // bs(t) = _b(t - 0.54719) + 0.7 for t < 0.7408 + // bs(t) = _b(t - 0.8526) + 0.9 for t < 0.9644 + // bs(t) = _b(t - 1.0435) + 0.95 for t <= 1.0 + // b(t) = bs(t * 1.1226) + t *= 1.1226f; + if (t < 0.3535f) return bounce(t); + else if (t < 0.7408f) return bounce(t - 0.54719f) + 0.7f; + else if (t < 0.9644f) return bounce(t - 0.8526f) + 0.9f; + else return bounce(t - 1.0435f) + 0.95f; + } +} \ No newline at end of file diff --git a/core/java/android/view/animation/OvershootInterpolator.java b/core/java/android/view/animation/OvershootInterpolator.java new file mode 100644 index 000000000000..494f8ab5a05b --- /dev/null +++ b/core/java/android/view/animation/OvershootInterpolator.java @@ -0,0 +1,59 @@ +/* + * Copyright (C) 2009 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.view.animation; + +import android.content.Context; +import android.content.res.TypedArray; +import android.util.AttributeSet; + +/** + * An interpolator where the change flings forward and overshoots the last value + * then comes back. + */ +public class OvershootInterpolator implements Interpolator { + private final float mTension; + + public OvershootInterpolator() { + mTension = 2.0f; + } + + /** + * @param tension Amount of overshoot. When tension equals 0.0f, there is + * no overshoot and the interpolator becomes a simple + * deceleration interpolator. + */ + public OvershootInterpolator(float tension) { + mTension = tension; + } + + public OvershootInterpolator(Context context, AttributeSet attrs) { + TypedArray a = context.obtainStyledAttributes(attrs, + com.android.internal.R.styleable.OvershootInterpolator); + + mTension = + a.getFloat(com.android.internal.R.styleable.OvershootInterpolator_tension, 2.0f); + + a.recycle(); + } + + public float getInterpolation(float t) { + // _o(t) = t * t * ((tension + 1) * t + tension) + // o(t) = _o(t - 1) + 1 + t -= 1.0f; + return t * t * ((mTension + 1) * t + mTension) + 1.0f; + } +} diff --git a/core/res/res/anim/anticipate_interpolator.xml b/core/res/res/anim/anticipate_interpolator.xml new file mode 100644 index 000000000000..50a555a6766c --- /dev/null +++ b/core/res/res/anim/anticipate_interpolator.xml @@ -0,0 +1,21 @@ + + + + diff --git a/core/res/res/anim/anticipate_overshoot_interpolator.xml b/core/res/res/anim/anticipate_overshoot_interpolator.xml new file mode 100644 index 000000000000..440a899f9549 --- /dev/null +++ b/core/res/res/anim/anticipate_overshoot_interpolator.xml @@ -0,0 +1,21 @@ + + + + diff --git a/core/res/res/anim/bounce_interpolator.xml b/core/res/res/anim/bounce_interpolator.xml new file mode 100644 index 000000000000..406fbb9fd159 --- /dev/null +++ b/core/res/res/anim/bounce_interpolator.xml @@ -0,0 +1,21 @@ + + + + diff --git a/core/res/res/anim/overshoot_interpolator.xml b/core/res/res/anim/overshoot_interpolator.xml new file mode 100644 index 000000000000..c614e0b8f0d3 --- /dev/null +++ b/core/res/res/anim/overshoot_interpolator.xml @@ -0,0 +1,21 @@ + + + + diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml index 485edca8ff6b..310948960ae2 100644 --- a/core/res/res/values/attrs.xml +++ b/core/res/res/values/attrs.xml @@ -2525,12 +2525,12 @@ - + - + @@ -2538,6 +2538,23 @@ + + + + + + + + + + + + + + + + + diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml index ed35986f8faa..09012c92f9ed 100644 --- a/core/res/res/values/public.xml +++ b/core/res/res/values/public.xml @@ -1051,7 +1051,7 @@ - @@ -1104,4 +1104,18 @@ + + + + + + + + + + + + -- cgit v1.2.3-59-g8ed1b From 870a2b015645ef5086af6a5de31dc482e7193214 Mon Sep 17 00:00:00 2001 From: Romain Guy <> Date: Tue, 24 Mar 2009 22:46:33 -0700 Subject: Automated import from //branches/donutburger/...@142470,142470 --- core/java/android/app/AlertDialog.java | 11 +++++++- .../com/android/internal/app/AlertController.java | 32 +++++++++++++++++++--- .../internal/view/menu/MenuDialogHelper.java | 11 ++++---- core/res/res/layout/select_dialog.xml | 3 +- 4 files changed, 46 insertions(+), 11 deletions(-) diff --git a/core/java/android/app/AlertDialog.java b/core/java/android/app/AlertDialog.java index f2b89c371e8e..021dc2e39f21 100644 --- a/core/java/android/app/AlertDialog.java +++ b/core/java/android/app/AlertDialog.java @@ -763,7 +763,16 @@ public class AlertDialog extends Dialog implements DialogInterface { P.mForceInverseBackground = useInverseBackground; return this; } - + + /** + * @hide + */ + public Builder setRecycleOnMeasureEnabled(boolean enabled) { + P.mRecycleOnMeasure = enabled; + return this; + } + + /** * Creates a {@link AlertDialog} with the arguments supplied to this builder. It does not * {@link Dialog#show()} the dialog. This allows the user to do any extra processing diff --git a/core/java/com/android/internal/app/AlertController.java b/core/java/com/android/internal/app/AlertController.java index b330a1862174..57dbb449288f 100644 --- a/core/java/com/android/internal/app/AlertController.java +++ b/core/java/com/android/internal/app/AlertController.java @@ -17,7 +17,6 @@ package com.android.internal.app; import static android.view.ViewGroup.LayoutParams.FILL_PARENT; -import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; @@ -49,6 +48,7 @@ import android.widget.ScrollView; import android.widget.SimpleCursorAdapter; import android.widget.TextView; import android.widget.AdapterView.OnItemClickListener; +import android.util.AttributeSet; import com.android.internal.R; @@ -672,7 +672,28 @@ public class AlertController { } } } - + + public static class RecycleListView extends ListView { + boolean mRecycleOnMeasure = true; + + public RecycleListView(Context context) { + super(context); + } + + public RecycleListView(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public RecycleListView(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + } + + @Override + protected boolean recycleOnMeasure() { + return mRecycleOnMeasure; + } + } + public static class AlertParams { public final Context mContext; public final LayoutInflater mInflater; @@ -711,7 +732,8 @@ public class AlertController { public boolean mForceInverseBackground; public AdapterView.OnItemSelectedListener mOnItemSelectedListener; public OnPrepareListViewListener mOnPrepareListViewListener; - + public boolean mRecycleOnMeasure = true; + /** * Interface definition for a callback to be invoked before the ListView * will be bound to an adapter. @@ -787,7 +809,8 @@ public class AlertController { } private void createListView(final AlertController dialog) { - final ListView listView = (ListView) mInflater.inflate(R.layout.select_dialog, null); + final RecycleListView listView = (RecycleListView) + mInflater.inflate(R.layout.select_dialog, null); ListAdapter adapter; if (mIsMultiChoice) { @@ -886,6 +909,7 @@ public class AlertController { } else if (mIsMultiChoice) { listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); } + listView.mRecycleOnMeasure = mRecycleOnMeasure; dialog.mListView = listView; } } diff --git a/core/java/com/android/internal/view/menu/MenuDialogHelper.java b/core/java/com/android/internal/view/menu/MenuDialogHelper.java index bc51cf3a385f..88f7b2fe81b6 100644 --- a/core/java/com/android/internal/view/menu/MenuDialogHelper.java +++ b/core/java/com/android/internal/view/menu/MenuDialogHelper.java @@ -67,6 +67,10 @@ public class MenuDialogHelper implements DialogInterface.OnKeyListener, DialogIn // Set the key listener builder.setOnKeyListener(this); + + // Since this is for a menu, disable the recycling of views + // This is done by the menu framework anyway + builder.setRecycleOnMeasureEnabled(false); // Show the menu mDialog = builder.create(); @@ -97,11 +101,8 @@ public class MenuDialogHelper implements DialogInterface.OnKeyListener, DialogIn } // Menu shortcut matching - if (mMenu.performShortcut(keyCode, event, 0)) { - return true; - } - - return false; + return mMenu.performShortcut(keyCode, event, 0); + } /** diff --git a/core/res/res/layout/select_dialog.xml b/core/res/res/layout/select_dialog.xml index 8e48ae2a4820..249b5275986b 100644 --- a/core/res/res/layout/select_dialog.xml +++ b/core/res/res/layout/select_dialog.xml @@ -23,7 +23,8 @@ This layout file is inflated and used as the ListView to display the items. Assign an ID so its state will be saved/restored. --> - Date: Tue, 24 Mar 2009 22:47:09 -0700 Subject: Automated import from //branches/donutburger/...@142472,142472 --- api/current.xml | 11 ----------- core/res/AndroidManifest.xml | 4 ++-- 2 files changed, 2 insertions(+), 13 deletions(-) diff --git a/api/current.xml b/api/current.xml index ab2857df7f37..706989a88834 100644 --- a/api/current.xml +++ b/api/current.xml @@ -628,17 +628,6 @@ visibility="public" > - - + statistics @hide --> + android:protectionLevel="signature" /> Date: Tue, 24 Mar 2009 22:48:26 -0700 Subject: Automated import from //branches/donutburger/...@142484,142484 --- core/jni/com_google_android_gles_jni_EGLImpl.cpp | 305 ++++++++++++++--------- opengl/libagl/egl.cpp | 24 +- opengl/libs/EGL/egl.cpp | 35 +-- 3 files changed, 231 insertions(+), 133 deletions(-) diff --git a/core/jni/com_google_android_gles_jni_EGLImpl.cpp b/core/jni/com_google_android_gles_jni_EGLImpl.cpp index fbbd85216608..4452065956bf 100644 --- a/core/jni/com_google_android_gles_jni_EGLImpl.cpp +++ b/core/jni/com_google_android_gles_jni_EGLImpl.cpp @@ -2,16 +2,16 @@ ** ** Copyright 2006, The Android Open Source Project ** -** Licensed under the Apache License, Version 2.0 (the "License"); -** you may not use this file except in compliance with the License. -** You may obtain a copy of the License at +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at ** -** http://www.apache.org/licenses/LICENSE-2.0 +** http://www.apache.org/licenses/LICENSE-2.0 ** -** Unless required by applicable law or agreed to in writing, software -** distributed under the License is distributed on an "AS IS" BASIS, -** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -** See the License for the specific language governing permissions and +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and ** limitations under the License. */ @@ -89,7 +89,7 @@ static void nativeClassInit(JNIEnv *_env, jclass eglImplClass) gConfig_class = make_globalref(_env, "com/google/android/gles_jni/EGLConfigImpl"); gConfig_ctorID = _env->GetMethodID(gConfig_class, "", "(I)V"); - + gDisplay_EGLDisplayFieldID = _env->GetFieldID(gDisplay_class, "mEGLDisplay", "I"); gContext_EGLContextFieldID = _env->GetFieldID(gContext_class, "mEGLContext", "I"); gSurface_EGLSurfaceFieldID = _env->GetFieldID(gSurface_class, "mEGLSurface", "I"); @@ -100,12 +100,46 @@ static void nativeClassInit(JNIEnv *_env, jclass eglImplClass) gSurface_SurfaceFieldID = _env->GetFieldID(surface_class, "mSurface", "I"); jclass bitmap_class = _env->FindClass("android/graphics/Bitmap"); - gBitmap_NativeBitmapFieldID = _env->GetFieldID(bitmap_class, "mNativeBitmap", "I"); + gBitmap_NativeBitmapFieldID = _env->GetFieldID(bitmap_class, "mNativeBitmap", "I"); +} + +static const jint gNull_attrib_base[] = {EGL_NONE}; + +static bool validAttribList(JNIEnv *_env, jintArray attrib_list) { + if (attrib_list == NULL) { + return true; + } + jsize len = _env->GetArrayLength(attrib_list); + if (len < 1) { + return false; + } + jint item = 0; + _env->GetIntArrayRegion(attrib_list, len-1, 1, &item); + return item == EGL_NONE; +} + +static jint* beginNativeAttribList(JNIEnv *_env, jintArray attrib_list) { + if (attrib_list != NULL) { + return (jint *)_env->GetPrimitiveArrayCritical(attrib_list, (jboolean *)0); + } else { + return(jint*) gNull_attrib_base; + } } -jboolean jni_eglInitialize(JNIEnv *_env, jobject _this, jobject display, +static void endNativeAttributeList(JNIEnv *_env, jintArray attrib_list, jint* attrib_base) { + if (attrib_list != NULL) { + _env->ReleasePrimitiveArrayCritical(attrib_list, attrib_base, JNI_ABORT); + } +} + +static jboolean jni_eglInitialize(JNIEnv *_env, jobject _this, jobject display, jintArray major_minor) { - + if (display == NULL || (major_minor != NULL && + _env->GetArrayLength(major_minor) < 2)) { + doThrow(_env, "java/lang/IllegalArgumentException"); + return JNI_FALSE; + } + EGLDisplay dpy = getDisplay(_env, display); jboolean success = eglInitialize(dpy, NULL, NULL); if (success && major_minor) { @@ -121,14 +155,15 @@ jboolean jni_eglInitialize(JNIEnv *_env, jobject _this, jobject display, return success; } -jboolean jni_eglQueryContext(JNIEnv *_env, jobject _this, jobject display, +static jboolean jni_eglQueryContext(JNIEnv *_env, jobject _this, jobject display, jobject context, jint attribute, jintArray value) { - EGLDisplay dpy = getDisplay(_env, display); - EGLContext ctx = getContext(_env, context); - if (value == NULL) { - doThrow(_env, "java/lang/NullPointerException"); + if (display == NULL || context == NULL || value == NULL + || _env->GetArrayLength(value) < 1) { + doThrow(_env, "java/lang/IllegalArgumentException"); return JNI_FALSE; } + EGLDisplay dpy = getDisplay(_env, display); + EGLContext ctx = getContext(_env, context); jboolean success = JNI_FALSE; int len = _env->GetArrayLength(value); if (len) { @@ -138,15 +173,17 @@ jboolean jni_eglQueryContext(JNIEnv *_env, jobject _this, jobject display, } return success; } - -jboolean jni_eglQuerySurface(JNIEnv *_env, jobject _this, jobject display, + +static jboolean jni_eglQuerySurface(JNIEnv *_env, jobject _this, jobject display, jobject surface, jint attribute, jintArray value) { - EGLDisplay dpy = getDisplay(_env, display); - EGLContext sur = getSurface(_env, surface); - if (value == NULL) { - doThrow(_env, "java/lang/NullPointerException"); + if (display == NULL || surface == NULL || value == NULL + || _env->GetArrayLength(value) < 1) { + doThrow(_env, "java/lang/IllegalArgumentException"); return JNI_FALSE; } + EGLDisplay dpy = getDisplay(_env, display); + EGLContext sur = getSurface(_env, surface); + jboolean success = JNI_FALSE; int len = _env->GetArrayLength(value); if (len) { @@ -157,60 +194,69 @@ jboolean jni_eglQuerySurface(JNIEnv *_env, jobject _this, jobject display, return success; } -jboolean jni_eglChooseConfig(JNIEnv *_env, jobject _this, jobject display, - jintArray attrib_list, jobjectArray configs, jint config_size, jintArray num_config) { - EGLDisplay dpy = getDisplay(_env, display); - if (attrib_list==NULL || configs==NULL || num_config==NULL) { - doThrow(_env, "java/lang/NullPointerException"); +static jboolean jni_eglChooseConfig(JNIEnv *_env, jobject _this, jobject display, + jintArray attrib_list, jobjectArray configs, jint config_size, jintArray num_config) { + if (display == NULL + || !validAttribList(_env, attrib_list) + || (configs != NULL && _env->GetArrayLength(configs) < config_size) + || (num_config != NULL && _env->GetArrayLength(num_config) < 1)) { + doThrow(_env, "java/lang/IllegalArgumentException"); return JNI_FALSE; } + EGLDisplay dpy = getDisplay(_env, display); jboolean success = JNI_FALSE; - jint* attrib_base = (jint *)_env->GetPrimitiveArrayCritical(attrib_list, (jboolean *)0); - jint* num_base = (jint *)_env->GetPrimitiveArrayCritical(num_config, (jboolean *)0); + + if (configs == NULL) { + config_size = 0; + } EGLConfig nativeConfigs[config_size]; - success = eglChooseConfig(dpy, attrib_base, nativeConfigs, config_size, num_base); - int num = num_base[0]; - _env->ReleasePrimitiveArrayCritical(num_config, num_base, JNI_ABORT); - _env->ReleasePrimitiveArrayCritical(attrib_list, attrib_base, JNI_ABORT); - if (success) { + + int num = 0; + jint* attrib_base = beginNativeAttribList(_env, attrib_list); + success = eglChooseConfig(dpy, attrib_base, configs ? nativeConfigs : 0, config_size, &num); + endNativeAttributeList(_env, attrib_list, attrib_base); + + if (num_config != NULL) { + _env->SetIntArrayRegion(num_config, 0, 1, (jint*) &num); + } + + if (success && configs!=NULL) { for (int i=0 ; iNewObject(gConfig_class, gConfig_ctorID, (jint)nativeConfigs[i]); _env->SetObjectArrayElement(configs, i, obj); } } return success; -} +} -jint jni_eglCreateContext(JNIEnv *_env, jobject _this, jobject display, +static jint jni_eglCreateContext(JNIEnv *_env, jobject _this, jobject display, jobject config, jobject share_context, jintArray attrib_list) { + if (display == NULL || config == NULL || share_context == NULL + || !validAttribList(_env, attrib_list)) { + doThrow(_env, "java/lang/IllegalArgumentException"); + return JNI_FALSE; + } EGLDisplay dpy = getDisplay(_env, display); EGLConfig cnf = getConfig(_env, config); EGLContext shr = getContext(_env, share_context); - jint* base = 0; - if (attrib_list) { - // XXX: if array is malformed, we should return an NPE instead of segfault - base = (jint *)_env->GetPrimitiveArrayCritical(attrib_list, (jboolean *)0); - } + jint* base = beginNativeAttribList(_env, attrib_list); EGLContext ctx = eglCreateContext(dpy, cnf, shr, base); - if (attrib_list) { - _env->ReleasePrimitiveArrayCritical(attrib_list, base, JNI_ABORT); - } + endNativeAttributeList(_env, attrib_list, base); return (jint)ctx; } -jint jni_eglCreatePbufferSurface(JNIEnv *_env, jobject _this, jobject display, +static jint jni_eglCreatePbufferSurface(JNIEnv *_env, jobject _this, jobject display, jobject config, jintArray attrib_list) { + if (display == NULL || config == NULL + || !validAttribList(_env, attrib_list)) { + doThrow(_env, "java/lang/IllegalArgumentException"); + return JNI_FALSE; + } EGLDisplay dpy = getDisplay(_env, display); EGLConfig cnf = getConfig(_env, config); - jint* base = 0; - if (attrib_list) { - // XXX: if array is malformed, we should return an NPE instead of segfault - base = (jint *)_env->GetPrimitiveArrayCritical(attrib_list, (jboolean *)0); - } + jint* base = beginNativeAttribList(_env, attrib_list); EGLSurface sur = eglCreatePbufferSurface(dpy, cnf, base); - if (attrib_list) { - _env->ReleasePrimitiveArrayCritical(attrib_list, base, JNI_ABORT); - } + endNativeAttributeList(_env, attrib_list, base); return (jint)sur; } @@ -225,10 +271,15 @@ static PixelFormat convertPixelFormat(SkBitmap::Config format) } } -void jni_eglCreatePixmapSurface(JNIEnv *_env, jobject _this, jobject out_sur, +static void jni_eglCreatePixmapSurface(JNIEnv *_env, jobject _this, jobject out_sur, jobject display, jobject config, jobject native_pixmap, - jintArray attrib_list) + jintArray attrib_list) { + if (display == NULL || config == NULL || native_pixmap == NULL + || !validAttribList(_env, attrib_list)) { + doThrow(_env, "java/lang/IllegalArgumentException"); + return; + } EGLDisplay dpy = getDisplay(_env, display); EGLConfig cnf = getConfig(_env, config); jint* base = 0; @@ -238,13 +289,13 @@ void jni_eglCreatePixmapSurface(JNIEnv *_env, jobject _this, jobject out_sur, gBitmap_NativeBitmapFieldID); SkPixelRef* ref = nativeBitmap ? nativeBitmap->pixelRef() : 0; if (ref == NULL) { - doThrow(_env, "java/lang/NullPointerException", "Bitmap has no PixelRef"); + doThrow(_env, "java/lang/IllegalArgumentException", "Bitmap has no PixelRef"); return; } - + ref->safeRef(); ref->lockPixels(); - + egl_native_pixmap_t pixmap; pixmap.version = sizeof(pixmap); pixmap.width = nativeBitmap->width(); @@ -252,15 +303,10 @@ void jni_eglCreatePixmapSurface(JNIEnv *_env, jobject _this, jobject out_sur, pixmap.stride = nativeBitmap->rowBytes() / nativeBitmap->bytesPerPixel(); pixmap.format = convertPixelFormat(nativeBitmap->config()); pixmap.data = (uint8_t*)ref->pixels(); - - if (attrib_list) { - // XXX: if array is malformed, we should return an NPE instead of segfault - base = (jint *)_env->GetPrimitiveArrayCritical(attrib_list, (jboolean *)0); - } + + base = beginNativeAttribList(_env, attrib_list); EGLSurface sur = eglCreatePixmapSurface(dpy, cnf, &pixmap, base); - if (attrib_list) { - _env->ReleasePrimitiveArrayCritical(attrib_list, base, JNI_ABORT); - } + endNativeAttributeList(_env, attrib_list, base); if (sur != EGL_NO_SURFACE) { _env->SetIntField(out_sur, gSurface_EGLSurfaceFieldID, (int)sur); @@ -271,14 +317,19 @@ void jni_eglCreatePixmapSurface(JNIEnv *_env, jobject _this, jobject out_sur, } } -jint jni_eglCreateWindowSurface(JNIEnv *_env, jobject _this, jobject display, +static jint jni_eglCreateWindowSurface(JNIEnv *_env, jobject _this, jobject display, jobject config, jobject native_window, jintArray attrib_list) { + if (display == NULL || config == NULL + || !validAttribList(_env, attrib_list)) { + doThrow(_env, "java/lang/IllegalArgumentException"); + return JNI_FALSE; + } EGLDisplay dpy = getDisplay(_env, display); EGLContext cnf = getConfig(_env, config); Surface* window = 0; if (native_window == NULL) { not_valid_surface: - doThrow(_env, "java/lang/NullPointerException", + doThrow(_env, "java/lang/IllegalArgumentException", "Make sure the SurfaceView or associated SurfaceHolder has a valid Surface"); return 0; } @@ -286,50 +337,48 @@ not_valid_surface: if (window == NULL) goto not_valid_surface; - jint* base = 0; - if (attrib_list) { - // XXX: if array is malformed, we should return an NPE instead of segfault - base = (jint *)_env->GetPrimitiveArrayCritical(attrib_list, (jboolean *)0); - } + jint* base = beginNativeAttribList(_env, attrib_list); EGLSurface sur = eglCreateWindowSurface(dpy, cnf, new EGLNativeWindowSurface(window), base); - if (attrib_list) { - _env->ReleasePrimitiveArrayCritical(attrib_list, base, JNI_ABORT); - } + endNativeAttributeList(_env, attrib_list, base); return (jint)sur; } -jboolean jni_eglGetConfigAttrib(JNIEnv *_env, jobject _this, jobject display, +static jboolean jni_eglGetConfigAttrib(JNIEnv *_env, jobject _this, jobject display, jobject config, jint attribute, jintArray value) { - EGLDisplay dpy = getDisplay(_env, display); - EGLContext cnf = getConfig(_env, config); - if (value == NULL) { - doThrow(_env, "java/lang/NullPointerException"); + if (display == NULL || config == NULL + || (value == NULL || _env->GetArrayLength(value) < 1)) { + doThrow(_env, "java/lang/IllegalArgumentException"); return JNI_FALSE; } + EGLDisplay dpy = getDisplay(_env, display); + EGLContext cnf = getConfig(_env, config); jboolean success = JNI_FALSE; - int len = _env->GetArrayLength(value); - if (len) { - jint* base = (jint *)_env->GetPrimitiveArrayCritical(value, (jboolean *)0); - success = eglGetConfigAttrib(dpy, cnf, attribute, base); - _env->ReleasePrimitiveArrayCritical(value, base, JNI_ABORT); + jint localValue; + success = eglGetConfigAttrib(dpy, cnf, attribute, &localValue); + if (success) { + _env->SetIntArrayRegion(value, 0, 1, &localValue); } return success; } -jboolean jni_eglGetConfigs(JNIEnv *_env, jobject _this, jobject display, +static jboolean jni_eglGetConfigs(JNIEnv *_env, jobject _this, jobject display, jobjectArray configs, jint config_size, jintArray num_config) { + if (display == NULL || (configs != NULL && _env->GetArrayLength(configs) < config_size) + || (num_config != NULL && _env->GetArrayLength(num_config) < 1)) { + doThrow(_env, "java/lang/IllegalArgumentException"); + return JNI_FALSE; + } EGLDisplay dpy = getDisplay(_env, display); jboolean success = JNI_FALSE; - if (num_config == NULL) { - doThrow(_env, "java/lang/NullPointerException"); - return JNI_FALSE; + if (configs == NULL) { + config_size = 0; } - jint* num_base = (jint *)_env->GetPrimitiveArrayCritical(num_config, (jboolean *)0); EGLConfig nativeConfigs[config_size]; - success = eglGetConfigs(dpy, configs ? nativeConfigs : 0, config_size, num_base); - int num = num_base[0]; - _env->ReleasePrimitiveArrayCritical(num_config, num_base, JNI_ABORT); - + int num; + success = eglGetConfigs(dpy, configs ? nativeConfigs : 0, config_size, &num); + if (num_config != NULL) { + _env->SetIntArrayRegion(num_config, 0, 1, (jint*) &num); + } if (success && configs) { for (int i=0 ; iNewObject(gConfig_class, gConfig_ctorID, (jint)nativeConfigs[i]); @@ -338,31 +387,43 @@ jboolean jni_eglGetConfigs(JNIEnv *_env, jobject _this, jobject display, } return success; } - -jint jni_eglGetError(JNIEnv *_env, jobject _this) { + +static jint jni_eglGetError(JNIEnv *_env, jobject _this) { EGLint error = eglGetError(); return error; } -jint jni_eglGetCurrentContext(JNIEnv *_env, jobject _this) { +static jint jni_eglGetCurrentContext(JNIEnv *_env, jobject _this) { return (jint)eglGetCurrentContext(); } -jint jni_eglGetCurrentDisplay(JNIEnv *_env, jobject _this) { +static jint jni_eglGetCurrentDisplay(JNIEnv *_env, jobject _this) { return (jint)eglGetCurrentDisplay(); } -jint jni_eglGetCurrentSurface(JNIEnv *_env, jobject _this, jint readdraw) { +static jint jni_eglGetCurrentSurface(JNIEnv *_env, jobject _this, jint readdraw) { + if (!(readdraw == EGL_READ) || (readdraw == EGL_DRAW)) { + doThrow(_env, "java/lang/IllegalArgumentException"); + return 0; + } return (jint)eglGetCurrentSurface(readdraw); } -jboolean jni_eglDestroyContext(JNIEnv *_env, jobject _this, jobject display, jobject context) { +static jboolean jni_eglDestroyContext(JNIEnv *_env, jobject _this, jobject display, jobject context) { + if (display == NULL || context == NULL) { + doThrow(_env, "java/lang/IllegalArgumentException"); + return JNI_FALSE; + } EGLDisplay dpy = getDisplay(_env, display); EGLContext ctx = getContext(_env, context); return eglDestroyContext(dpy, ctx); } -jboolean jni_eglDestroySurface(JNIEnv *_env, jobject _this, jobject display, jobject surface) { +static jboolean jni_eglDestroySurface(JNIEnv *_env, jobject _this, jobject display, jobject surface) { + if (display == NULL || surface == NULL) { + doThrow(_env, "java/lang/IllegalArgumentException"); + return JNI_FALSE; + } EGLDisplay dpy = getDisplay(_env, display); EGLSurface sur = getSurface(_env, surface); @@ -377,11 +438,15 @@ jboolean jni_eglDestroySurface(JNIEnv *_env, jobject _this, jobject display, job return eglDestroySurface(dpy, sur); } -jint jni_eglGetDisplay(JNIEnv *_env, jobject _this, jobject native_display) { +static jint jni_eglGetDisplay(JNIEnv *_env, jobject _this, jobject native_display) { return (jint)eglGetDisplay(EGL_DEFAULT_DISPLAY); } -jboolean jni_eglMakeCurrent(JNIEnv *_env, jobject _this, jobject display, jobject draw, jobject read, jobject context) { +static jboolean jni_eglMakeCurrent(JNIEnv *_env, jobject _this, jobject display, jobject draw, jobject read, jobject context) { + if (display == NULL || draw == NULL || read == NULL || context == NULL) { + doThrow(_env, "java/lang/IllegalArgumentException"); + return JNI_FALSE; + } EGLDisplay dpy = getDisplay(_env, display); EGLSurface sdr = getSurface(_env, draw); EGLSurface srd = getSurface(_env, read); @@ -389,34 +454,50 @@ jboolean jni_eglMakeCurrent(JNIEnv *_env, jobject _this, jobject display, jobjec return eglMakeCurrent(dpy, sdr, srd, ctx); } -jstring jni_eglQueryString(JNIEnv *_env, jobject _this, jobject display, jint name) { +static jstring jni_eglQueryString(JNIEnv *_env, jobject _this, jobject display, jint name) { + if (display == NULL) { + doThrow(_env, "java/lang/IllegalArgumentException"); + return NULL; + } EGLDisplay dpy = getDisplay(_env, display); const char* chars = eglQueryString(dpy, name); return _env->NewStringUTF(chars); } -jboolean jni_eglSwapBuffers(JNIEnv *_env, jobject _this, jobject display, jobject surface) { +static jboolean jni_eglSwapBuffers(JNIEnv *_env, jobject _this, jobject display, jobject surface) { + if (display == NULL || surface == NULL) { + doThrow(_env, "java/lang/IllegalArgumentException"); + return JNI_FALSE; + } EGLDisplay dpy = getDisplay(_env, display); EGLSurface sur = getSurface(_env, surface); return eglSwapBuffers(dpy, sur); } -jboolean jni_eglTerminate(JNIEnv *_env, jobject _this, jobject display) { +static jboolean jni_eglTerminate(JNIEnv *_env, jobject _this, jobject display) { + if (display == NULL) { + doThrow(_env, "java/lang/IllegalArgumentException"); + return JNI_FALSE; + } EGLDisplay dpy = getDisplay(_env, display); return eglTerminate(dpy); } -jboolean jni_eglCopyBuffers(JNIEnv *_env, jobject _this, jobject display, +static jboolean jni_eglCopyBuffers(JNIEnv *_env, jobject _this, jobject display, jobject surface, jobject native_pixmap) { - // TODO: implement me + if (display == NULL || surface == NULL || native_pixmap == NULL) { + doThrow(_env, "java/lang/IllegalArgumentException"); + return JNI_FALSE; + } + // TODO: Implement this return JNI_FALSE; } -jboolean jni_eglWaitGL(JNIEnv *_env, jobject _this) { +static jboolean jni_eglWaitGL(JNIEnv *_env, jobject _this) { return eglWaitGL(); } -jboolean jni_eglWaitNative(JNIEnv *_env, jobject _this, jint engine, jobject bindTarget) { +static jboolean jni_eglWaitNative(JNIEnv *_env, jobject _this, jint engine, jobject bindTarget) { return eglWaitNative(engine); } diff --git a/opengl/libagl/egl.cpp b/opengl/libagl/egl.cpp index 5b90bf03fd61..3b4c0419f0db 100644 --- a/opengl/libagl/egl.cpp +++ b/opengl/libagl/egl.cpp @@ -1055,8 +1055,12 @@ EGLBoolean eglChooseConfig( EGLDisplay dpy, const EGLint *attrib_list, { if (egl_display_t::is_valid(dpy) == EGL_FALSE) return setError(EGL_BAD_DISPLAY, EGL_FALSE); + + if (ggl_unlikely(num_config==0)) { + return setError(EGL_BAD_PARAMETER, EGL_FALSE); + } - if (ggl_unlikely(configs==0 || attrib_list==0)) { + if (ggl_unlikely(attrib_list==0)) { *num_config = 0; return EGL_TRUE; } @@ -1102,11 +1106,19 @@ EGLBoolean eglChooseConfig( EGLDisplay dpy, const EGLint *attrib_list, // return the configurations found int n=0; if (possibleMatch) { - for (int i=0 ; config_size && i0) { // n has to be 0 or 1, by construction, and we already know // which config it will return (since there can be only one). - configs[0] = MAKE_CONFIG(i, index); + if (configs) { + configs[0] = MAKE_CONFIG(i, index); + } *num_config = 1; } } @@ -798,19 +799,23 @@ EGLBoolean eglChooseConfig( EGLDisplay dpy, const EGLint *attrib_list, if (cnx->dso) { if (cnx->hooks->egl.eglChooseConfig( dp->dpys[i], attrib_list, configs, config_size, &n)) { - // now we need to convert these client EGLConfig to our - // internal EGLConfig format. This is done in O(n log n). - for (int j=0 ; j( - dp->configs[i], 0, dp->numConfigs[i]-1, configs[j]); - if (index >= 0) { - configs[j] = MAKE_CONFIG(i, index); - } else { - return setError(EGL_BAD_CONFIG, EGL_FALSE); + if (configs) { + // now we need to convert these client EGLConfig to our + // internal EGLConfig format. This is done in O(n log n). + for (int j=0 ; j( + dp->configs[i], 0, dp->numConfigs[i]-1, configs[j]); + if (index >= 0) { + if (configs) { + configs[j] = MAKE_CONFIG(i, index); + } + } else { + return setError(EGL_BAD_CONFIG, EGL_FALSE); + } } + configs += n; + config_size -= n; } - configs += n; - config_size -= n; *num_config += n; res = EGL_TRUE; } -- cgit v1.2.3-59-g8ed1b From c2310f32b0a1373012fd4a2db8cebdb46507b901 Mon Sep 17 00:00:00 2001 From: Jack Palevich <> Date: Tue, 24 Mar 2009 22:49:06 -0700 Subject: Automated import from //branches/donutburger/...@142486,142486 --- api/current.xml | 75 ++++++++- opengl/java/android/opengl/GLSurfaceView.java | 214 +++++++++++++++++++++++--- 2 files changed, 262 insertions(+), 27 deletions(-) diff --git a/api/current.xml b/api/current.xml index 706989a88834..2b2673085675 100644 --- a/api/current.xml +++ b/api/current.xml @@ -73401,6 +73401,55 @@ + + + + + + + + + + + + + + + + + + + + + + - - - + + + - - + + + + + * The supplied configChooser will be used to choose a configuration. + * @param configChooser + */ + public void setEGLConfigChooser(EGLConfigChooser configChooser) { + if (mGLThread != null) { + throw new IllegalStateException( + "setRenderer has already been called for this instance."); + } + mEGLConfigChooser = configChooser; + } + + /** + * Set the EGLConfigChooser associated with this view. If this method is + * called, it must be called before {@link #setRenderer(Renderer)} + * is called. + *

    + * This method installs a config chooser which will choose a config + * as close to 16-bit RGB as possible, with or without an optional depth + * buffer as close to 16-bits as possible. + *

    + * If no setEGLConfigChooser method is called, then by default the + * view will choose a config as close to 16-bit RGB as possible, with + * a depth buffer as close to 16-bits as possible. + * + * @param needDepth + */ + public void setEGLConfigChooser(boolean needDepth) { + setEGLConfigChooser(new SimpleEGLConfigChooser(needDepth)); + } + + /** + * Set the EGLConfigChooser associated with this view. If this method is + * called, it must be called before {@link #setRenderer(Renderer)} + * is called. + *

    + * This method installs a config chooser which will choose a config + * with at least the specified component sizes, and as close + * to the specified component sizes as possible. + * + */ + public void setEGLConfigChooser(int redSize, int greenSize, int blueSize, + int alphaSize, int depthSize, int stencilSize) { + setEGLConfigChooser(new ComponentSizeChooser(redSize, greenSize, + blueSize, alphaSize, depthSize, stencilSize)); + } /** * Set the rendering mode. When the renderMode is * RENDERMODE_CONTINUOUSLY, the renderer is called @@ -199,11 +253,6 @@ public class GLSurfaceView extends SurfaceView implements SurfaceHolder.Callback * A generic renderer interface. */ public interface Renderer { - /** - * @return the EGL configuration specification desired by the renderer. - */ - int[] getConfigSpec(); - /** * Surface created. * Called when the surface is created. Called when the application @@ -234,6 +283,140 @@ public class GLSurfaceView extends SurfaceView implements SurfaceHolder.Callback void onDrawFrame(GL10 gl); } + /** + * An interface for choosing a configuration from a list of + * potential configurations. + * + */ + public interface EGLConfigChooser { + /** + * Choose a configuration from the list. Implementors typically + * implement this method by calling + * {@link EGL10#eglChooseConfig} and iterating through the results. + * @param egl the EGL10 for the current display. + * @param display the current display. + * @return the chosen configuration. + */ + EGLConfig chooseConfig(EGL10 egl, EGLDisplay display); + } + + private static abstract class BaseConfigChooser + implements EGLConfigChooser { + public BaseConfigChooser(int[] configSpec) { + mConfigSpec = configSpec; + } + public EGLConfig chooseConfig(EGL10 egl, EGLDisplay display) { + int[] num_config = new int[1]; + egl.eglChooseConfig(display, mConfigSpec, null, 0, num_config); + + int numConfigs = num_config[0]; + + if (numConfigs <= 0) { + throw new IllegalArgumentException( + "No configs match configSpec"); + } + + EGLConfig[] configs = new EGLConfig[numConfigs]; + egl.eglChooseConfig(display, mConfigSpec, configs, numConfigs, + num_config); + EGLConfig config = chooseConfig(egl, display, configs); + if (config == null) { + throw new IllegalArgumentException("No config chosen"); + } + return config; + } + + abstract EGLConfig chooseConfig(EGL10 egl, EGLDisplay display, + EGLConfig[] configs); + + protected int[] mConfigSpec; + } + + private static class ComponentSizeChooser extends BaseConfigChooser { + public ComponentSizeChooser(int redSize, int greenSize, int blueSize, + int alphaSize, int depthSize, int stencilSize) { + super(new int[] { + EGL10.EGL_RED_SIZE, redSize, + EGL10.EGL_GREEN_SIZE, greenSize, + EGL10.EGL_BLUE_SIZE, blueSize, + EGL10.EGL_ALPHA_SIZE, alphaSize, + EGL10.EGL_DEPTH_SIZE, depthSize, + EGL10.EGL_STENCIL_SIZE, stencilSize, + EGL10.EGL_NONE}); + mValue = new int[1]; + mRedSize = redSize; + mGreenSize = greenSize; + mBlueSize = blueSize; + mAlphaSize = alphaSize; + mDepthSize = depthSize; + mStencilSize = stencilSize; + } + + @Override + public EGLConfig chooseConfig(EGL10 egl, EGLDisplay display, + EGLConfig[] configs) { + EGLConfig closestConfig = null; + int closestDistance = 1000; + for(EGLConfig config : configs) { + int r = findConfigAttrib(egl, display, config, + EGL10.EGL_RED_SIZE, 0); + int g = findConfigAttrib(egl, display, config, + EGL10.EGL_GREEN_SIZE, 0); + int b = findConfigAttrib(egl, display, config, + EGL10.EGL_BLUE_SIZE, 0); + int a = findConfigAttrib(egl, display, config, + EGL10.EGL_ALPHA_SIZE, 0); + int d = findConfigAttrib(egl, display, config, + EGL10.EGL_DEPTH_SIZE, 0); + int s = findConfigAttrib(egl, display, config, + EGL10.EGL_STENCIL_SIZE, 0); + int distance = Math.abs(r - mRedSize) + + Math.abs(g - mGreenSize) + + Math.abs(b - mBlueSize) + Math.abs(a - mAlphaSize) + + Math.abs(d - mDepthSize) + Math.abs(s - mStencilSize); + if (distance < closestDistance) { + closestDistance = distance; + closestConfig = config; + } + } + return closestConfig; + } + + private int findConfigAttrib(EGL10 egl, EGLDisplay display, + EGLConfig config, int attribute, int defaultValue) { + + if (egl.eglGetConfigAttrib(display, config, attribute, mValue)) { + return mValue[0]; + } + return defaultValue; + } + + private int[] mValue; + // Subclasses can adjust these values: + protected int mRedSize; + protected int mGreenSize; + protected int mBlueSize; + protected int mAlphaSize; + protected int mDepthSize; + protected int mStencilSize; + } + + /** + * This class will choose a supported surface as close to + * RGB565 as possible, with or without a depth buffer. + * + */ + private static class SimpleEGLConfigChooser extends ComponentSizeChooser { + public SimpleEGLConfigChooser(boolean withDepthBuffer) { + super(4, 4, 4, 0, withDepthBuffer ? 16 : 0, 0); + // Adjust target values. This way we'll accept a 4444 or + // 555 buffer if there's no 565 buffer available. + mRedSize = 5; + mGreenSize = 6; + mBlueSize = 5; + } + } + /** * An EGL helper class. */ @@ -247,7 +430,7 @@ public class GLSurfaceView extends SurfaceView implements SurfaceHolder.Callback * Initialize EGL for a given configuration spec. * @param configSpec */ - public void start(int[] configSpec){ + public void start(){ /* * Get an EGL instance */ @@ -263,12 +446,7 @@ public class GLSurfaceView extends SurfaceView implements SurfaceHolder.Callback */ int[] version = new int[2]; mEgl.eglInitialize(mEglDisplay, version); - - EGLConfig[] configs = new EGLConfig[1]; - int[] num_config = new int[1]; - mEgl.eglChooseConfig(mEglDisplay, configSpec, configs, 1, - num_config); - mEglConfig = configs[0]; + mEglConfig = mEGLConfigChooser.chooseConfig(mEgl, mEglDisplay); /* * Create an OpenGL ES context. This must be done only once, an @@ -418,12 +596,7 @@ public class GLSurfaceView extends SurfaceView implements SurfaceHolder.Callback private void guardedRun() throws InterruptedException { mEglHelper = new EglHelper(); - /* - * Specify a configuration for our opengl session - * and grab the first configuration that matches is - */ - int[] configSpec = mRenderer.getConfigSpec(); - mEglHelper.start(configSpec); + mEglHelper.start(); GL10 gl = null; boolean tellRendererSurfaceCreated = true; @@ -463,7 +636,7 @@ public class GLSurfaceView extends SurfaceView implements SurfaceHolder.Callback mRequestRender = false; } if (needStart) { - mEglHelper.start(configSpec); + mEglHelper.start(); tellRendererSurfaceCreated = true; changed = true; } @@ -656,6 +829,7 @@ public class GLSurfaceView extends SurfaceView implements SurfaceHolder.Callback private boolean mSizeChanged = true; private GLThread mGLThread; + private EGLConfigChooser mEGLConfigChooser; private GLWrapper mGLWrapper; private int mDebugFlags; } -- cgit v1.2.3-59-g8ed1b From 8c0d68f6695f4a0c98c12314eea81afcd59ea52d Mon Sep 17 00:00:00 2001 From: Romain Guy <> Date: Tue, 24 Mar 2009 22:49:43 -0700 Subject: Automated import from //branches/donutburger/...@142490,142490 --- core/res/res/values/public.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml index 09012c92f9ed..d691702b4d13 100644 --- a/core/res/res/values/public.xml +++ b/core/res/res/values/public.xml @@ -1051,7 +1051,7 @@ - -- cgit v1.2.3-59-g8ed1b From 52fc2180fa535d12838498e877b6d7557c4024dd Mon Sep 17 00:00:00 2001 From: Daisuke Miyakawa <> Date: Tue, 24 Mar 2009 22:52:27 -0700 Subject: Automated import from //branches/donutburger/...@142509,142509 --- core/java/android/syncml/pim/PropertyNode.java | 137 +- core/java/android/syncml/pim/VBuilder.java | 13 +- core/java/android/syncml/pim/VDataBuilder.java | 220 +++- .../java/android/syncml/pim/vcard/VCardParser.java | 3 +- .../android/syncml/pim/vcard/VCardParser_V21.java | 1379 ++++++++------------ .../android/syncml/pim/vcard/VCardParser_V30.java | 348 +++-- .../syncml/pim/vcard/VCardVersionException.java | 29 + tests/AndroidTests/res/raw/v21_backslash.vcf | 5 + tests/AndroidTests/res/raw/v21_complicated.vcf | 106 ++ tests/AndroidTests/res/raw/v21_japanese_1.vcf | 6 + tests/AndroidTests/res/raw/v21_japanese_2.vcf | 10 + tests/AndroidTests/res/raw/v21_multiple_entry.vcf | 33 + tests/AndroidTests/res/raw/v21_simple.vcf | 4 + tests/AndroidTests/res/raw/v30_simple.vcf | 13 + .../src/com/android/unit_tests/VCardTests.java | 773 +++++++++++ 15 files changed, 2069 insertions(+), 1010 deletions(-) create mode 100644 core/java/android/syncml/pim/vcard/VCardVersionException.java create mode 100644 tests/AndroidTests/res/raw/v21_backslash.vcf create mode 100644 tests/AndroidTests/res/raw/v21_complicated.vcf create mode 100644 tests/AndroidTests/res/raw/v21_japanese_1.vcf create mode 100644 tests/AndroidTests/res/raw/v21_japanese_2.vcf create mode 100644 tests/AndroidTests/res/raw/v21_multiple_entry.vcf create mode 100644 tests/AndroidTests/res/raw/v21_simple.vcf create mode 100644 tests/AndroidTests/res/raw/v30_simple.vcf create mode 100644 tests/AndroidTests/src/com/android/unit_tests/VCardTests.java diff --git a/core/java/android/syncml/pim/PropertyNode.java b/core/java/android/syncml/pim/PropertyNode.java index 13d4930c8f82..cc5249905efe 100644 --- a/core/java/android/syncml/pim/PropertyNode.java +++ b/core/java/android/syncml/pim/PropertyNode.java @@ -16,25 +16,142 @@ package android.syncml.pim; -import java.util.ArrayList; -import java.util.Collection; - import android.content.ContentValues; +import android.util.Log; + +import java.util.Arrays; +import java.util.HashSet; +import java.util.List; +import java.util.Set; public class PropertyNode { public String propName; - public String propValue = ""; + public String propValue; - public Collection propValue_vector; + public List propValue_vector; - /** Store value as byte[],after decode. */ - public byte[] propValue_byts; + /** Store value as byte[],after decode. + * Used when propValue is encoded by something like BASE64, QUOTED-PRINTABLE, etc. + */ + public byte[] propValue_bytes; - /** param store: key=paramType, value=paramValue */ - public ContentValues paraMap = new ContentValues(); + /** param store: key=paramType, value=paramValue + * Note that currently PropertyNode class does not support multiple param-values + * defined in vCard 3.0 (See also RFC 2426). multiple-values are stored as + * one String value like "A,B", not ["A", "B"]... + * TODO: fix this. + */ + public ContentValues paramMap; /** Only for TYPE=??? param store. */ - public ArrayList paraMap_TYPE = new ArrayList(); + public Set paramMap_TYPE; + + /** Store group values. Used only in VCard. */ + public Set propGroupSet; + + public PropertyNode() { + propValue = ""; + paramMap = new ContentValues(); + paramMap_TYPE = new HashSet(); + propGroupSet = new HashSet(); + } + + public PropertyNode( + String propName, String propValue, List propValue_vector, + byte[] propValue_bytes, ContentValues paramMap, Set paramMap_TYPE, + Set propGroupSet) { + this.propName = propName; + if (propValue != null) { + this.propValue = propValue; + } else { + this.propValue = ""; + } + this.propValue_vector = propValue_vector; + this.propValue_bytes = propValue_bytes; + if (paramMap != null) { + this.paramMap = paramMap; + } else { + this.paramMap = new ContentValues(); + } + if (paramMap_TYPE != null) { + this.paramMap_TYPE = paramMap_TYPE; + } else { + this.paramMap_TYPE = new HashSet(); + } + if (propGroupSet != null) { + this.propGroupSet = propGroupSet; + } else { + this.propGroupSet = new HashSet(); + } + } + + @Override + public boolean equals(Object obj) { + if (!(obj instanceof PropertyNode)) { + return false; + } + + PropertyNode node = (PropertyNode)obj; + + if (propName == null || !propName.equals(node.propName)) { + return false; + } else if (!paramMap.equals(node.paramMap)) { + return false; + } else if (!paramMap_TYPE.equals(node.paramMap_TYPE)) { + return false; + } else if (!propGroupSet.equals(node.propGroupSet)) { + return false; + } + + if (propValue_bytes != null && Arrays.equals(propValue_bytes, node.propValue_bytes)) { + return true; + } else { + // Log.d("@@@", propValue + ", " + node.propValue); + if (!propValue.equals(node.propValue)) { + return false; + } + + // The value in propValue_vector is not decoded even if it should be + // decoded by BASE64 or QUOTED-PRINTABLE. When the size of propValue_vector + // is 1, the encoded value is stored in propValue, so we do not have to + // check it. + if (propValue_vector != null) { + // Log.d("@@@", "===" + propValue_vector + ", " + node.propValue_vector); + return (propValue_vector.equals(node.propValue_vector) || + (propValue_vector.size() == 1)); + } else if (node.propValue_vector != null) { + // Log.d("@@@", "===" + propValue_vector + ", " + node.propValue_vector); + return (node.propValue_vector.equals(propValue_vector) || + (node.propValue_vector.size() == 1)); + } else { + return true; + } + } + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + builder.append("propName: "); + builder.append(propName); + builder.append(", paramMap: "); + builder.append(paramMap.toString()); + builder.append(", propmMap_TYPE: "); + builder.append(paramMap_TYPE.toString()); + builder.append(", propGroupSet: "); + builder.append(propGroupSet.toString()); + if (propValue_vector != null && propValue_vector.size() > 1) { + builder.append(", propValue_vector size: "); + builder.append(propValue_vector.size()); + } + if (propValue_bytes != null) { + builder.append(", propValue_bytes size: "); + builder.append(propValue_bytes.length); + } + builder.append(", propValue: "); + builder.append(propValue); + return builder.toString(); + } } diff --git a/core/java/android/syncml/pim/VBuilder.java b/core/java/android/syncml/pim/VBuilder.java index 822c2cef034b..452864526608 100644 --- a/core/java/android/syncml/pim/VBuilder.java +++ b/core/java/android/syncml/pim/VBuilder.java @@ -16,7 +16,7 @@ package android.syncml.pim; -import java.util.Collection; +import java.util.List; public interface VBuilder { void start(); @@ -37,10 +37,15 @@ public interface VBuilder { void endProperty(); + /** + * @param group + */ + void propertyGroup(String group); + /** * @param name - * a.N
    - * a.N + * N
    + * N */ void propertyName(String name); @@ -58,5 +63,5 @@ public interface VBuilder { */ void propertyParamValue(String value); - void propertyValues(Collection values); + void propertyValues(List values); } diff --git a/core/java/android/syncml/pim/VDataBuilder.java b/core/java/android/syncml/pim/VDataBuilder.java index f0a0cb9be633..8c67cf5bfa03 100644 --- a/core/java/android/syncml/pim/VDataBuilder.java +++ b/core/java/android/syncml/pim/VDataBuilder.java @@ -16,11 +16,19 @@ package android.syncml.pim; +import android.content.ContentValues; +import android.util.Log; + import org.apache.commons.codec.binary.Base64; import org.apache.commons.codec.net.QuotedPrintableCodec; +import java.io.UnsupportedEncodingException; +import java.nio.ByteBuffer; +import java.nio.charset.Charset; import java.util.ArrayList; import java.util.Collection; +import java.util.List; +import java.util.Vector; /** * Store the parse result to custom datastruct: VNode, PropertyNode @@ -29,14 +37,32 @@ import java.util.Collection; * PropertyNode: standy by a property line of a card. */ public class VDataBuilder implements VBuilder { + static private String LOG_TAG = "VDATABuilder"; /** type=VNode */ - public ArrayList vNodeList = new ArrayList(); - int nodeListPos = 0; - VNode curVNode; - PropertyNode curPropNode; - String curParamType; + public List vNodeList = new ArrayList(); + private int mNodeListPos = 0; + private VNode mCurrentVNode; + private PropertyNode mCurrentPropNode; + private String mCurrentParamType; + + /** + * Assumes that each String can be encoded into byte array using this encoding. + */ + private String mCharset; + + private boolean mStrictLineBreakParsing; + + public VDataBuilder() { + mCharset = "ISO-8859-1"; + mStrictLineBreakParsing = false; + } + public VDataBuilder(String encoding, boolean strictLineBreakParsing) { + mCharset = encoding; + mStrictLineBreakParsing = strictLineBreakParsing; + } + public void start() { } @@ -48,79 +74,171 @@ public class VDataBuilder implements VBuilder { vnode.parseStatus = 1; vnode.VName = type; vNodeList.add(vnode); - nodeListPos = vNodeList.size()-1; - curVNode = vNodeList.get(nodeListPos); + mNodeListPos = vNodeList.size()-1; + mCurrentVNode = vNodeList.get(mNodeListPos); } public void endRecord() { - VNode endNode = vNodeList.get(nodeListPos); + VNode endNode = vNodeList.get(mNodeListPos); endNode.parseStatus = 0; - while(nodeListPos > 0){ - nodeListPos--; - if((vNodeList.get(nodeListPos)).parseStatus == 1) + while(mNodeListPos > 0){ + mNodeListPos--; + if((vNodeList.get(mNodeListPos)).parseStatus == 1) break; } - curVNode = vNodeList.get(nodeListPos); + mCurrentVNode = vNodeList.get(mNodeListPos); } public void startProperty() { - // System.out.println("+ startProperty. "); + // System.out.println("+ startProperty. "); } public void endProperty() { - // System.out.println("- endProperty. "); + // System.out.println("- endProperty. "); } - + public void propertyName(String name) { - curPropNode = new PropertyNode(); - curPropNode.propName = name; + mCurrentPropNode = new PropertyNode(); + mCurrentPropNode.propName = name; } + // Used only in VCard. + public void propertyGroup(String group) { + mCurrentPropNode.propGroupSet.add(group); + } + public void propertyParamType(String type) { - curParamType = type; + mCurrentParamType = type; } public void propertyParamValue(String value) { - if(curParamType == null) - curPropNode.paraMap_TYPE.add(value); - else if(curParamType.equalsIgnoreCase("TYPE")) - curPropNode.paraMap_TYPE.add(value); - else - curPropNode.paraMap.put(curParamType, value); - - curParamType = null; - } - - public void propertyValues(Collection values) { - curPropNode.propValue_vector = values; - curPropNode.propValue = listToString(values); - //decode value string to propValue_byts - if(curPropNode.paraMap.containsKey("ENCODING")){ - if(curPropNode.paraMap.getAsString("ENCODING"). - equalsIgnoreCase("BASE64")){ - curPropNode.propValue_byts = - Base64.decodeBase64(curPropNode.propValue. + if (mCurrentParamType == null || + mCurrentParamType.equalsIgnoreCase("TYPE")) { + mCurrentPropNode.paramMap_TYPE.add(value); + } else { + mCurrentPropNode.paramMap.put(mCurrentParamType, value); + } + + mCurrentParamType = null; + } + + private String encodeString(String originalString, String targetEncoding) { + Charset charset = Charset.forName(mCharset); + ByteBuffer byteBuffer = charset.encode(originalString); + // byteBuffer.array() "may" return byte array which is larger than + // byteBuffer.remaining(). Here, we keep on the safe side. + byte[] bytes = new byte[byteBuffer.remaining()]; + byteBuffer.get(bytes); + try { + return new String(bytes, targetEncoding); + } catch (UnsupportedEncodingException e) { + return null; + } + } + + public void propertyValues(List values) { + ContentValues paramMap = mCurrentPropNode.paramMap; + + String charsetString = paramMap.getAsString("CHARSET"); + + boolean setupParamValues = false; + //decode value string to propValue_bytes + if (paramMap.containsKey("ENCODING")) { + String encoding = paramMap.getAsString("ENCODING"); + if (encoding.equalsIgnoreCase("BASE64") || + encoding.equalsIgnoreCase("B")) { + if (values.size() > 1) { + Log.e(LOG_TAG, + ("BASE64 encoding is used while " + + "there are multiple values (" + values.size())); + } + mCurrentPropNode.propValue_bytes = + Base64.decodeBase64(values.get(0). replaceAll(" ","").replaceAll("\t",""). replaceAll("\r\n",""). getBytes()); } - if(curPropNode.paraMap.getAsString("ENCODING"). - equalsIgnoreCase("QUOTED-PRINTABLE")){ + + if(encoding.equalsIgnoreCase("QUOTED-PRINTABLE")){ + // if CHARSET is defined, we translate each String into the Charset. + List tmpValues = new ArrayList(); + Vector byteVector = new Vector(); + int size = 0; try{ - curPropNode.propValue_byts = - QuotedPrintableCodec.decodeQuotedPrintable( - curPropNode.propValue. - replaceAll("= ", " ").replaceAll("=\t", "\t"). - getBytes() ); - curPropNode.propValue = - new String(curPropNode.propValue_byts); - }catch(Exception e){ - System.out.println("=Decode quoted-printable exception."); - e.printStackTrace(); + for (String value : values) { + String quotedPrintable = value + .replaceAll("= ", " ").replaceAll("=\t", "\t"); + String[] lines; + if (mStrictLineBreakParsing) { + lines = quotedPrintable.split("\r\n"); + } else { + lines = quotedPrintable + .replace("\r\n", "\n").replace("\r", "\n").split("\n"); + } + StringBuilder builder = new StringBuilder(); + for (String line : lines) { + if (line.endsWith("=")) { + line = line.substring(0, line.length() - 1); + } + builder.append(line); + } + byte[] bytes = QuotedPrintableCodec.decodeQuotedPrintable( + builder.toString().getBytes()); + if (charsetString != null) { + try { + tmpValues.add(new String(bytes, charsetString)); + } catch (UnsupportedEncodingException e) { + Log.e(LOG_TAG, "Failed to encode: charset=" + charsetString); + tmpValues.add(new String(bytes)); + } + } else { + tmpValues.add(new String(bytes)); + } + byteVector.add(bytes); + size += bytes.length; + } // for (String value : values) { + mCurrentPropNode.propValue_vector = tmpValues; + mCurrentPropNode.propValue = listToString(tmpValues); + + mCurrentPropNode.propValue_bytes = new byte[size]; + + { + byte[] tmpBytes = mCurrentPropNode.propValue_bytes; + int index = 0; + for (byte[] bytes : byteVector) { + int length = bytes.length; + for (int i = 0; i < length; i++, index++) { + tmpBytes[index] = bytes[i]; + } + } + } + setupParamValues = true; + } catch(Exception e) { + Log.e(LOG_TAG, "Failed to decode quoted-printable: " + e); } + } // QUOTED-PRINTABLE + } // ENCODING + + if (!setupParamValues) { + // if CHARSET is defined, we translate each String into the Charset. + if (charsetString != null) { + List tmpValues = new ArrayList(); + for (String value : values) { + String result = encodeString(value, charsetString); + if (result != null) { + tmpValues.add(result); + } else { + Log.e(LOG_TAG, "Failed to encode: charset=" + charsetString); + tmpValues.add(value); + } + } + values = tmpValues; } + + mCurrentPropNode.propValue_vector = values; + mCurrentPropNode.propValue = listToString(values); } - curVNode.propList.add(curPropNode); + mCurrentVNode.propList.add(mCurrentPropNode); } private String listToString(Collection list){ @@ -134,7 +252,7 @@ public class VDataBuilder implements VBuilder { } return typeListB.toString(); } - + public String getResult(){ return null; } diff --git a/core/java/android/syncml/pim/vcard/VCardParser.java b/core/java/android/syncml/pim/vcard/VCardParser.java index 3926243c3aad..6dad852d1e56 100644 --- a/core/java/android/syncml/pim/vcard/VCardParser.java +++ b/core/java/android/syncml/pim/vcard/VCardParser.java @@ -26,7 +26,8 @@ import java.io.IOException; public class VCardParser { - VParser mParser = null; + // TODO: fix this. + VCardParser_V21 mParser = null; public final static String VERSION_VCARD21 = "vcard2.1"; diff --git a/core/java/android/syncml/pim/vcard/VCardParser_V21.java b/core/java/android/syncml/pim/vcard/VCardParser_V21.java index b6fa03291360..f853c5e383fa 100644 --- a/core/java/android/syncml/pim/vcard/VCardParser_V21.java +++ b/core/java/android/syncml/pim/vcard/VCardParser_V21.java @@ -16,21 +16,24 @@ package android.syncml.pim.vcard; -import android.syncml.pim.VParser; +import android.syncml.pim.VBuilder; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; -import java.util.regex.Matcher; import java.util.regex.Pattern; /** * This class is used to parse vcard. Please refer to vCard Specification 2.1 */ -public class VCardParser_V21 extends VParser { +public class VCardParser_V21 { /** Store the known-type */ - private static final HashSet mKnownTypeSet = new HashSet( + private static final HashSet sKnownTypeSet = new HashSet( Arrays.asList("DOM", "INTL", "POSTAL", "PARCEL", "HOME", "WORK", "PREF", "VOICE", "FAX", "MSG", "CELL", "PAGER", "BBS", "MODEM", "CAR", "ISDN", "VIDEO", "AOL", "APPLELINK", @@ -39,13 +42,40 @@ public class VCardParser_V21 extends VParser { "CGM", "WMF", "BMP", "MET", "PMB", "DIB", "PICT", "TIFF", "PDF", "PS", "JPEG", "QTIME", "MPEG", "MPEG2", "AVI", "WAVE", "AIFF", "PCM", "X509", "PGP")); - - /** Store the name */ - private static final HashSet mName = new HashSet(Arrays - .asList("LOGO", "PHOTO", "LABEL", "FN", "TITLE", "SOUND", - "VERSION", "TEL", "EMAIL", "TZ", "GEO", "NOTE", "URL", - "BDAY", "ROLE", "REV", "UID", "KEY", "MAILER")); - + + /** Store the known-value */ + private static final HashSet sKnownValueSet = new HashSet( + Arrays.asList("INLINE", "URL", "CONTENT-ID", "CID")); + + /** Store the property name available in vCard 2.1 */ + // NICKNAME is not supported in vCard 2.1, but some vCard may contain. + private static final HashSet sAvailablePropertyNameV21 = + new HashSet(Arrays.asList( + "LOGO", "PHOTO", "LABEL", "FN", "TITLE", "SOUND", + "VERSION", "TEL", "EMAIL", "TZ", "GEO", "NOTE", "URL", + "BDAY", "ROLE", "REV", "UID", "KEY", "MAILER", + "NICKNAME")); + + // Though vCard 2.1 specification does not allow "B" encoding, some data may have it. + // We allow it for safety... + private static final HashSet sAvailableEncodingV21 = + new HashSet(Arrays.asList( + "7BIT", "8BIT", "QUOTED-PRINTABLE", "BASE64", "B")); + + // Used only for parsing END:VCARD. + private String mPreviousLine; + + /** The builder to build parsed data */ + protected VBuilder mBuilder = null; + + /** The encoding type */ + protected String mEncoding = null; + + protected final String sDefaultEncoding = "8BIT"; + + // Should not directly read a line from this. Use getLine() instead. + protected BufferedReader mReader; + /** * Create a new VCard parser. */ @@ -55,916 +85,597 @@ public class VCardParser_V21 extends VParser { /** * Parse the file at the given position - * - * @param offset - * the given position to parse - * @return vcard length + * vcard_file = [wsls] vcard [wsls] */ - protected int parseVFile(int offset) { - return parseVCardFile(offset); + protected void parseVCardFile() throws IOException, VCardException { + while (parseOneVCard()) { + } } + protected String getVersion() { + return "2.1"; + } + /** - * [wsls] vcard [wsls] + * @return true when the propertyName is a valid property name. */ - int parseVCardFile(int offset) { - int ret = 0, sum = 0; - - /* remove \t \r\n */ - while ((ret = parseWsls(offset)) != PARSE_ERROR) { - offset += ret; - sum += ret; - } - - ret = parseVCard(offset); // BEGIN:VCARD ... END:VCARD - if (ret != PARSE_ERROR) { - offset += ret; - sum += ret; - } else { - return PARSE_ERROR; - } + protected boolean isValidPropertyName(String propertyName) { + return sAvailablePropertyNameV21.contains(propertyName.toUpperCase()); + } - /* remove \t \r\n */ - while ((ret = parseWsls(offset)) != PARSE_ERROR) { - offset += ret; - sum += ret; + /** + * @return true when the encoding is a valid encoding. + */ + protected boolean isValidEncoding(String encoding) { + return sAvailableEncodingV21.contains(encoding.toUpperCase()); + } + + /** + * @return String. It may be null, or its length may be 0 + * @throws IOException + */ + protected String getLine() throws IOException { + return mReader.readLine(); + } + + /** + * @return String with it's length > 0 + * @throws IOException + * @throws VCardException when the stream reached end of line + */ + protected String getNonEmptyLine() throws IOException, VCardException { + String line; + while (true) { + line = getLine(); + if (line == null) { + throw new VCardException("Reached end of buffer."); + } else if (line.trim().length() > 0) { + return line; + } } - return sum; } - + /** - * "BEGIN" [ws] ":" [ws] "VCARD" [ws] 1*CRLF items *CRLF "END" [ws] ":" - * "VCARD" + * vcard = "BEGIN" [ws] ":" [ws] "VCARD" [ws] 1*CRLF + * items *CRLF + * "END" [ws] ":" [ws] "VCARD" */ - private int parseVCard(int offset) { - int ret = 0, sum = 0; - - /* BEGIN */ - ret = parseString(offset, "BEGIN", false); - if (ret == PARSE_ERROR) { - return PARSE_ERROR; + private boolean parseOneVCard() throws IOException, VCardException { + if (!readBeginVCard()) { + return false; } - offset += ret; - sum += ret; - - /* [ws] */ - ret = removeWs(offset); - offset += ret; - sum += ret; - - /* colon */ - ret = parseString(offset, ":", false); - if (ret == PARSE_ERROR) { - return PARSE_ERROR; + parseItems(); + readEndVCard(); + return true; + } + + /** + * @return True when successful. False when reaching the end of line + * @throws IOException + * @throws VCardException + */ + protected boolean readBeginVCard() throws IOException, VCardException { + String line; + while (true) { + line = getLine(); + if (line == null) { + return false; + } else if (line.trim().length() > 0) { + break; + } } - offset += ret; - sum += ret; - - /* [ws] */ - ret = removeWs(offset); - offset += ret; - sum += ret; - - /* VCARD */ - ret = parseString(offset, "VCARD", false); - if (ret == PARSE_ERROR) { - return PARSE_ERROR; + String[] strArray = line.split(":", 2); + + // Though vCard specification does not allow lower cases, + // some data may have them, so we allow it. + if (!(strArray.length == 2 && + strArray[0].trim().equalsIgnoreCase("BEGIN") && + strArray[1].trim().equalsIgnoreCase("VCARD"))) { + throw new VCardException("BEGIN:VCARD != \"" + line + "\""); } - offset += ret; - sum += ret; + if (mBuilder != null) { mBuilder.startRecord("VCARD"); } - /* [ws] */ - ret = removeWs(offset); - offset += ret; - sum += ret; - - /* 1*CRLF */ - ret = parseCrlf(offset); - if (ret == PARSE_ERROR) { - return PARSE_ERROR; - } - offset += ret; - sum += ret; - while ((ret = parseCrlf(offset)) != PARSE_ERROR) { - offset += ret; - sum += ret; - } - - ret = parseItems(offset); - if (ret == PARSE_ERROR) { - return PARSE_ERROR; - } - offset += ret; - sum += ret; - - /* *CRLF */ - while ((ret = parseCrlf(offset)) != PARSE_ERROR) { - offset += ret; - sum += ret; - } - - /* END */ - ret = parseString(offset, "END", false); - if (ret == PARSE_ERROR) { - return PARSE_ERROR; - } - offset += ret; - sum += ret; - - /* [ws] */ - ret = removeWs(offset); - offset += ret; - sum += ret; - - /* colon */ - ret = parseString(offset, ":", false); - if (ret == PARSE_ERROR) { - return PARSE_ERROR; - } - offset += ret; - sum += ret; - - /* [ws] */ - ret = removeWs(offset); - offset += ret; - sum += ret; - - /* VCARD */ - ret = parseString(offset, "VCARD", false); - if (ret == PARSE_ERROR) { - return PARSE_ERROR; - } - // offset += ret; - sum += ret; + return true; + } + + protected void readEndVCard() throws VCardException { + // Though vCard specification does not allow lower cases, + // some data may have them, so we allow it. + String[] strArray = mPreviousLine.split(":", 2); + if (!(strArray.length == 2 && + strArray[0].trim().equalsIgnoreCase("END") && + strArray[1].trim().equalsIgnoreCase("VCARD"))) { + throw new VCardException("END:VCARD != \"" + mPreviousLine + "\""); + } + if (mBuilder != null) { mBuilder.endRecord(); } - - return sum; } - + /** - * items *CRLF item / item + * items = *CRLF item + * / item */ - private int parseItems(int offset) { + protected void parseItems() throws IOException, VCardException { /* items *CRLF item / item */ - int ret = 0, sum = 0; - + boolean ended = false; + if (mBuilder != null) { mBuilder.startProperty(); } - ret = parseItem(offset); - if (ret == PARSE_ERROR) { - return PARSE_ERROR; - } - offset += ret; - sum += ret; - if (mBuilder != null) { - mBuilder.endProperty(); - } - for (;;) { - while ((ret = parseCrlf(offset)) != PARSE_ERROR) { - offset += ret; - sum += ret; + try { + ended = parseItem(); + } finally { + if (mBuilder != null) { + mBuilder.endProperty(); } + } + + while (!ended) { // follow VCARD ,it wont reach endProperty if (mBuilder != null) { mBuilder.startProperty(); } - - ret = parseItem(offset); - if (ret == PARSE_ERROR) { - break; - } - offset += ret; - sum += ret; - if (mBuilder != null) { - mBuilder.endProperty(); + try { + ended = parseItem(); + } finally { + if (mBuilder != null) { + mBuilder.endProperty(); + } } } - - return sum; } /** - * item0 / item1 / item2 + * item = [groups "."] name [params] ":" value CRLF + * / [groups "."] "ADR" [params] ":" addressparts CRLF + * / [groups "."] "ORG" [params] ":" orgparts CRLF + * / [groups "."] "N" [params] ":" nameparts CRLF + * / [groups "."] "AGENT" [params] ":" vcard CRLF */ - private int parseItem(int offset) { - int ret = 0, sum = 0; - mEncoding = mDefaultEncoding; - - ret = parseItem0(offset); - if (ret != PARSE_ERROR) { - sum += ret; - return sum; - } - - ret = parseItem1(offset); - if (ret != PARSE_ERROR) { - sum += ret; - return sum; - } - - ret = parseItem2(offset); - if (ret != PARSE_ERROR) { - sum += ret; - return sum; - } - - return PARSE_ERROR; - } - - /** [groups "."] name [params] ":" value CRLF */ - private int parseItem0(int offset) { - int ret = 0, sum = 0, start = offset; - String proName = "", proValue = ""; - - ret = parseGroupsWithDot(offset); - if (ret != PARSE_ERROR) { - offset += ret; - sum += ret; - } - - ret = parseName(offset); - if (ret == PARSE_ERROR) { - return PARSE_ERROR; - } - offset += ret; - sum += ret; - if (mBuilder != null) { - proName = mBuffer.substring(start, offset).trim(); - mBuilder.propertyName(proName); - } - - ret = parseParams(offset); - if (ret != PARSE_ERROR) { - offset += ret; - sum += ret; - } - - ret = parseString(offset, ":", false); - if (ret == PARSE_ERROR) { - return PARSE_ERROR; - } - offset += ret; - sum += ret; - - start = offset; - ret = parseValue(offset); - if (ret == PARSE_ERROR) { - return PARSE_ERROR; - } - offset += ret; - sum += ret; - proValue = mBuffer.substring(start, offset); - if (proName.equals("VERSION") && !proValue.equals("2.1")) { - return PARSE_ERROR; - } - if (mBuilder != null) { - ArrayList v = new ArrayList(); - v.add(proValue); - mBuilder.propertyValues(v); - } - - ret = parseCrlf(offset); - if (ret == PARSE_ERROR) { - return PARSE_ERROR; - } - sum += ret; - - return sum; - } - - /** "ADR" "ORG" "N" with semi-colon separated content */ - private int parseItem1(int offset) { - int ret = 0, sum = 0, start = offset; - - ret = parseGroupsWithDot(offset); - if (ret != PARSE_ERROR) { - offset += ret; - sum += ret; - } - - if ((ret = parseString(offset, "ADR", true)) == PARSE_ERROR - && (ret = parseString(offset, "ORG", true)) == PARSE_ERROR - && (ret = parseString(offset, "N", true)) == PARSE_ERROR) { - return PARSE_ERROR; - } - offset += ret; - sum += ret; + protected boolean parseItem() throws IOException, VCardException { + mEncoding = sDefaultEncoding; + + // params = ";" [ws] paramlist + String line = getNonEmptyLine(); + String[] strArray = line.split(":", 2); + if (strArray.length < 2) { + throw new VCardException("Invalid line(\":\" does not exist): " + line); + } + String propertyValue = strArray[1]; + String[] groupNameParamsArray = strArray[0].split(";"); + String groupAndName = groupNameParamsArray[0].trim(); + String[] groupNameArray = groupAndName.split("\\."); + int length = groupNameArray.length; + String propertyName = groupNameArray[length - 1]; if (mBuilder != null) { - mBuilder.propertyName(mBuffer.substring(start, offset).trim()); - } - - ret = parseParams(offset); - if (ret != PARSE_ERROR) { - offset += ret; - sum += ret; - } - - ret = parseString(offset, ":", false); - if (ret == PARSE_ERROR) { - return PARSE_ERROR; - } - offset += ret; - sum += ret; - - start = offset; - ret = parseValue(offset); - if (ret == PARSE_ERROR) { - return PARSE_ERROR; - } - offset += ret; - sum += ret; - if (mBuilder != null) { - int end = 0; - ArrayList v = new ArrayList(); - Pattern p = Pattern - .compile("([^;\\\\]*(\\\\[\\\\;:,])*[^;\\\\]*)(;?)"); - Matcher m = p.matcher(mBuffer.substring(start, offset)); - while (m.find()) { - String s = escapeTranslator(m.group(1)); - v.add(s); - end = m.end(); - if (offset == start + end) { - String endValue = m.group(3); - if (";".equals(endValue)) { - v.add(""); - } - break; - } + mBuilder.propertyName(propertyName); + for (int i = 0; i < length - 1; i++) { + mBuilder.propertyGroup(groupNameArray[i]); } - mBuilder.propertyValues(v); } - - ret = parseCrlf(offset); - if (ret == PARSE_ERROR) { - return PARSE_ERROR; - } - sum += ret; - - return sum; + if (propertyName.equalsIgnoreCase("END")) { + mPreviousLine = line; + return true; + } + + length = groupNameParamsArray.length; + for (int i = 1; i < length; i++) { + handleParams(groupNameParamsArray[i]); + } + + if (isValidPropertyName(propertyName) || + propertyName.startsWith("X-")) { + if (propertyName.equals("VERSION") && + !propertyValue.equals(getVersion())) { + throw new VCardVersionException("Incompatible version: " + + propertyValue + " != " + getVersion()); + } + handlePropertyValue(propertyName, propertyValue); + return false; + } else if (propertyName.equals("ADR") || + propertyName.equals("ORG") || + propertyName.equals("N")) { + handleMultiplePropertyValue(propertyName, propertyValue); + return false; + } else if (propertyName.equals("AGENT")) { + handleAgent(propertyValue); + return false; + } + + throw new VCardException("Unknown property name: \"" + + propertyName + "\""); } - /** [groups] "." "AGENT" [params] ":" vcard CRLF */ - private int parseItem2(int offset) { - int ret = 0, sum = 0, start = offset; - - ret = parseGroupsWithDot(offset); - if (ret != PARSE_ERROR) { - offset += ret; - sum += ret; - } - - ret = parseString(offset, "AGENT", true); - if (ret == PARSE_ERROR) { - return PARSE_ERROR; - } - offset += ret; - sum += ret; - if (mBuilder != null) { - mBuilder.propertyName(mBuffer.substring(start, offset)); - } - - ret = parseParams(offset); - if (ret != PARSE_ERROR) { - offset += ret; - sum += ret; - } - - ret = parseString(offset, ":", false); - if (ret == PARSE_ERROR) { - return PARSE_ERROR; - } - offset += ret; - sum += ret; - - ret = parseCrlf(offset); - if (ret != PARSE_ERROR) { - offset += ret; - sum += ret; - } - - ret = parseVCard(offset); - if (ret == PARSE_ERROR) { - return PARSE_ERROR; - } - offset += ret; - sum += ret; - if (mBuilder != null) { - mBuilder.propertyValues(new ArrayList()); - } - - ret = parseCrlf(offset); - if (ret == PARSE_ERROR) { - return PARSE_ERROR; + /** + * params = ";" [ws] paramlist + * paramlist = paramlist [ws] ";" [ws] param + * / param + * param = "TYPE" [ws] "=" [ws] ptypeval + * / "VALUE" [ws] "=" [ws] pvalueval + * / "ENCODING" [ws] "=" [ws] pencodingval + * / "CHARSET" [ws] "=" [ws] charsetval + * / "LANGUAGE" [ws] "=" [ws] langval + * / "X-" word [ws] "=" [ws] word + * / knowntype + */ + protected void handleParams(String params) throws VCardException { + String[] strArray = params.split("=", 2); + if (strArray.length == 2) { + String paramName = strArray[0].trim(); + String paramValue = strArray[1].trim(); + if (paramName.equals("TYPE")) { + handleType(paramValue); + } else if (paramName.equals("VALUE")) { + handleValue(paramValue); + } else if (paramName.equals("ENCODING")) { + handleEncoding(paramValue); + } else if (paramName.equals("CHARSET")) { + handleCharset(paramValue); + } else if (paramName.equals("LANGUAGE")) { + handleLanguage(paramValue); + } else if (paramName.startsWith("X-")) { + handleAnyParam(paramName, paramValue); + } else { + throw new VCardException("Unknown type \"" + paramName + "\""); + } + } else { + handleType(strArray[0]); } - sum += ret; - - return sum; } - - private int parseGroupsWithDot(int offset) { - int ret = 0, sum = 0; - /* [groups "."] */ - ret = parseGroups(offset); - if (ret == PARSE_ERROR) { - return PARSE_ERROR; - } - offset += ret; - sum += ret; - - ret = parseString(offset, ".", false); - if (ret == PARSE_ERROR) { - return PARSE_ERROR; - } - sum += ret; - - return sum; + + /** + * typeval = knowntype / "X-" word + */ + protected void handleType(String ptypeval) throws VCardException { + if (sKnownTypeSet.contains(ptypeval.toUpperCase()) || + ptypeval.startsWith("X-")) { + if (mBuilder != null) { + mBuilder.propertyParamType("TYPE"); + mBuilder.propertyParamValue(ptypeval.toUpperCase()); + } + } else { + throw new VCardException("Unknown type: \"" + ptypeval + "\""); + } } - - /** ";" [ws] paramlist */ - private int parseParams(int offset) { - int ret = 0, sum = 0; - - ret = parseString(offset, ";", false); - if (ret == PARSE_ERROR) { - return PARSE_ERROR; - } - offset += ret; - sum += ret; - - ret = removeWs(offset); - offset += ret; - sum += ret; - - ret = parseParamList(offset); - if (ret == PARSE_ERROR) { - return PARSE_ERROR; + + /** + * pvalueval = "INLINE" / "URL" / "CONTENT-ID" / "CID" / "X-" word + */ + protected void handleValue(String pvalueval) throws VCardException { + if (sKnownValueSet.contains(pvalueval.toUpperCase()) || + pvalueval.startsWith("X-")) { + if (mBuilder != null) { + mBuilder.propertyParamType("VALUE"); + mBuilder.propertyParamValue(pvalueval); + } + } else { + throw new VCardException("Unknown value \"" + pvalueval + "\""); } - sum += ret; - - return sum; } - + /** - * paramlist [ws] ";" [ws] param / param + * pencodingval = "7BIT" / "8BIT" / "QUOTED-PRINTABLE" / "BASE64" / "X-" word */ - private int parseParamList(int offset) { - int ret = 0, sum = 0; - - ret = parseParam(offset); - if (ret == PARSE_ERROR) { - return PARSE_ERROR; - } - offset += ret; - sum += ret; - - int offsetTemp = offset; - int sumTemp = sum; - for (;;) { - ret = removeWs(offsetTemp); - offsetTemp += ret; - sumTemp += ret; - - ret = parseString(offsetTemp, ";", false); - if (ret == PARSE_ERROR) { - return sum; - } - offsetTemp += ret; - sumTemp += ret; - - ret = removeWs(offsetTemp); - offsetTemp += ret; - sumTemp += ret; - - ret = parseParam(offsetTemp); - if (ret == PARSE_ERROR) { - break; + protected void handleEncoding(String pencodingval) throws VCardException { + if (isValidEncoding(pencodingval) || + pencodingval.startsWith("X-")) { + if (mBuilder != null) { + mBuilder.propertyParamType("ENCODING"); + mBuilder.propertyParamValue(pencodingval); } - offsetTemp += ret; - sumTemp += ret; - - // offset = offsetTemp; - sum = sumTemp; + mEncoding = pencodingval; + } else { + throw new VCardException("Unknown encoding \"" + pencodingval + "\""); } - return sum; } - + /** - * param0 / param1 / param2 / param3 / param4 / param5 / knowntype
    - * TYPE / VALUE / ENDCODING / CHARSET / LANGUAGE ... + * vCard specification only allows us-ascii and iso-8859-xxx (See RFC 1521), + * but some vCard contains other charset, so we allow them. */ - private int parseParam(int offset) { - int ret = 0, sum = 0; - - ret = parseParam0(offset); - if (ret != PARSE_ERROR) { - sum += ret; - return sum; - } - - ret = parseParam1(offset); - if (ret != PARSE_ERROR) { - sum += ret; - return sum; - } - - ret = parseParam2(offset); - if (ret != PARSE_ERROR) { - sum += ret; - return sum; - } - - ret = parseParam3(offset); - if (ret != PARSE_ERROR) { - sum += ret; - return sum; - } - - ret = parseParam4(offset); - if (ret != PARSE_ERROR) { - sum += ret; - return sum; - } - - ret = parseParam5(offset); - if (ret != PARSE_ERROR) { - sum += ret; - return sum; - } - - int start = offset; - ret = parseKnownType(offset); - if (ret == PARSE_ERROR) { - return PARSE_ERROR; - } - offset += ret; - sum += ret; + protected void handleCharset(String charsetval) { if (mBuilder != null) { - mBuilder.propertyParamType(null); - mBuilder.propertyParamValue(mBuffer.substring(start, offset)); + mBuilder.propertyParamType("CHARSET"); + mBuilder.propertyParamValue(charsetval); } - - return sum; } - - /** "TYPE" [ws] "=" [ws] ptypeval */ - private int parseParam0(int offset) { - int ret = 0, sum = 0, start = offset; - - ret = parseString(offset, "TYPE", true); - if (ret == PARSE_ERROR) { - return PARSE_ERROR; - } - offset += ret; - sum += ret; - if (mBuilder != null) { - mBuilder.propertyParamType(mBuffer.substring(start, offset)); - } - - ret = removeWs(offset); - offset += ret; - sum += ret; - - ret = parseString(offset, "=", false); - if (ret == PARSE_ERROR) { - return PARSE_ERROR; + + /** + * See also Section 7.1 of RFC 1521 + */ + protected void handleLanguage(String langval) throws VCardException { + String[] strArray = langval.split("-"); + if (strArray.length != 2) { + throw new VCardException("Invalid Language: \"" + langval + "\""); + } + String tmp = strArray[0]; + int length = tmp.length(); + for (int i = 0; i < length; i++) { + if (!isLetter(tmp.charAt(i))) { + throw new VCardException("Invalid Language: \"" + langval + "\""); + } } - offset += ret; - sum += ret; - - ret = removeWs(offset); - offset += ret; - sum += ret; - - start = offset; - ret = parsePTypeVal(offset); - if (ret == PARSE_ERROR) { - return PARSE_ERROR; + tmp = strArray[1]; + length = tmp.length(); + for (int i = 0; i < length; i++) { + if (!isLetter(tmp.charAt(i))) { + throw new VCardException("Invalid Language: \"" + langval + "\""); + } } - offset += ret; - sum += ret; if (mBuilder != null) { - mBuilder.propertyParamValue(mBuffer.substring(start, offset)); + mBuilder.propertyParamType("LANGUAGE"); + mBuilder.propertyParamValue(langval); } - - return sum; - } - /** "VALUE" [ws] "=" [ws] pvalueval */ - private int parseParam1(int offset) { - int ret = 0, sum = 0, start = offset; - - ret = parseString(offset, "VALUE", true); - if (ret == PARSE_ERROR) { - return PARSE_ERROR; - } - offset += ret; - sum += ret; - if (mBuilder != null) { - mBuilder.propertyParamType(mBuffer.substring(start, offset)); - } - - ret = removeWs(offset); - offset += ret; - sum += ret; - - ret = parseString(offset, "=", false); - if (ret == PARSE_ERROR) { - return PARSE_ERROR; - } - offset += ret; - sum += ret; - - ret = removeWs(offset); - offset += ret; - sum += ret; - - start = offset; - ret = parsePValueVal(offset); - if (ret == PARSE_ERROR) { - return PARSE_ERROR; - } - offset += ret; - sum += ret; + /** + * Mainly for "X-" type. This accepts any kind of type without check. + */ + protected void handleAnyParam(String paramName, String paramValue) { if (mBuilder != null) { - mBuilder.propertyParamValue(mBuffer.substring(start, offset)); + mBuilder.propertyParamType(paramName); + mBuilder.propertyParamValue(paramValue); } - - return sum; } - - /** "ENCODING" [ws] "=" [ws] pencodingval */ - private int parseParam2(int offset) { - int ret = 0, sum = 0, start = offset; - - ret = parseString(offset, "ENCODING", true); - if (ret == PARSE_ERROR) { - return PARSE_ERROR; - } - offset += ret; - sum += ret; - if (mBuilder != null) { - mBuilder.propertyParamType(mBuffer.substring(start, offset)); - } - - ret = removeWs(offset); - offset += ret; - sum += ret; - - ret = parseString(offset, "=", false); - if (ret == PARSE_ERROR) { - return PARSE_ERROR; - } - offset += ret; - sum += ret; - - ret = removeWs(offset); - offset += ret; - sum += ret; - - start = offset; - ret = parsePEncodingVal(offset); - if (ret == PARSE_ERROR) { - return PARSE_ERROR; - } - offset += ret; - sum += ret; - if (mBuilder != null) { - mBuilder.propertyParamValue(mBuffer.substring(start, offset)); + + protected void handlePropertyValue( + String propertyName, String propertyValue) throws + IOException, VCardException { + if (mEncoding == null || mEncoding.equalsIgnoreCase("7BIT") + || mEncoding.equalsIgnoreCase("8BIT") + || mEncoding.toUpperCase().startsWith("X-")) { + if (mBuilder != null) { + ArrayList v = new ArrayList(); + v.add(maybeUnescapeText(propertyValue)); + mBuilder.propertyValues(v); + } + } else if (mEncoding.equalsIgnoreCase("QUOTED-PRINTABLE")) { + String result = getQuotedPrintable(propertyValue); + if (mBuilder != null) { + ArrayList v = new ArrayList(); + v.add(result); + mBuilder.propertyValues(v); + } + } else if (mEncoding.equalsIgnoreCase("BASE64") || + mEncoding.equalsIgnoreCase("B")) { + String result = getBase64(propertyValue); + if (mBuilder != null) { + ArrayList v = new ArrayList(); + v.add(result); + mBuilder.propertyValues(v); + } + } else { + throw new VCardException("Unknown encoding: \"" + mEncoding + "\""); } - - return sum; - } - - /** "CHARSET" [ws] "=" [ws] charsetval */ - private int parseParam3(int offset) { - int ret = 0, sum = 0, start = offset; - - ret = parseString(offset, "CHARSET", true); - if (ret == PARSE_ERROR) { - return PARSE_ERROR; - } - offset += ret; - sum += ret; - if (mBuilder != null) { - mBuilder.propertyParamType(mBuffer.substring(start, offset)); - } - - ret = removeWs(offset); - offset += ret; - sum += ret; - - ret = parseString(offset, "=", false); - if (ret == PARSE_ERROR) { - return PARSE_ERROR; - } - offset += ret; - sum += ret; - - ret = removeWs(offset); - offset += ret; - sum += ret; - - start = offset; - ret = parseCharsetVal(offset); - if (ret == PARSE_ERROR) { - return PARSE_ERROR; - } - offset += ret; - sum += ret; - if (mBuilder != null) { - mBuilder.propertyParamValue(mBuffer.substring(start, offset)); + + protected String getQuotedPrintable(String firstString) throws IOException, VCardException { + // Specifically, there may be some padding between = and CRLF. + // See the following: + // + // qp-line := *(qp-segment transport-padding CRLF) + // qp-part transport-padding + // qp-segment := qp-section *(SPACE / TAB) "=" + // ; Maximum length of 76 characters + // + // e.g. (from RFC 2045) + // Now's the time = + // for all folk to come= + // to the aid of their country. + if (firstString.trim().endsWith("=")) { + // remove "transport-padding" + int pos = firstString.length() - 1; + while(firstString.charAt(pos) != '=') { + } + StringBuilder builder = new StringBuilder(); + builder.append(firstString.substring(0, pos + 1)); + builder.append("\r\n"); + String line; + while (true) { + line = getLine(); + if (line == null) { + throw new VCardException( + "File ended during parsing quoted-printable String"); + } + if (line.trim().endsWith("=")) { + // remove "transport-padding" + pos = line.length() - 1; + while(line.charAt(pos) != '=') { + } + builder.append(line.substring(0, pos + 1)); + builder.append("\r\n"); + } else { + builder.append(line); + break; + } + } + return builder.toString(); + } else { + return firstString; } - - return sum; } - - /** "LANGUAGE" [ws] "=" [ws] langval */ - private int parseParam4(int offset) { - int ret = 0, sum = 0, start = offset; - - ret = parseString(offset, "LANGUAGE", true); - if (ret == PARSE_ERROR) { - return PARSE_ERROR; - } - offset += ret; - sum += ret; - if (mBuilder != null) { - mBuilder.propertyParamType(mBuffer.substring(start, offset)); - } - - ret = removeWs(offset); - offset += ret; - sum += ret; - - ret = parseString(offset, "=", false); - if (ret == PARSE_ERROR) { - return PARSE_ERROR; - } - offset += ret; - sum += ret; - - ret = removeWs(offset); - offset += ret; - sum += ret; - - start = offset; - ret = parseLangVal(offset); - if (ret == PARSE_ERROR) { - return PARSE_ERROR; - } - offset += ret; - sum += ret; - if (mBuilder != null) { - mBuilder.propertyParamValue(mBuffer.substring(start, offset)); + + protected String getBase64(String firstString) throws IOException, VCardException { + StringBuilder builder = new StringBuilder(); + builder.append(firstString); + + while (true) { + String line = getLine(); + if (line == null) { + throw new VCardException( + "File ended during parsing BASE64 binary"); + } + if (line.length() == 0) { + break; + } + builder.append(line); } - - return sum; - + + return builder.toString(); } - - /** "X-" word [ws] "=" [ws] word */ - private int parseParam5(int offset) { - int ret = 0, sum = 0, start = offset; - - ret = parseXWord(offset); - if (ret == PARSE_ERROR) { - return PARSE_ERROR; - } - offset += ret; - sum += ret; - if (mBuilder != null) { - mBuilder.propertyParamType(mBuffer.substring(start, offset)); - } - - ret = removeWs(offset); - offset += ret; - sum += ret; - - ret = parseString(offset, "=", false); - if (ret == PARSE_ERROR) { - return PARSE_ERROR; + + /** + * Mainly for "ADR", "ORG", and "N" + * We do not care the number of strnosemi here. + * + * addressparts = 0*6(strnosemi ";") strnosemi + * ; PO Box, Extended Addr, Street, Locality, Region, + * Postal Code, Country Name + * orgparts = *(strnosemi ";") strnosemi + * ; First is Organization Name, + * remainder are Organization Units. + * nameparts = 0*4(strnosemi ";") strnosemi + * ; Family, Given, Middle, Prefix, Suffix. + * ; Example:Public;John;Q.;Reverend Dr.;III, Esq. + * strnosemi = *(*nonsemi ("\;" / "\" CRLF)) *nonsemi + * ; To include a semicolon in this string, it must be escaped + * ; with a "\" character. + * + * We are not sure whether we should add "\" CRLF to each value. + * For now, we exclude them. + */ + protected void handleMultiplePropertyValue( + String propertyName, String propertyValue) throws IOException, VCardException { + // vCard 2.1 does not allow QUOTED-PRINTABLE here, but some data have it. + if (mEncoding.equalsIgnoreCase("QUOTED-PRINTABLE")) { + propertyValue = getQuotedPrintable(propertyValue); + } + + if (propertyValue.endsWith("\\")) { + StringBuilder builder = new StringBuilder(); + // builder.append(propertyValue); + builder.append(propertyValue.substring(0, propertyValue.length() - 1)); + try { + String line; + while (true) { + line = getNonEmptyLine(); + // builder.append("\r\n"); + // builder.append(line); + if (!line.endsWith("\\")) { + builder.append(line); + break; + } else { + builder.append(line.substring(0, line.length() - 1)); + } + } + } catch (IOException e) { + throw new VCardException( + "IOException is throw during reading propertyValue" + e); + } + // Now, propertyValue may contain "\r\n" + propertyValue = builder.toString(); } - offset += ret; - sum += ret; - ret = removeWs(offset); - offset += ret; - sum += ret; - - start = offset; - ret = parseWord(offset); - if (ret == PARSE_ERROR) { - return PARSE_ERROR; - } - offset += ret; - sum += ret; if (mBuilder != null) { - mBuilder.propertyParamValue(mBuffer.substring(start, offset)); + // In String#replaceAll() and Pattern class, "\\\\" means single slash. + + final String IMPOSSIBLE_STRING = "\0"; + // First replace two backslashes with impossible strings. + propertyValue = propertyValue.replaceAll("\\\\\\\\", IMPOSSIBLE_STRING); + + // Now, split propertyValue with ; whose previous char is not back slash. + Pattern pattern = Pattern.compile("(? arrayList = new ArrayList(); + for (String str : strArray) { + // Replace impossible strings with original two backslashes + arrayList.add( + unescapeText(str.replaceAll(IMPOSSIBLE_STRING, "\\\\\\\\"))); + } + mBuilder.propertyValues(arrayList); } - - return sum; } - + /** - * knowntype: "DOM" / "INTL" / ... + * vCard 2.1 specifies AGENT allows one vcard entry. It is not encoded at all. */ - private int parseKnownType(int offset) { - String word = getWord(offset); - - if (mKnownTypeSet.contains(word.toUpperCase())) { - return word.length(); - } - return PARSE_ERROR; + protected void handleAgent(String propertyValue) throws IOException, VCardException { + String[] strArray = propertyValue.split(":", 2); + if (!(strArray.length == 2 || + strArray[0].trim().equalsIgnoreCase("BEGIN") && + strArray[1].trim().equalsIgnoreCase("VCARD"))) { + throw new VCardException("BEGIN:VCARD != \"" + propertyValue + "\""); + } + parseItems(); + readEndVCard(); } - - /** knowntype / "X-" word */ - private int parsePTypeVal(int offset) { - int ret = 0, sum = 0; - - ret = parseKnownType(offset); - if (ret != PARSE_ERROR) { - sum += ret; - return sum; - } - - ret = parseXWord(offset); - if (ret != PARSE_ERROR) { - sum += ret; - return sum; - } - sum += ret; - - return sum; + + /** + * For vCard 3.0. + */ + protected String maybeUnescapeText(String text) { + return text; } - - /** "LOGO" /.../ XWord, case insensitive */ - private int parseName(int offset) { - int ret = 0; - ret = parseXWord(offset); - if (ret != PARSE_ERROR) { - return ret; - } - String word = getWord(offset).toUpperCase(); - if (mName.contains(word)) { - return word.length(); - } - return PARSE_ERROR; + + /** + * Convert escaped text into unescaped text. + */ + protected String unescapeText(String text) { + // Original vCard 2.1 specification does not allow transformation + // "\:" -> ":", "\," -> ",", and "\\" -> "\", but previous implementation of + // this class allowed them, so keep it as is. + // In String#replaceAll(), "\\\\" means single slash. + return text.replaceAll("\\\\;", ";") + .replaceAll("\\\\:", ":") + .replaceAll("\\\\,", ",") + .replaceAll("\\\\\\\\", "\\\\"); } + + /** + * Parse the given stream and constructs VCardDataBuilder object. + * Note that vCard 2.1 specification allows "CHARSET" parameter, and some career sets + * local encoding to it. For example, Japanese phone career uses Shift_JIS, which + * is not formally allowed in vCard specification. + * As a result, there is a case where the encoding given here does not do well with + * the "CHARSET". + * + * In order to avoid such cases, It may be fine to use "ISO-8859-1" as an encoding, + * and to encode each localized String afterward. + * + * RFC 2426 "recommends" (not forces) to use UTF-8, so it may be OK to use + * UTF-8 as an encoding when parsing vCard 3.0. But note that some Japanese + * phone uses Shift_JIS as a charset (e.g. W61SH), and another uses + * "CHARSET=SHIFT_JIS", which is explicitly prohibited in vCard 3.0 specification + * (e.g. W53K). + * + * @param is + * The source to parse. + * @param charset + * The charset. + * @param builder + * The v builder which used to construct data. + * @return Return true for success, otherwise false. + * @throws IOException + */ + public boolean parse(InputStream is, String charset, VBuilder builder) + throws IOException, VCardException { + // TODO: If we really need to allow only CRLF as line break, + // we will have to develop our own BufferedReader(). + mReader = new BufferedReader(new InputStreamReader(is, charset)); + + mBuilder = builder; - /** groups "." word / word */ - private int parseGroups(int offset) { - int ret = 0, sum = 0; - - ret = parseWord(offset); - if (ret == PARSE_ERROR) { - return PARSE_ERROR; + if (mBuilder != null) { + mBuilder.start(); } - offset += ret; - sum += ret; - - for (;;) { - ret = parseString(offset, ".", false); - if (ret == PARSE_ERROR) { - break; - } - - int ret1 = parseWord(offset); - if (ret1 == PARSE_ERROR) { - break; - } - offset += ret + ret1; - sum += ret + ret1; + parseVCardFile(); + if (mBuilder != null) { + mBuilder.end(); } - return sum; + return true; } - - /** - * Translate escape characters("\\", "\;") which define in vcard2.1 spec. - * But for fault tolerance, we will translate "\:" and "\,", which isn't - * define in vcard2.1 explicitly, as the same behavior as other client. - * - * @param str: - * the string will be translated. - * @return the string which do not contain any escape character in vcard2.1 - */ - private String escapeTranslator(String str) { - if (null == str) - return null; - - String tmp = str.replace("\\\\", "\n\r\n"); - tmp = tmp.replace("\\;", ";"); - tmp = tmp.replace("\\:", ":"); - tmp = tmp.replace("\\,", ","); - tmp = tmp.replace("\n\r\n", "\\"); - return tmp; + + private boolean isLetter(char ch) { + if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z')) { + return true; + } + return false; } } diff --git a/core/java/android/syncml/pim/vcard/VCardParser_V30.java b/core/java/android/syncml/pim/vcard/VCardParser_V30.java index c56cfed82908..901bd49ef006 100644 --- a/core/java/android/syncml/pim/vcard/VCardParser_V30.java +++ b/core/java/android/syncml/pim/vcard/VCardParser_V30.java @@ -16,142 +16,270 @@ package android.syncml.pim.vcard; -import android.syncml.pim.VBuilder; - -import java.io.ByteArrayInputStream; import java.io.IOException; -import java.io.InputStream; +import java.util.ArrayList; import java.util.Arrays; -import java.util.HashMap; import java.util.HashSet; /** * This class is used to parse vcard3.0.
    - * It get useful data refer from android contact, and alter to vCard 2.1 format. - * Then reuse vcard 2.1 parser to analyze the result.
    - * Please refer to vCard Specification 3.0 + * Please refer to vCard Specification 3.0 (http://tools.ietf.org/html/rfc2426) */ public class VCardParser_V30 extends VCardParser_V21 { - private static final String V21LINEBREAKER = "\r\n"; - private static final HashSet acceptablePropsWithParam = new HashSet( - Arrays.asList("PHOTO", "LOGO", "TEL", "EMAIL", "ADR")); - - private static final HashSet acceptablePropsWithoutParam = new HashSet( - Arrays.asList("ORG", "NOTE", "TITLE", "FN", "N")); - - private static final HashMap propV30ToV21Map = new HashMap(); + Arrays.asList( + "LOGO", "PHOTO", "LABEL", "FN", "TITLE", "SOUND", + "VERSION", "TEL", "EMAIL", "TZ", "GEO", "NOTE", "URL", + "BDAY", "ROLE", "REV", "UID", "KEY", "MAILER", // 2.1 + "NAME", "PROFILE", "SOURCE", "NICKNAME", "CLASS", + "SORT-STRING", "CATEGORIES", "PRODID")); // 3.0 + + // Although "7bit" and "BASE64" is not allowed in vCard 3.0, we allow it for safety. + private static final HashSet sAcceptableEncodingV30 = new HashSet( + Arrays.asList("7BIT", "8BIT", "BASE64", "B")); + + // Although RFC 2426 specifies some property must not have parameters, we allow it, + // since there may be some careers which violates the RFC... + private static final HashSet acceptablePropsWithoutParam = new HashSet(); - static { - propV30ToV21Map.put("PHOTO", "PHOTO"); - propV30ToV21Map.put("LOGO", "PHOTO"); + private String mPreviousLine; + + @Override + protected String getVersion() { + return "3.0"; } - + @Override - public boolean parse(InputStream is, String encoding, VBuilder builder) - throws IOException { - // get useful info for android contact, and alter to vCard 2.1 - byte[] bytes = new byte[is.available()]; - is.read(bytes); - String scStr = new String(bytes); - StringBuilder v21str = new StringBuilder(""); - - String[] strlist = splitProperty(scStr); - - if ("BEGIN:vCard".equals(strlist[0]) - || "BEGIN:VCARD".equals(strlist[0])) { - v21str.append("BEGIN:VCARD" + V21LINEBREAKER); + protected boolean isValidPropertyName(String propertyName) { + return acceptablePropsWithParam.contains(propertyName) || + acceptablePropsWithoutParam.contains(propertyName); + } + + @Override + protected boolean isValidEncoding(String encoding) { + return sAcceptableEncodingV30.contains(encoding.toUpperCase()); + } + + @Override + protected String getLine() throws IOException { + if (mPreviousLine != null) { + String ret = mPreviousLine; + mPreviousLine = null; + return ret; } else { - return false; + return mReader.readLine(); } - - for (int i = 1; i < strlist.length - 1; i++) {// for ever property - // line - String propName; - String params; - String value; - - String line = strlist[i]; - if ("".equals(line)) { // line breaker is useful in encoding string - v21str.append(V21LINEBREAKER); - continue; - } - - String[] contentline = line.split(":", 2); - String propNameAndParam = contentline[0]; - value = (contentline.length > 1) ? contentline[1] : ""; - if (propNameAndParam.length() > 0) { - String[] nameAndParams = propNameAndParam.split(";", 2); - propName = nameAndParams[0]; - params = (nameAndParams.length > 1) ? nameAndParams[1] : ""; - - if (acceptablePropsWithParam.contains(propName) - || acceptablePropsWithoutParam.contains(propName)) { - v21str.append(mapContentlineV30ToV21(propName, params, - value)); + } + + /** + * vCard 3.0 requires that the line with space at the beginning of the line + * must be combined with previous line. + */ + @Override + protected String getNonEmptyLine() throws IOException, VCardException { + String line; + StringBuilder builder = null; + while (true) { + line = mReader.readLine(); + if (line == null) { + if (builder != null) { + return builder.toString(); + } else if (mPreviousLine != null) { + String ret = mPreviousLine; + mPreviousLine = null; + return ret; + } + throw new VCardException("Reached end of buffer."); + } else if (line.length() == 0) { + if (builder != null) { + return builder.toString(); + } else if (mPreviousLine != null) { + String ret = mPreviousLine; + mPreviousLine = null; + return ret; + } + } else if (line.charAt(0) == ' ' || line.charAt(0) == '\t') { + if (builder != null) { + // TODO: Check whether MIME requires only one whitespace. + builder.append(line.substring(1)); + } else if (mPreviousLine != null) { + builder = new StringBuilder(); + builder.append(mPreviousLine); + mPreviousLine = null; + builder.append(line.substring(1)); + } else { + throw new VCardException("Space exists at the beginning of the line"); + } + } else { + if (mPreviousLine == null) { + mPreviousLine = line; + } else { + String ret = mPreviousLine; + mPreviousLine = line; + return ret; } } - }// end for - - if ("END:vCard".equals(strlist[strlist.length - 1]) - || "END:VCARD".equals(strlist[strlist.length - 1])) { - v21str.append("END:VCARD" + V21LINEBREAKER); - } else { - return false; } - - return super.parse( - // use vCard 2.1 parser - new ByteArrayInputStream(v21str.toString().getBytes()), - encoding, builder); } - + + /** - * Convert V30 string to V21 string - * - * @param propName - * The name of property - * @param params - * parameter of property - * @param value - * value of property - * @return the converted string + * vcard = [group "."] "BEGIN" ":" "VCARD" 1*CRLF + * 1*(contentline) + * ;A vCard object MUST include the VERSION, FN and N types. + * [group "."] "END" ":" "VCARD" 1*CRLF */ - private String mapContentlineV30ToV21(String propName, String params, - String value) { - String result; + @Override + protected boolean readBeginVCard() throws IOException, VCardException { + // TODO: vCard 3.0 supports group. + return super.readBeginVCard(); + } + + @Override + protected void readEndVCard() throws VCardException { + // TODO: vCard 3.0 supports group. + super.readEndVCard(); + } - if (propV30ToV21Map.containsKey(propName)) { - result = propV30ToV21Map.get(propName); - } else { - result = propName; + /** + * vCard 3.0 allows iana-token as paramType, while vCard 2.1 does not. + */ + @Override + protected void handleParams(String params) throws VCardException { + try { + super.handleParams(params); + } catch (VCardException e) { + // maybe IANA type + String[] strArray = params.split("=", 2); + if (strArray.length == 2) { + handleAnyParam(strArray[0], strArray[1]); + } else { + // Must not come here in the current implementation. + throw new VCardException( + "Unknown params value: " + params); + } + } + } + + @Override + protected void handleAnyParam(String paramName, String paramValue) { + // vCard 3.0 accept comma-separated multiple values, but + // current PropertyNode does not accept it. + // For now, we do not split the values. + // + // TODO: fix this. + super.handleAnyParam(paramName, paramValue); + } + + /** + * vCard 3.0 defines + * + * param = param-name "=" param-value *("," param-value) + * param-name = iana-token / x-name + * param-value = ptext / quoted-string + * quoted-string = DQUOTE QSAFE-CHAR DQUOTE + */ + @Override + protected void handleType(String ptypevalues) { + String[] ptypeArray = ptypevalues.split(","); + mBuilder.propertyParamType("TYPE"); + for (String value : ptypeArray) { + int length = value.length(); + if (length >= 2 && value.startsWith("\"") && value.endsWith("\"")) { + mBuilder.propertyParamValue(value.substring(1, value.length() - 1)); + } else { + mBuilder.propertyParamValue(value); + } } - // Alter parameter part of property to vCard 2.1 format - if (acceptablePropsWithParam.contains(propName) && params.length() > 0) - result = result - + ";" - + params.replaceAll(",", ";").replaceAll("ENCODING=B", - "ENCODING=BASE64").replaceAll("ENCODING=b", - "ENCODING=BASE64"); + } - return result + ":" + value + V21LINEBREAKER; + @Override + protected void handleAgent(String propertyValue) throws VCardException { + // The way how vCard 3.0 supports "AGENT" is completely different from vCard 2.0. + // + // e.g. + // AGENT:BEGIN:VCARD\nFN:Joe Friday\nTEL:+1-919-555-7878\n + // TITLE:Area Administrator\, Assistant\n EMAIL\;TYPE=INTERN\n + // ET:jfriday@host.com\nEND:VCARD\n + // + // TODO: fix this. + // + // issue: + // vCard 3.0 also allows this as an example. + // + // AGENT;VALUE=uri: + // CID:JQPUBLIC.part3.960129T083020.xyzMail@host3.com + // + // This is not VCARD. Should we support this? + throw new VCardException("AGENT in vCard 3.0 is not supported yet."); + } + + // vCard 3.0 supports "B" as BASE64 encoding. + @Override + protected void handlePropertyValue( + String propertyName, String propertyValue) throws + IOException, VCardException { + if (mEncoding != null && mEncoding.equalsIgnoreCase("B")) { + String result = getBase64(propertyValue); + if (mBuilder != null) { + ArrayList v = new ArrayList(); + v.add(result); + mBuilder.propertyValues(v); + } + } + + super.handlePropertyValue(propertyName, propertyValue); + } + + /** + * vCard 3.0 does not require two CRLF at the last of BASE64 data. + * It only requires that data should be MIME-encoded. + */ + @Override + protected String getBase64(String firstString) throws IOException, VCardException { + StringBuilder builder = new StringBuilder(); + builder.append(firstString); + + while (true) { + String line = getLine(); + if (line == null) { + throw new VCardException( + "File ended during parsing BASE64 binary"); + } + if (line.length() == 0) { + break; + } else if (!line.startsWith(" ") && !line.startsWith("\t")) { + mPreviousLine = line; + break; + } + builder.append(line); + } + + return builder.toString(); + } + + /** + * Return unescapeText(text). + * In vCard 3.0, 8bit text is always encoded. + */ + @Override + protected String maybeUnescapeText(String text) { + return unescapeText(text); } /** - * Split ever property line to Stringp[], not split folding line. - * - * @param scStr - * the string to be splitted - * @return a list of splitted string + * ESCAPED-CHAR = "\\" / "\;" / "\," / "\n" / "\N") + * ; \\ encodes \, \n or \N encodes newline + * ; \; encodes ;, \, encodes , */ - private String[] splitProperty(String scStr) { - /* - * Property splitted by \n, and unfold folding lines by removing - * CRLF+LWSP-char - */ - scStr = scStr.replaceAll("\r\n", "\n").replaceAll("\n ", "") - .replaceAll("\n\t", ""); - String[] strs = scStr.split("\n"); - return strs; + @Override + protected String unescapeText(String text) { + // In String#replaceAll(), "\\\\" means single slash. + return text.replaceAll("\\\\;", ";") + .replaceAll("\\\\:", ":") + .replaceAll("\\\\,", ",") + .replaceAll("\\\\n", "\r\n") + .replaceAll("\\\\N", "\r\n") + .replaceAll("\\\\\\\\", "\\\\"); } } diff --git a/core/java/android/syncml/pim/vcard/VCardVersionException.java b/core/java/android/syncml/pim/vcard/VCardVersionException.java new file mode 100644 index 000000000000..1ca88d120095 --- /dev/null +++ b/core/java/android/syncml/pim/vcard/VCardVersionException.java @@ -0,0 +1,29 @@ +/* + * Copyright (C) 2009 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.syncml.pim.vcard; + +/** + * VCardException used only when the version of the vCard is different. + */ +public class VCardVersionException extends VCardException { + public VCardVersionException() { + } + + public VCardVersionException(String message) { + super(message); + } +} diff --git a/tests/AndroidTests/res/raw/v21_backslash.vcf b/tests/AndroidTests/res/raw/v21_backslash.vcf new file mode 100644 index 000000000000..bd3002b32b10 --- /dev/null +++ b/tests/AndroidTests/res/raw/v21_backslash.vcf @@ -0,0 +1,5 @@ +BEGIN:VCARD +VERSION:2.1 +N:;A\;B\\;C\\\;;D;\:E;\\\\; +FN:A;B\C\;D:E\\ +END:VCARD diff --git a/tests/AndroidTests/res/raw/v21_complicated.vcf b/tests/AndroidTests/res/raw/v21_complicated.vcf new file mode 100644 index 000000000000..de34e1668f73 --- /dev/null +++ b/tests/AndroidTests/res/raw/v21_complicated.vcf @@ -0,0 +1,106 @@ +BEGIN:VCARD +VERSION:2.1 +N:Gump;Forrest;Hoge;Pos;Tao +FN:Joe Due +ORG:Gump Shrimp Co.;Sales Dept.\;Manager;Fish keeper +ROLE:Fish Cake Keeper! +X-CLASS:PUBLIC +TITLE:Shrimp Man +TEL;WORK;VOICE:(111) 555-1212 +TEL;HOME;VOICE:(404) 555-1212 +TEL;CELL:0311111111 +TEL;VIDEO:0322222222 +TEL;VOICE:0333333333 +ADR;WORK:;;100 Waters Edge;Baytown;LA;30314;United States of America +LABEL;WORK;ENCODING=QUOTED-PRINTABLE:100 Waters Edge=0D=0ABaytown, LA 30314=0D=0AUnited States of America +ADR;HOME:;;42 Plantation St.;Baytown;LA;30314;United States of America +LABEL;HOME;ENCODING=QUOTED-PRINTABLE:42 Plantation St.=0D=0A= +Baytown, LA 30314=0D=0A= +United States of America +EMAIL;PREF;INTERNET:forrestgump@walladalla.com +EMAIL;CELL:cell@example.com +NOTE:The following note is the example from RFC 2045. +NOTE;ENCODING=QUOTED-PRINTABLE:Now's the time = +for all folk to come= + to the aid of their country. + +PHOTO;ENCODING=BASE64;TYPE=JPEG: + /9j/4QoPRXhpZgAATU0AKgAAAAgADQEOAAIAAAAPAAAAqgEPAAIAAAAHAAAAugEQAAIAAAAG + AAAAwgESAAMAAAABAAEAAAEaAAUAAAABAAAAyAEbAAUAAAABAAAA0AEoAAMAAAABAAIAAAEx + AAIAAAAOAAAA2AEyAAIAAAAUAAAA5gITAAMAAAABAAEAAIKYAAIAAAAOAAAA+odpAAQAAAAB + AAABhMSlAAcAAAB8AAABCAAABB4yMDA4MTAyOTEzNTUzMQAARG9Db01vAABEOTA1aQAAAABI + AAAAAQAAAEgAAAABRDkwNWkgVmVyMS4wMAAyMDA4OjEwOjI5IDEzOjU1OjQ3ACAgICAgICAg + ICAgICAAUHJpbnRJTQAwMzAwAAAABgABABQAFAACAQAAAAADAAAANAEABQAAAAEBAQAAAAEQ + gAAAAAAAEQkAACcQAAAPCwAAJxAAAAWXAAAnEAAACLAAACcQAAAcAQAAJxAAAAJeAAAnEAAA + AIsAACcQAAADywAAJxAAABvlAAAnEAAogpoABQAAAAEAAANqgp0ABQAAAAEAAANyiCIAAwAA + AAEAAgAAkAAABwAAAAQwMjIwkAMAAgAAABQAAAN6kAQAAgAAABQAAAOOkQEABwAAAAQBAgMA + kQIABQAAAAEAAAOikgEACgAAAAEAAAOqkgIABQAAAAEAAAOykgQACgAAAAEAAAO6kgUABQAA + AAEAAAPCkgcAAwAAAAEAAgAAkggAAwAAAAEAAAAAkgkAAwAAAAEAAAAAkgoABQAAAAEAAAPK + knwABwAAAAEAAAAAkoYABwAAABYAAAPSoAAABwAAAAQwMTAwoAEAAwAAAAEAAQAAoAIAAwAA + AAEAYAAAoAMAAwAAAAEASAAAoAUABAAAAAEAAAQAog4ABQAAAAEAAAPoog8ABQAAAAEAAAPw + ohAAAwAAAAEAAgAAohcAAwAAAAEAAgAAowAABwAAAAEDAAAAowEABwAAAAEBAAAApAEAAwAA + AAEAAAAApAIAAwAAAAEAAAAApAMAAwAAAAEAAAAApAQABQAAAAEAAAP4pAUAAwAAAAEAHQAA + pAYAAwAAAAEAAAAApAcAAwAAAAEAAAAApAgAAwAAAAEAAAAApAkAAwAAAAEAAAAApAoAAwAA + AAEAAAAApAwAAwAAAAEAAgAAAAAAAAAAAFMAACcQAAABXgAAAGQyMDA4OjEwOjI5IDEzOjU1 + OjMxADIwMDg6MTA6MjkgMTM6NTU6NDcAAAApiAAAGwAAAAKyAAAAZAAAAV4AAABkAAAAAAAA + AGQAAAAlAAAACgAADpIAAAPoAAAAAAAAAAAyMDA4MTAyOTEzNTUzMQAAICoAAAAKAAAq4gAA + AAoAAAAAAAAAAQACAAEAAgAAAARSOTgAAAIABwAAAAQwMTAwAAAAAAAGAQMAAwAAAAEABgAA + ARoABQAAAAEAAARsARsABQAAAAEAAAR0ASgAAwAAAAEAAgAAAgEABAAAAAEAAAR8AgIABAAA + AAEAAAWLAAAAAAAAAEgAAAABAAAASAAAAAH/2P/bAIQAIBYYHBgUIBwaHCQiICYwUDQwLCww + YkZKOlB0Znp4cmZwboCQuJyAiK6KbnCg2qKuvsTO0M58muLy4MjwuMrOxgEiJCQwKjBeNDRe + xoRwhMbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbG + /8AAEQgAeACgAwEhAAIRAQMRAf/EAaIAAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKCxAA + AgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkK + FhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWG + h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl + 5ufo6erx8vP09fb3+Pn6AQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgsRAAIBAgQEAwQH + BQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBka + JicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKT + lJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz + 9PX29/j5+v/aAAwDAQACEQMRAD8AFFSqKkZIoqRVpgSKKeBTEOApwFADsUYpgIRSEUANIppF + ICNhUTCgCMio2FICJhULCgC0oqVaAJFFSqKBkgFOApiHCnCgB2KMUCENJQA0imEUDGMKiYUA + RtUbUgIWqJhQBZSpFoAlWpVoGPFPFMQ7tSK2ODQA4yKO9HmKe9FxAzDHFIOlAAaYaAGNUTUD + ImqNqQETVE1AE6VKKAJFNSqaAHg08GmANIFFQM5Y5qJMBuT60ZNQIcrkVYSQMKuLGKaaasQx + qiagZE1RtSAjaomoAkQ1KpoAlU1IpoAkU07OBTArO+5qkV12Y71lfUBmaKkCRSuznrTFba2a + oCwGyM0E1qIjY1GxoGRNUZNICNqiagByGplNAEimpFNMB4YDvSucpxSYEIU04KazsAu1qArU + WELtPpTSposBNETt5pxNaoCNjUbGgCNjUZoGRtUTUgFU1KpoAkBqQHigCFnO7rUqOdlZp6gA + c+tODn1pXAXzD60eYfWncQvmNSGQ07gOMhCVEJGz1ptgS5yKYxqwGE1GxoAiamGkMapqVTQB + Kpp+eKAICfmqWM/Kaz6gANOBqQFzRmmAuaTNACsfkqMHmm9wJs8U0mtRDGNRsaAI2phpDI1N + SqaAJFNSA8UCISfmqSM/Kaz6jAHmnA1ICg0uaAFzSZpgKx+SmDrTe4E2eKaTWoiMmmMaAIzT + DSGRKakU0ASKaeDTERseakjPyms+oxAacDUgOBpc0gFzSZpgOY/KKYv3qrqIlpprQBjGoyaA + GGmmkMgU1IppgPBqQGgQu0Gn4wvFKwEQpwNZDHZpc0ALmigRKBleaQKBWtgA001QDGqM0gGm + mGkMrqakBoAepp4NMRIDTwaAE2A008GokgHxjd1pzKFpW0uAg5NSBBTirgOpDWgDTTTQAw0w + 0gGGmmgZWBp4pASKaeDTEOBp4NADwajbrUyBEkXWnSUdAGr1qeiAMSkNWAhphoAaaYaQDDTT + SGVRTwaYDxTwaBDwaeDQA4GlK5oauIeo20pGaLaAKqgU6hKwBSGmAhphoAaaYaQxhpppDKgN + PFMB4p4oEPFOBpgPBp4NAhwpwoAWloAKSgBDTTQMYaYaQDTTTSGA/9n/2wCEAAoHBwgHBgoI + CAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4+JS5ESUM8SDc9 + PjsBCgsLDg0OHBAQHDsoIig7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 + Ozs7Ozs7Ozs7Ozs7O//AABEIAEgAYAMBIQACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAA + AQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNC + scEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hp + anN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS + 09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcI + CQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVi + ctEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4 + eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY + 2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/AJ7SLgcVr20I4rNFGvbQAAHFaEUX + SrQi5HCMdKk8oY6VSJYx4hjpVaWMelAFC4iGDxWPdR8mkxmRdxjBrEvI+tZjN20xtHNbNqAc + UIDXg6Cr0WKtCY8XKQOyzOB3FKNWsyceZ+lS6sY6NkjvPSdwImBHUmmy4q076oCjOODWPdgc + 0MpGPdAYNYl4o5rNjNKzkyorZtXxihAa1vIDip7m9Frb7/4jwKcnyxbEzN3ieJppZsyZ4U1H + urzZau4mWVlNrGk0UuWPVa1YroXEIkHfrXZh5W90RWncAHmsi6bJNdQ0ZNw3BrGuiMGs2Mks + puBzWzbzdOaEBeOpR2oUtkk9hTru7iuo4m8wgemKyqTi04sBsfkEf68j8KlUQZz9o/SuZRj3 + JYriAji4/Sp7W6htbV2aXcu70ramoxle4gN7HcIXjbis+4k5NdaaauhmVcv1rHuW61DGiG1m + 6c1s20/TmgAv5vmj57VKk3+ixnPc1xVV70h9CVJuOtSrL71hFgxzScUkkn+iY/2q1i9xDrGT + 9y31pJ5Otd1L+GhMy7mTrWXO2SapjRn28vTmta3nxjmgGOvJd2w1Kkv+ipz/ABGuOoveYdCe + ObjrU6y5rlsA8ycUksn+ij/eNaw6iJLNsW59zTJn6816FP4EJmbO+Saz5m602UjIgk4HNadv + LwKaBl+MpIMOMipp490SCJeF7CoqQvF2JuRqWQ4YEGrSiQJuKnHrXByMpki73GFBNXIoh9n2 + SrnnOK6MPTbd3sSwIVF2qMCqkzHmuy1lYRnTHrVGWpZaMKB+BWlbycYoQM0IZDxzV+GU8c1a + IYy5Y+dnHatAsfsAHfArmS1mPoh1gT8x9qtk1rQX7tCe5DIapzGtGBQm71SlqGWjnIH6Vowt + zmhAy/E3vV6F6tEMuxlWIyAfrVxCCAO1VZEEyYA4AApxNGwyJ+lVJRUsaKMw61SlFQzRAP/Z + +X-ATTRIBUTE:Some String +BDAY:19800101 +GEO:35.6563854,139.6994233 +URL:http://www.example.com/ +REV:20080424T195243Z +END:VCARD \ No newline at end of file diff --git a/tests/AndroidTests/res/raw/v21_japanese_1.vcf b/tests/AndroidTests/res/raw/v21_japanese_1.vcf new file mode 100644 index 000000000000..d05e2fffb180 --- /dev/null +++ b/tests/AndroidTests/res/raw/v21_japanese_1.vcf @@ -0,0 +1,6 @@ +BEGIN:VCARD +VERSION:2.1 +N;CHARSET=SHIFT_JIS:ˆÀ“¡ƒƒCƒh;;;; +SOUND;X-IRMC-N;CHARSET=SHIFT_JIS:±ÝÄÞ³Û²ÄÞ;;;; +TEL;PREF;VOICE:0300000000 +END:VCARD diff --git a/tests/AndroidTests/res/raw/v21_japanese_2.vcf b/tests/AndroidTests/res/raw/v21_japanese_2.vcf new file mode 100644 index 000000000000..fa54acbc89c7 --- /dev/null +++ b/tests/AndroidTests/res/raw/v21_japanese_2.vcf @@ -0,0 +1,10 @@ +BEGIN:VCARD +VERSION:2.1 +FN;CHARSET=SHIFT_JIS:ˆÀ“¡ ƒƒCƒh 1 +N;CHARSET=SHIFT_JIS:ˆÀ“¡;ƒƒCƒh1;;; +SOUND;X-IRMC-N;CHARSET=SHIFT_JIS:±ÝÄÞ³;Û²ÄÞ1;;; +ADR;HOME;CHARSET=SHIFT_JIS;ENCODING=QUOTED-PRINTABLE:;=93=8C=8B=9E=93=73= +=8F=61=92=4A=8B=E6=8D=F7=8B=75=92=AC26-1=83=5A=83=8B=83=8A=83=41=83=93= +=83=5E=83=8F=81=5B6=8A=4B;;;;150-8512; +NOTE;CHARSET=SHIFT_JIS;ENCODING=QUOTED-PRINTABLE:=83=81=83=82 +END:VCARD diff --git a/tests/AndroidTests/res/raw/v21_multiple_entry.vcf b/tests/AndroidTests/res/raw/v21_multiple_entry.vcf new file mode 100644 index 000000000000..ebbb19a4bc3f --- /dev/null +++ b/tests/AndroidTests/res/raw/v21_multiple_entry.vcf @@ -0,0 +1,33 @@ +BEGIN:VCARD +VERSION:2.1 +N;CHARSET=SHIFT_JIS:ˆÀ“¡ƒƒCƒh3;;;; +SOUND;X-IRMC-N;CHARSET=SHIFT_JIS:±ÝÄÞ³Û²ÄÞ3;;;; +TEL;X-NEC-SECRET:9 +TEL;X-NEC-HOTEL:10 +TEL;X-NEC-SCHOOL:11 +TEL;HOME;FAX:12 +END:VCARD + + +BEGIN:VCARD +VERSION:2.1 +N;CHARSET=SHIFT_JIS:ˆÀ“¡ƒƒCƒh4;;;; +SOUND;X-IRMC-N;CHARSET=SHIFT_JIS:±ÝÄÞ³Û²ÄÞ4;;;; +TEL;MODEM:13 +TEL;PAGER:14 +TEL;X-NEC-FAMILY:15 +TEL;X-NEC-GIRL:16 +END:VCARD + + +BEGIN:VCARD +VERSION:2.1 +N;CHARSET=SHIFT_JIS:ˆÀ“¡ƒƒCƒh5;;;; +SOUND;X-IRMC-N;CHARSET=SHIFT_JIS:±ÝÄÞ³Û²ÄÞ5;;;; +TEL;X-NEC-BOY:17 +TEL;X-NEC-FRIEND:18 +TEL;X-NEC-PHS:19 +TEL;X-NEC-RESTAURANT:20 +END:VCARD + + diff --git a/tests/AndroidTests/res/raw/v21_simple.vcf b/tests/AndroidTests/res/raw/v21_simple.vcf new file mode 100644 index 000000000000..beddabb96086 --- /dev/null +++ b/tests/AndroidTests/res/raw/v21_simple.vcf @@ -0,0 +1,4 @@ +BEGIN:VCARD +N:Ando;Roid; +FN:Ando Roid +END:VCARD diff --git a/tests/AndroidTests/res/raw/v30_simple.vcf b/tests/AndroidTests/res/raw/v30_simple.vcf new file mode 100644 index 000000000000..418661f7468a --- /dev/null +++ b/tests/AndroidTests/res/raw/v30_simple.vcf @@ -0,0 +1,13 @@ +BEGIN:VCARD +VERSION:3.0 +FN:And Roid +N:And;Roid;;; +ORG:Open;Handset; Alliance +SORT-STRING:android +TEL;TYPE=PREF;TYPE=VOICE:0300000000 +CLASS:PUBLIC +X-GNO:0 +X-GN:group0 +X-REDUCTION:0 +REV:20081031T065854Z +END:VCARD diff --git a/tests/AndroidTests/src/com/android/unit_tests/VCardTests.java b/tests/AndroidTests/src/com/android/unit_tests/VCardTests.java new file mode 100644 index 000000000000..b7f562ddc947 --- /dev/null +++ b/tests/AndroidTests/src/com/android/unit_tests/VCardTests.java @@ -0,0 +1,773 @@ +/* + * Copyright (C) 2009 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.unit_tests; + +import android.content.ContentValues; +import android.syncml.pim.PropertyNode; +import android.syncml.pim.VDataBuilder; +import android.syncml.pim.VNode; +import android.syncml.pim.vcard.VCardException; +import android.syncml.pim.vcard.VCardParser_V21; +import android.syncml.pim.vcard.VCardParser_V30; +import android.test.AndroidTestCase; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Arrays; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Vector; + +public class VCardTests extends AndroidTestCase { + + private class PropertyNodesVerifier { + private HashMap> mPropertyNodeMap; + public PropertyNodesVerifier(PropertyNode... nodes) { + mPropertyNodeMap = new HashMap>(); + for (PropertyNode propertyNode : nodes) { + String propName = propertyNode.propName; + Vector expectedNodes = + mPropertyNodeMap.get(propName); + if (expectedNodes == null) { + expectedNodes = new Vector(); + mPropertyNodeMap.put(propName, expectedNodes); + } + expectedNodes.add(propertyNode); + } + } + + public void verify(VNode vnode) { + for (PropertyNode propertyNode : vnode.propList) { + String propName = propertyNode.propName; + Vector nodes = mPropertyNodeMap.get(propName); + if (nodes == null) { + fail("Unexpected propName \"" + propName + "\" exists."); + } + boolean successful = false; + int size = nodes.size(); + for (int i = 0; i < size; i++) { + PropertyNode expectedNode = nodes.get(i); + if (expectedNode.propName.equals(propName)) { + if (expectedNode.equals(propertyNode)) { + successful = true; + nodes.remove(i); + if (nodes.size() == 0) { + mPropertyNodeMap.remove(propName); + } + break; + } else { + fail("Property \"" + propName + "\" has wrong value.\n" + + "expected: " + expectedNode.toString() + + "\n actual: " + propertyNode.toString()); + } + } + } + if (!successful) { + fail("Unexpected property \"" + propName + "\" exists."); + } + } + if (mPropertyNodeMap.size() != 0) { + Vector expectedProps = new Vector(); + for (Vector nodes : mPropertyNodeMap.values()) { + for (PropertyNode node : nodes) { + expectedProps.add(node.propName); + } + } + fail("expected props " + Arrays.toString(expectedProps.toArray()) + + " was not found"); + } + } + } + + public void testV21SimpleCase() throws IOException, VCardException { + VCardParser_V21 parser = new VCardParser_V21(); + VDataBuilder builder = new VDataBuilder(); + InputStream is = getContext().getResources().openRawResource(R.raw.v21_simple); + assertEquals(true, parser.parse(is,"ISO-8859-1", builder)); + is.close(); + assertEquals(1, builder.vNodeList.size()); + PropertyNodesVerifier verifier = new PropertyNodesVerifier( + new PropertyNode("N", "Ando;Roid;", + Arrays.asList("Ando", "Roid", ""), + null, null, null, null), + new PropertyNode("FN", "Ando Roid", + null, null, null, null, null)); + verifier.verify(builder.vNodeList.get(0)); + } + + public void testV21BackslashCase() throws IOException, VCardException { + VCardParser_V21 parser = new VCardParser_V21(); + VDataBuilder builder = new VDataBuilder(); + InputStream is = getContext().getResources().openRawResource(R.raw.v21_backslash); + assertEquals(true, parser.parse(is,"ISO-8859-1", builder)); + is.close(); + assertEquals(1, builder.vNodeList.size()); + PropertyNodesVerifier verifier = new PropertyNodesVerifier( + new PropertyNode("VERSION", "2.1", + null, null, null, null, null), + new PropertyNode("N", ";A;B\\;C\\;;D;:E;\\\\;", + Arrays.asList("", "A;B\\", "C\\;", "D", ":E", "\\\\", ""), + null, null, null, null), + new PropertyNode("FN", "A;B\\C\\;D:E\\\\", + null, null, null, null, null)); + verifier.verify(builder.vNodeList.get(0)); + } + + public void testV21ComplicatedCase() throws IOException, VCardException { + VCardParser_V21 parser = new VCardParser_V21(); + VDataBuilder builder = new VDataBuilder(); + InputStream is = getContext().getResources().openRawResource(R.raw.v21_complicated); + assertEquals(true, parser.parse(is,"ISO-8859-1", builder)); + is.close(); + assertEquals(1, builder.vNodeList.size()); + ContentValues contentValuesForQP = new ContentValues(); + contentValuesForQP.put("ENCODING", "QUOTED-PRINTABLE"); + ContentValues contentValuesForPhoto = new ContentValues(); + contentValuesForPhoto.put("ENCODING", "BASE64"); + // Push data into int array at first since values like 0x80 are + // interpreted as int by the compiler and casting all of them is + // cumbersome... + int[] photoIntArray = { + 0xff, 0xd8, 0xff, 0xe1, 0x0a, 0x0f, 0x45, 0x78, 0x69, 0x66, 0x00, + 0x00, 0x4d, 0x4d, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0d, + 0x01, 0x0e, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0xaa, 0x01, 0x0f, 0x00, 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, + 0x00, 0xba, 0x01, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0x00, + 0x00, 0x00, 0xc2, 0x01, 0x12, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x01, 0x00, 0x00, 0x01, 0x1a, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xc8, 0x01, 0x1b, 0x00, 0x05, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x00, 0xd0, 0x01, 0x28, 0x00, 0x03, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x01, 0x31, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xd8, 0x01, 0x32, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0xe6, 0x02, 0x13, + 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x82, + 0x98, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0xfa, + 0x87, 0x69, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x01, + 0x84, 0xc4, 0xa5, 0x00, 0x07, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, + 0x01, 0x08, 0x00, 0x00, 0x04, 0x1e, 0x32, 0x30, 0x30, 0x38, 0x31, + 0x30, 0x32, 0x39, 0x31, 0x33, 0x35, 0x35, 0x33, 0x31, 0x00, 0x00, + 0x44, 0x6f, 0x43, 0x6f, 0x4d, 0x6f, 0x00, 0x00, 0x44, 0x39, 0x30, + 0x35, 0x69, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x01, 0x44, 0x39, 0x30, + 0x35, 0x69, 0x20, 0x56, 0x65, 0x72, 0x31, 0x2e, 0x30, 0x30, 0x00, + 0x32, 0x30, 0x30, 0x38, 0x3a, 0x31, 0x30, 0x3a, 0x32, 0x39, 0x20, + 0x31, 0x33, 0x3a, 0x35, 0x35, 0x3a, 0x34, 0x37, 0x00, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x00, 0x50, 0x72, 0x69, 0x6e, 0x74, 0x49, 0x4d, 0x00, 0x30, 0x33, + 0x30, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x01, 0x00, 0x14, 0x00, + 0x14, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, + 0x00, 0x34, 0x01, 0x00, 0x05, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, + 0x00, 0x00, 0x00, 0x01, 0x10, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x11, 0x09, 0x00, 0x00, 0x27, 0x10, 0x00, 0x00, 0x0f, 0x0b, 0x00, + 0x00, 0x27, 0x10, 0x00, 0x00, 0x05, 0x97, 0x00, 0x00, 0x27, 0x10, + 0x00, 0x00, 0x08, 0xb0, 0x00, 0x00, 0x27, 0x10, 0x00, 0x00, 0x1c, + 0x01, 0x00, 0x00, 0x27, 0x10, 0x00, 0x00, 0x02, 0x5e, 0x00, 0x00, + 0x27, 0x10, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x27, 0x10, 0x00, + 0x00, 0x03, 0xcb, 0x00, 0x00, 0x27, 0x10, 0x00, 0x00, 0x1b, 0xe5, + 0x00, 0x00, 0x27, 0x10, 0x00, 0x28, 0x82, 0x9a, 0x00, 0x05, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0x6a, 0x82, 0x9d, 0x00, 0x05, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0x72, 0x88, 0x22, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x90, 0x00, + 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x30, 0x32, 0x32, 0x30, 0x90, + 0x03, 0x00, 0x02, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x03, 0x7a, + 0x90, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x03, + 0x8e, 0x91, 0x01, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x01, 0x02, + 0x03, 0x00, 0x91, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x03, 0xa2, 0x92, 0x01, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x00, 0x03, 0xaa, 0x92, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x03, 0xb2, 0x92, 0x04, 0x00, 0x0a, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x03, 0xba, 0x92, 0x05, 0x00, 0x05, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0xc2, 0x92, 0x07, 0x00, 0x03, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x92, 0x08, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x92, 0x09, + 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x92, + 0x0a, 0x00, 0x05, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0xca, + 0x92, 0x7c, 0x00, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x92, 0x86, 0x00, 0x07, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, + 0x03, 0xd2, 0xa0, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x04, 0x30, + 0x31, 0x30, 0x30, 0xa0, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x01, 0x00, 0x00, 0xa0, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x60, 0x00, 0x00, 0xa0, 0x03, 0x00, 0x03, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x48, 0x00, 0x00, 0xa0, 0x05, 0x00, 0x04, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x04, 0x00, 0xa2, 0x0e, 0x00, 0x05, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0xe8, 0xa2, 0x0f, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x03, 0xf0, 0xa2, 0x10, + 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0xa2, + 0x17, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, + 0xa3, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x01, 0x03, 0x00, 0x00, + 0x00, 0xa3, 0x01, 0x00, 0x07, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, + 0x00, 0x00, 0xa4, 0x01, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x00, 0xa4, 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0xa4, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x04, 0x00, 0x05, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x03, 0xf8, 0xa4, 0x05, 0x00, 0x03, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x1d, 0x00, 0x00, 0xa4, 0x06, 0x00, 0x03, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x07, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0xa4, 0x08, + 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0xa4, + 0x09, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, + 0xa4, 0x0a, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0xa4, 0x0c, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x53, 0x00, + 0x00, 0x27, 0x10, 0x00, 0x00, 0x01, 0x5e, 0x00, 0x00, 0x00, 0x64, + 0x32, 0x30, 0x30, 0x38, 0x3a, 0x31, 0x30, 0x3a, 0x32, 0x39, 0x20, + 0x31, 0x33, 0x3a, 0x35, 0x35, 0x3a, 0x33, 0x31, 0x00, 0x32, 0x30, + 0x30, 0x38, 0x3a, 0x31, 0x30, 0x3a, 0x32, 0x39, 0x20, 0x31, 0x33, + 0x3a, 0x35, 0x35, 0x3a, 0x34, 0x37, 0x00, 0x00, 0x00, 0x29, 0x88, + 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x02, 0xb2, 0x00, 0x00, 0x00, + 0x64, 0x00, 0x00, 0x01, 0x5e, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x25, 0x00, + 0x00, 0x00, 0x0a, 0x00, 0x00, 0x0e, 0x92, 0x00, 0x00, 0x03, 0xe8, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x30, 0x30, + 0x38, 0x31, 0x30, 0x32, 0x39, 0x31, 0x33, 0x35, 0x35, 0x33, 0x31, + 0x00, 0x00, 0x20, 0x2a, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x2a, + 0xe2, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x04, 0x52, 0x39, 0x38, 0x00, 0x00, 0x02, 0x00, 0x07, 0x00, 0x00, + 0x00, 0x04, 0x30, 0x31, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x01, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x06, + 0x00, 0x00, 0x01, 0x1a, 0x00, 0x05, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x04, 0x6c, 0x01, 0x1b, 0x00, 0x05, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x00, 0x04, 0x74, 0x01, 0x28, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x02, 0x00, 0x00, 0x02, 0x01, 0x00, 0x04, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x04, 0x7c, 0x02, 0x02, 0x00, 0x04, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x05, 0x8b, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x01, 0xff, 0xd8, 0xff, 0xdb, 0x00, 0x84, + 0x00, 0x20, 0x16, 0x18, 0x1c, 0x18, 0x14, 0x20, 0x1c, 0x1a, 0x1c, + 0x24, 0x22, 0x20, 0x26, 0x30, 0x50, 0x34, 0x30, 0x2c, 0x2c, 0x30, + 0x62, 0x46, 0x4a, 0x3a, 0x50, 0x74, 0x66, 0x7a, 0x78, 0x72, 0x66, + 0x70, 0x6e, 0x80, 0x90, 0xb8, 0x9c, 0x80, 0x88, 0xae, 0x8a, 0x6e, + 0x70, 0xa0, 0xda, 0xa2, 0xae, 0xbe, 0xc4, 0xce, 0xd0, 0xce, 0x7c, + 0x9a, 0xe2, 0xf2, 0xe0, 0xc8, 0xf0, 0xb8, 0xca, 0xce, 0xc6, 0x01, + 0x22, 0x24, 0x24, 0x30, 0x2a, 0x30, 0x5e, 0x34, 0x34, 0x5e, 0xc6, + 0x84, 0x70, 0x84, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, + 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, + 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, + 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, + 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xff, 0xc0, + 0x00, 0x11, 0x08, 0x00, 0x78, 0x00, 0xa0, 0x03, 0x01, 0x21, 0x00, + 0x02, 0x11, 0x01, 0x03, 0x11, 0x01, 0xff, 0xc4, 0x01, 0xa2, 0x00, + 0x00, 0x01, 0x05, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, + 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x10, 0x00, 0x02, 0x01, 0x03, + 0x03, 0x02, 0x04, 0x03, 0x05, 0x05, 0x04, 0x04, 0x00, 0x00, 0x01, + 0x7d, 0x01, 0x02, 0x03, 0x00, 0x04, 0x11, 0x05, 0x12, 0x21, 0x31, + 0x41, 0x06, 0x13, 0x51, 0x61, 0x07, 0x22, 0x71, 0x14, 0x32, 0x81, + 0x91, 0xa1, 0x08, 0x23, 0x42, 0xb1, 0xc1, 0x15, 0x52, 0xd1, 0xf0, + 0x24, 0x33, 0x62, 0x72, 0x82, 0x09, 0x0a, 0x16, 0x17, 0x18, 0x19, + 0x1a, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x34, 0x35, 0x36, 0x37, + 0x38, 0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, + 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x63, 0x64, 0x65, + 0x66, 0x67, 0x68, 0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, + 0x79, 0x7a, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, + 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, + 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, + 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, + 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, + 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xf1, + 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0x01, 0x00, + 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, + 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x11, 0x00, 0x02, 0x01, 0x02, 0x04, + 0x04, 0x03, 0x04, 0x07, 0x05, 0x04, 0x04, 0x00, 0x01, 0x02, 0x77, + 0x00, 0x01, 0x02, 0x03, 0x11, 0x04, 0x05, 0x21, 0x31, 0x06, 0x12, + 0x41, 0x51, 0x07, 0x61, 0x71, 0x13, 0x22, 0x32, 0x81, 0x08, 0x14, + 0x42, 0x91, 0xa1, 0xb1, 0xc1, 0x09, 0x23, 0x33, 0x52, 0xf0, 0x15, + 0x62, 0x72, 0xd1, 0x0a, 0x16, 0x24, 0x34, 0xe1, 0x25, 0xf1, 0x17, + 0x18, 0x19, 0x1a, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x35, 0x36, 0x37, + 0x38, 0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, + 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x63, 0x64, 0x65, + 0x66, 0x67, 0x68, 0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, + 0x79, 0x7a, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, + 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, + 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, + 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, + 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, + 0xda, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xf2, + 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xff, 0xda, 0x00, + 0x0c, 0x03, 0x01, 0x00, 0x02, 0x11, 0x03, 0x11, 0x00, 0x3f, 0x00, + 0x14, 0x54, 0xaa, 0x2a, 0x46, 0x48, 0xa2, 0xa4, 0x55, 0xa6, 0x04, + 0x8a, 0x29, 0xe0, 0x53, 0x10, 0xe0, 0x29, 0xc0, 0x50, 0x03, 0xb1, + 0x46, 0x29, 0x80, 0x84, 0x52, 0x11, 0x40, 0x0d, 0x22, 0x9a, 0x45, + 0x20, 0x23, 0x61, 0x51, 0x30, 0xa0, 0x08, 0xc8, 0xa8, 0xd8, 0x52, + 0x02, 0x26, 0x15, 0x0b, 0x0a, 0x00, 0xb4, 0xa2, 0xa5, 0x5a, 0x00, + 0x91, 0x45, 0x4a, 0xa2, 0x81, 0x92, 0x01, 0x4e, 0x02, 0x98, 0x87, + 0x0a, 0x70, 0xa0, 0x07, 0x62, 0x8c, 0x50, 0x21, 0x0d, 0x25, 0x00, + 0x34, 0x8a, 0x61, 0x14, 0x0c, 0x63, 0x0a, 0x89, 0x85, 0x00, 0x46, + 0xd5, 0x1b, 0x52, 0x02, 0x16, 0xa8, 0x98, 0x50, 0x05, 0x94, 0xa9, + 0x16, 0x80, 0x25, 0x5a, 0x95, 0x68, 0x18, 0xf1, 0x4f, 0x14, 0xc4, + 0x3b, 0xb5, 0x22, 0xb6, 0x38, 0x34, 0x00, 0xe3, 0x22, 0x8e, 0xf4, + 0x79, 0x8a, 0x7b, 0xd1, 0x71, 0x03, 0x30, 0xc7, 0x14, 0x83, 0xa5, + 0x00, 0x06, 0x98, 0x68, 0x01, 0x8d, 0x51, 0x35, 0x03, 0x22, 0x6a, + 0x8d, 0xa9, 0x01, 0x13, 0x54, 0x4d, 0x40, 0x13, 0xa5, 0x4a, 0x28, + 0x02, 0x45, 0x35, 0x2a, 0x9a, 0x00, 0x78, 0x34, 0xf0, 0x69, 0x80, + 0x34, 0x81, 0x45, 0x40, 0xce, 0x58, 0xe6, 0xa2, 0x4c, 0x06, 0xe4, + 0xfa, 0xd1, 0x93, 0x50, 0x21, 0xca, 0xe4, 0x55, 0x84, 0x90, 0x30, + 0xab, 0x8b, 0x18, 0xa6, 0x9a, 0x6a, 0xc4, 0x31, 0xaa, 0x26, 0xa0, + 0x64, 0x4d, 0x51, 0xb5, 0x20, 0x23, 0x6a, 0x89, 0xa8, 0x02, 0x44, + 0x35, 0x2a, 0x9a, 0x00, 0x95, 0x4d, 0x48, 0xa6, 0x80, 0x24, 0x53, + 0x4e, 0xce, 0x05, 0x30, 0x2b, 0x3b, 0xee, 0x6a, 0x91, 0x5d, 0x76, + 0x63, 0xbd, 0x65, 0x7d, 0x40, 0x66, 0x68, 0xa9, 0x02, 0x45, 0x2b, + 0xb3, 0x9e, 0xb4, 0xc5, 0x6d, 0xad, 0x9a, 0xa0, 0x2c, 0x06, 0xc8, + 0xcd, 0x04, 0xd6, 0xa2, 0x23, 0x63, 0x51, 0xb1, 0xa0, 0x64, 0x4d, + 0x51, 0x93, 0x48, 0x08, 0xda, 0xa2, 0x6a, 0x00, 0x72, 0x1a, 0x99, + 0x4d, 0x00, 0x48, 0xa6, 0xa4, 0x53, 0x4c, 0x07, 0x86, 0x03, 0xbd, + 0x2b, 0x9c, 0xa7, 0x14, 0x98, 0x10, 0x85, 0x34, 0xe0, 0xa6, 0xb3, + 0xb0, 0x0b, 0xb5, 0xa8, 0x0a, 0xd4, 0x58, 0x42, 0xed, 0x3e, 0x94, + 0xd2, 0xa6, 0x8b, 0x01, 0x34, 0x44, 0xed, 0xe6, 0x9c, 0x4d, 0x6a, + 0x80, 0x8d, 0x8d, 0x46, 0xc6, 0x80, 0x23, 0x63, 0x51, 0x9a, 0x06, + 0x46, 0xd5, 0x13, 0x52, 0x01, 0x54, 0xd4, 0xaa, 0x68, 0x02, 0x40, + 0x6a, 0x40, 0x78, 0xa0, 0x08, 0x59, 0xce, 0xee, 0xb5, 0x2a, 0x39, + 0xd9, 0x59, 0xa7, 0xa8, 0x00, 0x73, 0xeb, 0x4e, 0x0e, 0x7d, 0x69, + 0x5c, 0x05, 0xf3, 0x0f, 0xad, 0x1e, 0x61, 0xf5, 0xa7, 0x71, 0x0b, + 0xe6, 0x35, 0x21, 0x90, 0xd3, 0xb8, 0x0e, 0x32, 0x10, 0x95, 0x10, + 0x91, 0xb3, 0xd6, 0x9b, 0x60, 0x4b, 0x9c, 0x8a, 0x63, 0x1a, 0xb0, + 0x18, 0x4d, 0x46, 0xc6, 0x80, 0x22, 0x6a, 0x61, 0xa4, 0x31, 0xaa, + 0x6a, 0x55, 0x34, 0x01, 0x2a, 0x9a, 0x7e, 0x78, 0xa0, 0x08, 0x09, + 0xf9, 0xaa, 0x58, 0xcf, 0xca, 0x6b, 0x3e, 0xa0, 0x00, 0xd3, 0x81, + 0xa9, 0x01, 0x73, 0x46, 0x69, 0x80, 0xb9, 0xa4, 0xcd, 0x00, 0x2b, + 0x1f, 0x92, 0xa3, 0x07, 0x9a, 0x6f, 0x70, 0x26, 0xcf, 0x14, 0xd2, + 0x6b, 0x51, 0x0c, 0x63, 0x51, 0xb1, 0xa0, 0x08, 0xda, 0x98, 0x69, + 0x0c, 0x8d, 0x4d, 0x4a, 0xa6, 0x80, 0x24, 0x53, 0x52, 0x03, 0xc5, + 0x02, 0x21, 0x27, 0xe6, 0xa9, 0x23, 0x3f, 0x29, 0xac, 0xfa, 0x8c, + 0x01, 0xe6, 0x9c, 0x0d, 0x48, 0x0a, 0x0d, 0x2e, 0x68, 0x01, 0x73, + 0x49, 0x9a, 0x60, 0x2b, 0x1f, 0x92, 0x98, 0x3a, 0xd3, 0x7b, 0x81, + 0x36, 0x78, 0xa6, 0x93, 0x5a, 0x88, 0x8c, 0x9a, 0x63, 0x1a, 0x00, + 0x8c, 0xd3, 0x0d, 0x21, 0x91, 0x29, 0xa9, 0x14, 0xd0, 0x04, 0x8a, + 0x69, 0xe0, 0xd3, 0x11, 0x1b, 0x1e, 0x6a, 0x48, 0xcf, 0xca, 0x6b, + 0x3e, 0xa3, 0x10, 0x1a, 0x70, 0x35, 0x20, 0x38, 0x1a, 0x5c, 0xd2, + 0x01, 0x73, 0x49, 0x9a, 0x60, 0x39, 0x8f, 0xca, 0x29, 0x8b, 0xf7, + 0xaa, 0xba, 0x88, 0x96, 0x9a, 0x6b, 0x40, 0x18, 0xc6, 0xa3, 0x26, + 0x80, 0x18, 0x69, 0xa6, 0x90, 0xc8, 0x14, 0xd4, 0x8a, 0x69, 0x80, + 0xf0, 0x6a, 0x40, 0x68, 0x10, 0xbb, 0x41, 0xa7, 0xe3, 0x0b, 0xc5, + 0x2b, 0x01, 0x10, 0xa7, 0x03, 0x59, 0x0c, 0x76, 0x69, 0x73, 0x40, + 0x0b, 0x9a, 0x28, 0x11, 0x28, 0x19, 0x5e, 0x69, 0x02, 0x81, 0x5a, + 0xd8, 0x00, 0xd3, 0x4d, 0x50, 0x0c, 0x6a, 0x8c, 0xd2, 0x01, 0xa6, + 0x98, 0x69, 0x0c, 0xae, 0xa6, 0xa4, 0x06, 0x80, 0x1e, 0xa6, 0x9e, + 0x0d, 0x31, 0x12, 0x03, 0x4f, 0x06, 0x80, 0x13, 0x60, 0x34, 0xd3, + 0xc1, 0xa8, 0x92, 0x01, 0xf1, 0x8d, 0xdd, 0x69, 0xcc, 0xa1, 0x69, + 0x5b, 0x4b, 0x80, 0x83, 0x93, 0x52, 0x04, 0x14, 0xe2, 0xae, 0x03, + 0xa9, 0x0d, 0x68, 0x03, 0x4d, 0x34, 0xd0, 0x03, 0x0d, 0x30, 0xd2, + 0x01, 0x86, 0x9a, 0x68, 0x19, 0x58, 0x1a, 0x78, 0xa4, 0x04, 0x8a, + 0x69, 0xe0, 0xd3, 0x10, 0xe0, 0x69, 0xe0, 0xd0, 0x03, 0xc1, 0xa8, + 0xdb, 0xad, 0x4c, 0x81, 0x12, 0x45, 0xd6, 0x9d, 0x25, 0x1d, 0x00, + 0x6a, 0xf5, 0xa9, 0xe8, 0x80, 0x31, 0x29, 0x0d, 0x58, 0x08, 0x69, + 0x86, 0x80, 0x1a, 0x69, 0x86, 0x90, 0x0c, 0x34, 0xd3, 0x48, 0x65, + 0x51, 0x4f, 0x06, 0x98, 0x0f, 0x14, 0xf0, 0x68, 0x10, 0xf0, 0x69, + 0xe0, 0xd0, 0x03, 0x81, 0xa5, 0x2b, 0x9a, 0x1a, 0xb8, 0x87, 0xa8, + 0xdb, 0x4a, 0x46, 0x68, 0xb6, 0x80, 0x2a, 0xa8, 0x14, 0xea, 0x12, + 0xb0, 0x05, 0x21, 0xa6, 0x02, 0x1a, 0x61, 0xa0, 0x06, 0x9a, 0x61, + 0xa4, 0x31, 0x86, 0x9a, 0x69, 0x0c, 0xa8, 0x0d, 0x3c, 0x53, 0x01, + 0xe2, 0x9e, 0x28, 0x10, 0xf1, 0x4e, 0x06, 0x98, 0x0f, 0x06, 0x9e, + 0x0d, 0x02, 0x1c, 0x29, 0xc2, 0x80, 0x16, 0x96, 0x80, 0x0a, 0x4a, + 0x00, 0x43, 0x4d, 0x34, 0x0c, 0x61, 0xa6, 0x1a, 0x40, 0x34, 0xd3, + 0x4d, 0x21, 0x80, 0xff, 0xd9, 0xff, 0xdb, 0x00, 0x84, 0x00, 0x0a, + 0x07, 0x07, 0x08, 0x07, 0x06, 0x0a, 0x08, 0x08, 0x08, 0x0b, 0x0a, + 0x0a, 0x0b, 0x0e, 0x18, 0x10, 0x0e, 0x0d, 0x0d, 0x0e, 0x1d, 0x15, + 0x16, 0x11, 0x18, 0x23, 0x1f, 0x25, 0x24, 0x22, 0x1f, 0x22, 0x21, + 0x26, 0x2b, 0x37, 0x2f, 0x26, 0x29, 0x34, 0x29, 0x21, 0x22, 0x30, + 0x41, 0x31, 0x34, 0x39, 0x3b, 0x3e, 0x3e, 0x3e, 0x25, 0x2e, 0x44, + 0x49, 0x43, 0x3c, 0x48, 0x37, 0x3d, 0x3e, 0x3b, 0x01, 0x0a, 0x0b, + 0x0b, 0x0e, 0x0d, 0x0e, 0x1c, 0x10, 0x10, 0x1c, 0x3b, 0x28, 0x22, + 0x28, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, + 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, + 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, + 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, + 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0xff, 0xc0, 0x00, 0x11, + 0x08, 0x00, 0x48, 0x00, 0x60, 0x03, 0x01, 0x21, 0x00, 0x02, 0x11, + 0x01, 0x03, 0x11, 0x01, 0xff, 0xc4, 0x01, 0xa2, 0x00, 0x00, 0x01, + 0x05, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0a, 0x0b, 0x10, 0x00, 0x02, 0x01, 0x03, 0x03, 0x02, + 0x04, 0x03, 0x05, 0x05, 0x04, 0x04, 0x00, 0x00, 0x01, 0x7d, 0x01, + 0x02, 0x03, 0x00, 0x04, 0x11, 0x05, 0x12, 0x21, 0x31, 0x41, 0x06, + 0x13, 0x51, 0x61, 0x07, 0x22, 0x71, 0x14, 0x32, 0x81, 0x91, 0xa1, + 0x08, 0x23, 0x42, 0xb1, 0xc1, 0x15, 0x52, 0xd1, 0xf0, 0x24, 0x33, + 0x62, 0x72, 0x82, 0x09, 0x0a, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x25, + 0x26, 0x27, 0x28, 0x29, 0x2a, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, + 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x53, 0x54, + 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, + 0x68, 0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, + 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, + 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, + 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, + 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, + 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xe1, 0xe2, + 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xf1, 0xf2, 0xf3, + 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0x01, 0x00, 0x03, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, + 0x09, 0x0a, 0x0b, 0x11, 0x00, 0x02, 0x01, 0x02, 0x04, 0x04, 0x03, + 0x04, 0x07, 0x05, 0x04, 0x04, 0x00, 0x01, 0x02, 0x77, 0x00, 0x01, + 0x02, 0x03, 0x11, 0x04, 0x05, 0x21, 0x31, 0x06, 0x12, 0x41, 0x51, + 0x07, 0x61, 0x71, 0x13, 0x22, 0x32, 0x81, 0x08, 0x14, 0x42, 0x91, + 0xa1, 0xb1, 0xc1, 0x09, 0x23, 0x33, 0x52, 0xf0, 0x15, 0x62, 0x72, + 0xd1, 0x0a, 0x16, 0x24, 0x34, 0xe1, 0x25, 0xf1, 0x17, 0x18, 0x19, + 0x1a, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x35, 0x36, 0x37, 0x38, 0x39, + 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x53, 0x54, + 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, + 0x68, 0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, + 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x92, 0x93, + 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, + 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, + 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, + 0xca, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xe2, + 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea, 0xf2, 0xf3, 0xf4, + 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xff, 0xda, 0x00, 0x0c, 0x03, + 0x01, 0x00, 0x02, 0x11, 0x03, 0x11, 0x00, 0x3f, 0x00, 0x9e, 0xd2, + 0x2e, 0x07, 0x15, 0xaf, 0x6d, 0x08, 0xe2, 0xb3, 0x45, 0x1a, 0xf6, + 0xd0, 0x00, 0x01, 0xc5, 0x68, 0x45, 0x17, 0x4a, 0xb4, 0x22, 0xe4, + 0x70, 0x8c, 0x74, 0xa9, 0x3c, 0xa1, 0x8e, 0x95, 0x48, 0x96, 0x31, + 0xe2, 0x18, 0xe9, 0x55, 0xa5, 0x8c, 0x7a, 0x50, 0x05, 0x0b, 0x88, + 0x86, 0x0f, 0x15, 0x8f, 0x75, 0x1f, 0x26, 0x93, 0x19, 0x91, 0x77, + 0x18, 0xc1, 0xac, 0x4b, 0xc8, 0xfa, 0xd6, 0x63, 0x37, 0x6d, 0x31, + 0xb4, 0x73, 0x5b, 0x36, 0xa0, 0x1c, 0x50, 0x80, 0xd7, 0x83, 0xa0, + 0xab, 0xd1, 0x62, 0xad, 0x09, 0x8f, 0x17, 0x29, 0x03, 0xb2, 0xcc, + 0xe0, 0x77, 0x14, 0xa3, 0x56, 0xb3, 0x27, 0x1e, 0x67, 0xe9, 0x52, + 0xea, 0xc6, 0x3a, 0x36, 0x48, 0xef, 0x3d, 0x27, 0x70, 0x22, 0x60, + 0x47, 0x52, 0x69, 0xb2, 0xe2, 0xad, 0x3b, 0xea, 0x80, 0xa3, 0x38, + 0xe0, 0xd6, 0x3d, 0xd8, 0x1c, 0xd0, 0xca, 0x46, 0x3d, 0xd0, 0x18, + 0x35, 0x89, 0x78, 0xa3, 0x9a, 0xcd, 0x8c, 0xd2, 0xb3, 0x93, 0x2a, + 0x2b, 0x66, 0xd5, 0xf1, 0x8a, 0x10, 0x1a, 0xd6, 0xf2, 0x03, 0x8a, + 0x9e, 0xe6, 0xf4, 0x5a, 0xdb, 0xef, 0xfe, 0x23, 0xc0, 0xa7, 0x27, + 0xcb, 0x16, 0xc4, 0xcc, 0xdd, 0xe2, 0x78, 0x9a, 0x69, 0x66, 0xcc, + 0x99, 0xe1, 0x4d, 0x47, 0xba, 0xbc, 0xd9, 0x6a, 0xee, 0x26, 0x59, + 0x59, 0x4d, 0xac, 0x69, 0x34, 0x52, 0xe5, 0x8f, 0x55, 0xad, 0x58, + 0xae, 0x85, 0xc4, 0x22, 0x41, 0xdf, 0xad, 0x76, 0x61, 0xe5, 0x6f, + 0x74, 0x45, 0x69, 0xdc, 0x00, 0x79, 0xac, 0x8b, 0xa6, 0xc9, 0x35, + 0xd4, 0x34, 0x64, 0xdc, 0x37, 0x06, 0xb1, 0xae, 0x88, 0xc1, 0xac, + 0xd8, 0xc9, 0x2c, 0xa6, 0xe0, 0x73, 0x5b, 0x36, 0xf3, 0x74, 0xe6, + 0x84, 0x05, 0xe3, 0xa9, 0x47, 0x6a, 0x14, 0xb6, 0x49, 0x3d, 0x85, + 0x3a, 0xee, 0xee, 0x2b, 0xa8, 0xe2, 0x6f, 0x30, 0x81, 0xe9, 0x8a, + 0xca, 0xa4, 0xe2, 0xd3, 0x8b, 0x01, 0xb1, 0xf9, 0x04, 0x7f, 0xaf, + 0x23, 0xf0, 0xa9, 0x54, 0x41, 0x9c, 0xfd, 0xa3, 0xf4, 0xae, 0x65, + 0x18, 0xf7, 0x25, 0x8a, 0xe2, 0x02, 0x38, 0xb8, 0xfd, 0x2a, 0x7b, + 0x5b, 0xa8, 0x6d, 0x6d, 0x5d, 0x9a, 0x5d, 0xcb, 0xbb, 0xd2, 0xb6, + 0xa6, 0xa3, 0x19, 0x5e, 0xe2, 0x03, 0x7b, 0x1d, 0xc2, 0x17, 0x8d, + 0xb8, 0xac, 0xfb, 0x89, 0x39, 0x35, 0xd6, 0x9a, 0x6a, 0xe8, 0x66, + 0x55, 0xcb, 0xf5, 0xac, 0x7b, 0x96, 0xeb, 0x50, 0xc6, 0x88, 0x6d, + 0x66, 0xe9, 0xcd, 0x6c, 0xdb, 0x4f, 0xd3, 0x9a, 0x00, 0x2f, 0xe6, + 0xf9, 0xa3, 0xe7, 0xb5, 0x4a, 0x93, 0x7f, 0xa2, 0xc6, 0x73, 0xdc, + 0xd7, 0x15, 0x55, 0xef, 0x48, 0x7d, 0x09, 0x52, 0x6e, 0x3a, 0xd4, + 0xab, 0x2f, 0xbd, 0x61, 0x16, 0x0c, 0x73, 0x49, 0xc5, 0x24, 0x92, + 0x7f, 0xa2, 0x63, 0xfd, 0xaa, 0xd6, 0x2f, 0x71, 0x0e, 0xb1, 0x93, + 0xf7, 0x2d, 0xf5, 0xa4, 0x9e, 0x4e, 0xb5, 0xdd, 0x4b, 0xf8, 0x68, + 0x4c, 0xcb, 0xb9, 0x93, 0xad, 0x65, 0xce, 0xd9, 0x26, 0xa9, 0x8d, + 0x19, 0xf6, 0xf2, 0xf4, 0xe6, 0xb5, 0xad, 0xe7, 0xc6, 0x39, 0xa0, + 0x18, 0xeb, 0xc9, 0x77, 0x6c, 0x35, 0x2a, 0x4b, 0xfe, 0x8a, 0x9c, + 0xff, 0x00, 0x11, 0xae, 0x3a, 0x8b, 0xde, 0x61, 0xd0, 0x9e, 0x39, + 0xb8, 0xeb, 0x53, 0xac, 0xb9, 0xae, 0x5b, 0x00, 0xf3, 0x27, 0x14, + 0x92, 0xc9, 0xfe, 0x8a, 0x3f, 0xde, 0x35, 0xac, 0x3a, 0x88, 0x92, + 0xcd, 0xb1, 0x6e, 0x7d, 0xcd, 0x32, 0x67, 0xeb, 0xcd, 0x7a, 0x14, + 0xfe, 0x04, 0x26, 0x66, 0xce, 0xf9, 0x26, 0xb3, 0xe6, 0x6e, 0xb4, + 0xd9, 0x48, 0xc8, 0x82, 0x4e, 0x07, 0x35, 0xa7, 0x6f, 0x2f, 0x02, + 0x9a, 0x06, 0x5f, 0x8c, 0xa4, 0x83, 0x0e, 0x32, 0x2a, 0x69, 0xe3, + 0xdd, 0x12, 0x08, 0x97, 0x85, 0xec, 0x2a, 0x2a, 0x42, 0xf1, 0x76, + 0x26, 0xe4, 0x6a, 0x59, 0x0e, 0x18, 0x10, 0x6a, 0xd2, 0x89, 0x02, + 0x6e, 0x2a, 0x71, 0xeb, 0x5c, 0x1c, 0x8c, 0xa6, 0x48, 0xbb, 0xdc, + 0x61, 0x41, 0x35, 0x72, 0x28, 0x87, 0xd9, 0xf6, 0x4a, 0xb9, 0xe7, + 0x38, 0xae, 0x8c, 0x3d, 0x36, 0xdd, 0xde, 0xc4, 0xb0, 0x21, 0x51, + 0x76, 0xa8, 0xc0, 0xaa, 0x93, 0x31, 0xe6, 0xbb, 0x2d, 0x65, 0x61, + 0x19, 0xd3, 0x1e, 0xb5, 0x46, 0x5a, 0x96, 0x5a, 0x30, 0xa0, 0x7e, + 0x05, 0x69, 0x5b, 0xc9, 0xc6, 0x28, 0x40, 0xcd, 0x08, 0x64, 0x3c, + 0x73, 0x57, 0xe1, 0x94, 0xf1, 0xcd, 0x5a, 0x21, 0x8c, 0xb9, 0x63, + 0xe7, 0x67, 0x1d, 0xab, 0x40, 0xb1, 0xfb, 0x00, 0x1d, 0xf0, 0x2b, + 0x99, 0x2d, 0x66, 0x3e, 0x88, 0x75, 0x81, 0x3f, 0x31, 0xf6, 0xab, + 0x64, 0xd6, 0xb4, 0x17, 0xee, 0xd0, 0x9e, 0xe4, 0x32, 0x1a, 0xa7, + 0x31, 0xad, 0x18, 0x14, 0x26, 0xef, 0x54, 0xa5, 0xa8, 0x65, 0xa3, + 0x9c, 0x81, 0xfa, 0x56, 0x8c, 0x2d, 0xce, 0x68, 0x40, 0xcb, 0xf1, + 0x37, 0xbd, 0x5e, 0x85, 0xea, 0xd1, 0x0c, 0xbb, 0x19, 0x56, 0x23, + 0x20, 0x1f, 0xad, 0x5c, 0x42, 0x08, 0x03, 0xb5, 0x55, 0x91, 0x04, + 0xc9, 0x80, 0x38, 0x00, 0x0a, 0x71, 0x34, 0x6c, 0x32, 0x27, 0xe9, + 0x55, 0x25, 0x15, 0x2c, 0x68, 0xa3, 0x30, 0xeb, 0x54, 0xa5, 0x15, + 0x0c, 0xd1, 0x00, 0xff, 0xd9}; + int length = photoIntArray.length; + byte[] photoByteArray = new byte[length]; + for (int i = 0; i < length; i++) { + photoByteArray[i] = (byte)photoIntArray[i]; + } + PropertyNodesVerifier verifier = new PropertyNodesVerifier( + new PropertyNode("VERSION", "2.1", + null, null, null, null, null), + new PropertyNode("N", "Gump;Forrest;Hoge;Pos;Tao", + Arrays.asList("Gump", "Forrest", + "Hoge", "Pos", "Tao"), + null, null, null, null), + new PropertyNode("FN", "Joe Due", + null, null, null, null, null), + new PropertyNode("ORG", + "Gump Shrimp Co.;Sales Dept.;Manager;Fish keeper", + Arrays.asList("Gump Shrimp Co.", + "Sales Dept.;Manager", + "Fish keeper"), + null, null, null, null), + new PropertyNode("ROLE", "Fish Cake Keeper!", + null, null, null, null, null), + new PropertyNode("TITLE", "Shrimp Man", + null, null, null, null, null), + new PropertyNode("X-CLASS", "PUBLIC", + null, null, null, null, null), + new PropertyNode("TEL", "(111) 555-1212", + null, null, null, + new HashSet(Arrays.asList("WORK", "VOICE")), null), + new PropertyNode("TEL", "(404) 555-1212", + null, null, null, + new HashSet(Arrays.asList("HOME", "VOICE")), null), + new PropertyNode("TEL", "0311111111", + null, null, null, + new HashSet(Arrays.asList("CELL")), null), + new PropertyNode("TEL", "0322222222", + null, null, null, + new HashSet(Arrays.asList("VIDEO")), null), + new PropertyNode("TEL", "0333333333", + null, null, null, + new HashSet(Arrays.asList("VOICE")), null), + new PropertyNode("ADR", + ";;100 Waters Edge;Baytown;LA;30314;United States of America", + Arrays.asList("", "", "100 Waters Edge", "Baytown", + "LA", "30314", "United States of America"), + null, null, + new HashSet(Arrays.asList("WORK")), null), + new PropertyNode("LABEL", + "100 Waters Edge\r\nBaytown, LA 30314\r\nUnited States of America", + null, null, contentValuesForQP, + new HashSet(Arrays.asList("WORK")), null), + new PropertyNode("ADR", + ";;42 Plantation St.;Baytown;LA;30314;United States of America", + Arrays.asList("", "", "42 Plantation St.", "Baytown", + "LA", "30314", "United States of America"), null, null, + new HashSet(Arrays.asList("HOME")), null), + new PropertyNode("LABEL", + "42 Plantation St.\r\nBaytown, LA 30314\r\nUnited States of America", + null, null, contentValuesForQP, + new HashSet(Arrays.asList("HOME")), null), + new PropertyNode("EMAIL", "forrestgump@walladalla.com", + null, null, null, + new HashSet(Arrays.asList("PREF", "INTERNET")), null), + new PropertyNode("EMAIL", "cell@example.com", + null, null, null, + new HashSet(Arrays.asList("CELL")), null), + new PropertyNode("NOTE", "The following note is the example from RFC 2045.", + null, null, null, null, null), + new PropertyNode("NOTE", + "Now's the time for all folk to come to the aid of their country.", + null, null, contentValuesForQP, null, null), + new PropertyNode("PHOTO", null, + null, photoByteArray, contentValuesForPhoto, + new HashSet(Arrays.asList("JPEG")), null), + new PropertyNode("X-ATTRIBUTE", "Some String", + null, null, null, null, null), + new PropertyNode("BDAY", "19800101", + null, null, null, null, null), + new PropertyNode("GEO", "35.6563854,139.6994233", + null, null, null, null, null), + new PropertyNode("URL", "http://www.example.com/", + null, null, null, null, null), + new PropertyNode("REV", "20080424T195243Z", + null, null, null, null, null)); + verifier.verify(builder.vNodeList.get(0)); + } + + public void testV21Japanese1() throws IOException, VCardException { + VCardParser_V21 parser = new VCardParser_V21(); + VDataBuilder builder = new VDataBuilder(); + InputStream is = getContext().getResources().openRawResource(R.raw.v21_japanese_1); + assertEquals(true, parser.parse(is,"ISO-8859-1", builder)); + is.close(); + assertEquals(1, builder.vNodeList.size()); + ContentValues contentValuesForShiftJis = new ContentValues(); + contentValuesForShiftJis.put("CHARSET", "SHIFT_JIS"); + ContentValues contentValuesForQP = new ContentValues(); + contentValuesForQP.put("ENCODING", "QUOTED-PRINTABLE"); + contentValuesForQP.put("CHARSET", "SHIFT_JIS"); + // Though Japanese careers append ";;;;" at the end of the value of "SOUND", + // vCard 2.1/3.0 specification does not allow multiple values. + // Do not need to handle it as multiple values. + PropertyNodesVerifier verifier = new PropertyNodesVerifier( + new PropertyNode("VERSION", "2.1", + null, null, null, null, null), + new PropertyNode("N", "\u5B89\u85E4\u30ED\u30A4\u30C9;;;;", + Arrays.asList("\u5B89\u85E4\u30ED\u30A4\u30C9", "", "", "", ""), + null, contentValuesForShiftJis, null, null), + new PropertyNode("SOUND", + "\uFF71\uFF9D\uFF84\uFF9E\uFF73\uFF9B\uFF72\uFF84\uFF9E;;;;", + null, null, contentValuesForShiftJis, + new HashSet(Arrays.asList("X-IRMC-N")), null), + new PropertyNode("TEL", "0300000000", + null, null, null, + new HashSet(Arrays.asList("VOICE", "PREF")), null)); + verifier.verify(builder.vNodeList.get(0)); + } + + public void testV21Japanese2() throws IOException, VCardException { + VCardParser_V21 parser = new VCardParser_V21(); + VDataBuilder builder = new VDataBuilder(); + InputStream is = getContext().getResources().openRawResource(R.raw.v21_japanese_2); + assertEquals(true, parser.parse(is,"ISO-8859-1", builder)); + is.close(); + assertEquals(1, builder.vNodeList.size()); + ContentValues contentValuesForShiftJis = new ContentValues(); + contentValuesForShiftJis.put("CHARSET", "SHIFT_JIS"); + ContentValues contentValuesForQP = new ContentValues(); + contentValuesForQP.put("ENCODING", "QUOTED-PRINTABLE"); + contentValuesForQP.put("CHARSET", "SHIFT_JIS"); + PropertyNodesVerifier verifier = new PropertyNodesVerifier( + new PropertyNode("VERSION", "2.1", + null, null, null, null, null), + new PropertyNode("N", "\u5B89\u85E4;\u30ED\u30A4\u30C9\u0031;;;", + Arrays.asList("\u5B89\u85E4", "\u30ED\u30A4\u30C9\u0031", + "", "", ""), + null, contentValuesForShiftJis, null, null), + new PropertyNode("FN", + "\u5B89\u85E4\u0020\u30ED\u30A4\u30C9\u0020\u0031", + null, null, contentValuesForShiftJis, null, null), + new PropertyNode("SOUND", + ("\uFF71\uFF9D\uFF84\uFF9E\uFF73" + + ";\uFF9B\uFF72\uFF84\uFF9E\u0031;;;"), + null, null, contentValuesForShiftJis, + new HashSet(Arrays.asList("X-IRMC-N")), null), + new PropertyNode("ADR", + (";\u6771\u4EAC\u90FD\u6E0B\u8C37\u533A\u685C" + + "\u4E18\u753A\u0032\u0036\u002D\u0031\u30BB" + + "\u30EB\u30EA\u30A2\u30F3\u30BF\u30EF\u30FC\u0036" + + "\u968E;;;;150-8512;"), + Arrays.asList("", + "\u6771\u4EAC\u90FD\u6E0B\u8C37\u533A\u685C" + + "\u4E18\u753A\u0032\u0036\u002D\u0031\u30BB" + + "\u30EB\u30EA\u30A2\u30F3\u30BF\u30EF\u30FC" + + "\u0036\u968E", "", "", "", "150-8512", ""), + null, contentValuesForQP, + new HashSet(Arrays.asList("HOME")), null), + new PropertyNode("NOTE", "\u30E1\u30E2", + null, null, contentValuesForQP, null, null)); + verifier.verify(builder.vNodeList.get(0)); + } + + public void testV21MultipleEntryCase() throws IOException, VCardException { + VCardParser_V21 parser = new VCardParser_V21(); + VDataBuilder builder = new VDataBuilder(); + InputStream is = getContext().getResources().openRawResource(R.raw.v21_multiple_entry); + assertEquals(true, parser.parse(is,"ISO-8859-1", builder)); + is.close(); + assertEquals(3, builder.vNodeList.size()); + ContentValues contentValuesForShiftJis = new ContentValues(); + contentValuesForShiftJis.put("CHARSET", "SHIFT_JIS"); + PropertyNodesVerifier verifier = new PropertyNodesVerifier( + new PropertyNode("VERSION", "2.1", + null, null, null, null, null), + new PropertyNode("N", "\u5B89\u85E4\u30ED\u30A4\u30C9\u0033;;;;", + Arrays.asList("\u5B89\u85E4\u30ED\u30A4\u30C9\u0033", "", "", "", ""), + null, contentValuesForShiftJis, null, null), + new PropertyNode("SOUND", + "\uFF71\uFF9D\uFF84\uFF9E\uFF73\uFF9B\uFF72\uFF84\uFF9E\u0033;;;;", + null, null, contentValuesForShiftJis, + new HashSet(Arrays.asList("X-IRMC-N")), null), + new PropertyNode("TEL", "9", + null, null, null, + new HashSet(Arrays.asList("X-NEC-SECRET")), null), + new PropertyNode("TEL", "10", + null, null, null, + new HashSet(Arrays.asList("X-NEC-HOTEL")), null), + new PropertyNode("TEL", "11", + null, null, null, + new HashSet(Arrays.asList("X-NEC-SCHOOL")), null), + new PropertyNode("TEL", "12", + null, null, null, + new HashSet(Arrays.asList("FAX", "HOME")), null)); + verifier.verify(builder.vNodeList.get(0)); + + verifier = new PropertyNodesVerifier( + new PropertyNode("VERSION", "2.1", + null, null, null, null, null), + new PropertyNode("N", "\u5B89\u85E4\u30ED\u30A4\u30C9\u0034;;;;", + Arrays.asList("\u5B89\u85E4\u30ED\u30A4\u30C9\u0034", "", "", "", ""), + null, contentValuesForShiftJis, null, null), + new PropertyNode("SOUND", + "\uFF71\uFF9D\uFF84\uFF9E\uFF73\uFF9B\uFF72\uFF84\uFF9E\u0034;;;;", + null, null, contentValuesForShiftJis, + new HashSet(Arrays.asList("X-IRMC-N")), null), + new PropertyNode("TEL", "13", + null, null, null, + new HashSet(Arrays.asList("MODEM")), null), + new PropertyNode("TEL", "14", + null, null, null, + new HashSet(Arrays.asList("PAGER")), null), + new PropertyNode("TEL", "15", + null, null, null, + new HashSet(Arrays.asList("X-NEC-FAMILY")), null), + new PropertyNode("TEL", "16", + null, null, null, + new HashSet(Arrays.asList("X-NEC-GIRL")), null)); + verifier.verify(builder.vNodeList.get(1)); + verifier = new PropertyNodesVerifier( + new PropertyNode("VERSION", "2.1", + null, null, null, null, null), + new PropertyNode("N", "\u5B89\u85E4\u30ED\u30A4\u30C9\u0035;;;;", + Arrays.asList("\u5B89\u85E4\u30ED\u30A4\u30C9\u0035", "", "", "", ""), + null, contentValuesForShiftJis, null, null), + new PropertyNode("SOUND", + "\uFF71\uFF9D\uFF84\uFF9E\uFF73\uFF9B\uFF72\uFF84\uFF9E\u0035;;;;", + null, null, contentValuesForShiftJis, + new HashSet(Arrays.asList("X-IRMC-N")), null), + new PropertyNode("TEL", "17", + null, null, null, + new HashSet(Arrays.asList("X-NEC-BOY")), null), + new PropertyNode("TEL", "18", + null, null, null, + new HashSet(Arrays.asList("X-NEC-FRIEND")), null), + new PropertyNode("TEL", "19", + null, null, null, + new HashSet(Arrays.asList("X-NEC-PHS")), null), + new PropertyNode("TEL", "20", + null, null, null, + new HashSet(Arrays.asList("X-NEC-RESTAURANT")), null)); + verifier.verify(builder.vNodeList.get(2)); + } + + public void testV30SimpleCase() throws IOException, VCardException { + VCardParser_V21 parser = new VCardParser_V30(); + VDataBuilder builder = new VDataBuilder(); + InputStream is = getContext().getResources().openRawResource(R.raw.v30_simple); + assertEquals(true, parser.parse(is,"ISO-8859-1", builder)); + is.close(); + assertEquals(1, builder.vNodeList.size()); + PropertyNodesVerifier verifier = new PropertyNodesVerifier( + new PropertyNode("VERSION", "3.0", + null, null, null, null, null), + new PropertyNode("FN", "And Roid", + null, null, null, null, null), + new PropertyNode("N", "And;Roid;;;", + Arrays.asList("And", "Roid", "", "", ""), + null, null, null, null), + new PropertyNode("ORG", "Open;Handset; Alliance", + Arrays.asList("Open", "Handset", " Alliance"), + null, null, null, null), + new PropertyNode("SORT-STRING", "android", null, null, null, null, null), + new PropertyNode("TEL", "0300000000", + null, null, null, + new HashSet(Arrays.asList("PREF", "VOICE")), null), + new PropertyNode("CLASS", "PUBLIC", null, null, null, null, null), + new PropertyNode("X-GNO", "0", null, null, null, null, null), + new PropertyNode("X-GN", "group0", null, null, null, null, null), + new PropertyNode("X-REDUCTION", "0", + null, null, null, null, null), + new PropertyNode("REV", "20081031T065854Z", + null, null, null, null, null)); + verifier.verify(builder.vNodeList.get(0)); + } +} -- cgit v1.2.3-59-g8ed1b From b8488808899d27ea3d2c9d0091745012e13e3554 Mon Sep 17 00:00:00 2001 From: Jack Palevich <> Date: Wed, 25 Mar 2009 15:30:56 -0700 Subject: Automated import from //branches/donutburger/...@142687,142687 --- opengl/java/android/opengl/GLU.java | 171 +++++++++++++++++++----------------- 1 file changed, 88 insertions(+), 83 deletions(-) diff --git a/opengl/java/android/opengl/GLU.java b/opengl/java/android/opengl/GLU.java index 0152f42b0e41..49a43d07d9b8 100644 --- a/opengl/java/android/opengl/GLU.java +++ b/opengl/java/android/opengl/GLU.java @@ -20,14 +20,14 @@ import javax.microedition.khronos.opengles.GL10; /** * A set of GL utilities inspired by the OpenGL Utility Toolkit. - * + * */ public class GLU { /** * Return an error string from a GL or GLU error code. - * + * * @param error - a GL or GLU error code. * @return the error string for the input error code, or NULL if the input * was not a valid GL or GLU error code. @@ -56,7 +56,7 @@ public class GLU { /** * Define a viewing transformation in terms of an eye point, a center of * view, and an up vector. - * + * * @param gl a GL10 interface * @param eyeX eye point X * @param eyeY eye point Y @@ -89,46 +89,48 @@ public class GLU { float sx = fy * upZ - fz * upY; float sy = fz * upX - fx * upZ; float sz = fx * upY - fy * upX; - + // and normalize s float rls = 1.0f / Matrix.length(sx, sy, sz); sx *= rls; sy *= rls; sz *= rls; - + // compute u = s x f float ux = sy * fz - sz * fy; float uy = sz * fx - sx * fz; float uz = sx * fy - sy * fx; - float[] m = new float[16]; - m[0] = sx; - m[1] = ux; - m[2] = -fx; - m[3] = 0.0f; - - m[4] = sy; - m[5] = uy; - m[6] = -fy; - m[7] = 0.0f; - - m[8] = sz; - m[9] = uz; - m[10] = -fz; - m[11] = 0.0f; - - m[12] = 0.0f; - m[13] = 0.0f; - m[14] = 0.0f; - m[15] = 1.0f; - - gl.glMultMatrixf(m, 0); + float[] scratch = sScratch; + synchronized(scratch) { + scratch[0] = sx; + scratch[1] = ux; + scratch[2] = -fx; + scratch[3] = 0.0f; + + scratch[4] = sy; + scratch[5] = uy; + scratch[6] = -fy; + scratch[7] = 0.0f; + + scratch[8] = sz; + scratch[9] = uz; + scratch[10] = -fz; + scratch[11] = 0.0f; + + scratch[12] = 0.0f; + scratch[13] = 0.0f; + scratch[14] = 0.0f; + scratch[15] = 1.0f; + + gl.glMultMatrixf(scratch, 0); + } gl.glTranslatef(-eyeX, -eyeY, -eyeZ); } /** * Set up a 2D orthographic projection matrix - * + * * @param gl * @param left * @param right @@ -142,7 +144,7 @@ public class GLU { /** * Set up a perspective projection matrix - * + * * @param gl a GL10 interface * @param fovy specifies the field of view angle, in degrees, in the Y * direction. @@ -170,7 +172,7 @@ public class GLU { *

    * Note that you can use the OES_matrix_get extension, if present, to get * the current modelView and projection matrices. - * + * * @param objX object coordinates X * @param objY object coordinates Y * @param objZ object coordinates Z @@ -193,35 +195,39 @@ public class GLU { public static int gluProject(float objX, float objY, float objZ, float[] model, int modelOffset, float[] project, int projectOffset, int[] view, int viewOffset, float[] win, int winOffset) { - float[] m = new float[16]; - Matrix.multiplyMM(m, 0, project, projectOffset, model, modelOffset); - - float[] v = new float[4]; - - v[0] = objX; - v[1] = objY; - v[2] = objZ; - v[3] = 1.0f; - - float[] v2 = new float[4]; - - Matrix.multiplyMV(v2, 0, m, 0, v, 0); - - float w = v2[3]; - if (w == 0.0f) { - return GL10.GL_FALSE; + float[] scratch = sScratch; + synchronized(scratch) { + final int M_OFFSET = 0; // 0..15 + final int V_OFFSET = 16; // 16..19 + final int V2_OFFSET = 20; // 20..23 + Matrix.multiplyMM(scratch, M_OFFSET, project, projectOffset, + model, modelOffset); + + scratch[V_OFFSET + 0] = objX; + scratch[V_OFFSET + 1] = objY; + scratch[V_OFFSET + 2] = objZ; + scratch[V_OFFSET + 3] = 1.0f; + + Matrix.multiplyMV(scratch, V2_OFFSET, + scratch, M_OFFSET, scratch, V_OFFSET); + + float w = scratch[V2_OFFSET + 3]; + if (w == 0.0f) { + return GL10.GL_FALSE; + } + + float rw = 1.0f / w; + + win[winOffset] = + view[viewOffset] + view[viewOffset + 2] + * (scratch[V2_OFFSET + 0] * rw + 1.0f) + * 0.5f; + win[winOffset + 1] = + view[viewOffset + 1] + view[viewOffset + 3] + * (scratch[V2_OFFSET + 1] * rw + 1.0f) * 0.5f; + win[winOffset + 2] = (scratch[V2_OFFSET + 2] * rw + 1.0f) * 0.5f; } - float rw = 1.0f / w; - - win[winOffset] = - view[viewOffset] + view[viewOffset + 2] * (v2[0] * rw + 1.0f) - * 0.5f; - win[winOffset + 1] = - view[viewOffset + 1] + view[viewOffset + 3] - * (v2[1] * rw + 1.0f) * 0.5f; - win[winOffset + 2] = (v2[2] * rw + 1.0f) * 0.5f; - return GL10.GL_TRUE; } @@ -232,7 +238,7 @@ public class GLU { *

    * Note that you can use the OES_matrix_get extension, if present, to get * the current modelView and projection matrices. - * + * * @param winX window coordinates X * @param winY window coordinates Y * @param winZ window coordinates Z @@ -255,34 +261,33 @@ public class GLU { public static int gluUnProject(float winX, float winY, float winZ, float[] model, int modelOffset, float[] project, int projectOffset, int[] view, int viewOffset, float[] obj, int objOffset) { - float[] pm = new float[16]; - Matrix.multiplyMM(pm, 0, project, projectOffset, model, modelOffset); - - float[] invPM = new float[16]; - if (!Matrix.invertM(invPM, 0, pm, 0)) { - return GL10.GL_FALSE; + float[] scratch = sScratch; + synchronized(scratch) { + final int PM_OFFSET = 0; // 0..15 + final int INVPM_OFFSET = 16; // 16..31 + final int V_OFFSET = 0; // 0..3 Reuses PM_OFFSET space + Matrix.multiplyMM(scratch, PM_OFFSET, project, projectOffset, + model, modelOffset); + + if (!Matrix.invertM(scratch, INVPM_OFFSET, scratch, PM_OFFSET)) { + return GL10.GL_FALSE; + } + + scratch[V_OFFSET + 0] = + 2.0f * (winX - view[viewOffset + 0]) / view[viewOffset + 2] + - 1.0f; + scratch[V_OFFSET + 1] = + 2.0f * (winY - view[viewOffset + 1]) / view[viewOffset + 3] + - 1.0f; + scratch[V_OFFSET + 2] = 2.0f * winZ - 1.0f; + scratch[V_OFFSET + 3] = 1.0f; + + Matrix.multiplyMV(obj, objOffset, scratch, INVPM_OFFSET, + scratch, V_OFFSET); } - float[] v = new float[4]; - - v[0] = - 2.0f * (winX - view[viewOffset + 0]) / view[viewOffset + 2] - - 1.0f; - v[1] = - 2.0f * (winY - view[viewOffset + 1]) / view[viewOffset + 3] - - 1.0f; - v[2] = 2.0f * winZ - 1.0f; - v[3] = 1.0f; - - float[] v2 = new float[4]; - - Matrix.multiplyMV(v2, 0, invPM, 0, v, 0); - - obj[objOffset] = v2[0]; - obj[objOffset + 1] = v2[1]; - obj[objOffset + 2] = v2[2]; - return GL10.GL_TRUE; } + private static final float[] sScratch = new float[32]; } -- cgit v1.2.3-59-g8ed1b From 66c54ab2d9685883762d8fdfec43fbda50b470a6 Mon Sep 17 00:00:00 2001 From: Dave Sparks <> Date: Wed, 25 Mar 2009 15:43:23 -0700 Subject: Automated import from //branches/donutburger/...@142693,142693 --- data/sounds/effects/camera_click.ogg | Bin 5593 -> 4851 bytes data/sounds/effects/camera_click.wav | Bin 0 -> 13030 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 data/sounds/effects/camera_click.wav diff --git a/data/sounds/effects/camera_click.ogg b/data/sounds/effects/camera_click.ogg index 0a769ff91464..52512ac0a054 100644 Binary files a/data/sounds/effects/camera_click.ogg and b/data/sounds/effects/camera_click.ogg differ diff --git a/data/sounds/effects/camera_click.wav b/data/sounds/effects/camera_click.wav new file mode 100644 index 000000000000..7043bc7b21a9 Binary files /dev/null and b/data/sounds/effects/camera_click.wav differ -- cgit v1.2.3-59-g8ed1b From cf58974d66e898877a96e802bf853bdf190fe9a8 Mon Sep 17 00:00:00 2001 From: Karl Rosaen <> Date: Wed, 25 Mar 2009 16:01:38 -0700 Subject: Automated import from //branches/donutburger/...@142698,142698 --- core/res/res/drawable/expander_ic_maximized.9.png | Bin 2081 -> 1653 bytes core/res/res/drawable/expander_ic_minimized.9.png | Bin 2052 -> 1647 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/core/res/res/drawable/expander_ic_maximized.9.png b/core/res/res/drawable/expander_ic_maximized.9.png index bad4b8202655..69710a8ae72a 100644 Binary files a/core/res/res/drawable/expander_ic_maximized.9.png and b/core/res/res/drawable/expander_ic_maximized.9.png differ diff --git a/core/res/res/drawable/expander_ic_minimized.9.png b/core/res/res/drawable/expander_ic_minimized.9.png index af89072eb745..ff17e49561ef 100644 Binary files a/core/res/res/drawable/expander_ic_minimized.9.png and b/core/res/res/drawable/expander_ic_minimized.9.png differ -- cgit v1.2.3-59-g8ed1b From 00ba76670fd06d9c51cce36a74c384a212f705b5 Mon Sep 17 00:00:00 2001 From: Eric Fischer <> Date: Wed, 25 Mar 2009 16:08:50 -0700 Subject: Automated import from //branches/donutburger/...@142700,142700 --- core/java/android/text/Html.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/core/java/android/text/Html.java b/core/java/android/text/Html.java index 200bbf4a1500..70e12970e6c2 100644 --- a/core/java/android/text/Html.java +++ b/core/java/android/text/Html.java @@ -152,10 +152,13 @@ public class Html { next = text.nextSpanTransition(i, len, ParagraphStyle.class); ParagraphStyle[] style = text.getSpans(i, next, ParagraphStyle.class); String elements = " "; + boolean needDiv = false; + for(int j = 0; j < style.length; j++) { if (style[j] instanceof AlignmentSpan) { Layout.Alignment align = ((AlignmentSpan) style[j]).getAlignment(); + needDiv = true; if (align == Layout.Alignment.ALIGN_CENTER) { elements = "align=\"center\" " + elements; } else if (align == Layout.Alignment.ALIGN_OPPOSITE) { @@ -165,13 +168,13 @@ public class Html { } } } - if (style.length > 0) { + if (needDiv) { out.append("

    "); } withinDiv(out, text, i, next); - if (style.length > 0) { + if (needDiv) { out.append("
    "); } } -- cgit v1.2.3-59-g8ed1b From 3aadcd9ed4f509b6f6562059ff175184f148cb71 Mon Sep 17 00:00:00 2001 From: Raphael Moll <> Date: Wed, 25 Mar 2009 16:33:12 -0700 Subject: Automated import from //branches/donutburger/...@142710,142710 --- core/res/res/values/attrs.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml index 310948960ae2..6e82bbf2d752 100644 --- a/core/res/res/values/attrs.xml +++ b/core/res/res/values/attrs.xml @@ -1221,7 +1221,8 @@ - + - + "機内モード" "機内モードON" "機内モードOFF" "セーフモード" - - + "Androidシステム" "料金ã®ç™ºç”Ÿã™ã‚‹ã‚µãƒ¼ãƒ“ス" "料金ã®ç™ºç”Ÿã™ã‚‹æ“作をアプリケーションã«è¨±å¯ã—ã¾ã™ã€‚" "é€å—ä¿¡ã—ãŸãƒ¡ãƒƒã‚»ãƒ¼ã‚¸" @@ -294,10 +292,8 @@ "無線通信ã‹ã‚‰ã®ä½ç½®æ›´æ–°é€šçŸ¥ã‚’有効/無効ã«ã™ã‚‹ã“ã¨ã‚’許å¯ã—ã¾ã™ã€‚通常ã®ã‚¢ãƒ—リケーションã§ã¯ä½¿ç”¨ã—ã¾ã›ã‚“。" "ãƒã‚§ãƒƒã‚¯ã‚¤ãƒ³ãƒ—ロパティã¸ã®ã‚¢ã‚¯ã‚»ã‚¹" "ãƒã‚§ãƒƒã‚¯ã‚¤ãƒ³ã‚µãƒ¼ãƒ“スãŒã‚¢ãƒƒãƒ—ロードã—ãŸãƒ—ロパティã¸ã®èª­ã¿æ›¸ãを許å¯ã—ã¾ã™ã€‚通常ã®ã‚¢ãƒ—リケーションã§ã¯ä½¿ç”¨ã—ã¾ã›ã‚“。" - - - - + "ウィジェットã®é¸æŠž" + "ã©ã®ã‚¢ãƒ—リケーションãŒã©ã®ã‚¦ã‚£ã‚¸ã‚§ãƒƒãƒˆã‚’使用ã§ãã‚‹ã‹ã‚·ã‚¹ãƒ†ãƒ ã«æŒ‡å®šã™ã‚‹ã“ã¨ã‚’ã“ã®ã‚¢ãƒ—リケーションã«è¨±å¯ã—ã¾ã™ã€‚ã“れã«ã‚ˆã‚Šã€ã‚¢ãƒ—リケーション間ã§å€‹äººãƒ‡ãƒ¼ã‚¿ã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãるよã†ã«ãªã‚Šã¾ã™ã€‚通常ã®ã‚¢ãƒ—リケーションã§ã¯ä½¿ç”¨ã—ã¾ã›ã‚“。" "端末ステータスã®å¤‰æ›´" "端末ã®é›»è©±æ©Ÿèƒ½ã®ã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ«ã‚’アプリケーションã«è¨±å¯ã—ã¾ã™ã€‚アプリケーションã¯ã€ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã®åˆ‡ã‚Šæ›¿ãˆã€æºå¸¯é›»è©±ã®ç„¡ç·šé€šä¿¡ã®ã‚ªãƒ³/オフãªã©ã‚’通知ã›ãšã«è¡Œã†ã“ã¨ãŒã§ãã¾ã™ã€‚" "端末ステータスã®èª­ã¿å–り" @@ -397,7 +393,7 @@ "PINコードを入力" "PINã‚³ãƒ¼ãƒ‰ãŒæ­£ã—ãã‚りã¾ã›ã‚“。" - "ロックを解除ã™ã‚‹ã«ã¯MENUã€0キーã®é †ã«æŠ¼ã—ã¾ã™ã€‚" + "MENUã€0キーã§ãƒ­ãƒƒã‚¯è§£é™¤" "緊急通報番å·" "(通信サービスãªã—)" "ç”»é¢ãƒ­ãƒƒã‚¯ä¸­" @@ -407,8 +403,7 @@ "緊急通報" "一致ã—ã¾ã—ãŸ" "やり直ã—ã¦ãã ã•ã„" - - + "充電中(%d%%)" "å……é›»ã—ã¦ãã ã•ã„。" "SIMã‚«ãƒ¼ãƒ‰ãŒæŒ¿å…¥ã•れã¦ã„ã¾ã›ã‚“" "SIMã‚«ãƒ¼ãƒ‰ãŒæŒ¿å…¥ã•れã¦ã„ã¾ã›ã‚“" @@ -424,8 +419,7 @@ "%d秒後ã«ã‚„り直ã—ã¦ãã ã•ã„。" "パターンを忘れãŸå ´åˆ" "パターンã®ã‚¨ãƒ©ãƒ¼ãŒå¤šã™ãŽã¾ã™" - - + "Googleアカウントã§ãƒ­ã‚°ã‚¤ãƒ³ã—ã¦ãƒ­ãƒƒã‚¯è§£é™¤" "ユーザーå (メール)" "パスワード" "ログイン" @@ -433,16 +427,13 @@ "h:mm AA" "%-l:%M%P" "%-l:%M%p" - - - - + "%-l%P" + "%-l%p" "通知を消去" "通知ãªã—" "æ“作中" "通知" - - + "%d%%" "充電中..." "å……é›»ã—ã¦ãã ã•ã„" "é›»æ± ãŒæ®‹ã‚Šå°‘ãªããªã£ã¦ã„ã¾ã™:" @@ -564,8 +555,7 @@ "毎月" "毎年" "動画をå†ç”Ÿã§ãã¾ã›ã‚“" - - + "ã“ã®å‹•ç”»ã¯ã”使用ã®ç«¯æœ«ã§ã‚¹ãƒˆãƒªãƒ¼ãƒŸãƒ³ã‚°ã§ãã¾ã›ã‚“。" "ã“ã®å‹•ç”»ã¯å†ç”Ÿã§ãã¾ã›ã‚“。" "OK" "AM" @@ -592,13 +582,11 @@ "æ­£åˆ" "åˆå‰0時" "åˆå‰0時" - - + "%B%-dæ—¥" "%Yå¹´%B%-dæ—¥" - - + "%Yå¹´%B月" "%H:%M:%S" "%Y/%B/%-d %H:%M:%S" "%2$s月%3$s日~%7$s月%8$sæ—¥" @@ -626,9 +614,8 @@ "%4$s/%2$s/%3$s%5$s~%9$s/%7$s/%8$s%10$s" "%4$s/%2$s/%3$s%1$s%5$s~%9$s/%7$s/%8$s%6$s%10$s" "%Y/%b/%-d" - - - "%b%-dæ—¥" + "%Yå¹´%b月" + "%b/%-d" "日曜日" @@ -811,22 +798,14 @@ "一致ã™ã‚‹ã‚¢ã‚¯ãƒ†ã‚£ãƒ“ティãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“" "コンãƒãƒ¼ãƒãƒ³ãƒˆä½¿ç”¨çжæ³ã«é–¢ã™ã‚‹çµ±è¨ˆæƒ…å ±ã®æ›´æ–°" "åŽé›†ã•れãŸã‚³ãƒ³ãƒãƒ¼ãƒãƒ³ãƒˆä½¿ç”¨çжæ³ã«é–¢ã™ã‚‹çµ±è¨ˆæƒ…å ±ã®å¤‰æ›´ã‚’許å¯ã—ã¾ã™ã€‚通常ã®ã‚¢ãƒ—リケーションã§ã¯ä½¿ç”¨ã—ã¾ã›ã‚“。" - - - - - - - - - - - - - - - - + "ダブルタップã§ã‚ºãƒ¼ãƒ ã—ã¾ã™" + "ウィジェットã®å±•開エラー" + "移動" + "検索" + "é€ä¿¡" + "次ã¸" + "完了" + "実行" -- cgit v1.2.3-59-g8ed1b From 9ed4a4b0d7dadeadd57bd81e2cc538670d9654b9 Mon Sep 17 00:00:00 2001 From: Dianne Hackborn <> Date: Wed, 25 Mar 2009 17:10:37 -0700 Subject: Automated import from //branches/donutburger/...@142722,142722 --- .../com/android/server/PowerManagerService.java | 49 +++++++++++++--------- .../com/android/server/WindowManagerService.java | 9 +++- 2 files changed, 38 insertions(+), 20 deletions(-) diff --git a/services/java/com/android/server/PowerManagerService.java b/services/java/com/android/server/PowerManagerService.java index a900b3e5a307..bbca40148ee0 100644 --- a/services/java/com/android/server/PowerManagerService.java +++ b/services/java/com/android/server/PowerManagerService.java @@ -1373,8 +1373,9 @@ class PowerManagerService extends IPowerManager.Stub implements LocalPowerManage } private void updateLightsLocked(int newState, int forceState) { - int oldState = mPowerState; - int difference = (newState ^ oldState) | forceState; + final int oldState = mPowerState; + final int realDifference = (newState ^ oldState); + final int difference = realDifference | forceState; if (difference == 0) { return; } @@ -1430,22 +1431,29 @@ class PowerManagerService extends IPowerManager.Stub implements LocalPowerManage if ((difference & (SCREEN_ON_BIT | SCREEN_BRIGHT_BIT)) != 0) { if (ANIMATE_SCREEN_LIGHTS) { - int nominalCurrentValue; - switch (oldState & (SCREEN_BRIGHT_BIT|SCREEN_ON_BIT)) { - case SCREEN_BRIGHT_BIT | SCREEN_ON_BIT: - nominalCurrentValue = preferredBrightness; - break; - case SCREEN_ON_BIT: - nominalCurrentValue = Power.BRIGHTNESS_DIM; - break; - case 0: - nominalCurrentValue = Power.BRIGHTNESS_OFF; - break; - case SCREEN_BRIGHT_BIT: - default: - // not possible - nominalCurrentValue = (int)mScreenBrightness.curValue; - break; + int nominalCurrentValue = -1; + // If there was an actual difference in the light state, then + // figure out the "ideal" current value based on the previous + // state. Otherwise, this is a change due to the brightness + // override, so we want to animate from whatever the current + // value is. + if ((realDifference & (SCREEN_ON_BIT | SCREEN_BRIGHT_BIT)) != 0) { + switch (oldState & (SCREEN_BRIGHT_BIT|SCREEN_ON_BIT)) { + case SCREEN_BRIGHT_BIT | SCREEN_ON_BIT: + nominalCurrentValue = preferredBrightness; + break; + case SCREEN_ON_BIT: + nominalCurrentValue = Power.BRIGHTNESS_DIM; + break; + case 0: + nominalCurrentValue = Power.BRIGHTNESS_OFF; + break; + case SCREEN_BRIGHT_BIT: + default: + // not possible + nominalCurrentValue = (int)mScreenBrightness.curValue; + break; + } } if ((newState & SCREEN_BRIGHT_BIT) == 0) { // dim or turn off backlight, depending on if the screen is on @@ -1575,7 +1583,9 @@ class PowerManagerService extends IPowerManager.Stub implements LocalPowerManage curValue = (float)initialValue; } targetValue = target; - delta = (targetValue-nominalCurrentValue) / stepsToTarget; + delta = (targetValue - + (nominalCurrentValue >= 0 ? nominalCurrentValue : curValue)) + / stepsToTarget; if (mSpew) { String noticeMe = nominalCurrentValue == curValue ? "" : " ******************"; Log.i(TAG, "Setting target " + mask + ": cur=" + curValue @@ -1596,6 +1606,7 @@ class PowerManagerService extends IPowerManager.Stub implements LocalPowerManage int curIntValue = (int)curValue; boolean more = true; if (delta == 0) { + curValue = curIntValue = targetValue; more = false; } else if (delta > 0) { if (curIntValue >= targetValue) { diff --git a/services/java/com/android/server/WindowManagerService.java b/services/java/com/android/server/WindowManagerService.java index 56f8bc15d92f..ed8b23af3552 100644 --- a/services/java/com/android/server/WindowManagerService.java +++ b/services/java/com/android/server/WindowManagerService.java @@ -7799,6 +7799,7 @@ public class WindowManagerService extends IWindowManager.Stub implements Watchdo boolean blurring = false; boolean dimming = false; boolean covered = false; + boolean syswin = false; for (i=N-1; i>=0; i--) { WindowState w = (WindowState)mWindows.get(i); @@ -8058,9 +8059,15 @@ public class WindowManagerService extends IWindowManager.Stub implements Watchdo if ((attrFlags&FLAG_KEEP_SCREEN_ON) != 0) { holdScreen = w.mSession; } - if (w.mAttrs.screenBrightness >= 0 && screenBrightness < 0) { + if (!syswin && w.mAttrs.screenBrightness >= 0 + && screenBrightness < 0) { screenBrightness = w.mAttrs.screenBrightness; } + if (attrs.type == WindowManager.LayoutParams.TYPE_SYSTEM_DIALOG + || attrs.type == WindowManager.LayoutParams.TYPE_KEYGUARD + || attrs.type == WindowManager.LayoutParams.TYPE_SYSTEM_ERROR) { + syswin = true; + } } if (w.isFullscreenOpaque(dw, dh)) { // This window completely covers everything behind it, -- cgit v1.2.3-59-g8ed1b From eecc5c973ed44a4a094ef3c36130ee008f384333 Mon Sep 17 00:00:00 2001 From: Dianne Hackborn <> Date: Wed, 25 Mar 2009 17:24:35 -0700 Subject: Automated import from //branches/donutburger/...@142727,142727 --- libs/ui/EventHub.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/libs/ui/EventHub.cpp b/libs/ui/EventHub.cpp index 3b29b094db66..7c2fc8e54b1a 100644 --- a/libs/ui/EventHub.cpp +++ b/libs/ui/EventHub.cpp @@ -245,6 +245,7 @@ EventHub::device_t* EventHub::getDevice(int32_t deviceId) const int32_t id = deviceId & ID_MASK; if (id >= mNumDevicesById || id < 0) return NULL; device_t* dev = mDevicesById[id].device; + if (dev == NULL) return NULL; if (dev->id == deviceId) { return dev; } -- cgit v1.2.3-59-g8ed1b From 2d8c060bbc590c0f398c7a2c7a8b3e35111929f4 Mon Sep 17 00:00:00 2001 From: Nick Pelly <> Date: Wed, 25 Mar 2009 17:33:56 -0700 Subject: Automated import from //branches/donutburger/...@142766,142766 --- core/java/android/bluetooth/BluetoothHeadset.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/core/java/android/bluetooth/BluetoothHeadset.java b/core/java/android/bluetooth/BluetoothHeadset.java index 1dbe0cccda51..e1984353e88c 100644 --- a/core/java/android/bluetooth/BluetoothHeadset.java +++ b/core/java/android/bluetooth/BluetoothHeadset.java @@ -82,6 +82,12 @@ public class BluetoothHeadset { /** Default priority for headsets that should not be auto-connected */ public static final int PRIORITY_OFF = 0; + /** The voice dialer 'works' but the user experience is poor. The voice + * recognizer has trouble dealing with the 8kHz SCO signal, and it still + * requires visual confirmation. Disable for cupcake. + */ + public static final boolean DISABLE_BT_VOICE_DIALING = true; + /** * An interface for notifying BluetoothHeadset IPC clients when they have * been connected to the BluetoothHeadset service. -- cgit v1.2.3-59-g8ed1b From 2ad63a9d773ba987e85ee6a23b0a0724d86d4b0e Mon Sep 17 00:00:00 2001 From: Chris Tate <> Date: Wed, 25 Mar 2009 17:36:48 -0700 Subject: Automated import from //branches/donutburger/...@142784,142784 --- .../java/com/android/server/WindowManagerService.java | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/services/java/com/android/server/WindowManagerService.java b/services/java/com/android/server/WindowManagerService.java index ed8b23af3552..19ab21d822c4 100644 --- a/services/java/com/android/server/WindowManagerService.java +++ b/services/java/com/android/server/WindowManagerService.java @@ -8551,6 +8551,15 @@ public class WindowManagerService extends IWindowManager.Stub implements Watchdo private void startFreezingDisplayLocked() { if (mDisplayFrozen) { + // Freezing the display also suspends key event delivery, to + // keep events from going astray while the display is reconfigured. + // If someone has changed orientation again while the screen is + // still frozen, the events will continue to be blocked while the + // successive orientation change is processed. To prevent spurious + // ANRs, we reset the event dispatch timeout in this case. + synchronized (mKeyWaiter) { + mKeyWaiter.mWasFrozen = true; + } return; } @@ -8594,10 +8603,8 @@ public class WindowManagerService extends IWindowManager.Stub implements Watchdo } Surface.unfreezeDisplay(0); - // Freezing the display also suspends key event delivery, to - // keep events from going astray while the display is reconfigured. - // Now that we're back, notify the key waiter that we're alive - // again and it should restart its timeouts. + // Reset the key delivery timeout on unfreeze, too. We force a wakeup here + // too because regular key delivery processing should resume immediately. synchronized (mKeyWaiter) { mKeyWaiter.mWasFrozen = true; mKeyWaiter.notifyAll(); -- cgit v1.2.3-59-g8ed1b From f0138614acd239a43a0b6cb97b0ea845f82925f4 Mon Sep 17 00:00:00 2001 From: Amith Yamasani <> Date: Wed, 25 Mar 2009 17:39:37 -0700 Subject: Automated import from //branches/donutburger/...@142787,142787 --- api/current.xml | 13 +++++++++++ core/java/android/text/AutoText.java | 45 ++++++++++++++++++++++++++++++------ 2 files changed, 51 insertions(+), 7 deletions(-) diff --git a/api/current.xml b/api/current.xml index 2b2673085675..d366f290a279 100644 --- a/api/current.xml +++ b/api/current.xml @@ -101918,6 +101918,19 @@
    + + + + Date: Wed, 25 Mar 2009 17:42:35 -0700 Subject: Automated import from //branches/donutburger/...@142790,142790 --- core/java/android/view/ViewGroup.java | 8 ++++---- core/java/android/widget/ListView.java | 1 + core/java/android/widget/TextView.java | 10 ++++++++-- 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java index 39aecfdf52d1..4f506ff60682 100644 --- a/core/java/android/view/ViewGroup.java +++ b/core/java/android/view/ViewGroup.java @@ -1407,6 +1407,10 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager } } + // Clear the flag as early as possible to allow draw() implementations + // to call invalidate() successfully when doing animations + child.mPrivateFlags |= DRAWN; + if (!concatMatrix && canvas.quickReject(cl, ct, cr, cb, Canvas.EdgeType.BW) && (child.mPrivateFlags & DRAW_ANIMATION) == 0) { return more; @@ -1476,10 +1480,6 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager } } - // Clear the flag as early as possible to allow draw() implementations - // to call invalidate() successfully when doing animations - child.mPrivateFlags |= DRAWN; - if (hasNoCache) { // Fast path for layouts with no backgrounds if ((child.mPrivateFlags & SKIP_DRAW) == SKIP_DRAW) { diff --git a/core/java/android/widget/ListView.java b/core/java/android/widget/ListView.java index 7e30f7ba68d2..c84be0fc69ae 100644 --- a/core/java/android/widget/ListView.java +++ b/core/java/android/widget/ListView.java @@ -1060,6 +1060,7 @@ public class ListView extends AbsListView { * UNSPECIFIED/AT_MOST modes, false otherwise. * @hide */ + @ViewDebug.ExportedProperty protected boolean recycleOnMeasure() { return true; } diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java index 81516b9158dc..9c810e1c426d 100644 --- a/core/java/android/widget/TextView.java +++ b/core/java/android/widget/TextView.java @@ -3359,12 +3359,16 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener mPopup.update(this, getErrorX(), getErrorY(), -1, -1); } + restartMarqueeIfNeeded(); + + return result; + } + + private void restartMarqueeIfNeeded() { if (mRestartMarquee && mEllipsize == TextUtils.TruncateAt.MARQUEE) { mRestartMarquee = false; startMarquee(); } - - return result; } /** @@ -3674,6 +3678,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener @Override protected void onDraw(Canvas canvas) { + restartMarqueeIfNeeded(); + // Draw the background for this view super.onDraw(canvas); -- cgit v1.2.3-59-g8ed1b From 6dee6243bf5ecb96291e62ece7d736c5aee1e505 Mon Sep 17 00:00:00 2001 From: Andreas Huber <> Date: Wed, 25 Mar 2009 17:54:39 -0700 Subject: Automated import from //branches/donutburger/...@142801,142801 --- core/java/android/hardware/SensorManager.java | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/core/java/android/hardware/SensorManager.java b/core/java/android/hardware/SensorManager.java index e232c2cee043..7fbb3a758057 100644 --- a/core/java/android/hardware/SensorManager.java +++ b/core/java/android/hardware/SensorManager.java @@ -304,6 +304,9 @@ public class SensorManager extends IRotationWatcher.Stub if (mSensorDataFd == null) { Log.e(TAG, "mSensorDataFd == NULL, exiting"); + synchronized (sListeners) { + mThread = null; + } return; } // this thread is guaranteed to be unique @@ -321,17 +324,16 @@ public class SensorManager extends IRotationWatcher.Stub // wait for an event final int sensor = sensors_data_poll(values, status, timestamp); - if (sensor == -1) { - // we lost the connection to the event stream. this happens - // when the last listener is removed. - Log.d(TAG, "_sensors_data_poll() failed, we bail out."); - break; - } - int accuracy = status[0]; synchronized (sListeners) { - if (sListeners.isEmpty()) { - // we have no more listeners, terminate the thread + if (sensor == -1 || sListeners.isEmpty()) { + if (sensor == -1) { + // we lost the connection to the event stream. this happens + // when the last listener is removed. + Log.d(TAG, "_sensors_data_poll() failed, we bail out."); + } + + // we have no more listeners or polling failed, terminate the thread sensors_data_close(); mThread = null; break; -- cgit v1.2.3-59-g8ed1b From 8f2d94fd77836dac14319735e40f46b18b04216d Mon Sep 17 00:00:00 2001 From: Romain Guy <> Date: Wed, 25 Mar 2009 18:04:42 -0700 Subject: Automated import from //branches/donutburger/...@142820,142820 --- core/java/android/view/ViewGroup.java | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java index 4f506ff60682..e686d1c20bd2 100644 --- a/core/java/android/view/ViewGroup.java +++ b/core/java/android/view/ViewGroup.java @@ -1208,11 +1208,9 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager final boolean clipToPadding = (flags & CLIP_TO_PADDING_MASK) == CLIP_TO_PADDING_MASK; if (clipToPadding) { saveCount = canvas.save(); - final int scrollX = mScrollX; - final int scrollY = mScrollY; - canvas.clipRect(scrollX + mPaddingLeft, scrollY + mPaddingTop, - scrollX + mRight - mLeft - mPaddingRight, - scrollY + mBottom - mTop - mPaddingBottom); + canvas.clipRect(mScrollX + mPaddingLeft, mScrollY + mPaddingTop, + mScrollX + mRight - mLeft - mPaddingRight, + mScrollY + mBottom - mTop - mPaddingBottom); } @@ -1346,9 +1344,6 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager final Animation a = child.getAnimation(); boolean concatMatrix = false; - final int childWidth = cr - cl; - final int childHeight = cb - ct; - if (a != null) { if (mInvalidateRegion == null) { mInvalidateRegion = new RectF(); @@ -1357,8 +1352,8 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager final boolean initialized = a.isInitialized(); if (!initialized) { - a.initialize(childWidth, childHeight, getWidth(), getHeight()); - a.initializeInvalidateRegion(0, 0, childWidth, childHeight); + a.initialize(cr - cl, cb - ct, getWidth(), getHeight()); + a.initializeInvalidateRegion(0, 0, cr - cl, cb - ct); child.onAnimationStart(); } @@ -1382,7 +1377,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager invalidate(cl, ct, cr, cb); } } else { - a.getInvalidateRegion(0, 0, childWidth, childHeight, region, transformToApply); + a.getInvalidateRegion(0, 0, cr - cl, cb - ct, region, transformToApply); // The child need to draw an animation, potentially offscreen, so // make sure we do not cancel invalidate requests @@ -1474,9 +1469,9 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager if ((flags & FLAG_CLIP_CHILDREN) == FLAG_CLIP_CHILDREN) { if (hasNoCache) { - canvas.clipRect(sx, sy, sx + childWidth, sy + childHeight); + canvas.clipRect(sx, sy, sx + (cr - cl), sy + (cb - ct)); } else { - canvas.clipRect(0, 0, childWidth, childHeight); + canvas.clipRect(0, 0, cr - cl, cb - ct); } } -- cgit v1.2.3-59-g8ed1b From 303736d17de11dbc0a633cbfc130e9dadd50f6e2 Mon Sep 17 00:00:00 2001 From: Jim Miller <> Date: Wed, 25 Mar 2009 18:18:34 -0700 Subject: Automated import from //branches/donutburger/...@142826,142826 --- api/current.xml | 11 +++++++++++ core/java/android/content/Intent.java | 9 +++++++++ 2 files changed, 20 insertions(+) diff --git a/api/current.xml b/api/current.xml index d366f290a279..5dd99eda7b62 100644 --- a/api/current.xml +++ b/api/current.xml @@ -28632,6 +28632,17 @@ visibility="public" > + + Input: {@link android.app.SearchManager#QUERY getStringExtra(SearchManager.QUERY)} + * is the text to search for. If empty, simply + * enter your search results Activity with the search UI activated. + *

    Output: nothing. + */ + @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) + public static final String ACTION_SYSTEM_TUTORIAL = "android.intent.action.SYSTEM_TUTORIAL"; /** * Activity Action: Perform a web search. *

    -- cgit v1.2.3-59-g8ed1b From 3b1812042d02c38bff9470988a7f740a16f65a33 Mon Sep 17 00:00:00 2001 From: Joe Onorato <> Date: Wed, 25 Mar 2009 18:22:18 -0700 Subject: Automated import from //branches/donutburger/...@142828,142828 --- .../src/com/android/statusbartest/ToastTest.java | 39 ++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/tests/StatusBar/src/com/android/statusbartest/ToastTest.java b/tests/StatusBar/src/com/android/statusbartest/ToastTest.java index 018c9f242a39..8d24781eb30b 100644 --- a/tests/StatusBar/src/com/android/statusbartest/ToastTest.java +++ b/tests/StatusBar/src/com/android/statusbartest/ToastTest.java @@ -33,6 +33,9 @@ import android.widget.Toast; import android.widget.TextView; import android.os.PowerManager; +import java.io.FileReader; +import java.io.IOException; + public class ToastTest extends TestActivity { private final static String TAG = "ToastTest"; @@ -51,7 +54,43 @@ public class ToastTest extends TestActivity return mTests; } + private static String readFile(String fn) { + FileReader f; + int len; + + f = null; + try { + f = new FileReader(fn); + String s = ""; + char[] cbuf = new char[200]; + while ((len = f.read(cbuf, 0, cbuf.length)) >= 0) { + s += String.valueOf(cbuf, 0, len); + } + return s; + } catch (IOException ex) { + return "ERROR"; + } finally { + if (f != null) { + try { + f.close(); + } catch (IOException ex) { + return "ERROR!"; + } + } + } + } + private Test[] mTests = new Test[] { + new Test("Read lights") { + public void run() + { + String text = "freq=" + readFile("/sys/class/leds/red/device/grpfreq") + + "\npwm=" + readFile("/sys/class/leds/red/device/grppwm"); + mToast1 = Toast.makeText(ToastTest.this, text, Toast.LENGTH_SHORT); + mToast1.show(); + } + }, + new Test("Make Toast #1") { public void run() { -- cgit v1.2.3-59-g8ed1b From 6ddfec1b193fb0ee9c55ae1f0648d6fcd66e7cd1 Mon Sep 17 00:00:00 2001 From: Romain Guy <> Date: Thu, 26 Mar 2009 14:51:52 -0700 Subject: Automated import from //branches/donutburger/...@142990,142990 --- core/java/android/widget/SimpleCursorAdapter.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/core/java/android/widget/SimpleCursorAdapter.java b/core/java/android/widget/SimpleCursorAdapter.java index c1595eaf8ac6..c1bcd4219c58 100644 --- a/core/java/android/widget/SimpleCursorAdapter.java +++ b/core/java/android/widget/SimpleCursorAdapter.java @@ -145,17 +145,17 @@ public class SimpleCursorAdapter extends ResourceCursorAdapter { for (int i = 0; i < count; i++) { final View v = holder[i]; if (v != null) { - String text = cursor.getString(from[i]); - if (text == null) { - text = ""; - } - boolean bound = false; if (binder != null) { bound = binder.setViewValue(v, cursor, from[i]); } if (!bound) { + String text = cursor.getString(from[i]); + if (text == null) { + text = ""; + } + if (v instanceof TextView) { setViewText((TextView) v, text); } else if (v instanceof ImageView) { -- cgit v1.2.3-59-g8ed1b From 7ec434e2e179776d75c8a4da66dcfd2ee630c5d8 Mon Sep 17 00:00:00 2001 From: Mike Lockwood <> Date: Fri, 27 Mar 2009 07:46:48 -0700 Subject: AI 143095: Location Manager cleanup: move MockProvider to a separate file. BUG=1729031 Automated import of CL 143095 --- .../android/internal/location/MockProvider.java | 202 +++++++++++++++++ .../com/android/server/LocationManagerService.java | 245 ++++----------------- 2 files changed, 239 insertions(+), 208 deletions(-) create mode 100644 location/java/com/android/internal/location/MockProvider.java diff --git a/location/java/com/android/internal/location/MockProvider.java b/location/java/com/android/internal/location/MockProvider.java new file mode 100644 index 000000000000..bd5cdd84489f --- /dev/null +++ b/location/java/com/android/internal/location/MockProvider.java @@ -0,0 +1,202 @@ +/* + * Copyright (C) 2009 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.internal.location; + +import android.location.Location; +import android.location.LocationProviderImpl; +import android.os.Bundle; +import android.util.PrintWriterPrinter; + +import java.io.PrintWriter; + +/** + * A mock location provider used by LocationManagerService to implement test providers. + * + * {@hide} + */ +public class MockProvider extends LocationProviderImpl { + private final boolean mRequiresNetwork; + private final boolean mRequiresSatellite; + private final boolean mRequiresCell; + private final boolean mHasMonetaryCost; + private final boolean mSupportsAltitude; + private final boolean mSupportsSpeed; + private final boolean mSupportsBearing; + private final int mPowerRequirement; + private final int mAccuracy; + private final Location mLocation; + private int mStatus; + private long mStatusUpdateTime; + private final Bundle mExtras = new Bundle(); + private boolean mHasLocation; + private boolean mHasStatus; + private boolean mEnabled; + + public MockProvider(String name, boolean requiresNetwork, boolean requiresSatellite, + boolean requiresCell, boolean hasMonetaryCost, boolean supportsAltitude, + boolean supportsSpeed, boolean supportsBearing, int powerRequirement, int accuracy) { + super(name); + + mRequiresNetwork = requiresNetwork; + mRequiresSatellite = requiresSatellite; + mRequiresCell = requiresCell; + mHasMonetaryCost = hasMonetaryCost; + mSupportsAltitude = supportsAltitude; + mSupportsBearing = supportsBearing; + mSupportsSpeed = supportsSpeed; + mPowerRequirement = powerRequirement; + mAccuracy = accuracy; + mLocation = new Location(name); + } + + @Override + public void disable() { + mEnabled = false; + } + + @Override + public void enable() { + mEnabled = true; + } + + @Override + public boolean getLocation(Location l) { + if (mHasLocation) { + l.set(mLocation); + return true; + } + return false; + } + + @Override + public int getStatus(Bundle extras) { + if (mHasStatus) { + extras.clear(); + extras.putAll(mExtras); + return mStatus; + } else { + return AVAILABLE; + } + } + + @Override + public boolean isEnabled() { + return mEnabled; + } + + @Override + public int getAccuracy() { + return mAccuracy; + } + + @Override + public int getPowerRequirement() { + return mPowerRequirement; + } + + @Override + public boolean hasMonetaryCost() { + return mHasMonetaryCost; + } + + @Override + public boolean requiresCell() { + return mRequiresCell; + } + + @Override + public boolean requiresNetwork() { + return mRequiresNetwork; + } + + @Override + public boolean requiresSatellite() { + return mRequiresSatellite; + } + + @Override + public boolean supportsAltitude() { + return mSupportsAltitude; + } + + @Override + public boolean supportsBearing() { + return mSupportsBearing; + } + + @Override + public boolean supportsSpeed() { + return mSupportsSpeed; + } + + public void setLocation(Location l) { + mLocation.set(l); + mHasLocation = true; + } + + public void clearLocation() { + mHasLocation = false; + } + + public void setStatus(int status, Bundle extras, long updateTime) { + mStatus = status; + mStatusUpdateTime = updateTime; + mExtras.clear(); + if (extras != null) { + mExtras.putAll(extras); + } + mHasStatus = true; + } + + public void clearStatus() { + mHasStatus = false; + } + + public int overrideStatus(int status) { + if (mHasStatus) { + return mStatus; + } else { + return status; + } + } + + public long overrideStatusUpdateTime(long statusUpdateTime) { + if (mHasStatus) { + return mStatusUpdateTime; + } else { + return statusUpdateTime; + } + } + + public void overrideExtras(Bundle extras) { + if (mHasStatus) { + extras.clear(); + extras.putAll(mExtras); + } + } + + public void dump(PrintWriter pw, String prefix) { + pw.println(prefix + getName()); + pw.println(prefix + "mHasLocation=" + mHasLocation); + pw.println(prefix + "mLocation:"); + mLocation.dump(new PrintWriterPrinter(pw), prefix + " "); + pw.println(prefix + "mHasStatus=" + mHasStatus); + pw.println(prefix + "mStatus=" + mStatus); + pw.println(prefix + "mStatusUpdateTime=" + mStatusUpdateTime); + pw.println(prefix + "mExtras=" + mExtras); + } +} diff --git a/services/java/com/android/server/LocationManagerService.java b/services/java/com/android/server/LocationManagerService.java index 5abf249ca09d..630c84b65e2c 100644 --- a/services/java/com/android/server/LocationManagerService.java +++ b/services/java/com/android/server/LocationManagerService.java @@ -74,6 +74,7 @@ import com.android.internal.location.GpsLocationProvider; import com.android.internal.location.ILocationCollector; import com.android.internal.location.INetworkLocationManager; import com.android.internal.location.INetworkLocationProvider; +import com.android.internal.location.MockProvider; import com.android.internal.location.TrackProvider; import com.android.server.am.BatteryStatsService; @@ -119,11 +120,7 @@ public class LocationManagerService extends ILocationManager.Stub private final Set mDisabledProviders = new HashSet(); // Locations, status values, and extras for mock providers - HashMap mMockProviders = new HashMap(); - private final HashMap mMockProviderLocation = new HashMap(); - private final HashMap mMockProviderStatus = new HashMap(); - private final HashMap mMockProviderStatusExtras = new HashMap(); - private final HashMap mMockProviderStatusUpdateTime = new HashMap(); + private final HashMap mMockProviders = new HashMap(); private static boolean sProvidersLoaded = false; @@ -1596,12 +1593,12 @@ public class LocationManagerService extends ILocationManager.Stub loc.reset(); } - // Use the mock location if available - Location mockLoc = mMockProviderLocation.get(provider); - boolean locationValid; - if (mockLoc != null) { + boolean locationValid; + + // Use the mock location if available + MockProvider mockProvider = mMockProviders.get(provider); + if (mockProvider != null && mockProvider.getLocation(loc)) { locationValid = true; - loc.set(mockLoc); } else { locationValid = p.getLocation(loc); } @@ -1626,27 +1623,15 @@ public class LocationManagerService extends ILocationManager.Stub // Fetch latest status update time long newStatusUpdateTime = p.getStatusUpdateTime(); - // Override real time with mock time if present - Long mockStatusUpdateTime = mMockProviderStatusUpdateTime.get(provider); - if (mockStatusUpdateTime != null) { - newStatusUpdateTime = mockStatusUpdateTime.longValue(); - } - - // Get latest status + // Get latest status Bundle extras = new Bundle(); int status = p.getStatus(extras); - // Override status with mock status if present - Integer mockStatus = mMockProviderStatus.get(provider); - if (mockStatus != null) { - status = mockStatus.intValue(); - } - - // Override extras with mock extras if present - Bundle mockExtras = mMockProviderStatusExtras.get(provider); - if (mockExtras != null) { - extras.clear(); - extras.putAll(mockExtras); + // Override with mock values if mock provider is present + if (mockProvider != null) { + status = mockProvider.overrideStatus(status); + newStatusUpdateTime = mockProvider.overrideStatusUpdateTime(newStatusUpdateTime); + mockProvider.overrideExtras(extras); } ArrayList deadReceivers = null; @@ -2360,141 +2345,6 @@ public class LocationManagerService extends ILocationManager.Stub // Mock Providers - class MockProvider extends LocationProviderImpl { - boolean mRequiresNetwork; - boolean mRequiresSatellite; - boolean mRequiresCell; - boolean mHasMonetaryCost; - boolean mSupportsAltitude; - boolean mSupportsSpeed; - boolean mSupportsBearing; - int mPowerRequirement; - int mAccuracy; - - public MockProvider(String name, boolean requiresNetwork, boolean requiresSatellite, - boolean requiresCell, boolean hasMonetaryCost, boolean supportsAltitude, - boolean supportsSpeed, boolean supportsBearing, int powerRequirement, int accuracy) { - super(name); - - mRequiresNetwork = requiresNetwork; - mRequiresSatellite = requiresSatellite; - mRequiresCell = requiresCell; - mHasMonetaryCost = hasMonetaryCost; - mSupportsAltitude = supportsAltitude; - mSupportsBearing = supportsBearing; - mSupportsSpeed = supportsSpeed; - mPowerRequirement = powerRequirement; - mAccuracy = accuracy; - } - - @Override - public void disable() { - String name = getName(); - // We shouldn't normally need to lock, since this should only be called - // by the service with the lock held, but let's be paranid. - synchronized (mLocationListeners) { - mEnabledProviders.remove(name); - mDisabledProviders.add(name); - } - } - - @Override - public void enable() { - String name = getName(); - // We shouldn't normally need to lock, since this should only be called - // by the service with the lock held, but let's be paranid. - synchronized (mLocationListeners) { - mEnabledProviders.add(name); - mDisabledProviders.remove(name); - } - } - - @Override - public boolean getLocation(Location l) { - // We shouldn't normally need to lock, since this should only be called - // by the service with the lock held, but let's be paranid. - synchronized (mLocationListeners) { - Location loc = mMockProviderLocation.get(getName()); - if (loc == null) { - return false; - } - l.set(loc); - return true; - } - } - - @Override - public int getStatus(Bundle extras) { - // We shouldn't normally need to lock, since this should only be called - // by the service with the lock held, but let's be paranid. - synchronized (mLocationListeners) { - String name = getName(); - Integer s = mMockProviderStatus.get(name); - int status = (s == null) ? AVAILABLE : s.intValue(); - Bundle newExtras = mMockProviderStatusExtras.get(name); - if (newExtras != null) { - extras.clear(); - extras.putAll(newExtras); - } - return status; - } - } - - @Override - public boolean isEnabled() { - // We shouldn't normally need to lock, since this should only be called - // by the service with the lock held, but let's be paranid. - synchronized (mLocationListeners) { - return mEnabledProviders.contains(getName()); - } - } - - @Override - public int getAccuracy() { - return mAccuracy; - } - - @Override - public int getPowerRequirement() { - return mPowerRequirement; - } - - @Override - public boolean hasMonetaryCost() { - return mHasMonetaryCost; - } - - @Override - public boolean requiresCell() { - return mRequiresCell; - } - - @Override - public boolean requiresNetwork() { - return mRequiresNetwork; - } - - @Override - public boolean requiresSatellite() { - return mRequiresSatellite; - } - - @Override - public boolean supportsAltitude() { - return mSupportsAltitude; - } - - @Override - public boolean supportsBearing() { - return mSupportsBearing; - } - - @Override - public boolean supportsSpeed() { - return mSupportsSpeed; - } - } - private void checkMockPermissionsSafe() { boolean allowMocks = Settings.Secure.getInt(mContext.getContentResolver(), Settings.Secure.ALLOW_MOCK_LOCATION, 0) == 1; @@ -2521,6 +2371,7 @@ public class LocationManagerService extends ILocationManager.Stub throw new IllegalArgumentException("Provider \"" + name + "\" already exists"); } LocationProviderImpl.addProvider(provider); + mMockProviders.put(name, provider); updateProvidersLocked(); } } @@ -2528,11 +2379,12 @@ public class LocationManagerService extends ILocationManager.Stub public void removeTestProvider(String provider) { checkMockPermissionsSafe(); synchronized (mLocationListeners) { - LocationProviderImpl p = LocationProviderImpl.getProvider(provider); - if (p == null) { + MockProvider mockProvider = mMockProviders.get(provider); + if (mockProvider == null) { throw new IllegalArgumentException("Provider \"" + provider + "\" unknown"); } - LocationProviderImpl.removeProvider(p); + LocationProviderImpl.removeProvider(mockProvider); + mMockProviders.remove(mockProvider); updateProvidersLocked(); } } @@ -2540,33 +2392,38 @@ public class LocationManagerService extends ILocationManager.Stub public void setTestProviderLocation(String provider, Location loc) { checkMockPermissionsSafe(); synchronized (mLocationListeners) { - if (LocationProviderImpl.getProvider(provider) == null) { + MockProvider mockProvider = mMockProviders.get(provider); + if (mockProvider == null) { throw new IllegalArgumentException("Provider \"" + provider + "\" unknown"); } - mMockProviderLocation.put(provider, loc); + mockProvider.setLocation(loc); } } public void clearTestProviderLocation(String provider) { checkMockPermissionsSafe(); synchronized (mLocationListeners) { - if (LocationProviderImpl.getProvider(provider) == null) { + MockProvider mockProvider = mMockProviders.get(provider); + if (mockProvider == null) { throw new IllegalArgumentException("Provider \"" + provider + "\" unknown"); } - mMockProviderLocation.remove(provider); + mockProvider.clearLocation(); } } public void setTestProviderEnabled(String provider, boolean enabled) { checkMockPermissionsSafe(); synchronized (mLocationListeners) { - if (LocationProviderImpl.getProvider(provider) == null) { + MockProvider mockProvider = mMockProviders.get(provider); + if (mockProvider == null) { throw new IllegalArgumentException("Provider \"" + provider + "\" unknown"); } if (enabled) { + mockProvider.enable(); mEnabledProviders.add(provider); mDisabledProviders.remove(provider); } else { + mockProvider.disable(); mEnabledProviders.remove(provider); mDisabledProviders.add(provider); } @@ -2577,7 +2434,8 @@ public class LocationManagerService extends ILocationManager.Stub public void clearTestProviderEnabled(String provider) { checkMockPermissionsSafe(); synchronized (mLocationListeners) { - if (LocationProviderImpl.getProvider(provider) == null) { + MockProvider mockProvider = mMockProviders.get(provider); + if (mockProvider == null) { throw new IllegalArgumentException("Provider \"" + provider + "\" unknown"); } mEnabledProviders.remove(provider); @@ -2589,24 +2447,22 @@ public class LocationManagerService extends ILocationManager.Stub public void setTestProviderStatus(String provider, int status, Bundle extras, long updateTime) { checkMockPermissionsSafe(); synchronized (mLocationListeners) { - if (LocationProviderImpl.getProvider(provider) == null) { + MockProvider mockProvider = mMockProviders.get(provider); + if (mockProvider == null) { throw new IllegalArgumentException("Provider \"" + provider + "\" unknown"); } - mMockProviderStatus.put(provider, new Integer(status)); - mMockProviderStatusExtras.put(provider, extras); - mMockProviderStatusUpdateTime.put(provider, new Long(updateTime)); + mockProvider.setStatus(status, extras, updateTime); } } public void clearTestProviderStatus(String provider) { checkMockPermissionsSafe(); synchronized (mLocationListeners) { - if (LocationProviderImpl.getProvider(provider) == null) { + MockProvider mockProvider = mMockProviders.get(provider); + if (mockProvider == null) { throw new IllegalArgumentException("Provider \"" + provider + "\" unknown"); } - mMockProviderStatus.remove(provider); - mMockProviderStatusExtras.remove(provider); - mMockProviderStatusUpdateTime.remove(provider); + mockProvider.clearStatus(); } } @@ -2730,33 +2586,7 @@ public class LocationManagerService extends ILocationManager.Stub if (mMockProviders.size() > 0) { pw.println(" Mock Providers:"); for (Map.Entry i : mMockProviders.entrySet()) { - pw.println(" " + i.getKey() + " -> " + i.getValue()); - } - } - if (mMockProviderLocation.size() > 0) { - pw.println(" Mock Provider Location:"); - for (Map.Entry i : mMockProviderLocation.entrySet()) { - pw.println(" " + i.getKey() + ":"); - i.getValue().dump(new PrintWriterPrinter(pw), " "); - } - } - if (mMockProviderStatus.size() > 0) { - pw.println(" Mock Provider Status:"); - for (Map.Entry i : mMockProviderStatus.entrySet()) { - pw.println(" " + i.getKey() + " -> 0x" - + Integer.toHexString(i.getValue())); - } - } - if (mMockProviderStatusExtras.size() > 0) { - pw.println(" Mock Provider Status Extras:"); - for (Map.Entry i : mMockProviderStatusExtras.entrySet()) { - pw.println(" " + i.getKey() + " -> " + i.getValue()); - } - } - if (mMockProviderStatusUpdateTime.size() > 0) { - pw.println(" Mock Provider Status Update Time:"); - for (Map.Entry i : mMockProviderStatusUpdateTime.entrySet()) { - pw.println(" " + i.getKey() + " -> " + i.getValue()); + i.getValue().dump(pw, " "); } } pw.println(" Reported GPS UIDs @ seq " + mReportedGpsSeq + ":"); @@ -2768,4 +2598,3 @@ public class LocationManagerService extends ILocationManager.Stub } } } - -- cgit v1.2.3-59-g8ed1b From 88fb1069bf254dc68c83546496592a9b5e739a07 Mon Sep 17 00:00:00 2001 From: Dianne Hackborn <> Date: Fri, 27 Mar 2009 14:59:22 -0700 Subject: AI 143147: Manual integration Automated import of CL 143147 --- api/current.xml | 222 ++------------------- .../android/inputmethodservice/KeyboardView.java | 2 +- core/java/com/android/internal/widget/Smileys.java | 66 ++++++ core/res/res/layout/keyboard_popup_keyboard.xml | 2 +- core/res/res/values/attrs.xml | 2 - core/res/res/values/ids.xml | 2 +- core/res/res/values/public.xml | 33 +-- core/res/res/values/styles.xml | 5 - core/res/res/values/themes.xml | 1 - 9 files changed, 88 insertions(+), 247 deletions(-) create mode 100644 core/java/com/android/internal/widget/Smileys.java diff --git a/api/current.xml b/api/current.xml index 5dd99eda7b62..92826aedde7b 100644 --- a/api/current.xml +++ b/api/current.xml @@ -3181,7 +3181,7 @@ type="int" transient="false" volatile="false" - value="16843377" + value="16843371" static="true" final="true" deprecated="not deprecated" @@ -3841,7 +3841,7 @@ type="int" transient="false" volatile="false" - value="16843367" + value="16843308" static="true" final="true" deprecated="not deprecated" @@ -6708,17 +6708,6 @@ visibility="public" > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/core/res/res/values/ids.xml b/core/res/res/values/ids.xml index 7e9b7eaba7c2..6ef6f5219981 100644 --- a/core/res/res/values/ids.xml +++ b/core/res/res/values/ids.xml @@ -61,7 +61,7 @@ - + diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml index d691702b4d13..06e752adb7f0 100644 --- a/core/res/res/values/public.xml +++ b/core/res/res/values/public.xml @@ -951,7 +951,7 @@ - + @@ -1010,7 +1010,6 @@ - @@ -1055,7 +1054,7 @@ an input method's input area. --> - + @@ -1075,31 +1074,13 @@ - - - - - - - - - - - - - - - - - - - + - + - + @@ -1110,8 +1091,8 @@ =============================================================== --> - - + + diff --git a/core/res/res/values/styles.xml b/core/res/res/values/styles.xml index fb357a2c2c8b..d7b654e49809 100644 --- a/core/res/res/values/styles.xml +++ b/core/res/res/values/styles.xml @@ -210,11 +210,6 @@ @android:drawable/btn_star - - + + + + + + + + + + + +<H2> +Frame Alert +</H2> + +<P> +This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. +<BR> +Link to <A HREF="changes/changes-summary.html" target="_top">Non-frame version.</A> + + diff --git a/docs/html/sdk/api_diff/3/changes/alldiffs_index_additions.html b/docs/html/sdk/api_diff/3/changes/alldiffs_index_additions.html new file mode 100644 index 000000000000..41f78ab79d97 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/alldiffs_index_additions.html @@ -0,0 +1,3144 @@ + + + + + + + + + +All Additions Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Differences +
    +Removals +
    +Additions +
    +Changes +
    +

    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + + +
    A  +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +AbsoluteSizeSpan +(Parcel) constructor
    + +ACCELEROMETER_ROTATION +
    + +ACTION_AIRPLANE_MODE_SETTINGS +
    + +ACTION_APPLICATION_DEVELOPMENT_SETTINGS +
    + +ACTION_AUDIO_BECOMING_NOISY +
    + +ACTION_BACKGROUND_DATA_SETTING_CHANGED +
    + +ACTION_DATA_ROAMING_SETTINGS +
    + +ACTION_IMAGE_CAPTURE +
    + +ACTION_INPUT_METHOD_CHANGED +
    + +ACTION_INPUT_METHOD_SETTINGS +
    + +ACTION_INTERNAL_STORAGE_SETTINGS +
    + +ACTION_MANAGE_APPLICATIONS_SETTINGS +
    + +ACTION_MEDIA_CHECKING +
    + +ACTION_MEDIA_NOFS +
    + +ACTION_MEMORY_CARD_SETTINGS +
    + +ACTION_NETWORK_OPERATOR_SETTINGS +
    + +ACTION_OUTSIDE +
    + +ACTION_PACKAGE_DATA_CLEARED +
    + +ACTION_PACKAGE_REPLACED +
    + +ACTION_PHONE_STATE_CHANGED +
    + +ACTION_QUICK_LAUNCH_SETTINGS +
    + +ACTION_SEARCH_LONG_PRESS +
    + +ACTION_SYNC_SETTINGS +
    + +ACTION_SYSTEM_TUTORIAL +
    + +ACTION_USER_DICTIONARY_SETTINGS +
    + +ACTION_USER_PRESENT +
    + +ACTION_VIDEO_CAPTURE +
    + +ACTION_WIFI_IP_SETTINGS +
    + +ActivityInstrumentationTestCase2
    + +ActivityManager.RunningAppProcessInfo
    + +addGpsStatusListener +(Listener)
    + +addOnScrollChangedListener +(OnScrollChangedListener)
    + +addPropertyChangeListener
    +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Packer +
    + +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Unpacker +
    + +  type  +(PropertyChangeListener) in java.util.logging.LogManager +
    + +addTestProvider +(String, boolean, boolean, boolean, boolean, boolean, boolean, boolean, int, int)
    + +addToDictionary +
    + +adjustMetaAfterKeypress +(long)
    + +ALIGN_BASELINE +
    + +ALIGN_BOTTOM +
    + +AlignmentSpan.Standard +(Parcel) constructor
    + +allowSingleTap +
    + +AlphabetIndexer
    + +android.appwidget
    + +android.inputmethodservice
    + +android.speech
    + +android.text.format
    + +android.view.inputmethod
    + +animateOnClick +
    + +Annotation +(Parcel) constructor
    + +applyDisplay +(int, Rect, Rect)
    + +AssetFileDescriptor.AutoCloseInputStream
    + +AssetFileDescriptor.AutoCloseOutputStream
    + +AsyncTask
    + +AsyncTask.Status
    + +AudioFormat
    + +AudioRecord
    + +AudioRecord.OnRecordPositionUpdateListener
    + +AudioTrack
    + +AudioTrack.OnPlaybackPositionUpdateListener
    + +AXIS_CLIP +
    + +AXIS_MINUS_X +
    + +AXIS_MINUS_Y +
    + +AXIS_MINUS_Z +
    + +AXIS_X +
    + +AXIS_Y +
    + +AXIS_Z +
    + + +
    B  +A +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +BackgroundColorSpan +(Parcel) constructor
    + +backgroundDimEnabled +
    + +beginBatchEdit +()
    + +BIND_APPWIDGET +
    + +BIND_INPUT_METHOD +
    + +BOOKMARK +
    + +bottomOffset +
    + +bringPointIntoView +(int)
    + +BUCKET_DISPLAY_NAME +
    + +BUCKET_ID +
    + +BulletSpan +(Parcel) constructor
    + +BUTTON_NEGATIVE +
    + +BUTTON_NEUTRAL +
    + +BUTTON_POSITIVE +
    + + +
    C  +A +B +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +calculateLength +(CharSequence, boolean)
    + +callActivityOnUserLeaving +(Activity)
    + +candidatesArea +
    + +candidatesTextStyleSpans +
    + +CAP_MODE_CHARACTERS +
    + +CAP_MODE_SENTENCES +
    + +CAP_MODE_WORDS +
    + +CATEGORY_INFO +
    + +changeAction +(KeyEvent, int)
    + +changeCursorAndColumns +(Cursor, String[], int[])
    + +changeFlags +(KeyEvent, int)
    + +changeTimeRepeat +(KeyEvent, long, int)
    + +checkInputConnectionProxy +(View)
    + +Chronometer.OnChronometerTickListener
    + +clearComposingText +()
    + +clearListSelection +()
    + +clearMatches +()
    + +clearMetaKeyState
    +  type  +(View, Editable, int) in android.text.method.KeyListener +
    + +  type  +(long, int) in android.text.method.MetaKeyKeyListener +
    + +  type  +(View, Editable, int) in android.text.method.MetaKeyKeyListener +
    + +  type  +(Editable, int) in android.text.method.MetaKeyKeyListener +
    + +clearTestProviderEnabled +(String)
    + +clearTestProviderLocation +(String)
    + +clearTestProviderStatus +(String)
    + +CLIP_HORIZONTAL +
    + +CLIP_VERTICAL +
    + +close +()
    + +closeButton +
    + +closeContextMenu +()
    + +codes +
    + +computeDurationHint +()
    + +configPreferences +
    + +ConfigurationInfo
    + +configure +
    + +content +
    + +copy +
    + +copyPixelsFromBuffer +(Buffer)
    + +copyUrl +
    + +createInputStream +()
    + +createOutputStream +()
    + +createWifiLock +(int, String)
    + +CREATOR
    + in  +android.content.res.AssetFileDescriptor +
    + + in  +android.graphics.RectF +
    + +cut +
    + + +
    D  +A +B +C +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +dark_header +
    + +DEBUG_ENABLE_ASSERT +
    + +DEBUG_ENABLE_CHECKJNI +
    + +DEBUG_ENABLE_DEBUGGER +
    + +describeContents
    +  type  +() in android.content.res.AssetFileDescriptor +
    + +  type  +() in android.graphics.RectF +
    + +  type  +() in android.text.Annotation +
    + +  type  +() in android.text.style.AbsoluteSizeSpan +
    + +  type  +() in android.text.style.AlignmentSpan.Standard +
    + +  type  +() in android.text.style.BackgroundColorSpan +
    + +  type  +() in android.text.style.BulletSpan +
    + +  type  +() in android.text.style.ForegroundColorSpan +
    + +  type  +() in android.text.style.LeadingMarginSpan.Standard +
    + +  type  +() in android.text.style.QuoteSpan +
    + +  type  +() in android.text.style.RelativeSizeSpan +
    + +  type  +() in android.text.style.ScaleXSpan +
    + +  type  +() in android.text.style.StrikethroughSpan +
    + +  type  +() in android.text.style.StyleSpan +
    + +  type  +() in android.text.style.SubscriptSpan +
    + +  type  +() in android.text.style.SuperscriptSpan +
    + +  type  +() in android.text.style.TextAppearanceSpan +
    + +  type  +() in android.text.style.TypefaceSpan +
    + +  type  +() in android.text.style.URLSpan +
    + +  type  +() in android.text.style.UnderlineSpan +
    + +deviceHasKey +(int)
    + +deviceHasKeys +(int[])
    + +DexClassLoader
    + +dialog_alert_title +
    + +didTouchFocusSelect +()
    + +dispatchKeyEventPreIme +(KeyEvent)
    + +DISPLAY +
    + +DISPLAY_CLIP_HORIZONTAL +
    + +DISPLAY_CLIP_VERTICAL +
    + +drag +(InstrumentationTestCase, float, float, float, float, int)
    + +dragQuarterScreenDown +(InstrumentationTestCase, Activity)
    + +dragQuarterScreenUp +(InstrumentationTestCase, Activity)
    + +dragViewBy +(InstrumentationTestCase, View, int, int, int)
    + +dragViewTo +(InstrumentationTestCase, View, int, int, int)
    + +dragViewToBottom
    +  type  +(ActivityInstrumentationTestCase, View, int) in android.test.TouchUtils +
    + +  type  +(InstrumentationTestCase, Activity, View, int) in android.test.TouchUtils +
    + +dragViewToTop
    +  type  +(InstrumentationTestCase, View) in android.test.TouchUtils +
    + +  type  +(InstrumentationTestCase, View, int) in android.test.TouchUtils +
    + +dragViewToX +(InstrumentationTestCase, View, int, int)
    + +dragViewToY +(InstrumentationTestCase, View, int, int)
    + +drawBitmap +(int[], int, int, float, float, int, int, boolean, Paint)
    + +dropDownAnchor +
    + +dropDownWidth +
    + +dump
    +  type  +(Printer, String) in android.location.Location +
    + +  type  +(FileDescriptor, String[]) in android.os.Binder +
    + +  type  +(FileDescriptor, String[]) in android.os.IBinder +
    + +dumpCapturedView +(String, Object)
    + +dumpHprofData
    +  type  +(String) in android.os.Debug +
    + +  type  +(String) in dalvik.system.VMDebug +
    + +dumpSpans +(CharSequence, Printer, String)
    + +DynamicDrawableSpan +(int) constructor
    + + +
    E  +A +B +C +D +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +editorExtras +
    + +endBatchEdit +()
    + +EXTRA_APPLICATION_ID +
    + +EXTRA_CREATE_DESCRIPTION +
    + +EXTRA_DATA_REMOVED +
    + +EXTRA_FINISH_ON_COMPLETION +
    + +EXTRA_FORCE_CREATE +
    + +EXTRA_INCOMING_NUMBER +
    + +EXTRA_MAX_BYTES +
    + +EXTRA_MEDIA_ALBUM +
    + +EXTRA_MEDIA_ARTIST +
    + +EXTRA_MEDIA_FOCUS +
    + +EXTRA_MEDIA_TITLE +
    + +EXTRA_OUTPUT +
    + +EXTRA_REPLACING +
    + +EXTRA_SCREEN_ORIENTATION +
    + +EXTRA_STATE +
    + +EXTRA_STATE_IDLE +
    + +EXTRA_STATE_OFFHOOK +
    + +EXTRA_STATE_RINGING +
    + +EXTRA_VIDEO_QUALITY +
    + +extractArea +
    + +extractText +(ExtractedTextRequest, ExtractedText)
    + + +
    F  +A +B +C +D +E +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +fastScrollEnabled +
    + +fillEnabled +
    + +findAll +(String)
    + +findNext +(boolean)
    + +FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET +
    + +FLAG_ACTIVITY_NO_USER_ACTION +
    + +FLAG_ACTIVITY_REORDER_TO_FRONT +
    + +FLAG_ALT_FOCUSABLE_IM +
    + +FLAG_EDITOR_ACTION +
    + +FLAG_FROM_SYSTEM +
    + +FLAG_KEEP_TOUCH_MODE +
    + +FLAG_NO_HISTORY +
    + +FLAG_SOFT_KEYBOARD +
    + +FLAG_UPDATE_CURRENT +
    + +FLAG_WATCH_OUTSIDE_TOUCH +
    + +footerDividersEnabled +
    + +ForegroundColorSpan +(Parcel) constructor
    + +forkAndSpecialize +(int, int, int[], int, int[][])
    + +forkSystemServer +(int, int, int[], int, int[][])
    + +FORMAT_JAPAN +
    + +formatJapaneseNumber +(Editable)
    + +FX_KEYPRESS_DELETE +
    + +FX_KEYPRESS_RETURN +
    + +FX_KEYPRESS_SPACEBAR +
    + +FX_KEYPRESS_STANDARD +
    + + +
    G  +A +B +C +D +E +F +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +GeomagneticField
    + +GestureDetector
    +  GestureDetector +(Context, OnGestureListener) constructor
    + +  GestureDetector +(Context, OnGestureListener, Handler) constructor
    + +GestureDetector.OnDoubleTapListener
    + +get +(Context)
    + +GET_CONFIGURATIONS +
    + +GET_UNINSTALLED_PACKAGES +
    + +getAllowFileAccess +()
    + +getBackgroundDataSetting +()
    + +getBoolean +(int)
    + +getBuiltInZoomControls +()
    + +getButton +(int)
    + +getCapsMode +(CharSequence, int, int)
    + +getCharacters +()
    + +getDeclaredLength +()
    + +getDefaultSensor +(int)
    + +getDeviceConfigurationInfo +()
    + +getDialog +()
    + +getDoubleTapTimeout +()
    + +getDrawable
    +  type  +() in android.graphics.drawable.RotateDrawable +
    + +  type  +() in android.graphics.drawable.ScaleDrawable +
    + +getDropDownAnchor +()
    + +getDropDownWidth +()
    + +getEditableText +()
    + +getFraction +(int, int, int)
    + +getGpsStatus +(GpsStatus)
    + +getImeActionId +()
    + +getImeActionLabel +()
    + +getImeOptions +()
    + +getInclination +(float[])
    + +getInitialScrollX +(TextView, Spannable)
    + +getInitialScrollY +(TextView, Spannable)
    + +getInputExtras +(boolean)
    + +getInputMethodMode +()
    + +getInputType
    +  type  +() in android.text.method.DateKeyListener +
    + +  type  +() in android.text.method.DateTimeKeyListener +
    + +  type  +() in android.text.method.DialerKeyListener +
    + +  type  +() in android.text.method.DigitsKeyListener +
    + +  type  +() in android.text.method.KeyListener +
    + +  type  +() in android.text.method.MultiTapKeyListener +
    + +  type  +() in android.text.method.QwertyKeyListener +
    + +  type  +() in android.text.method.TextKeyListener +
    + +  type  +() in android.text.method.TimeKeyListener +
    + +  type  +() in android.widget.TextView +
    + +getItem +(int)
    + +getKeyProgressIncrement +()
    + +getLaunchIntentForPackage
    +  type  +(String) in android.content.pm.PackageManager +
    + +  type  +(String) in android.test.mock.MockPackageManager +
    + +getLayoutDimension +(int, int)
    + +getListSelection +()
    + +getListView +()
    + +getLoggingMXBean +()
    + +getLong
    +  type  +(ContentResolver, String) in android.provider.Settings.System +
    + +  type  +(ContentResolver, String, long) in android.provider.Settings.System +
    + +getMaxAvailableHeight +(View, int)
    + +getMaxKeyCode +()
    + +getMetaState
    +  type  +(long) in android.text.method.MetaKeyKeyListener +
    + +  type  +(long, int) in android.text.method.MetaKeyKeyListener +
    + +getNeighboringCellInfo +()
    + +getOnChronometerTickListener +()
    + +getOnItemClickListener +()
    + +getOnItemSelectedListener +()
    + +getOrientation +(float[], float[])
    + +getOriginalUrl
    +  type  +() in android.webkit.WebHistoryItem +
    + +  type  +() in android.webkit.WebView +
    + +getPluginData
    +  type  +(String, Map<String, String>) in android.webkit.UrlInterceptHandler +
    + +  type  +(String, Map<String, String>) in android.webkit.UrlInterceptRegistry +
    + +getPrivateImeOptions +()
    + +getRotationMatrix +(float[], float[], float[], float[])
    + +getRunningAppProcesses +()
    + +getScaledDoubleTapSlop +()
    + +getScaledEdgeSlop +()
    + +getScaledFadingEdgeLength +()
    + +getScaledMaximumDrawingCacheSize +()
    + +getScaledMinimumFlingVelocity +()
    + +getScaledScrollBarSize +()
    + +getScaledTouchSlop +()
    + +getScaledWindowTouchSlop +()
    + +getSensorList +(int)
    + +getSize +(View)
    + +getSpanTypeId
    +  type  +() in android.text.Annotation +
    + +  type  +() in android.text.style.AbsoluteSizeSpan +
    + +  type  +() in android.text.style.AlignmentSpan.Standard +
    + +  type  +() in android.text.style.BackgroundColorSpan +
    + +  type  +() in android.text.style.BulletSpan +
    + +  type  +() in android.text.style.ForegroundColorSpan +
    + +  type  +() in android.text.style.LeadingMarginSpan.Standard +
    + +  type  +() in android.text.style.QuoteSpan +
    + +  type  +() in android.text.style.RelativeSizeSpan +
    + +  type  +() in android.text.style.ScaleXSpan +
    + +  type  +() in android.text.style.StrikethroughSpan +
    + +  type  +() in android.text.style.StyleSpan +
    + +  type  +() in android.text.style.SubscriptSpan +
    + +  type  +() in android.text.style.SuperscriptSpan +
    + +  type  +() in android.text.style.TextAppearanceSpan +
    + +  type  +() in android.text.style.TypefaceSpan +
    + +  type  +() in android.text.style.URLSpan +
    + +  type  +() in android.text.style.UnderlineSpan +
    + +getStartX +()
    + +getStartY +()
    + +getStatSize +()
    + +getSubtype +()
    + +getSubtypeName +()
    + +getSystemSharedLibraryNames
    +  type  +() in android.content.pm.PackageManager +
    + +  type  +() in android.test.mock.MockPackageManager +
    + +getTextFilter +()
    + +getThread +()
    + +getTimeZoneDatabaseVersion +()
    + +getUserAgentString +()
    + +getVerticalAlignment +()
    + +getWindowVisibleDisplayFrame +(Rect)
    + +GLSurfaceView
    + +GLSurfaceView.EGLConfigChooser
    + +GLSurfaceView.GLWrapper
    + +GLSurfaceView.Renderer
    + +GpsSatellite
    + +GpsStatus
    + +GpsStatus.Listener
    + + +
    H  +A +B +C +D +E +F +G +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +handle +
    + +handleKeyDown +(long, int, KeyEvent)
    + +handleKeyUp +(long, int, KeyEvent)
    + +Handler
    +  Handler +(Callback) constructor
    + +  Handler +(Looper, Callback) constructor
    + +Handler.Callback
    + +HAPTIC_FEEDBACK_ENABLED
    + in  +android.provider.Settings.System +
    + + in  +android.view.View +
    + +HapticFeedbackConstants
    + +hapticFeedbackEnabled +
    + +hardKeyboardHidden +
    + +HARDKEYBOARDHIDDEN_NO +
    + +HARDKEYBOARDHIDDEN_UNDEFINED +
    + +HARDKEYBOARDHIDDEN_YES +
    + +hasSoftInputMode +()
    + +hasWindowFocus +()
    + +headerDividersEnabled +
    + +horizontalGap +
    + +HorizontalScrollView
    + + +
    I  +A +B +C +D +E +F +G +H +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +ic_btn_speak_now +
    + +iconPreview +
    + +ImageSpan
    +  ImageSpan +(Context, Uri, int) constructor
    + +  ImageSpan +(Context, int, int) constructor
    + +  ImageSpan +(Bitmap, int) constructor
    + +  ImageSpan +(Drawable, int) constructor
    + +  ImageSpan +(Drawable, String, int) constructor
    + +imeActionId +
    + +imeActionLabel +
    + +imeExtractEnterAnimation +
    + +imeExtractExitAnimation +
    + +imeFullscreenBackground +
    + +imeOptions +
    + +inferStreamType +()
    + +initialLayout +
    + +innerRadius +
    + +INPUT_METHOD_FROM_FOCUSABLE +
    + +INPUT_METHOD_NEEDED +
    + +INPUT_METHOD_NOT_NEEDED +
    + +INPUT_METHOD_SERVICE +
    + +inputArea +
    + +inputExtractEditText +
    + +InputType
    + +inputType +
    + +INSTALL_FAILED_CONFLICTING_PROVIDER +
    + +INTENT_ACTION_MEDIA_SEARCH +
    + +INTENT_ACTION_STILL_IMAGE_CAMERA +
    + +INTENT_ACTION_VIDEO_CAMERA +
    + +intentForPosition +(int)
    + +IntentService
    + +INTERVAL_DAY +
    + +INTERVAL_FIFTEEN_MINUTES +
    + +INTERVAL_HALF_DAY +
    + +INTERVAL_HALF_HOUR +
    + +INTERVAL_HOUR +
    + +isAboveAnchor +()
    + +isBluetoothA2dpOn +()
    + +isClippingEnabled +()
    + +isDebuggingEnabled +()
    + +isDefault +
    + +isFastScrollEnabled +()
    + +isFillEnabled +()
    + +isHapticFeedbackEnabled +()
    + +isInEditMode +()
    + +isInputMethodTarget +()
    + +isLooping +()
    + +isModifier +
    + +isOutsideTouchable +()
    + +isPerformingCompletion +()
    + +isRepeatable +
    + +isRoaming +()
    + +isSafeMode
    +  type  +() in android.content.pm.PackageManager +
    + +  type  +() in android.test.mock.MockPackageManager +
    + +isScrollContainer +
    + +isSelectingMetaTracker +(CharSequence, Object)
    + +isSmoothScrollbarEnabled +()
    + +isSticky +
    + +isTouchable +()
    + + +java.beans
    + +JetPlayer
    + +JetPlayer.OnJetEventListener
    + + +
    K  +A +B +C +D +E +F +G +H +I +J +L +M +N +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +KEY_LOCATION_CHANGED +
    + +KEY_PROVIDER_ENABLED +
    + +KEY_STATUS_CHANGED +
    + +keyBackground +
    + +keyboardMode +
    + +keyboardView +
    + +KEYCODE_MEDIA_FAST_FORWARD +
    + +KEYCODE_MEDIA_NEXT +
    + +KEYCODE_MEDIA_PLAY_PAUSE +
    + +KEYCODE_MEDIA_PREVIOUS +
    + +KEYCODE_MEDIA_REWIND +
    + +KEYCODE_MEDIA_STOP +
    + +KEYCODE_MUTE +
    + +keyEdgeFlags +
    + +KeyEvent
    +  KeyEvent +(KeyEvent) constructor
    + +  KeyEvent +(long, String, int, int) constructor
    + +keyHeight +
    + +keyIcon +
    + +keyLabel +
    + +keyOutputText +
    + +keyPreviewHeight +
    + +keyPreviewLayout +
    + +keyPreviewOffset +
    + +keyTextColor +
    + +keyTextSize +
    + +keyWidth +
    + + +
    L  +A +B +C +D +E +F +G +H +I +J +K +M +N +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +labelTextSize +
    + +launchActivityWithIntent +(String, Class<T>, Intent)
    + +LauncherActivity.IconResizer
    + +LauncherActivity.ListItem
    + +LeadingMarginSpan.Standard +(Parcel) constructor
    + +LiveFolders
    + +load
    +  type  +(AssetFileDescriptor, int) in android.media.SoundPool +
    + +  type  +(FileDescriptor, long, long, int) in android.media.SoundPool +
    + +loadDex +(String, String, int)
    + +LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED +
    + +longClickView +(InstrumentationTestCase, View)
    + + +
    M  +A +B +C +D +E +F +G +H +I +J +K +L +N +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +makeListItems +()
    + +mayUseInputMethod +(int)
    + +MEDIA_CHECKING +
    + +MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK +
    + +MEDIA_INFO_BAD_INTERLEAVING +
    + +MEDIA_INFO_NOT_SEEKABLE +
    + +MEDIA_INFO_UNKNOWN +
    + +MEDIA_INFO_VIDEO_TRACK_LAGGING +
    + +MEDIA_NOFS +
    + +MEDIA_RECORDER_ERROR_UNKNOWN +
    + +MEDIA_RECORDER_INFO_MAX_DURATION_REACHED +
    + +MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED +
    + +MEDIA_RECORDER_INFO_UNKNOWN +
    + +MediaPlayer.OnInfoListener
    + +MediaPlayer.OnVideoSizeChangedListener
    + +MediaRecorder.OnErrorListener
    + +MediaRecorder.OnInfoListener
    + +MediaRecorder.VideoEncoder
    + +MediaRecorder.VideoSource
    + +MODE_APPEND +
    + +MOUNT_FORMAT_FILESYSTEMS +
    + +moveCursorToVisibleOffset +()
    + +mutate +()
    + +mVerticalAlignment +
    + + +
    N  +A +B +C +D +E +F +G +H +I +J +K +L +M +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +NeighboringCellInfo
    + +NoCopySpan
    + +NoCopySpan.Concrete
    + +noHistory +
    + +NUMBER_OF_SONGS_FOR_ARTIST +
    + + +
    O  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +P +Q +R +S +T +U +V +W +Y + TOP +

    +onBeginBatchEdit +()
    + +onCheckIsTextEditor +()
    + +onCommitCompletion +(CompletionInfo)
    + +onContentChanged +()
    + +onCreateInputConnection +(EditorInfo)
    + +onDoubleTap +(MotionEvent)
    + +onDoubleTapEvent +(MotionEvent)
    + +onEditorAction +(int)
    + +onEndBatchEdit +()
    + +onFinishTemporaryDetach +()
    + +onKeyOther
    +  type  +(TextView, Spannable, KeyEvent) in android.text.method.ArrowKeyMovementMethod +
    + +  type  +(View, Editable, KeyEvent) in android.text.method.BaseKeyListener +
    + +  type  +(View, Editable, KeyEvent) in android.text.method.KeyListener +
    + +  type  +(TextView, Spannable, KeyEvent) in android.text.method.MovementMethod +
    + +  type  +(TextView, Spannable, KeyEvent) in android.text.method.ScrollingMovementMethod +
    + +onKeyPreIme +(int, KeyEvent)
    + +onPrivateIMECommand +(String, Bundle)
    + +onSelectionChanged +(int, int)
    + +onSingleTapConfirmed +(MotionEvent)
    + +onStartTemporaryDetach +()
    + +onTextContextMenuItem +(int)
    + +onUserInteraction +()
    + +onUserLeaveHint +()
    + +openAssetFile +(Uri, String)
    + +openAssetFileDescriptor +(Uri, String)
    + +openOutputStream +(Uri, String)
    + +openRawResource +(int, TypedValue)
    + +OrientationEventListener
    + +OrientationListener +(Context, int) constructor
    + + +
    P  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +Q +R +S +T +U +V +W +Y + TOP +

    +ParcelableSpan
    + +parseBundleExtra +(String, AttributeSet, Bundle)
    + +parseBundleExtras +(XmlResourceParser, Bundle)
    + +paste +
    + +peekService +(Context, Intent)
    + +performHapticFeedback
    +  type  +(int) in android.view.View +
    + +  type  +(int, int) in android.view.View +
    + +PHONETIC_NAME
    + in  +android.provider.Contacts.Intents.Insert +
    + + in  +android.provider.Contacts.PeopleColumns +
    + +playSoundEffect +(int, float)
    + +PluginData
    + +popupCharacters +
    + +popupKeyboard +
    + +popupLayout +
    + +PrintStreamPrinter
    + +privateImeOptions +
    + +ProviderTestCase2
    + +putLong +(ContentResolver, String, long)
    + + +
    Q  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +R +S +T +U +V +W +Y + TOP +

    +QuoteSpan +(Parcel) constructor
    + + +
    R  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +S +T +U +V +W +Y + TOP +

    +R.bool
    + +R.integer
    + +RAW_AMR +
    + +readFromParcel +(Parcel)
    + +registerListener
    +  type  +(SensorEventListener, Sensor, int) in android.hardware.SensorManager +
    + +  type  +(SensorEventListener, Sensor, int, Handler) in android.hardware.SensorManager +
    + +RelativeSizeSpan +(Parcel) constructor
    + +remapCoordinateSystem +(float[], int, int, float[])
    + +RemoteViews.ActionException +(Exception) constructor
    + +removeAt +(int)
    + +removeGpsStatusListener +(Listener)
    + +removeOnScrollChangedListener +(OnScrollChangedListener)
    + +removePropertyChangeListener
    +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Packer +
    + +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Unpacker +
    + +  type  +(PropertyChangeListener) in java.util.logging.LogManager +
    + +removeTestProvider +(String)
    + +removeUpdates +(PendingIntent)
    + +replaceExtras
    +  type  +(Intent) in android.content.Intent +
    + +  type  +(Bundle) in android.content.Intent +
    + +reqFiveWayNav +
    + +reqHardKeyboard +
    + +reqKeyboardType +
    + +reqNavigation +
    + +reqTouchScreen +
    + +requestChildRectangleOnScreen +(View, Rect, boolean)
    + +requestLocationUpdates +(String, long, float, PendingIntent)
    + +resetLockedMeta +(long)
    + +ResourceCursorAdapter +(Context, int, Cursor, boolean) constructor
    + +restartPackage +(String)
    + +restorePicture +(Bundle, File)
    + +ResultReceiver
    + +ROUTE_BLUETOOTH_A2DP +
    + +ROUTE_BLUETOOTH_SCO +
    + +rowEdgeFlags +
    + +runTestOnUiThread +(Runnable)
    + + +
    S  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +T +U +V +W +Y + TOP +

    +savePicture +(Bundle, File)
    + +ScaleXSpan +(Parcel) constructor
    + +SCREEN_BRIGHTNESS_CHANGED +
    + +SCREEN_ORIENTATION_CHANGED +
    + +screenBrightness +
    + +screenOrientation +
    + +scrollToBottom +(InstrumentationTestCase, Activity, ViewGroup)
    + +scrollToTop +(InstrumentationTestCase, Activity, ViewGroup)
    + +SECONDARY_EMAIL +
    + +SECONDARY_EMAIL_TYPE +
    + +SECONDARY_PHONE +
    + +SECONDARY_PHONE_TYPE +
    + +SectionIndexer
    + +selectAll +
    + +sendExtraCommand +(String, String, Bundle)
    + +Sensor
    + +SensorEvent
    + +SensorEventListener
    + +setAllowFileAccess +(boolean)
    + +setBitmap +(int, String, Bitmap)
    + +setBluetoothA2dpOn +(boolean)
    + +setBoolean +(int, String, boolean)
    + +setBuiltInZoomControls +(boolean)
    + +setButton
    +  type  +(CharSequence, OnClickListener) in android.app.AlertDialog +
    + +  type  +(CharSequence, Message) in android.app.AlertDialog +
    + +setByte +(int, String, byte)
    + +setCamera +(Camera)
    + +setChar +(int, String, char)
    + +setCharSequence +(int, String, CharSequence)
    + +setClippingEnabled +(boolean)
    + +setCompoundDrawablesWithIntrinsicBounds +(int, int, int, int)
    + +setDouble +(int, String, double)
    + +setDropDownAnchor +(int)
    + +setDropDownWidth +(int)
    + +setExtractedText +(ExtractedText)
    + +setFastScrollEnabled +(boolean)
    + +setFillEnabled +(boolean)
    + +setFloat +(int, String, float)
    + +setFooterDividersEnabled +(boolean)
    + +setHapticFeedbackEnabled +(boolean)
    + +setHeaderDividersEnabled +(boolean)
    + +setImageViewBitmap +(int, Bitmap)
    + +setImeActionLabel +(CharSequence, int)
    + +setImeOptions +(int)
    + +setInexactRepeating +(int, long, long, PendingIntent)
    + +setInputExtras +(int)
    + +setInputMethodMode +(int)
    + +setInputType +(int)
    + +setInt +(int, String, int)
    + +setKeyProgressIncrement +(int)
    + +setListSelection +(int)
    + +setLong +(int, String, long)
    + +setMaxDuration +(int)
    + +setMaxFileSize +(long)
    + +setNetworkAvailable +(boolean)
    + +setOnChronometerTickListener +(OnChronometerTickListener)
    + +setOnClickPendingIntent +(int, PendingIntent)
    + +setOnDoubleTapListener +(OnDoubleTapListener)
    + +setOnEditorActionListener +(OnEditorActionListener)
    + +setOnErrorListener +(OnErrorListener)
    + +setOneShotPreviewCallback +(PreviewCallback)
    + +setOnInfoListener
    +  type  +(OnInfoListener) in android.media.MediaPlayer +
    + +  type  +(OnInfoListener) in android.media.MediaRecorder +
    + +setOnVideoSizeChangedListener +(OnVideoSizeChangedListener)
    + +setOutputFile +(FileDescriptor)
    + +setOutsideTouchable +(boolean)
    + +setPrivateImeOptions +(String)
    + +setRawInputType +(int)
    + +setScrollContainer +(boolean)
    + +setShort +(int, String, short)
    + +setSmoothScrollbarEnabled +(boolean)
    + +setSoftInputMode +(int)
    + +setStaticTransformationsEnabled +(boolean)
    + +setString +(int, String, String)
    + +setTestProviderEnabled +(String, boolean)
    + +setTestProviderLocation +(String, Location)
    + +setTestProviderStatus +(String, int, Bundle, long)
    + +setTextColor +(int, int)
    + +Settings.Secure
    + +settingsActivity +
    + +setTouchable +(boolean)
    + +setTouchInterceptor +(OnTouchListener)
    + +setUri +(int, String, Uri)
    + +setUserAgentString +(String)
    + +setVideoEncoder +(int)
    + +setVideoFrameRate +(int)
    + +setVideoSize +(int, int)
    + +setVideoSource +(int)
    + +setView +(View, int, int, int, int)
    + +setViewResource +(int)
    + +setVisible +(boolean)
    + +setWindowAnimations +(int)
    + +setWindowLayoutMode +(int, int)
    + +sharedUserId +
    + +sharedUserLabel
    + in  +android.R.attr +
    + + in  +android.content.pm.PackageInfo +
    + +SHOW_OR_CREATE_CONTACT +
    + +SlidingDrawer
    + +SlidingDrawer.OnDrawerCloseListener
    + +SlidingDrawer.OnDrawerOpenListener
    + +SlidingDrawer.OnDrawerScrollListener
    + +smoothScrollbar +
    + +SOFT_INPUT_ADJUST_PAN +
    + +SOFT_INPUT_ADJUST_RESIZE +
    + +SOFT_INPUT_ADJUST_UNSPECIFIED +
    + +SOFT_INPUT_IS_FORWARD_NAVIGATION +
    + +SOFT_INPUT_MASK_ADJUST +
    + +SOFT_INPUT_MASK_STATE +
    + +SOFT_INPUT_MODE_CHANGED +
    + +SOFT_INPUT_STATE_ALWAYS_HIDDEN +
    + +SOFT_INPUT_STATE_ALWAYS_VISIBLE +
    + +SOFT_INPUT_STATE_HIDDEN +
    + +SOFT_INPUT_STATE_UNCHANGED +
    + +SOFT_INPUT_STATE_UNSPECIFIED +
    + +SOFT_INPUT_STATE_VISIBLE +
    + +softInputMode
    + in  +android.content.pm.ActivityInfo +
    + + in  +android.view.WindowManager.LayoutParams +
    + +sort +(Comparator<? super T>)
    + +SPAN_COMPOSING +
    + +SPAN_INTERMEDIATE +
    + +SPAN_POINT_MARK_MASK +
    + +startSelectingText +
    + +state_long_pressable +
    + +stopSelectingText +
    + +STREAM_NOTIFICATION +
    + +STRETCH_SPACING_UNIFORM +
    + +StrikethroughSpan +(Parcel) constructor
    + +StyleSpan +(Parcel) constructor
    + +SubscriptSpan +(Parcel) constructor
    + +SuperscriptSpan +(Parcel) constructor
    + +switchInputMethod +
    + + +
    T  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +U +V +W +Y + TOP +

    +TERTIARY_EMAIL +
    + +TERTIARY_EMAIL_TYPE +
    + +TERTIARY_PHONE +
    + +TERTIARY_PHONE_TYPE +
    + +TestMethod
    +  TestMethod +(String, Class<TestCase>) constructor
    + +  TestMethod +(TestCase) constructor
    + +TextAppearanceSpan +(Parcel) constructor
    + +TextView.OnEditorActionListener
    + +Theme_InputMethod +
    + +Theme_Light_Panel +
    + +Theme_NoDisplay +
    + +Theme_Panel +
    + +thickness +
    + +title_bar_tall +
    + +topOffset +
    + +toShortString
    +  type  +() in android.graphics.Rect +
    + +  type  +() in android.view.animation.Transformation +
    + +TransitionDrawable +(Drawable[]) constructor
    + +TYPE_APPLICATION_ATTACHED_DIALOG +
    + +TYPE_INPUT_METHOD +
    + +TYPE_INPUT_METHOD_DIALOG +
    + +TypefaceSpan +(Parcel) constructor
    + + +
    U  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +V +W +Y + TOP +

    +UnderlineSpan +(Parcel) constructor
    + +UNKNOWN_LENGTH +
    + +unregisterListener
    +  type  +(SensorEventListener) in android.hardware.SensorManager +
    + +  type  +(SensorEventListener, Sensor) in android.hardware.SensorManager +
    + +update
    +  type  +() in android.widget.PopupWindow +
    + +  type  +(int, int, int, int, boolean) in android.widget.PopupWindow +
    + +UPDATE_DEVICE_STATS +
    + +UpdateAppearance
    + +updatePeriodMillis +
    + +URLSpan +(Parcel) constructor
    + +UserDictionary
    + +UserDictionary.Words
    + + +
    V  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +W +Y + TOP +

    +verticalCorrection +
    + +verticalGap +
    + +VideoView_error_text_invalid_progressive_playback +
    + +ViewDebug.CapturedViewProperty
    + +ViewTreeObserver.OnScrollChangedListener
    + +Visibility
    + +voiceLanguage +
    + +voiceLanguageModel +
    + +voiceMaxResults +
    + +voicePromptText +
    + +voiceSearchMode +
    + +VOLUME_NOTIFICATION +
    + + +
    W  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +Y + TOP +

    +Widget_KeyboardView +
    + +WIFI_MAX_DHCP_RETRY_COUNT +
    + +WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS +
    + +WIFI_MODE_FULL +
    + +WIFI_MODE_SCAN_ONLY +
    + +WIFI_SLEEP_POLICY +
    + +WIFI_SLEEP_POLICY_DEFAULT +
    + +WIFI_SLEEP_POLICY_NEVER +
    + +WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED +
    + +windowDisablePreview +
    + +windowNoDisplay +
    + +windowSoftInputMode +
    + +WRITE_SECURE_SETTINGS +
    + +writeToParcel
    +  type  +(Parcel, int) in android.content.res.AssetFileDescriptor +
    + +  type  +(Parcel, int) in android.graphics.RectF +
    + +  type  +(Parcel, int) in android.text.Annotation +
    + +  type  +(Parcel, int) in android.text.style.AbsoluteSizeSpan +
    + +  type  +(Parcel, int) in android.text.style.AlignmentSpan.Standard +
    + +  type  +(Parcel, int) in android.text.style.BackgroundColorSpan +
    + +  type  +(Parcel, int) in android.text.style.BulletSpan +
    + +  type  +(Parcel, int) in android.text.style.ForegroundColorSpan +
    + +  type  +(Parcel, int) in android.text.style.LeadingMarginSpan.Standard +
    + +  type  +(Parcel, int) in android.text.style.QuoteSpan +
    + +  type  +(Parcel, int) in android.text.style.RelativeSizeSpan +
    + +  type  +(Parcel, int) in android.text.style.ScaleXSpan +
    + +  type  +(Parcel, int) in android.text.style.StrikethroughSpan +
    + +  type  +(Parcel, int) in android.text.style.StyleSpan +
    + +  type  +(Parcel, int) in android.text.style.SubscriptSpan +
    + +  type  +(Parcel, int) in android.text.style.SuperscriptSpan +
    + +  type  +(Parcel, int) in android.text.style.TextAppearanceSpan +
    + +  type  +(Parcel, int) in android.text.style.TypefaceSpan +
    + +  type  +(Parcel, int) in android.text.style.URLSpan +
    + +  type  +(Parcel, int) in android.text.style.UnderlineSpan +
    + + +
    Y  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W + TOP +

    +yieldIfContendedSafely +()
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/alldiffs_index_all.html b/docs/html/sdk/api_diff/3/changes/alldiffs_index_all.html new file mode 100644 index 000000000000..48da98bb8776 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/alldiffs_index_all.html @@ -0,0 +1,4178 @@ + + + + + + + + + +All Differences Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Differences +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + + +
    A  +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +AbsListView
    + +AbsoluteLayout
    + +AbsoluteSizeSpan
    +  android.text.style
    + +  AbsoluteSizeSpan +(Parcel) constructor
    + +AbsSeekBar
    + +ACCELEROMETER_ROTATION +
    + +ACTION_AIRPLANE_MODE_SETTINGS +
    + +ACTION_APPLICATION_DEVELOPMENT_SETTINGS +
    + +ACTION_AUDIO_BECOMING_NOISY +
    + +ACTION_BACKGROUND_DATA_SETTING_CHANGED +
    + +ACTION_DATA_ROAMING_SETTINGS +
    + +ACTION_IMAGE_CAPTURE +
    + +ACTION_INPUT_METHOD_CHANGED +
    + +ACTION_INPUT_METHOD_SETTINGS +
    + +ACTION_INTERNAL_STORAGE_SETTINGS +
    + +ACTION_MANAGE_APPLICATIONS_SETTINGS +
    + +ACTION_MEDIA_CHECKING +
    + +ACTION_MEDIA_NOFS +
    + +ACTION_MEMORY_CARD_SETTINGS +
    + +ACTION_NETWORK_OPERATOR_SETTINGS +
    + +ACTION_OUTSIDE +
    + +ACTION_PACKAGE_DATA_CLEARED +
    + +ACTION_PACKAGE_REPLACED +
    + +ACTION_PHONE_STATE_CHANGED +
    + +ACTION_QUICK_LAUNCH_SETTINGS +
    + +ACTION_SEARCH_LONG_PRESS +
    + +ACTION_SYNC_SETTINGS +
    + +ACTION_SYSTEM_TUTORIAL +
    + +ACTION_USER_DICTIONARY_SETTINGS +
    + +ACTION_USER_PRESENT +
    + +ACTION_VIDEO_CAPTURE +
    + +ACTION_WIFI_IP_SETTINGS +
    + +Activity
    + +ActivityInfo
    + +ActivityInstrumentationTestCase
    + +ActivityInstrumentationTestCase2
    + +ActivityManager
    + +ActivityManager.RunningAppProcessInfo
    + +ADB_ENABLED +
    + +addGpsStatusListener +(Listener)
    + +addOnScrollChangedListener +(OnScrollChangedListener)
    + +addPropertyChangeListener
    +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Packer +
    + +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Unpacker +
    + +  type  +(PropertyChangeListener) in java.util.logging.LogManager +
    + +addRequirements +(Predicate<TestMethod>)
    + +addTestProvider +(String, boolean, boolean, boolean, boolean, boolean, boolean, boolean, int, int)
    + +addToDictionary +
    + +adjustMetaAfterKeypress +(long)
    + +AlarmManager
    + +AlertDialog
    + +ALIGN_BASELINE +
    + +ALIGN_BOTTOM +
    + +AlignmentSpan.Standard
    +  android.text.style
    + +  AlignmentSpan.Standard +(Parcel) constructor
    + +allowSingleTap +
    + +AlphabetIndexer
    + +android
    + +android.app
    + +android.appwidget
    + +android.content
    + +android.content.pm
    + +android.content.res
    + +android.database
    + +android.database.sqlite
    + +android.graphics
    + +android.graphics.drawable
    + +android.graphics.drawable.shapes
    + +android.hardware
    + +android.inputmethodservice
    + +android.location
    + +android.media
    + +android.net
    + +android.net.wifi
    + +android.opengl
    + +android.os
    + +android.preference
    + +android.provider
    + +android.speech
    + +android.telephony
    + +android.telephony.gsm
    + +android.test
    + +android.test.mock
    + +android.test.suitebuilder
    + +android.text
    + +android.text.format
    + +android.text.method
    + +android.text.style
    + +android.util
    + +android.view
    + +android.view.animation
    + +android.view.inputmethod
    + +android.webkit
    + +android.widget
    + +ANDROID_ID +
    + +animateOnClick +
    + +Animation
    + +Annotation
    +  android.text
    + +  Annotation +(Parcel) constructor
    + +appendEscapedSQLString +(StringBuilder, String)
    + +applyDisplay +(int, Rect, Rect)
    + +ArrayAdapter
    + +ArrowKeyMovementMethod
    + +AssetFileDescriptor
    + +AssetFileDescriptor.AutoCloseInputStream
    + +AssetFileDescriptor.AutoCloseOutputStream
    + +AsyncTask
    + +AsyncTask.Status
    + +AudioFormat
    + +AudioManager
    + +AudioRecord
    + +AudioRecord.OnRecordPositionUpdateListener
    + +AudioTrack
    + +AudioTrack.OnPlaybackPositionUpdateListener
    + +AutoCompleteTextView
    + +AutoText
    + +autoText +
    + +AXIS_CLIP +
    + +AXIS_MINUS_X +
    + +AXIS_MINUS_Y +
    + +AXIS_MINUS_Z +
    + +AXIS_X +
    + +AXIS_Y +
    + +AXIS_Z +
    + + +
    B  +A +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +BackgroundColorSpan
    +  android.text.style
    + +  BackgroundColorSpan +(Parcel) constructor
    + +backgroundDimEnabled +
    + +BaseKeyListener
    + +beginBatchEdit +()
    + +BIND_APPWIDGET +
    + +BIND_INPUT_METHOD +
    + +Binder
    + +Bitmap
    + +BLUETOOTH_ON +
    + +BOOKMARK +
    + +bottomOffset +
    + +bringPointIntoView +(int)
    + +BroadcastReceiver
    + +Browser
    + +BUCKET_DISPLAY_NAME +
    + +BUCKET_ID +
    + +Build
    + +BulletSpan
    +  android.text.style
    + +  BulletSpan +(Parcel) constructor
    + +BUTTON1 +
    + +BUTTON2 +
    + +BUTTON3 +
    + +BUTTON_NEGATIVE +
    + +BUTTON_NEUTRAL +
    + +BUTTON_POSITIVE +
    + + +
    C  +A +B +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +calculateLength +(CharSequence, boolean)
    + +callActivityOnUserLeaving +(Activity)
    + +Camera
    + +candidatesArea +
    + +candidatesTextStyleSpans +
    + +Canvas
    + +CAP_MODE_CHARACTERS +
    + +CAP_MODE_SENTENCES +
    + +CAP_MODE_WORDS +
    + +capitalize +
    + +CATEGORY_GADGET +
    + +CATEGORY_INFO +
    + +changeAction +(KeyEvent, int)
    + +changeCursorAndColumns +(Cursor, String[], int[])
    + +changeDebugPort +(int)
    + +changeFlags +(KeyEvent, int)
    + +changeTimeRepeat +(KeyEvent, long, int)
    + +Character.UnicodeBlock
    + +checkInputConnectionProxy +(View)
    + +Chronometer
    + +Chronometer.OnChronometerTickListener
    + +Class
    + +clearComposingText +()
    + +clearListSelection +()
    + +clearMatches +()
    + +clearMetaKeyState
    +  type  +(View, Editable, int) in android.text.method.KeyListener +
    + +  type  +(long, int) in android.text.method.MetaKeyKeyListener +
    + +  type  +(View, Editable, int) in android.text.method.MetaKeyKeyListener +
    + +  type  +(Editable, int) in android.text.method.MetaKeyKeyListener +
    + +clearTestProviderEnabled +(String)
    + +clearTestProviderLocation +(String)
    + +clearTestProviderStatus +(String)
    + +ClickableSpan
    + +CLIP_HORIZONTAL +
    + +CLIP_VERTICAL +
    + +clone +()
    + +close +()
    + +closeButton +
    + +closeContextMenu +()
    + +codes +
    + +computeDurationHint +()
    + +configPreferences +
    + +Configuration
    + +ConfigurationInfo
    + +configure +
    + +ConnectivityManager
    + +Contacts.Intents
    + +Contacts.Intents.Insert
    + +Contacts.PeopleColumns
    + +content +
    + +ContentProvider
    + +ContentResolver
    + +Context
    + +copy +
    + +copyPixelsFromBuffer +(Buffer)
    + +copyUrl +
    + +createInputStream +()
    + +createOutputStream +()
    + +createWifiLock +(int, String)
    + +CREATOR
    + in  +android.content.res.AssetFileDescriptor +
    + + in  +android.graphics.RectF +
    + +Cursor
    + +CursorAdapter
    + +CursorWrapper
    + +cut +
    + + +dalvik.system
    + +dark_header +
    + +DATA_ROAMING +
    + +DATA_X +
    + +DATA_Y +
    + +DATA_Z +
    + +DatabaseUtils
    + +Date
    +  java.util
    + +  Date +() constructor
    + +  Date +(int, int, int, int, int, int) constructor
    + +DateKeyListener
    + +DateTimeKeyListener
    + +Debug
    + +DEBUG_ENABLE_ASSERT +
    + +DEBUG_ENABLE_CHECKJNI +
    + +DEBUG_ENABLE_DEBUGGER +
    + +DEFAULT_SORT_ORDER
    + in  +android.provider.MediaStore.Images.Media +
    + + in  +android.provider.MediaStore.Video +
    + +describeContents
    +  type  +() in android.content.res.AssetFileDescriptor +
    + +  type  +() in android.graphics.RectF +
    + +  type  +() in android.text.Annotation +
    + +  type  +() in android.text.style.AbsoluteSizeSpan +
    + +  type  +() in android.text.style.AlignmentSpan.Standard +
    + +  type  +() in android.text.style.BackgroundColorSpan +
    + +  type  +() in android.text.style.BulletSpan +
    + +  type  +() in android.text.style.ForegroundColorSpan +
    + +  type  +() in android.text.style.LeadingMarginSpan.Standard +
    + +  type  +() in android.text.style.QuoteSpan +
    + +  type  +() in android.text.style.RelativeSizeSpan +
    + +  type  +() in android.text.style.ScaleXSpan +
    + +  type  +() in android.text.style.StrikethroughSpan +
    + +  type  +() in android.text.style.StyleSpan +
    + +  type  +() in android.text.style.SubscriptSpan +
    + +  type  +() in android.text.style.SuperscriptSpan +
    + +  type  +() in android.text.style.TextAppearanceSpan +
    + +  type  +() in android.text.style.TypefaceSpan +
    + +  type  +() in android.text.style.URLSpan +
    + +  type  +() in android.text.style.UnderlineSpan +
    + +DEVICE_PROVISIONED +
    + +deviceHasKey +(int)
    + +deviceHasKeys +(int[])
    + +DexClassLoader
    + +DexFile
    + +DialerKeyListener
    + +dialog_alert_title +
    + +DialogInterface
    + +DialogPreference
    + +didTouchFocusSelect +()
    + +DigitsKeyListener
    + +dispatchKeyEventPreIme +(KeyEvent)
    + +DISPLAY +
    + +DISPLAY_CLIP_HORIZONTAL +
    + +DISPLAY_CLIP_VERTICAL +
    + +drag
    +  type  +(InstrumentationTestCase, float, float, float, float, int) in android.test.TouchUtils +
    + +  type  +(ActivityInstrumentationTestCase, float, float, float, float, int) in android.test.TouchUtils +
    + +dragQuarterScreenDown
    +  type  +(InstrumentationTestCase, Activity) in android.test.TouchUtils +
    + +  type  +(ActivityInstrumentationTestCase) in android.test.TouchUtils +
    + +dragQuarterScreenUp
    +  type  +(InstrumentationTestCase, Activity) in android.test.TouchUtils +
    + +  type  +(ActivityInstrumentationTestCase) in android.test.TouchUtils +
    + +dragViewBy
    +  type  +(InstrumentationTestCase, View, int, int, int) in android.test.TouchUtils +
    + +  type  +(ActivityInstrumentationTestCase, View, int, int, int) in android.test.TouchUtils +
    + +dragViewTo
    +  type  +(InstrumentationTestCase, View, int, int, int) in android.test.TouchUtils +
    + +  type  +(ActivityInstrumentationTestCase, View, int, int, int) in android.test.TouchUtils +
    + +dragViewToBottom
    +  type  +(ActivityInstrumentationTestCase, View, int) in android.test.TouchUtils +
    + +  type  +(InstrumentationTestCase, Activity, View, int) in android.test.TouchUtils +
    + +  type  +(ActivityInstrumentationTestCase, View) in android.test.TouchUtils +
    + +  type  +(InstrumentationTestCase, Activity, View) in android.test.TouchUtils +
    + +dragViewToTop
    +  type  +(InstrumentationTestCase, View) in android.test.TouchUtils +
    + +  type  +(InstrumentationTestCase, View, int) in android.test.TouchUtils +
    + +  type  +(ActivityInstrumentationTestCase, View) in android.test.TouchUtils +
    + +  type  +(ActivityInstrumentationTestCase, View, int) in android.test.TouchUtils +
    + +dragViewToX
    +  type  +(InstrumentationTestCase, View, int, int) in android.test.TouchUtils +
    + +  type  +(ActivityInstrumentationTestCase, View, int, int) in android.test.TouchUtils +
    + +dragViewToY
    +  type  +(InstrumentationTestCase, View, int, int) in android.test.TouchUtils +
    + +  type  +(ActivityInstrumentationTestCase, View, int, int) in android.test.TouchUtils +
    + +Drawable
    + +drawBitmap +(int[], int, int, float, float, int, int, boolean, Paint)
    + +dropDownAnchor +
    + +dropDownWidth +
    + +dump
    +  type  +(Printer, String) in android.location.Location +
    + +  type  +(FileDescriptor, String[]) in android.os.Binder +
    + +  type  +(FileDescriptor, String[]) in android.os.IBinder +
    + +dumpCapturedView +(String, Object)
    + +dumpHprofData
    +  type  +(String) in android.os.Debug +
    + +  type  +(String) in dalvik.system.VMDebug +
    + +dumpSpans +(CharSequence, Printer, String)
    + +DynamicDrawableSpan
    +  android.text.style
    + +  DynamicDrawableSpan +(int) constructor
    + + +
    E  +A +B +C +D +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +editable +
    + +editorExtras +
    + +enabled +
    + +endBatchEdit +()
    + +Environment
    + +EXTRA_APPLICATION_ID +
    + +EXTRA_CREATE_DESCRIPTION +
    + +EXTRA_DATA_REMOVED +
    + +EXTRA_FINISH_ON_COMPLETION +
    + +EXTRA_FORCE_CREATE +
    + +EXTRA_INCOMING_NUMBER +
    + +EXTRA_MAX_BYTES +
    + +EXTRA_MEDIA_ALBUM +
    + +EXTRA_MEDIA_ARTIST +
    + +EXTRA_MEDIA_FOCUS +
    + +EXTRA_MEDIA_TITLE +
    + +EXTRA_OUTPUT +
    + +EXTRA_REPLACING +
    + +EXTRA_SCREEN_ORIENTATION +
    + +EXTRA_STATE +
    + +EXTRA_STATE_IDLE +
    + +EXTRA_STATE_OFFHOOK +
    + +EXTRA_STATE_RINGING +
    + +EXTRA_VIDEO_QUALITY +
    + +extractArea +
    + +extractText +(ExtractedTextRequest, ExtractedText)
    + + +
    F  +A +B +C +D +E +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +fastScrollEnabled +
    + +fillEnabled +
    + +findAll +(String)
    + +findNext +(boolean)
    + +FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET +
    + +FLAG_ACTIVITY_NO_USER_ACTION +
    + +FLAG_ACTIVITY_REORDER_TO_FRONT +
    + +FLAG_ALT_FOCUSABLE_IM +
    + +FLAG_EDITOR_ACTION +
    + +FLAG_FROM_SYSTEM +
    + +FLAG_KEEP_TOUCH_MODE +
    + +FLAG_NO_HISTORY +
    + +FLAG_SOFT_KEYBOARD +
    + +FLAG_UPDATE_CURRENT +
    + +FLAG_WATCH_OUTSIDE_TOUCH +
    + +footerDividersEnabled +
    + +ForegroundColorSpan
    +  android.text.style
    + +  ForegroundColorSpan +(Parcel) constructor
    + +forkAndSpecialize
    +  type  +(int, int, int[], int, int[][]) in dalvik.system.Zygote +
    + +  type  +(int, int, int[], boolean, int[][]) in dalvik.system.Zygote +
    + +forkSystemServer
    +  type  +(int, int, int[], int, int[][]) in dalvik.system.Zygote +
    + +  type  +(int, int, int[], boolean, int[][]) in dalvik.system.Zygote +
    + +FORMAT_JAPAN +
    + +formatJapaneseNumber +(Editable)
    + +forName +(String)
    + +FX_KEYPRESS_DELETE +
    + +FX_KEYPRESS_RETURN +
    + +FX_KEYPRESS_SPACEBAR +
    + +FX_KEYPRESS_STANDARD +
    + + +
    G  +A +B +C +D +E +F +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +GeomagneticField
    + +GestureDetector
    +  android.view
    + +  GestureDetector +(Context, OnGestureListener) constructor
    + +  GestureDetector +(Context, OnGestureListener, Handler) constructor
    + +  GestureDetector +(OnGestureListener) constructor
    + +  GestureDetector +(OnGestureListener, Handler) constructor
    + +GestureDetector.OnDoubleTapListener
    + +GestureDetector.SimpleOnGestureListener
    + +get +(Context)
    + +GET_CONFIGURATIONS +
    + +GET_UNINSTALLED_PACKAGES +
    + +getAllowFileAccess +()
    + +getBackgroundDataSetting +()
    + +getBoolean +(int)
    + +getBuiltInZoomControls +()
    + +getButton +(int)
    + +getCapsMode +(CharSequence, int, int)
    + +getCharacters +()
    + +getClasses +()
    + +getColumnIndex
    +  type  +(String) in android.database.Cursor +
    + +  type  +(String) in android.database.CursorWrapper +
    + +getConstructors +()
    + +getCount +()
    + +getDeclaredClasses +()
    + +getDeclaredConstructors +()
    + +getDeclaredLength +()
    + +getDefaultSensor +(int)
    + +getDeviceConfigurationInfo +()
    + +getDialog +()
    + +getDoubleTapTimeout +()
    + +getDrawable
    +  type  +() in android.graphics.drawable.RotateDrawable +
    + +  type  +() in android.graphics.drawable.ScaleDrawable +
    + +getDropDownAnchor +()
    + +getDropDownWidth +()
    + +getEdgeSlop +()
    + +getEditableText +()
    + +getFadingEdgeLength +()
    + +getFraction +(int, int, int)
    + +getGpsStatus +(GpsStatus)
    + +getHandler +()
    + +getImeActionId +()
    + +getImeActionLabel +()
    + +getImeOptions +()
    + +getInclination +(float[])
    + +getInitialScrollX +(TextView, Spannable)
    + +getInitialScrollY +(TextView, Spannable)
    + +getInputExtras +(boolean)
    + +getInputMethodMode +()
    + +getInputType
    +  type  +() in android.text.method.DateKeyListener +
    + +  type  +() in android.text.method.DateTimeKeyListener +
    + +  type  +() in android.text.method.DialerKeyListener +
    + +  type  +() in android.text.method.DigitsKeyListener +
    + +  type  +() in android.text.method.KeyListener +
    + +  type  +() in android.text.method.MultiTapKeyListener +
    + +  type  +() in android.text.method.QwertyKeyListener +
    + +  type  +() in android.text.method.TextKeyListener +
    + +  type  +() in android.text.method.TimeKeyListener +
    + +  type  +() in android.widget.TextView +
    + +getInterfaces +()
    + +getItem
    +  type  +(int) in android.view.Menu +
    + +  type  +(int) in android.widget.CursorAdapter +
    + +getItemClickListener +()
    + +getItemId +(int)
    + +getItemSelectedListener +()
    + +getKeyProgressIncrement +()
    + +getLaunchIntentForPackage
    +  type  +(String) in android.content.pm.PackageManager +
    + +  type  +(String) in android.test.mock.MockPackageManager +
    + +getLayoutDimension +(int, int)
    + +getListSelection +()
    + +getListView +()
    + +getLoggingMXBean +()
    + +getLong
    +  type  +(ContentResolver, String) in android.provider.Settings.System +
    + +  type  +(ContentResolver, String, long) in android.provider.Settings.System +
    + +getMaxAvailableHeight +(View, int)
    + +getMaximumDrawingCacheSize +()
    + +getMaxKeyCode +()
    + +getMetaState
    +  type  +(long) in android.text.method.MetaKeyKeyListener +
    + +  type  +(long, int) in android.text.method.MetaKeyKeyListener +
    + +getMinimumFlingVelocity +()
    + +getNeighboringCellInfo +()
    + +getOnChronometerTickListener +()
    + +getOnItemClickListener +()
    + +getOnItemSelectedListener +()
    + +getOrientation +(float[], float[])
    + +getOriginalUrl
    +  type  +() in android.webkit.WebHistoryItem +
    + +  type  +() in android.webkit.WebView +
    + +getPluginData
    +  type  +(String, Map<String, String>) in android.webkit.UrlInterceptHandler +
    + +  type  +(String, Map<String, String>) in android.webkit.UrlInterceptRegistry +
    + +getPrivateImeOptions +()
    + +getProxyClass +(ClassLoader, Class<?>)
    + +getRotationMatrix +(float[], float[], float[], float[])
    + +getRunningAppProcesses +()
    + +getScaledDoubleTapSlop +()
    + +getScaledEdgeSlop +()
    + +getScaledFadingEdgeLength +()
    + +getScaledMaximumDrawingCacheSize +()
    + +getScaledMinimumFlingVelocity +()
    + +getScaledScrollBarSize +()
    + +getScaledTouchSlop +()
    + +getScaledWindowTouchSlop +()
    + +getScrollBarSize +()
    + +getSensorList +(int)
    + +getSensors +()
    + +getSize +(View)
    + +getSpanTypeId
    +  type  +() in android.text.Annotation +
    + +  type  +() in android.text.style.AbsoluteSizeSpan +
    + +  type  +() in android.text.style.AlignmentSpan.Standard +
    + +  type  +() in android.text.style.BackgroundColorSpan +
    + +  type  +() in android.text.style.BulletSpan +
    + +  type  +() in android.text.style.ForegroundColorSpan +
    + +  type  +() in android.text.style.LeadingMarginSpan.Standard +
    + +  type  +() in android.text.style.QuoteSpan +
    + +  type  +() in android.text.style.RelativeSizeSpan +
    + +  type  +() in android.text.style.ScaleXSpan +
    + +  type  +() in android.text.style.StrikethroughSpan +
    + +  type  +() in android.text.style.StyleSpan +
    + +  type  +() in android.text.style.SubscriptSpan +
    + +  type  +() in android.text.style.SuperscriptSpan +
    + +  type  +() in android.text.style.TextAppearanceSpan +
    + +  type  +() in android.text.style.TypefaceSpan +
    + +  type  +() in android.text.style.URLSpan +
    + +  type  +() in android.text.style.UnderlineSpan +
    + +getStartX +()
    + +getStartY +()
    + +getStatSize +()
    + +getSubtype +()
    + +getSubtypeName +()
    + +getSurrogate +(String, Map<String, String>)
    + +getSystemSharedLibraryNames
    +  type  +() in android.content.pm.PackageManager +
    + +  type  +() in android.test.mock.MockPackageManager +
    + +getTargetIntent +()
    + +getTextFilter +()
    + +getThread +()
    + +getTimeZoneDatabaseVersion +()
    + +getTouchSlop +()
    + +getUserAgent +()
    + +getUserAgentString +()
    + +getVerticalAlignment +()
    + +getWindowTouchSlop +()
    + +getWindowVisibleDisplayFrame +(Rect)
    + +getZoomControls +()
    + +GLSurfaceView
    + +GLSurfaceView.EGLConfigChooser
    + +GLSurfaceView.GLWrapper
    + +GLSurfaceView.Renderer
    + +GpsSatellite
    + +GpsStatus
    + +GpsStatus.Listener
    + +Gravity
    + +GridView
    + + +
    H  +A +B +C +D +E +F +G +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +handle +
    + +handleKeyDown +(long, int, KeyEvent)
    + +handleKeyUp +(long, int, KeyEvent)
    + +Handler
    +  android.os
    + +  Handler +(Callback) constructor
    + +  Handler +(Looper, Callback) constructor
    + +Handler.Callback
    + +HAPTIC_FEEDBACK_ENABLED
    + in  +android.provider.Settings.System +
    + + in  +android.view.View +
    + +HapticFeedbackConstants
    + +hapticFeedbackEnabled +
    + +hardKeyboardHidden +
    + +HARDKEYBOARDHIDDEN_NO +
    + +HARDKEYBOARDHIDDEN_UNDEFINED +
    + +HARDKEYBOARDHIDDEN_YES +
    + +hasSoftInputMode +()
    + +hasWindowFocus +()
    + +headerDividersEnabled +
    + +horizontalGap +
    + +HorizontalScrollView
    + +HTTP_PROXY +
    + + +
    I  +A +B +C +D +E +F +G +H +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +IBinder
    + +ic_btn_speak_now +
    + +iconPreview +
    + +ImageSpan
    +  android.text.style
    + +  ImageSpan +(Context, Uri, int) constructor
    + +  ImageSpan +(Context, int, int) constructor
    + +  ImageSpan +(Bitmap, int) constructor
    + +  ImageSpan +(Drawable, int) constructor
    + +  ImageSpan +(Drawable, String, int) constructor
    + +imeActionId +
    + +imeActionLabel +
    + +imeExtractEnterAnimation +
    + +imeExtractExitAnimation +
    + +imeFullscreenBackground +
    + +imeOptions +
    + +inferStreamType +()
    + +initialLayout +
    + +innerRadius +
    + +INPUT_METHOD_FROM_FOCUSABLE +
    + +INPUT_METHOD_NEEDED +
    + +INPUT_METHOD_NOT_NEEDED +
    + +INPUT_METHOD_SERVICE +
    + +inputArea +
    + +inputExtractEditText +
    + +inputMethod +
    + +InputType
    + +inputType +
    + +INSTALL_FAILED_CONFLICTING_PROVIDER +
    + +INSTALL_NON_MARKET_APPS +
    + +Instrumentation
    + +InstrumentationTestCase
    + +Intent
    + +INTENT_ACTION_MEDIA_SEARCH +
    + +INTENT_ACTION_STILL_IMAGE_CAMERA +
    + +INTENT_ACTION_VIDEO_CAMERA +
    + +intentForPosition +(int)
    + +IntentService
    + +INTERVAL_DAY +
    + +INTERVAL_FIFTEEN_MINUTES +
    + +INTERVAL_HALF_DAY +
    + +INTERVAL_HALF_HOUR +
    + +INTERVAL_HOUR +
    + +isAboveAnchor +()
    + +isBluetoothA2dpOn +()
    + +isClippingEnabled +()
    + +isCookielessProxyUrl +(String)
    + +isDebuggingEnabled +()
    + +isDefault +
    + +isFastScrollEnabled +()
    + +isFillEnabled +()
    + +isHapticFeedbackEnabled +()
    + +isInEditMode +()
    + +isInputMethodTarget +()
    + +isLooping +()
    + +isModifier +
    + +isOutsideTouchable +()
    + +isPerformingCompletion +()
    + +isRepeatable +
    + +isRoaming +()
    + +isSafeMode
    +  type  +() in android.content.pm.PackageManager +
    + +  type  +() in android.test.mock.MockPackageManager +
    + +isScrollContainer +
    + +isSelectingMetaTracker +(CharSequence, Object)
    + +isSmoothScrollbarEnabled +()
    + +isSticky +
    + +isTouchable +()
    + + +java.beans
    + +java.lang
    + +java.lang.reflect
    + +java.net
    + +java.util
    + +java.util.jar
    + +java.util.logging
    + +JetPlayer
    + +JetPlayer.OnJetEventListener
    + + +
    K  +A +B +C +D +E +F +G +H +I +J +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +KEY_LOCATION_CHANGED +
    + +KEY_PROVIDER_ENABLED +
    + +KEY_STATUS_CHANGED +
    + +keyBackground +
    + +keyboardMode +
    + +keyboardView +
    + +KeyCharacterMap
    + +KEYCODE_MEDIA_FAST_FORWARD +
    + +KEYCODE_MEDIA_NEXT +
    + +KEYCODE_MEDIA_PLAY_PAUSE +
    + +KEYCODE_MEDIA_PREVIOUS +
    + +KEYCODE_MEDIA_REWIND +
    + +KEYCODE_MEDIA_STOP +
    + +KEYCODE_MUTE +
    + +keyEdgeFlags +
    + +KeyEvent
    +  android.view
    + +  KeyEvent +(KeyEvent) constructor
    + +  KeyEvent +(long, String, int, int) constructor
    + +keyHeight +
    + +keyIcon +
    + +keyLabel +
    + +KeyListener
    + +keyOutputText +
    + +keyPreviewHeight +
    + +keyPreviewLayout +
    + +keyPreviewOffset +
    + +keyTextColor +
    + +keyTextSize +
    + +keyWidth +
    + + +
    L  +A +B +C +D +E +F +G +H +I +J +K +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +labelTextSize +
    + +launchActivityWithIntent +(String, Class<T>, Intent)
    + +LauncherActivity
    + +LauncherActivity.IconResizer
    + +LauncherActivity.ListItem
    + +LeadingMarginSpan.Standard
    +  android.text.style
    + +  LeadingMarginSpan.Standard +(Parcel) constructor
    + +Level
    + +LIGHT_NO_MOON +
    + +ListView
    + +LiveFolders
    + +load
    +  type  +(AssetFileDescriptor, int) in android.media.SoundPool +
    + +  type  +(FileDescriptor, long, long, int) in android.media.SoundPool +
    + +loadDex +(String, String, int)
    + +Location
    + +LOCATION_PROVIDERS_ALLOWED +
    + +LocationManager
    + +LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED +
    + +LOGGING_ID +
    + +LogManager
    + +longClickView
    +  type  +(InstrumentationTestCase, View) in android.test.TouchUtils +
    + +  type  +(ActivityInstrumentationTestCase, View) in android.test.TouchUtils +
    + +Looper
    + + +
    M  +A +B +C +D +E +F +G +H +I +J +K +L +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +makeListItems +()
    + +Manifest.permission
    + +MaskFilterSpan
    + +MAX_KEYCODE +
    + +mayUseInputMethod +(int)
    + +MEDIA_CHECKING +
    + +MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK +
    + +MEDIA_INFO_BAD_INTERLEAVING +
    + +MEDIA_INFO_NOT_SEEKABLE +
    + +MEDIA_INFO_UNKNOWN +
    + +MEDIA_INFO_VIDEO_TRACK_LAGGING +
    + +MEDIA_NOFS +
    + +MEDIA_RECORDER_ERROR_UNKNOWN +
    + +MEDIA_RECORDER_INFO_MAX_DURATION_REACHED +
    + +MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED +
    + +MEDIA_RECORDER_INFO_UNKNOWN +
    + +MediaPlayer
    + +MediaPlayer.OnInfoListener
    + +MediaPlayer.OnVideoSizeChangedListener
    + +MediaRecorder
    + +MediaRecorder.OnErrorListener
    + +MediaRecorder.OnInfoListener
    + +MediaRecorder.OutputFormat
    + +MediaRecorder.VideoEncoder
    + +MediaRecorder.VideoSource
    + +MediaStore
    + +MediaStore.Audio.AlbumColumns
    + +MediaStore.Audio.Media
    + +MediaStore.Images.Media
    + +MediaStore.Video
    + +MediaStore.Video.VideoColumns
    + +Menu
    + +MetaKeyKeyListener
    + +MockPackageManager
    + +MODE_APPEND +
    + +MotionEvent
    + +MOUNT_FORMAT_FILESYSTEMS +
    + +moveCursorToVisibleOffset +()
    + +MovementMethod
    + +MultiTapKeyListener
    + +mutate +()
    + +mVerticalAlignment +
    + + +
    N  +A +B +C +D +E +F +G +H +I +J +K +L +M +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +NeighboringCellInfo
    + +NETWORK_PREFERENCE +
    + +NetworkInfo
    +  android.net
    + +  NetworkInfo +(int) constructor
    + +NoCopySpan
    + +NoCopySpan.Concrete
    + +noHistory +
    + +NUM_STREAMS +
    + +NUMBER_OF_SONGS_FOR_ARTIST +
    + +numeric +
    + + +
    O  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +onBeginBatchEdit +()
    + +onCheckIsTextEditor +()
    + +onCommitCompletion +(CompletionInfo)
    + +onContentChanged +()
    + +onCreateInputConnection +(EditorInfo)
    + +onDoubleTap +(MotionEvent)
    + +onDoubleTapEvent +(MotionEvent)
    + +onEditorAction +(int)
    + +onEndBatchEdit +()
    + +onFinishTemporaryDetach +()
    + +onGlobalFocusChanged +(View, View)
    + +onKeyOther
    +  type  +(TextView, Spannable, KeyEvent) in android.text.method.ArrowKeyMovementMethod +
    + +  type  +(View, Editable, KeyEvent) in android.text.method.BaseKeyListener +
    + +  type  +(View, Editable, KeyEvent) in android.text.method.KeyListener +
    + +  type  +(TextView, Spannable, KeyEvent) in android.text.method.MovementMethod +
    + +  type  +(TextView, Spannable, KeyEvent) in android.text.method.ScrollingMovementMethod +
    + +onKeyPreIme +(int, KeyEvent)
    + +onPrivateIMECommand +(String, Bundle)
    + +onRestoreInstanceState +(Parcelable)
    + +onSaveInstanceState +()
    + +onSelectionChanged +(int, int)
    + +onSingleTapConfirmed +(MotionEvent)
    + +onStartTemporaryDetach +()
    + +onTextContextMenuItem +(int)
    + +onUserInteraction +()
    + +onUserLeaveHint +()
    + +openAssetFile +(Uri, String)
    + +openAssetFileDescriptor +(Uri, String)
    + +openOutputStream +(Uri, String)
    + +openRawResource +(int, TypedValue)
    + +OrientationEventListener
    + +OrientationListener
    +  android.view
    + +  OrientationListener +(Context, int) constructor
    + + +
    P  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +Q +R +S +T +U +V +W +Y +Z + TOP +

    +Pack200.Packer
    + +Pack200.Unpacker
    + +PackageInfo
    + +PackageManager
    + +Parcel
    + +ParcelableSpan
    + +ParcelFileDescriptor
    + +PARENTAL_CONTROL_ENABLED +
    + +PARENTAL_CONTROL_LAST_UPDATE +
    + +PARENTAL_CONTROL_REDIRECT_URL +
    + +parse +(String)
    + +parseBundleExtra +(String, AttributeSet, Bundle)
    + +parseBundleExtras +(XmlResourceParser, Bundle)
    + +password +
    + +paste +
    + +peekService +(Context, Intent)
    + +PendingIntent
    + +performHapticFeedback
    +  type  +(int) in android.view.View +
    + +  type  +(int, int) in android.view.View +
    + +phoneNumber +
    + +PhoneNumberUtils
    + +PHONETIC_NAME
    + in  +android.provider.Contacts.Intents.Insert +
    + + in  +android.provider.Contacts.PeopleColumns +
    + +playSoundEffect
    +  type  +(int, float) in android.media.AudioManager +
    + +  type  +(int) in android.view.View +
    + +PluginData
    + +popupCharacters +
    + +popupKeyboard +
    + +popupLayout +
    + +PopupWindow
    + +PopupWindow.OnDismissListener
    + +prepare +()
    + +PrintStreamPrinter
    + +privateImeOptions +
    + +ProgressBar
    + +ProviderTestCase
    + +ProviderTestCase2
    + +Proxy
    + +putLong +(ContentResolver, String, long)
    + + +
    Q  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +R +S +T +U +V +W +Y +Z + TOP +

    +QuoteSpan
    +  android.text.style
    + +  QuoteSpan +(Parcel) constructor
    + +QwertyKeyListener
    + + +
    R  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +S +T +U +V +W +Y +Z + TOP +

    +R.attr
    + +R.bool
    + +R.drawable
    + +R.id
    + +R.integer
    + +R.string
    + +R.style
    + +RasterizerSpan
    + +RAW_AMR +
    + +RAW_DATA_INDEX +
    + +RAW_DATA_X +
    + +RAW_DATA_Y +
    + +RAW_DATA_Z +
    + +readFromParcel +(Parcel)
    + +readHashMap +(ClassLoader)
    + +readMap +(Map, ClassLoader)
    + +Rect
    + +RectF
    + +registerListener
    +  type  +(SensorEventListener, Sensor, int) in android.hardware.SensorManager +
    + +  type  +(SensorEventListener, Sensor, int, Handler) in android.hardware.SensorManager +
    + +  type  +(SensorListener, int) in android.hardware.SensorManager +
    + +  type  +(SensorListener, int, int) in android.hardware.SensorManager +
    + +RelativeSizeSpan
    +  android.text.style
    + +  RelativeSizeSpan +(Parcel) constructor
    + +remapCoordinateSystem +(float[], int, int, float[])
    + +RemoteViews
    + +RemoteViews.ActionException
    +  android.widget
    + +  RemoteViews.ActionException +(Exception) constructor
    + +removeAt +(int)
    + +removeGpsStatusListener +(Listener)
    + +removeOnScrollChangedListener +(OnScrollChangedListener)
    + +removePropertyChangeListener
    +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Packer +
    + +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Unpacker +
    + +  type  +(PropertyChangeListener) in java.util.logging.LogManager +
    + +removeTestProvider +(String)
    + +removeUpdates +(PendingIntent)
    + +replaceExtras
    +  type  +(Intent) in android.content.Intent +
    + +  type  +(Bundle) in android.content.Intent +
    + +reqFiveWayNav +
    + +reqHardKeyboard +
    + +reqKeyboardType +
    + +reqNavigation +
    + +reqTouchScreen +
    + +requestChildRectangleOnScreen +(View, Rect, boolean)
    + +requestLocationUpdates +(String, long, float, PendingIntent)
    + +resetLockedMeta +(long)
    + +ResourceCursorAdapter
    +  android.widget
    + +  ResourceCursorAdapter +(Context, int, Cursor, boolean) constructor
    + +Resources
    + +restartPackage +(String)
    + +restorePicture +(Bundle, File)
    + +ResultReceiver
    + +RingtoneManager
    + +RotateDrawable
    + +ROUTE_BLUETOOTH +
    + +ROUTE_BLUETOOTH_A2DP +
    + +ROUTE_BLUETOOTH_SCO +
    + +rowEdgeFlags +
    + +runTestOnUiThread +(Runnable)
    + + +
    S  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +T +U +V +W +Y +Z + TOP +

    +savePicture +(Bundle, File)
    + +ScaleDrawable
    + +ScaleXSpan
    +  android.text.style
    + +  ScaleXSpan +(Parcel) constructor
    + +SCREEN_BRIGHTNESS_CHANGED +
    + +SCREEN_ORIENTATION_CHANGED +
    + +screenBrightness +
    + +screenOrientation +
    + +Scroller
    + +ScrollingMovementMethod
    + +scrollToBottom
    +  type  +(InstrumentationTestCase, Activity, ViewGroup) in android.test.TouchUtils +
    + +  type  +(ActivityInstrumentationTestCase, ViewGroup) in android.test.TouchUtils +
    + +scrollToTop
    +  type  +(InstrumentationTestCase, Activity, ViewGroup) in android.test.TouchUtils +
    + +  type  +(ActivityInstrumentationTestCase, ViewGroup) in android.test.TouchUtils +
    + +searchButtonText +
    + +SECONDARY_EMAIL +
    + +SECONDARY_EMAIL_TYPE +
    + +SECONDARY_PHONE +
    + +SECONDARY_PHONE_TYPE +
    + +SectionIndexer
    + +selectAll +
    + +sendExtraCommand +(String, String, Bundle)
    + +Sensor
    + +SENSOR_ACCELEROMETER +
    + +SENSOR_ALL +
    + +SENSOR_LIGHT +
    + +SENSOR_MAGNETIC_FIELD +
    + +SENSOR_MAX +
    + +SENSOR_MIN +
    + +SENSOR_ORIENTATION +
    + +SENSOR_ORIENTATION_RAW +
    + +SENSOR_PROXIMITY +
    + +SENSOR_TEMPERATURE +
    + +SENSOR_TRICORDER +
    + +SensorEvent
    + +SensorEventListener
    + +SensorListener
    + +SensorManager
    + +service +(String, Map<String, String>)
    + +setAllowFileAccess +(boolean)
    + +setBitmap +(int, String, Bitmap)
    + +setBluetoothA2dpOn +(boolean)
    + +setBoolean +(int, String, boolean)
    + +setBuiltInZoomControls +(boolean)
    + +setButton
    +  type  +(CharSequence, OnClickListener) in android.app.AlertDialog +
    + +  type  +(CharSequence, Message) in android.app.AlertDialog +
    + +  type  +(int, CharSequence, OnClickListener) in android.app.AlertDialog +
    + +  type  +(int, CharSequence, Message) in android.app.AlertDialog +
    + +setButton2
    +  type  +(CharSequence, OnClickListener) in android.app.AlertDialog +
    + +  type  +(CharSequence, Message) in android.app.AlertDialog +
    + +setButton3
    +  type  +(CharSequence, OnClickListener) in android.app.AlertDialog +
    + +  type  +(CharSequence, Message) in android.app.AlertDialog +
    + +setByte +(int, String, byte)
    + +setCamera +(Camera)
    + +setChar +(int, String, char)
    + +setCharSequence +(int, String, CharSequence)
    + +setClippingEnabled +(boolean)
    + +setCompoundDrawablesWithIntrinsicBounds +(int, int, int, int)
    + +setDouble +(int, String, double)
    + +setDropDownAnchor +(int)
    + +setDropDownWidth +(int)
    + +setExtractedText +(ExtractedText)
    + +setFastScrollEnabled +(boolean)
    + +setFillEnabled +(boolean)
    + +setFloat +(int, String, float)
    + +setFooterDividersEnabled +(boolean)
    + +setHapticFeedbackEnabled +(boolean)
    + +setHeaderDividersEnabled +(boolean)
    + +setImageViewBitmap +(int, Bitmap)
    + +setImeActionLabel +(CharSequence, int)
    + +setImeOptions +(int)
    + +setInexactRepeating +(int, long, long, PendingIntent)
    + +setInputExtras +(int)
    + +setInputMethodMode +(int)
    + +setInputType +(int)
    + +setInt +(int, String, int)
    + +setKeyProgressIncrement +(int)
    + +setListSelection +(int)
    + +setLong +(int, String, long)
    + +setMaxDuration +(int)
    + +setMaxFileSize +(long)
    + +setNetworkAvailable +(boolean)
    + +setOnChronometerTickListener +(OnChronometerTickListener)
    + +setOnClickPendingIntent +(int, PendingIntent)
    + +setOnDoubleTapListener +(OnDoubleTapListener)
    + +setOnEditorActionListener +(OnEditorActionListener)
    + +setOnErrorListener +(OnErrorListener)
    + +setOneShotPreviewCallback +(PreviewCallback)
    + +setOnInfoListener
    +  type  +(OnInfoListener) in android.media.MediaPlayer +
    + +  type  +(OnInfoListener) in android.media.MediaRecorder +
    + +setOnVideoSizeChangedListener +(OnVideoSizeChangedListener)
    + +setOutputFile +(FileDescriptor)
    + +setOutsideTouchable +(boolean)
    + +setPreviewDisplay +(SurfaceHolder)
    + +setPrivateImeOptions +(String)
    + +setRawInputType +(int)
    + +setScrollContainer +(boolean)
    + +setShort +(int, String, short)
    + +setSmoothScrollbarEnabled +(boolean)
    + +setSoftInputMode +(int)
    + +setStaticTransformationsEnabled +(boolean)
    + +setString +(int, String, String)
    + +setTestProviderEnabled +(String, boolean)
    + +setTestProviderLocation +(String, Location)
    + +setTestProviderStatus +(String, int, Bundle, long)
    + +setTextColor +(int, int)
    + +Settings
    + +Settings.Secure
    + +Settings.System
    + +SETTINGS_CLASSNAME +
    + +settingsActivity +
    + +setTouchable +(boolean)
    + +setTouchInterceptor +(OnTouchListener)
    + +setUri +(int, String, Uri)
    + +setUserAgent +(int)
    + +setUserAgentString +(String)
    + +setVideoEncoder +(int)
    + +setVideoFrameRate +(int)
    + +setVideoSize +(int, int)
    + +setVideoSource +(int)
    + +setView +(View, int, int, int, int)
    + +setViewResource +(int)
    + +setVisible +(boolean)
    + +setWindowAnimations +(int)
    + +setWindowLayoutMode +(int, int)
    + +Shape
    + +sharedUserId +
    + +sharedUserLabel
    + in  +android.R.attr +
    + + in  +android.content.pm.PackageInfo +
    + +SHOW_OR_CREATE_CONTACT +
    + +SimpleCursorAdapter
    + +singleLine +
    + +SlidingDrawer
    + +SlidingDrawer.OnDrawerCloseListener
    + +SlidingDrawer.OnDrawerOpenListener
    + +SlidingDrawer.OnDrawerScrollListener
    + +smoothScrollbar +
    + +SmsMessage
    + +Socket
    +  java.net
    + +  Socket +() constructor
    + +  Socket +(String, int) constructor
    + +  Socket +(String, int, InetAddress, int) constructor
    + +  Socket +(Proxy) constructor
    + +  Socket +(SocketImpl) constructor
    + +SOFT_INPUT_ADJUST_PAN +
    + +SOFT_INPUT_ADJUST_RESIZE +
    + +SOFT_INPUT_ADJUST_UNSPECIFIED +
    + +SOFT_INPUT_IS_FORWARD_NAVIGATION +
    + +SOFT_INPUT_MASK_ADJUST +
    + +SOFT_INPUT_MASK_STATE +
    + +SOFT_INPUT_MODE_CHANGED +
    + +SOFT_INPUT_STATE_ALWAYS_HIDDEN +
    + +SOFT_INPUT_STATE_ALWAYS_VISIBLE +
    + +SOFT_INPUT_STATE_HIDDEN +
    + +SOFT_INPUT_STATE_UNCHANGED +
    + +SOFT_INPUT_STATE_UNSPECIFIED +
    + +SOFT_INPUT_STATE_VISIBLE +
    + +softInputMode
    + in  +android.content.pm.ActivityInfo +
    + + in  +android.view.WindowManager.LayoutParams +
    + +sort +(Comparator<? super T>)
    + +SoundPool
    + +SPAN_COMPOSING +
    + +SPAN_INTERMEDIATE +
    + +SPAN_POINT_MARK_MASK +
    + +Spanned
    + +SpanWatcher
    + +SparseIntArray
    + +SQLiteDatabase
    + +startSelectingText +
    + +state_long_pressable +
    + +stopSelectingText +
    + +STREAM_NOTIFICATION +
    + +STRETCH_SPACING_UNIFORM +
    + +StrikethroughSpan
    +  android.text.style
    + +  StrikethroughSpan +(Parcel) constructor
    + +String
    +  java.lang
    + +  String +() constructor
    + +  String +(byte[]) constructor
    + +  String +(byte[], int) constructor
    + +  String +(byte[], int, int) constructor
    + +  String +(byte[], int, int, int) constructor
    + +StyleSpan
    +  android.text.style
    + +  StyleSpan +(Parcel) constructor
    + +SubscriptSpan
    +  android.text.style
    + +  SubscriptSpan +(Parcel) constructor
    + +SuperscriptSpan
    +  android.text.style
    + +  SuperscriptSpan +(Parcel) constructor
    + +switchInputMethod +
    + + +
    T  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +U +V +W +Y +Z + TOP +

    +TelephonyManager
    + +TERTIARY_EMAIL +
    + +TERTIARY_EMAIL_TYPE +
    + +TERTIARY_PHONE +
    + +TERTIARY_PHONE_TYPE +
    + +TestMethod
    +  android.test.suitebuilder
    + +  TestMethod +(String, Class<TestCase>) constructor
    + +  TestMethod +(TestCase) constructor
    + +TestSuiteBuilder
    + +TextAppearanceSpan
    +  android.text.style
    + +  TextAppearanceSpan +(Parcel) constructor
    + +TextKeyListener
    + +TextUtils
    + +TextView
    + +TextView.OnEditorActionListener
    + +TextWatcher
    + +Theme_InputMethod +
    + +Theme_Light_Panel +
    + +Theme_NoDisplay +
    + +Theme_Panel +
    + +thickness +
    + +TimeKeyListener
    + +TimeUtils
    + +title_bar_tall +
    + +topOffset +
    + +toShortString
    +  type  +() in android.graphics.Rect +
    + +  type  +() in android.view.animation.Transformation +
    + +Touch
    + +TouchUtils
    + +Transformation
    + +TransitionDrawable
    +  android.graphics.drawable
    + +  TransitionDrawable +(Drawable[]) constructor
    + +TYPE_APPLICATION_ATTACHED_DIALOG +
    + +TYPE_INPUT_METHOD +
    + +TYPE_INPUT_METHOD_DIALOG +
    + +TypedArray
    + +TypefaceSpan
    +  android.text.style
    + +  TypefaceSpan +(Parcel) constructor
    + + +
    U  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +V +W +Y +Z + TOP +

    +UnderlineSpan
    +  android.text.style
    + +  UnderlineSpan +(Parcel) constructor
    + +UNKNOWN_LENGTH +
    + +unregisterListener
    +  type  +(SensorEventListener) in android.hardware.SensorManager +
    + +  type  +(SensorEventListener, Sensor) in android.hardware.SensorManager +
    + +  type  +(SensorListener) in android.hardware.SensorManager +
    + +  type  +(SensorListener, int) in android.hardware.SensorManager +
    + +update
    +  type  +() in android.widget.PopupWindow +
    + +  type  +(int, int, int, int, boolean) in android.widget.PopupWindow +
    + +UPDATE_DEVICE_STATS +
    + +UpdateAppearance
    + +UpdateLayout
    + +updatePeriodMillis +
    + +UrlInterceptHandler
    + +UrlInterceptRegistry
    + +URLSpan
    +  android.text.style
    + +  URLSpan +(Parcel) constructor
    + +URLUtil
    + +USB_MASS_STORAGE_ENABLED +
    + +USE_GOOGLE_MAIL +
    + +UserDictionary
    + +UserDictionary.Words
    + + +
    V  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +W +Y +Z + TOP +

    +verticalCorrection +
    + +verticalGap +
    + +VideoView_error_text_invalid_progressive_playback +
    + +View
    + +ViewConfiguration
    +  android.view
    + +  ViewConfiguration +() constructor
    + +ViewDebug
    + +ViewDebug.CapturedViewProperty
    + +ViewGroup
    + +ViewParent
    + +ViewTreeObserver
    + +ViewTreeObserver.OnScrollChangedListener
    + +Visibility
    + +VMDebug
    + +voiceLanguage +
    + +voiceLanguageModel +
    + +voiceMaxResults +
    + +voicePromptText +
    + +voiceSearchMode +
    + +VOLUME_NOTIFICATION +
    + + +
    W  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +Y +Z + TOP +

    +WebHistoryItem
    + +WebSettings
    + +WebView
    + +Widget_KeyboardView +
    + +WIFI_MAX_DHCP_RETRY_COUNT +
    + +WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS +
    + +WIFI_MODE_FULL +
    + +WIFI_MODE_SCAN_ONLY +
    + +WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON +
    + +WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY +
    + +WIFI_NUM_OPEN_NETWORKS_KEPT +
    + +WIFI_ON +
    + +WIFI_SLEEP_POLICY +
    + +WIFI_SLEEP_POLICY_DEFAULT +
    + +WIFI_SLEEP_POLICY_NEVER +
    + +WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED +
    + +WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE +
    + +WIFI_WATCHDOG_AP_COUNT +
    + +WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS +
    + +WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED +
    + +WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS +
    + +WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT +
    + +WIFI_WATCHDOG_MAX_AP_CHECKS +
    + +WIFI_WATCHDOG_ON +
    + +WIFI_WATCHDOG_PING_COUNT +
    + +WIFI_WATCHDOG_PING_DELAY_MS +
    + +WIFI_WATCHDOG_PING_TIMEOUT_MS +
    + +WifiManager
    + +Window
    + +windowDisablePreview +
    + +WindowManager.LayoutParams
    + +windowNoDisplay +
    + +windowSoftInputMode +
    + +WRITE_SECURE_SETTINGS +
    + +writeMap +(Map)
    + +writeToParcel
    +  type  +(Parcel, int) in android.content.res.AssetFileDescriptor +
    + +  type  +(Parcel, int) in android.graphics.RectF +
    + +  type  +(Parcel, int) in android.text.Annotation +
    + +  type  +(Parcel, int) in android.text.style.AbsoluteSizeSpan +
    + +  type  +(Parcel, int) in android.text.style.AlignmentSpan.Standard +
    + +  type  +(Parcel, int) in android.text.style.BackgroundColorSpan +
    + +  type  +(Parcel, int) in android.text.style.BulletSpan +
    + +  type  +(Parcel, int) in android.text.style.ForegroundColorSpan +
    + +  type  +(Parcel, int) in android.text.style.LeadingMarginSpan.Standard +
    + +  type  +(Parcel, int) in android.text.style.QuoteSpan +
    + +  type  +(Parcel, int) in android.text.style.RelativeSizeSpan +
    + +  type  +(Parcel, int) in android.text.style.ScaleXSpan +
    + +  type  +(Parcel, int) in android.text.style.StrikethroughSpan +
    + +  type  +(Parcel, int) in android.text.style.StyleSpan +
    + +  type  +(Parcel, int) in android.text.style.SubscriptSpan +
    + +  type  +(Parcel, int) in android.text.style.SuperscriptSpan +
    + +  type  +(Parcel, int) in android.text.style.TextAppearanceSpan +
    + +  type  +(Parcel, int) in android.text.style.TypefaceSpan +
    + +  type  +(Parcel, int) in android.text.style.URLSpan +
    + +  type  +(Parcel, int) in android.text.style.UnderlineSpan +
    + + +
    Y  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +yieldIfContended +()
    + +yieldIfContendedSafely +()
    + + +
    Z  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +Zygote
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/alldiffs_index_changes.html b/docs/html/sdk/api_diff/3/changes/alldiffs_index_changes.html new file mode 100644 index 000000000000..b35bdb35ce4b --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/alldiffs_index_changes.html @@ -0,0 +1,1652 @@ + + + + + + + + + +All Changes Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Differences +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + + +
    A  +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +AbsListView
    + +AbsoluteLayout
    + +AbsoluteSizeSpan
    + +AbsSeekBar
    + +Activity
    + +ActivityInfo
    + +ActivityInstrumentationTestCase
    + +ActivityManager
    + +ADB_ENABLED +
    + +addRequirements +(Predicate<TestMethod>)
    + +AlarmManager
    + +AlertDialog
    + +AlignmentSpan.Standard
    + +android
    + +android.app
    + +android.content
    + +android.content.pm
    + +android.content.res
    + +android.database
    + +android.database.sqlite
    + +android.graphics
    + +android.graphics.drawable
    + +android.graphics.drawable.shapes
    + +android.hardware
    + +android.location
    + +android.media
    + +android.net
    + +android.net.wifi
    + +android.opengl
    + +android.os
    + +android.preference
    + +android.provider
    + +android.telephony
    + +android.telephony.gsm
    + +android.test
    + +android.test.mock
    + +android.test.suitebuilder
    + +android.text
    + +android.text.method
    + +android.text.style
    + +android.util
    + +android.view
    + +android.view.animation
    + +android.webkit
    + +android.widget
    + +ANDROID_ID +
    + +Animation
    + +Annotation
    + +appendEscapedSQLString +(StringBuilder, String)
    + +ArrayAdapter
    + +ArrowKeyMovementMethod
    + +AssetFileDescriptor
    + +AudioManager
    + +AutoCompleteTextView
    + +AutoText
    + +autoText +
    + + +
    B  +A +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +BackgroundColorSpan
    + +BaseKeyListener
    + +Binder
    + +Bitmap
    + +BLUETOOTH_ON +
    + +BroadcastReceiver
    + +Browser
    + +Build
    + +BulletSpan
    + +BUTTON1 +
    + +BUTTON2 +
    + +BUTTON3 +
    + + +
    C  +A +B +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +Camera
    + +Canvas
    + +capitalize +
    + +changeDebugPort +(int)
    + +Character.UnicodeBlock
    + +Chronometer
    + +Class
    + +ClickableSpan
    + +clone +()
    + +Configuration
    + +ConnectivityManager
    + +Contacts.Intents
    + +Contacts.Intents.Insert
    + +Contacts.PeopleColumns
    + +ContentProvider
    + +ContentResolver
    + +Context
    + +Cursor
    + +CursorAdapter
    + +CursorWrapper
    + + +dalvik.system
    + +DATA_ROAMING +
    + +DATA_X +
    + +DATA_Y +
    + +DATA_Z +
    + +DatabaseUtils
    + +Date
    +  java.util
    + +  Date +() constructor
    + +  Date +(int, int, int, int, int, int) constructor
    + +DateKeyListener
    + +DateTimeKeyListener
    + +Debug
    + +DEFAULT_SORT_ORDER
    + in  +android.provider.MediaStore.Images.Media +
    + + in  +android.provider.MediaStore.Video +
    + +DEVICE_PROVISIONED +
    + +DexFile
    + +DialerKeyListener
    + +DialogInterface
    + +DialogPreference
    + +DigitsKeyListener
    + +drag +(ActivityInstrumentationTestCase, float, float, float, float, int)
    + +dragQuarterScreenDown +(ActivityInstrumentationTestCase)
    + +dragQuarterScreenUp +(ActivityInstrumentationTestCase)
    + +dragViewBy +(ActivityInstrumentationTestCase, View, int, int, int)
    + +dragViewTo +(ActivityInstrumentationTestCase, View, int, int, int)
    + +dragViewToBottom
    +  type  +(ActivityInstrumentationTestCase, View) in android.test.TouchUtils +
    + +  type  +(InstrumentationTestCase, Activity, View) in android.test.TouchUtils +
    + +dragViewToTop
    +  type  +(ActivityInstrumentationTestCase, View) in android.test.TouchUtils +
    + +  type  +(ActivityInstrumentationTestCase, View, int) in android.test.TouchUtils +
    + +dragViewToX +(ActivityInstrumentationTestCase, View, int, int)
    + +dragViewToY +(ActivityInstrumentationTestCase, View, int, int)
    + +Drawable
    + +DynamicDrawableSpan
    + + +
    E  +A +B +C +D +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +editable +
    + +enabled +
    + +Environment
    + + +
    F  +A +B +C +D +E +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +ForegroundColorSpan
    + +forkAndSpecialize +(int, int, int[], boolean, int[][])
    + +forkSystemServer +(int, int, int[], boolean, int[][])
    + +forName +(String)
    + + +
    G  +A +B +C +D +E +F +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +GestureDetector
    +  android.view
    + +  GestureDetector +(OnGestureListener) constructor
    + +  GestureDetector +(OnGestureListener, Handler) constructor
    + +GestureDetector.SimpleOnGestureListener
    + +getClasses +()
    + +getColumnIndex
    +  type  +(String) in android.database.Cursor +
    + +  type  +(String) in android.database.CursorWrapper +
    + +getConstructors +()
    + +getCount +()
    + +getDeclaredClasses +()
    + +getDeclaredConstructors +()
    + +getEdgeSlop +()
    + +getFadingEdgeLength +()
    + +getHandler +()
    + +getInterfaces +()
    + +getItem +(int)
    + +getItemClickListener +()
    + +getItemId +(int)
    + +getItemSelectedListener +()
    + +getMaximumDrawingCacheSize +()
    + +getMinimumFlingVelocity +()
    + +getProxyClass +(ClassLoader, Class<?>)
    + +getScrollBarSize +()
    + +getSensors +()
    + +getSurrogate +(String, Map<String, String>)
    + +getTargetIntent +()
    + +getTouchSlop +()
    + +getUserAgent +()
    + +getWindowTouchSlop +()
    + +getZoomControls +()
    + +Gravity
    + +GridView
    + + +
    H  +A +B +C +D +E +F +G +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +Handler
    + +HTTP_PROXY +
    + + +
    I  +A +B +C +D +E +F +G +H +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +IBinder
    + +ImageSpan
    + +inputMethod +
    + +INSTALL_NON_MARKET_APPS +
    + +Instrumentation
    + +InstrumentationTestCase
    + +Intent
    + +isCookielessProxyUrl +(String)
    + + +java.lang
    + +java.lang.reflect
    + +java.net
    + +java.util
    + +java.util.jar
    + +java.util.logging
    + + +
    K  +A +B +C +D +E +F +G +H +I +J +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +KeyCharacterMap
    + +KeyEvent
    + +KeyListener
    + + +
    L  +A +B +C +D +E +F +G +H +I +J +K +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +LauncherActivity
    + +LeadingMarginSpan.Standard
    + +Level
    + +LIGHT_NO_MOON +
    + +ListView
    + +Location
    + +LOCATION_PROVIDERS_ALLOWED +
    + +LocationManager
    + +LOGGING_ID +
    + +LogManager
    + +longClickView +(ActivityInstrumentationTestCase, View)
    + +Looper
    + + +
    M  +A +B +C +D +E +F +G +H +I +J +K +L +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +Manifest.permission
    + +MaskFilterSpan
    + +MAX_KEYCODE +
    + +MediaPlayer
    + +MediaRecorder
    + +MediaRecorder.OutputFormat
    + +MediaStore
    + +MediaStore.Audio.AlbumColumns
    + +MediaStore.Audio.Media
    + +MediaStore.Images.Media
    + +MediaStore.Video
    + +MediaStore.Video.VideoColumns
    + +Menu
    + +MetaKeyKeyListener
    + +MockPackageManager
    + +MotionEvent
    + +MovementMethod
    + +MultiTapKeyListener
    + + +
    N  +A +B +C +D +E +F +G +H +I +J +K +L +M +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +NETWORK_PREFERENCE +
    + +NetworkInfo
    + +NUM_STREAMS +
    + +numeric +
    + + +
    O  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +onGlobalFocusChanged +(View, View)
    + +onRestoreInstanceState +(Parcelable)
    + +onSaveInstanceState +()
    + +OrientationListener
    + + +
    P  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +Q +R +S +T +U +V +W +Y +Z + TOP +

    +Pack200.Packer
    + +Pack200.Unpacker
    + +PackageInfo
    + +PackageManager
    + +Parcel
    + +ParcelFileDescriptor
    + +PARENTAL_CONTROL_ENABLED +
    + +PARENTAL_CONTROL_LAST_UPDATE +
    + +PARENTAL_CONTROL_REDIRECT_URL +
    + +parse +(String)
    + +password +
    + +PendingIntent
    + +phoneNumber +
    + +PhoneNumberUtils
    + +playSoundEffect +(int)
    + +PopupWindow
    + +PopupWindow.OnDismissListener
    + +prepare +()
    + +ProgressBar
    + +ProviderTestCase
    + +Proxy
    + + +
    Q  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +R +S +T +U +V +W +Y +Z + TOP +

    +QuoteSpan
    + +QwertyKeyListener
    + + +
    R  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +S +T +U +V +W +Y +Z + TOP +

    +R.attr
    + +R.drawable
    + +R.id
    + +R.string
    + +R.style
    + +RasterizerSpan
    + +RAW_DATA_INDEX +
    + +RAW_DATA_X +
    + +RAW_DATA_Y +
    + +RAW_DATA_Z +
    + +readHashMap +(ClassLoader)
    + +readMap +(Map, ClassLoader)
    + +Rect
    + +RectF
    + +registerListener
    +  type  +(SensorListener, int) in android.hardware.SensorManager +
    + +  type  +(SensorListener, int, int) in android.hardware.SensorManager +
    + +RelativeSizeSpan
    + +RemoteViews
    + +RemoteViews.ActionException
    + +ResourceCursorAdapter
    + +Resources
    + +RingtoneManager
    + +RotateDrawable
    + +ROUTE_BLUETOOTH +
    + + +
    S  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +T +U +V +W +Y +Z + TOP +

    +ScaleDrawable
    + +ScaleXSpan
    + +Scroller
    + +ScrollingMovementMethod
    + +scrollToBottom +(ActivityInstrumentationTestCase, ViewGroup)
    + +scrollToTop +(ActivityInstrumentationTestCase, ViewGroup)
    + +searchButtonText +
    + +SENSOR_ACCELEROMETER +
    + +SENSOR_ALL +
    + +SENSOR_LIGHT +
    + +SENSOR_MAGNETIC_FIELD +
    + +SENSOR_MAX +
    + +SENSOR_MIN +
    + +SENSOR_ORIENTATION +
    + +SENSOR_ORIENTATION_RAW +
    + +SENSOR_PROXIMITY +
    + +SENSOR_TEMPERATURE +
    + +SENSOR_TRICORDER +
    + +SensorListener
    + +SensorManager
    + +service +(String, Map<String, String>)
    + +setButton
    +  type  +(int, CharSequence, OnClickListener) in android.app.AlertDialog +
    + +  type  +(int, CharSequence, Message) in android.app.AlertDialog +
    + +setButton2
    +  type  +(CharSequence, OnClickListener) in android.app.AlertDialog +
    + +  type  +(CharSequence, Message) in android.app.AlertDialog +
    + +setButton3
    +  type  +(CharSequence, OnClickListener) in android.app.AlertDialog +
    + +  type  +(CharSequence, Message) in android.app.AlertDialog +
    + +setPreviewDisplay +(SurfaceHolder)
    + +Settings
    + +Settings.System
    + +SETTINGS_CLASSNAME +
    + +setUserAgent +(int)
    + +Shape
    + +SimpleCursorAdapter
    + +singleLine +
    + +SmsMessage
    + +Socket
    +  java.net
    + +  Socket +() constructor
    + +  Socket +(String, int) constructor
    + +  Socket +(String, int, InetAddress, int) constructor
    + +  Socket +(Proxy) constructor
    + +  Socket +(SocketImpl) constructor
    + +SoundPool
    + +Spanned
    + +SpanWatcher
    + +SparseIntArray
    + +SQLiteDatabase
    + +StrikethroughSpan
    + +String
    +  java.lang
    + +  String +() constructor
    + +  String +(byte[]) constructor
    + +  String +(byte[], int) constructor
    + +  String +(byte[], int, int) constructor
    + +  String +(byte[], int, int, int) constructor
    + +StyleSpan
    + +SubscriptSpan
    + +SuperscriptSpan
    + + +
    T  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +U +V +W +Y +Z + TOP +

    +TelephonyManager
    + +TestMethod
    + +TestSuiteBuilder
    + +TextAppearanceSpan
    + +TextKeyListener
    + +TextUtils
    + +TextView
    + +TextWatcher
    + +TimeKeyListener
    + +TimeUtils
    + +Touch
    + +TouchUtils
    + +Transformation
    + +TransitionDrawable
    + +TypedArray
    + +TypefaceSpan
    + + +
    U  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +V +W +Y +Z + TOP +

    +UnderlineSpan
    + +unregisterListener
    +  type  +(SensorListener) in android.hardware.SensorManager +
    + +  type  +(SensorListener, int) in android.hardware.SensorManager +
    + +UpdateLayout
    + +UrlInterceptHandler
    + +UrlInterceptRegistry
    + +URLSpan
    + +URLUtil
    + +USB_MASS_STORAGE_ENABLED +
    + +USE_GOOGLE_MAIL +
    + + +
    V  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +W +Y +Z + TOP +

    +View
    + +ViewConfiguration
    +  android.view
    + +  ViewConfiguration +() constructor
    + +ViewDebug
    + +ViewGroup
    + +ViewParent
    + +ViewTreeObserver
    + +VMDebug
    + + +
    W  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +Y +Z + TOP +

    +WebHistoryItem
    + +WebSettings
    + +WebView
    + +WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON +
    + +WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY +
    + +WIFI_NUM_OPEN_NETWORKS_KEPT +
    + +WIFI_ON +
    + +WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE +
    + +WIFI_WATCHDOG_AP_COUNT +
    + +WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS +
    + +WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED +
    + +WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS +
    + +WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT +
    + +WIFI_WATCHDOG_MAX_AP_CHECKS +
    + +WIFI_WATCHDOG_ON +
    + +WIFI_WATCHDOG_PING_COUNT +
    + +WIFI_WATCHDOG_PING_DELAY_MS +
    + +WIFI_WATCHDOG_PING_TIMEOUT_MS +
    + +WifiManager
    + +Window
    + +WindowManager.LayoutParams
    + +writeMap +(Map)
    + + +
    Y  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +yieldIfContended +()
    + + +
    Z  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +Zygote
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/alldiffs_index_removals.html b/docs/html/sdk/api_diff/3/changes/alldiffs_index_removals.html new file mode 100644 index 000000000000..662b26690d2e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/alldiffs_index_removals.html @@ -0,0 +1,78 @@ + + + + + + + + + +All Removals Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Differences +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + + +
    C  +N + TOP +

    +CATEGORY_GADGET +
    + + +
    N  +C + TOP +

    +NetworkInfo +(int) constructor
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.Manifest.permission.html b/docs/html/sdk/api_diff/3/changes/android.Manifest.permission.html new file mode 100644 index 000000000000..76591022179e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.Manifest.permission.html @@ -0,0 +1,151 @@ + + + + + + + + + +android.Manifest.permission + + + + + + + + + + +
    +
    +
    +

    +Class android.Manifest.permission +

    + + + +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + String BIND_APPWIDGET +  
    + + String BIND_INPUT_METHOD +  
    + + String MOUNT_FORMAT_FILESYSTEMS +  
    + + String UPDATE_DEVICE_STATS +  
    + + String WRITE_SECURE_SETTINGS +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.R.attr.html b/docs/html/sdk/api_diff/3/changes/android.R.attr.html new file mode 100644 index 000000000000..7df16a121329 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.R.attr.html @@ -0,0 +1,739 @@ + + + + + + + + + +android.R.attr + + + + + + + + + + +
    +
    +
    +

    +Class android.R.attr +

    + + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int allowSingleTap +  
    + + int animateOnClick +  
    + + int backgroundDimEnabled +  
    + + int bottomOffset +  
    + + int candidatesTextStyleSpans +  
    + + int codes +  
    + + int configure +  
    + + int content +  
    + + int dropDownAnchor +  
    + + int dropDownWidth +  
    + + int editorExtras +  
    + + int fastScrollEnabled +  
    + + int fillEnabled +  
    + + int footerDividersEnabled +  
    + + int handle +  
    + + int hapticFeedbackEnabled +  
    + + int headerDividersEnabled +  
    + + int horizontalGap +  
    + + int iconPreview +  
    + + int imeActionId +  
    + + int imeActionLabel +  
    + + int imeExtractEnterAnimation +  
    + + int imeExtractExitAnimation +  
    + + int imeFullscreenBackground +  
    + + int imeOptions +  
    + + int initialLayout +  
    + + int innerRadius +  
    + + int inputType +  
    + + int isDefault +  
    + + int isModifier +  
    + + int isRepeatable +  
    + + int isScrollContainer +  
    + + int isSticky +  
    + + int keyBackground +  
    + + int keyEdgeFlags +  
    + + int keyHeight +  
    + + int keyIcon +  
    + + int keyLabel +  
    + + int keyOutputText +  
    + + int keyPreviewHeight +  
    + + int keyPreviewLayout +  
    + + int keyPreviewOffset +  
    + + int keyTextColor +  
    + + int keyTextSize +  
    + + int keyWidth +  
    + + int keyboardMode +  
    + + int labelTextSize +  
    + + int noHistory +  
    + + int popupCharacters +  
    + + int popupKeyboard +  
    + + int popupLayout +  
    + + int privateImeOptions +  
    + + int reqFiveWayNav +  
    + + int reqHardKeyboard +  
    + + int reqKeyboardType +  
    + + int reqNavigation +  
    + + int reqTouchScreen +  
    + + int rowEdgeFlags +  
    + + int settingsActivity +  
    + + int sharedUserLabel +  
    + + int smoothScrollbar +  
    + + int state_long_pressable +  
    + + int thickness +  
    + + int topOffset +  
    + + int updatePeriodMillis +  
    + + int verticalCorrection +  
    + + int verticalGap +  
    + + int voiceLanguage +  
    + + int voiceLanguageModel +  
    + + int voiceMaxResults +  
    + + int voicePromptText +  
    + + int voiceSearchMode +  
    + + int windowDisablePreview +  
    + + int windowNoDisplay +  
    + + int windowSoftInputMode +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Fields +
    + + int autoText +Now deprecated.
    +
     
    + + int capitalize +Now deprecated.
    +
     
    + + int editable +Now deprecated.
    +
     
    + + int enabled +Now deprecated.
    +
     
    + + int inputMethod +Now deprecated.
    +
     
    + + int numeric +Now deprecated.
    +
     
    + + int password +Now deprecated.
    +
     
    + + int phoneNumber +Now deprecated.
    +
     
    + + int searchButtonText +Now deprecated.
    +
     
    + + int singleLine +Now deprecated.
    +
     
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.R.drawable.html b/docs/html/sdk/api_diff/3/changes/android.R.drawable.html new file mode 100644 index 000000000000..fe046dd7370f --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.R.drawable.html @@ -0,0 +1,137 @@ + + + + + + + + + +android.R.drawable + + + + + + + + + + +
    +
    +
    +

    +Class android.R.drawable +

    + + + +

    + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int dark_header +  
    + + int ic_btn_speak_now +  
    + + int title_bar_tall +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.R.id.html b/docs/html/sdk/api_diff/3/changes/android.R.id.html new file mode 100644 index 000000000000..d30fc1da3b7f --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.R.id.html @@ -0,0 +1,221 @@ + + + + + + + + + +android.R.id + + + + + + + + + + +
    +
    +
    +

    +Class android.R.id +

    + + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int addToDictionary +  
    + + int candidatesArea +  
    + + int closeButton +  
    + + int copy +  
    + + int copyUrl +  
    + + int cut +  
    + + int extractArea +  
    + + int inputArea +  
    + + int inputExtractEditText +  
    + + int keyboardView +  
    + + int paste +  
    + + int selectAll +  
    + + int startSelectingText +  
    + + int stopSelectingText +  
    + + int switchInputMethod +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.R.string.html b/docs/html/sdk/api_diff/3/changes/android.R.string.html new file mode 100644 index 000000000000..5d18ffa187c6 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.R.string.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.R.string + + + + + + + + + + +
    +
    +
    +

    +Class android.R.string +

    + + + +

    + + + + + + + + + + + + +
    Added Fields +
    + + int VideoView_error_text_invalid_progressive_playback +  
    + + int dialog_alert_title +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.R.style.html b/docs/html/sdk/api_diff/3/changes/android.R.style.html new file mode 100644 index 000000000000..726bab9fb2b4 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.R.style.html @@ -0,0 +1,151 @@ + + + + + + + + + +android.R.style + + + + + + + + + + +
    +
    +
    +

    +Class android.R.style +

    + + + +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int Theme_InputMethod +  
    + + int Theme_Light_Panel +  
    + + int Theme_NoDisplay +  
    + + int Theme_Panel +  
    + + int Widget_KeyboardView +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.app.Activity.html b/docs/html/sdk/api_diff/3/changes/android.app.Activity.html new file mode 100644 index 000000000000..7ff5871e76ce --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.app.Activity.html @@ -0,0 +1,151 @@ + + + + + + + + + +android.app.Activity + + + + + + + + + + +
    +
    +
    +

    +Class android.app.Activity +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + void closeContextMenu() +  
    + + boolean hasWindowFocus() +  
    + + void onUserInteraction() +  
    + + void onUserLeaveHint() +  
    + + void setVisible(boolean) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.app.ActivityManager.html b/docs/html/sdk/api_diff/3/changes/android.app.ActivityManager.html new file mode 100644 index 000000000000..bd473fb8a393 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.app.ActivityManager.html @@ -0,0 +1,137 @@ + + + + + + + + + +android.app.ActivityManager + + + + + + + + + + +
    +
    +
    +

    +Class android.app.ActivityManager +

    + + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + ConfigurationInfo getDeviceConfigurationInfo() +  
    + + List<RunningAppProcessInfo> getRunningAppProcesses() +  
    + + void restartPackage(String) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.app.AlarmManager.html b/docs/html/sdk/api_diff/3/changes/android.app.AlarmManager.html new file mode 100644 index 000000000000..b8280f2fc9b6 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.app.AlarmManager.html @@ -0,0 +1,166 @@ + + + + + + + + + +android.app.AlarmManager + + + + + + + + + + +
    +
    +
    +

    +Class android.app.AlarmManager +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void setInexactRepeating(int, long, long, PendingIntent) +  
    +  + +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + long INTERVAL_DAY +  
    + + long INTERVAL_FIFTEEN_MINUTES +  
    + + long INTERVAL_HALF_DAY +  
    + + long INTERVAL_HALF_HOUR +  
    + + long INTERVAL_HOUR +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.app.AlertDialog.html b/docs/html/sdk/api_diff/3/changes/android.app.AlertDialog.html new file mode 100644 index 000000000000..bb8cdb1624fe --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.app.AlertDialog.html @@ -0,0 +1,219 @@ + + + + + + + + + +android.app.AlertDialog + + + + + + + + + + +
    +
    +
    +

    +Class android.app.AlertDialog +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + Button getButton(int) +  
    + + ListView getListView() +  
    + + void setButton(CharSequence, OnClickListener) +  
    + + void setButton(CharSequence, Message) +  
    + + void setView(View, int, int, int, int) +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Methods +
    + + void setButton(int, CharSequence, OnClickListener) + +Change in signature from (CharSequence, OnClickListener) to (int, CharSequence, OnClickListener).
    +
     
    + + void setButton(int, CharSequence, Message) + +Change in signature from (CharSequence, Message) to (int, CharSequence, Message).
    +
     
    + + void setButton2(CharSequence, OnClickListener) + +Now deprecated.
    +
     
    + + void setButton2(CharSequence, Message) + +Now deprecated.
    +
     
    + + void setButton3(CharSequence, OnClickListener) + +Now deprecated.
    +
     
    + + void setButton3(CharSequence, Message) + +Now deprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.app.Instrumentation.html b/docs/html/sdk/api_diff/3/changes/android.app.Instrumentation.html new file mode 100644 index 000000000000..b6f26a6df962 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.app.Instrumentation.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.app.Instrumentation + + + + + + + + + + +
    +
    +
    +

    +Class android.app.Instrumentation +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void callActivityOnUserLeaving(Activity) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.app.LauncherActivity.html b/docs/html/sdk/api_diff/3/changes/android.app.LauncherActivity.html new file mode 100644 index 000000000000..60f7f29a6071 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.app.LauncherActivity.html @@ -0,0 +1,148 @@ + + + + + + + + + +android.app.LauncherActivity + + + + + + + + + + +
    +
    +
    +

    +Class android.app.LauncherActivity +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + Intent intentForPosition(int) +  
    + + List<ListItem> makeListItems() +  
    +  +

    + + + + + + + + + +
    Changed Methods +
    + + Intent getTargetIntent() + +Changed from abstract to non-abstract. +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.app.PendingIntent.html b/docs/html/sdk/api_diff/3/changes/android.app.PendingIntent.html new file mode 100644 index 000000000000..6155508fcd81 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.app.PendingIntent.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.app.PendingIntent + + + + + + + + + + +
    +
    +
    +

    +Class android.app.PendingIntent +

    + + + +

    + + + + + + + + +
    Added Fields +
    + + int FLAG_UPDATE_CURRENT +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.content.BroadcastReceiver.html b/docs/html/sdk/api_diff/3/changes/android.content.BroadcastReceiver.html new file mode 100644 index 000000000000..bd8cc8ccadb6 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.content.BroadcastReceiver.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.content.BroadcastReceiver + + + + + + + + + + +
    +
    +
    +

    +Class android.content.BroadcastReceiver +

    + + +

    + + + + + + + + +
    Added Methods +
    + + IBinder peekService(Context, Intent) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.content.ContentProvider.html b/docs/html/sdk/api_diff/3/changes/android.content.ContentProvider.html new file mode 100644 index 000000000000..c6de32605166 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.content.ContentProvider.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.content.ContentProvider + + + + + + + + + + +
    +
    +
    +

    +Class android.content.ContentProvider +

    + + +

    + + + + + + + + +
    Added Methods +
    + + AssetFileDescriptor openAssetFile(Uri, String) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.content.ContentResolver.html b/docs/html/sdk/api_diff/3/changes/android.content.ContentResolver.html new file mode 100644 index 000000000000..2101198a7f04 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.content.ContentResolver.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.content.ContentResolver + + + + + + + + + + +
    +
    +
    +

    +Class android.content.ContentResolver +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + AssetFileDescriptor openAssetFileDescriptor(Uri, String) +  
    + + OutputStream openOutputStream(Uri, String) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.content.Context.html b/docs/html/sdk/api_diff/3/changes/android.content.Context.html new file mode 100644 index 000000000000..ac3d99da74f2 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.content.Context.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.content.Context + + + + + + + + + + +
    +
    +
    +

    +Class android.content.Context +

    + + + +

    + + + + + + + + +
    Added Fields +
    + + String INPUT_METHOD_SERVICE +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.content.DialogInterface.html b/docs/html/sdk/api_diff/3/changes/android.content.DialogInterface.html new file mode 100644 index 000000000000..17dd651368bc --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.content.DialogInterface.html @@ -0,0 +1,172 @@ + + + + + + + + + +android.content.DialogInterface + + + + + + + + + + +
    +
    +
    +

    +Interface android.content.DialogInterface +

    + + + +

    + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int BUTTON_NEGATIVE +  
    + + int BUTTON_NEUTRAL +  
    + + int BUTTON_POSITIVE +  
    +  +

    + + + + + + + + + + + + + + + + + + + +
    Changed Fields +
    + + int BUTTON1 +Now deprecated.
    +
     
    + + int BUTTON2 +Now deprecated.
    +
     
    + + int BUTTON3 +Now deprecated.
    +
     
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.content.Intent.html b/docs/html/sdk/api_diff/3/changes/android.content.Intent.html new file mode 100644 index 000000000000..edb02387b0aa --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.content.Intent.html @@ -0,0 +1,251 @@ + + + + + + + + + +android.content.Intent + + + + + + + + + + +
    +
    +
    +

    +Class android.content.Intent +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + Intent replaceExtras(Intent) +  
    + + Intent replaceExtras(Bundle) +  
    +  + +

    + + + + + + + + +
    Removed Fields +
    + + String CATEGORY_GADGET +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + String ACTION_INPUT_METHOD_CHANGED +  
    + + String ACTION_MEDIA_CHECKING +  
    + + String ACTION_MEDIA_NOFS +  
    + + String ACTION_PACKAGE_DATA_CLEARED +  
    + + String ACTION_PACKAGE_REPLACED +  
    + + String ACTION_SEARCH_LONG_PRESS +  
    + + String ACTION_SYSTEM_TUTORIAL +  
    + + String ACTION_USER_PRESENT +  
    + + String CATEGORY_INFO +  
    + + String EXTRA_DATA_REMOVED +  
    + + String EXTRA_REPLACING +  
    + + int FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET +  
    + + int FLAG_ACTIVITY_NO_USER_ACTION +  
    + + int FLAG_ACTIVITY_REORDER_TO_FRONT +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.content.pm.ActivityInfo.html b/docs/html/sdk/api_diff/3/changes/android.content.pm.ActivityInfo.html new file mode 100644 index 000000000000..5c62f6b769d0 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.content.pm.ActivityInfo.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.content.pm.ActivityInfo + + + + + + + + + + +
    +
    +
    +

    +Class android.content.pm.ActivityInfo +

    + + + +

    + + + + + + + + + + + + +
    Added Fields +
    + + int FLAG_NO_HISTORY +  
    + + int softInputMode +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.content.pm.PackageInfo.html b/docs/html/sdk/api_diff/3/changes/android.content.pm.PackageInfo.html new file mode 100644 index 000000000000..b360d7c2bba2 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.content.pm.PackageInfo.html @@ -0,0 +1,137 @@ + + + + + + + + + +android.content.pm.PackageInfo + + + + + + + + + + +
    +
    +
    +

    +Class android.content.pm.PackageInfo +

    + + + +

    + + + + + + + + + + + + + + + + +
    Added Fields +
    + + ConfigurationInfo[] configPreferences +  
    + + String sharedUserId +  
    + + int sharedUserLabel +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.content.pm.PackageManager.html b/docs/html/sdk/api_diff/3/changes/android.content.pm.PackageManager.html new file mode 100644 index 000000000000..efd37c54f3b1 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.content.pm.PackageManager.html @@ -0,0 +1,166 @@ + + + + + + + + + +android.content.pm.PackageManager + + + + + + + + + + +
    +
    +
    +

    +Class android.content.pm.PackageManager +

    + + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + Intent getLaunchIntentForPackage(String) +  
    + + String[] getSystemSharedLibraryNames() +  
    + + boolean isSafeMode() +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int GET_CONFIGURATIONS +  
    + + int GET_UNINSTALLED_PACKAGES +  
    + + int INSTALL_FAILED_CONFLICTING_PROVIDER +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.content.res.AssetFileDescriptor.html b/docs/html/sdk/api_diff/3/changes/android.content.res.AssetFileDescriptor.html new file mode 100644 index 000000000000..458a70a74ecf --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.content.res.AssetFileDescriptor.html @@ -0,0 +1,174 @@ + + + + + + + + + +android.content.res.AssetFileDescriptor + + + + + + + + + + +
    +
    +
    +

    +Class android.content.res.AssetFileDescriptor +

    +

    Added interface android.os.Parcelable.
    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + FileInputStream createInputStream() +  
    + + FileOutputStream createOutputStream() +  
    + + int describeContents() +  
    + + long getDeclaredLength() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + + + + + + + + + + + + +
    Added Fields +
    + + Creator CREATOR +  
    + + long UNKNOWN_LENGTH +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.content.res.Configuration.html b/docs/html/sdk/api_diff/3/changes/android.content.res.Configuration.html new file mode 100644 index 000000000000..3b8f943aceb7 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.content.res.Configuration.html @@ -0,0 +1,144 @@ + + + + + + + + + +android.content.res.Configuration + + + + + + + + + + +
    +
    +
    +

    +Class android.content.res.Configuration +

    + + + +

    + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int HARDKEYBOARDHIDDEN_NO +  
    + + int HARDKEYBOARDHIDDEN_UNDEFINED +  
    + + int HARDKEYBOARDHIDDEN_YES +  
    + + int hardKeyboardHidden +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.content.res.Resources.html b/docs/html/sdk/api_diff/3/changes/android.content.res.Resources.html new file mode 100644 index 000000000000..7fde1f983310 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.content.res.Resources.html @@ -0,0 +1,151 @@ + + + + + + + + + +android.content.res.Resources + + + + + + + + + + +
    +
    +
    +

    +Class android.content.res.Resources +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + boolean getBoolean(int) +  
    + + float getFraction(int, int, int) +  
    + + InputStream openRawResource(int, TypedValue) +  
    + + void parseBundleExtra(String, AttributeSet, Bundle) +  
    + + void parseBundleExtras(XmlResourceParser, Bundle) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.content.res.TypedArray.html b/docs/html/sdk/api_diff/3/changes/android.content.res.TypedArray.html new file mode 100644 index 000000000000..f1336fc7d7ed --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.content.res.TypedArray.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.content.res.TypedArray + + + + + + + + + + +
    +
    +
    +

    +Class android.content.res.TypedArray +

    + + +

    + + + + + + + + +
    Added Methods +
    + + int getLayoutDimension(int, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.database.Cursor.html b/docs/html/sdk/api_diff/3/changes/android.database.Cursor.html new file mode 100644 index 000000000000..020402a4c714 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.database.Cursor.html @@ -0,0 +1,126 @@ + + + + + + + + + +android.database.Cursor + + + + + + + + + + +
    +
    +
    +

    +Interface android.database.Cursor +

    + + +

    + + + + + + + + + +
    Changed Methods +
    + + int getColumnIndex(String) + +Change from deprecated to undeprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.database.CursorWrapper.html b/docs/html/sdk/api_diff/3/changes/android.database.CursorWrapper.html new file mode 100644 index 000000000000..3a7675d57da6 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.database.CursorWrapper.html @@ -0,0 +1,126 @@ + + + + + + + + + +android.database.CursorWrapper + + + + + + + + + + +
    +
    +
    +

    +Class android.database.CursorWrapper +

    + + +

    + + + + + + + + + +
    Changed Methods +
    + + int getColumnIndex(String) + +Change from deprecated to undeprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.database.DatabaseUtils.html b/docs/html/sdk/api_diff/3/changes/android.database.DatabaseUtils.html new file mode 100644 index 000000000000..114beaeeee62 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.database.DatabaseUtils.html @@ -0,0 +1,126 @@ + + + + + + + + + +android.database.DatabaseUtils + + + + + + + + + + +
    +
    +
    +

    +Class android.database.DatabaseUtils +

    + + +

    + + + + + + + + + +
    Changed Methods +
    + + void appendEscapedSQLString(StringBuilder, String) + +Change from deprecated to undeprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.database.sqlite.SQLiteDatabase.html b/docs/html/sdk/api_diff/3/changes/android.database.sqlite.SQLiteDatabase.html new file mode 100644 index 000000000000..cd59c1b85431 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.database.sqlite.SQLiteDatabase.html @@ -0,0 +1,141 @@ + + + + + + + + + +android.database.sqlite.SQLiteDatabase + + + + + + + + + + +
    +
    +
    +

    +Class android.database.sqlite.SQLiteDatabase +

    + + +

    + + + + + + + + +
    Added Methods +
    + + boolean yieldIfContendedSafely() +  
    +  +

    + + + + + + + + + +
    Changed Methods +
    + + boolean yieldIfContended() + +Now deprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.graphics.Bitmap.html b/docs/html/sdk/api_diff/3/changes/android.graphics.Bitmap.html new file mode 100644 index 000000000000..f6ddc29c10bf --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.graphics.Bitmap.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.graphics.Bitmap + + + + + + + + + + +
    +
    +
    +

    +Class android.graphics.Bitmap +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void copyPixelsFromBuffer(Buffer) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.graphics.Canvas.html b/docs/html/sdk/api_diff/3/changes/android.graphics.Canvas.html new file mode 100644 index 000000000000..cf8ceef7ab5f --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.graphics.Canvas.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.graphics.Canvas + + + + + + + + + + +
    +
    +
    +

    +Class android.graphics.Canvas +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void drawBitmap(int[], int, int, float, float, int, int, boolean, Paint) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.graphics.Rect.html b/docs/html/sdk/api_diff/3/changes/android.graphics.Rect.html new file mode 100644 index 000000000000..1c0b1f342d37 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.graphics.Rect.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.graphics.Rect + + + + + + + + + + +
    +
    +
    +

    +Class android.graphics.Rect +

    + + +

    + + + + + + + + +
    Added Methods +
    + + String toShortString() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.graphics.RectF.html b/docs/html/sdk/api_diff/3/changes/android.graphics.RectF.html new file mode 100644 index 000000000000..4e9b91b2a2ed --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.graphics.RectF.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.graphics.RectF + + + + + + + + + + +
    +
    +
    +

    +Class android.graphics.RectF +

    +

    Added interface android.os.Parcelable.
    + + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + void readFromParcel(Parcel) +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + + + + + + + + +
    Added Fields +
    + + Creator CREATOR +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.Drawable.html b/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.Drawable.html new file mode 100644 index 000000000000..faa70b96da44 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.Drawable.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.graphics.drawable.Drawable + + + + + + + + + + +
    +
    +
    +

    +Class android.graphics.drawable.Drawable +

    + + +

    + + + + + + + + +
    Added Methods +
    + + Drawable mutate() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.RotateDrawable.html b/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.RotateDrawable.html new file mode 100644 index 000000000000..8cffe1e0bdb9 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.RotateDrawable.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.graphics.drawable.RotateDrawable + + + + + + + + + + +
    +
    +
    +

    +Class android.graphics.drawable.RotateDrawable +

    + + +

    + + + + + + + + +
    Added Methods +
    + + Drawable getDrawable() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.ScaleDrawable.html b/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.ScaleDrawable.html new file mode 100644 index 000000000000..529f38026ebe --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.ScaleDrawable.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.graphics.drawable.ScaleDrawable + + + + + + + + + + +
    +
    +
    +

    +Class android.graphics.drawable.ScaleDrawable +

    + + +

    + + + + + + + + +
    Added Methods +
    + + Drawable getDrawable() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.TransitionDrawable.html b/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.TransitionDrawable.html new file mode 100644 index 000000000000..d7dc8eafcf3c --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.TransitionDrawable.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.graphics.drawable.TransitionDrawable + + + + + + + + + + +
    +
    +
    +

    +Class android.graphics.drawable.TransitionDrawable +

    + +

    + + + + + + + + +
    Added Constructors +
    + + TransitionDrawable(Drawable[]) +  
    +  + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.shapes.Shape.html b/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.shapes.Shape.html new file mode 100644 index 000000000000..836aa9215913 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.shapes.Shape.html @@ -0,0 +1,128 @@ + + + + + + + + + +android.graphics.drawable.shapes.Shape + + + + + + + + + + +
    +
    +
    +

    +Class android.graphics.drawable.shapes.Shape +

    +

    Added interface java.lang.Cloneable.
    + + +

    + + + + + + + + + +
    Changed Methods +
    + + Shape clone() + +Change in return type from Object to Shape.
    + Method was inherited from java.lang.Object, but is now defined locally. Change of visibility from protected to public.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.hardware.Camera.html b/docs/html/sdk/api_diff/3/changes/android.hardware.Camera.html new file mode 100644 index 000000000000..b7a0dd37a122 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.hardware.Camera.html @@ -0,0 +1,141 @@ + + + + + + + + + +android.hardware.Camera + + + + + + + + + + +
    +
    +
    +

    +Class android.hardware.Camera +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void setOneShotPreviewCallback(PreviewCallback) +  
    +  +

    + + + + + + + + + +
    Changed Methods +
    + + void setPreviewDisplay(SurfaceHolder) + +Change in exceptions thrown from no exceptions to java.io.IOException.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.hardware.SensorListener.html b/docs/html/sdk/api_diff/3/changes/android.hardware.SensorListener.html new file mode 100644 index 000000000000..9b63571fcf52 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.hardware.SensorListener.html @@ -0,0 +1,109 @@ + + + + + + + + + +android.hardware.SensorListener + + + + + + + + + + +
    +
    +
    +

    +Interface android.hardware.SensorListener +

    +

    Now deprecated.
    + + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.hardware.SensorManager.html b/docs/html/sdk/api_diff/3/changes/android.hardware.SensorManager.html new file mode 100644 index 000000000000..e42eebaf21f9 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.hardware.SensorManager.html @@ -0,0 +1,473 @@ + + + + + + + + + +android.hardware.SensorManager + + + + + + + + + + +
    +
    +
    +

    +Class android.hardware.SensorManager +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + Sensor getDefaultSensor(int) +  
    + + float getInclination(float[]) +  
    + + float[] getOrientation(float[], float[]) +  
    + + boolean getRotationMatrix(float[], float[], float[], float[]) +  
    + + List<Sensor> getSensorList(int) +  
    + + boolean registerListener(SensorEventListener, Sensor, int) +  
    + + boolean registerListener(SensorEventListener, Sensor, int, Handler) +  
    + + boolean remapCoordinateSystem(float[], int, int, float[]) +  
    + + void unregisterListener(SensorEventListener) +  
    + + void unregisterListener(SensorEventListener, Sensor) +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Methods +
    + + int getSensors() + +Now deprecated.
    +
     
    + + boolean registerListener(SensorListener, int) + +Now deprecated.
    +
     
    + + boolean registerListener(SensorListener, int, int) + +Now deprecated.
    +
     
    + + void unregisterListener(SensorListener) + +Now deprecated.
    +
     
    + + void unregisterListener(SensorListener, int) + +Now deprecated.
    +
     
    +  + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int AXIS_MINUS_X +  
    + + int AXIS_MINUS_Y +  
    + + int AXIS_MINUS_Z +  
    + + int AXIS_X +  
    + + int AXIS_Y +  
    + + int AXIS_Z +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Fields +
    + + int DATA_X +Now deprecated.
    +
     
    + + int DATA_Y +Now deprecated.
    +
     
    + + int DATA_Z +Now deprecated.
    +
     
    + + float LIGHT_NO_MOON +Changed in value from 0.0010f to 0.001f. +  
    + + int RAW_DATA_INDEX +Now deprecated.
    +
     
    + + int RAW_DATA_X +Now deprecated.
    +
     
    + + int RAW_DATA_Y +Now deprecated.
    +
     
    + + int RAW_DATA_Z +Now deprecated.
    +
     
    + + int SENSOR_ACCELEROMETER +Now deprecated.
    +
     
    + + int SENSOR_ALL +Now deprecated.
    +
     
    + + int SENSOR_LIGHT +Now deprecated.
    +
     
    + + int SENSOR_MAGNETIC_FIELD +Now deprecated.
    +
     
    + + int SENSOR_MAX +Now deprecated.
    +
     
    + + int SENSOR_MIN +Now deprecated.
    +
     
    + + int SENSOR_ORIENTATION +Now deprecated.
    +
     
    + + int SENSOR_ORIENTATION_RAW +Now deprecated.
    +
     
    + + int SENSOR_PROXIMITY +Now deprecated.
    +
     
    + + int SENSOR_TEMPERATURE +Now deprecated.
    +
     
    + + int SENSOR_TRICORDER +Now deprecated.
    +
     
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.location.Location.html b/docs/html/sdk/api_diff/3/changes/android.location.Location.html new file mode 100644 index 000000000000..03d3f894f33c --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.location.Location.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.location.Location + + + + + + + + + + +
    +
    +
    +

    +Class android.location.Location +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void dump(Printer, String) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.location.LocationManager.html b/docs/html/sdk/api_diff/3/changes/android.location.LocationManager.html new file mode 100644 index 000000000000..4cd68386cbd4 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.location.LocationManager.html @@ -0,0 +1,243 @@ + + + + + + + + + +android.location.LocationManager + + + + + + + + + + +
    +
    +
    +

    +Class android.location.LocationManager +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + boolean addGpsStatusListener(Listener) +  
    + + void addTestProvider(String, boolean, boolean, boolean, boolean, boolean, boolean, boolean, int, int) +  
    + + void clearTestProviderEnabled(String) +  
    + + void clearTestProviderLocation(String) +  
    + + void clearTestProviderStatus(String) +  
    + + GpsStatus getGpsStatus(GpsStatus) +  
    + + void removeGpsStatusListener(Listener) +  
    + + void removeTestProvider(String) +  
    + + void removeUpdates(PendingIntent) +  
    + + void requestLocationUpdates(String, long, float, PendingIntent) +  
    + + boolean sendExtraCommand(String, String, Bundle) +  
    + + void setTestProviderEnabled(String, boolean) +  
    + + void setTestProviderLocation(String, Location) +  
    + + void setTestProviderStatus(String, int, Bundle, long) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Fields +
    + + String KEY_LOCATION_CHANGED +  
    + + String KEY_PROVIDER_ENABLED +  
    + + String KEY_STATUS_CHANGED +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.media.AudioManager.html b/docs/html/sdk/api_diff/3/changes/android.media.AudioManager.html new file mode 100644 index 000000000000..a98d840ffaf7 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.media.AudioManager.html @@ -0,0 +1,227 @@ + + + + + + + + + +android.media.AudioManager + + + + + + + + + + +
    +
    +
    +

    +Class android.media.AudioManager +

    + + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + boolean isBluetoothA2dpOn() +  
    + + void playSoundEffect(int, float) +  
    + + void setBluetoothA2dpOn(boolean) +  
    +  + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + String ACTION_AUDIO_BECOMING_NOISY +  
    + + int FX_KEYPRESS_DELETE +  
    + + int FX_KEYPRESS_RETURN +  
    + + int FX_KEYPRESS_SPACEBAR +  
    + + int FX_KEYPRESS_STANDARD +  
    + + int ROUTE_BLUETOOTH_A2DP +  
    + + int ROUTE_BLUETOOTH_SCO +  
    + + int STREAM_NOTIFICATION +  
    +  +

    + + + + + + + + + + + + + + +
    Changed Fields +
    + + int NUM_STREAMS +Now deprecated.
    +
     
    + + int ROUTE_BLUETOOTH +Now deprecated.
    +
     
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.media.MediaPlayer.html b/docs/html/sdk/api_diff/3/changes/android.media.MediaPlayer.html new file mode 100644 index 000000000000..7704e1232ee8 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.media.MediaPlayer.html @@ -0,0 +1,180 @@ + + + + + + + + + +android.media.MediaPlayer + + + + + + + + + + +
    +
    +
    +

    +Class android.media.MediaPlayer +

    + + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + boolean isLooping() +  
    + + void setOnInfoListener(OnInfoListener) +  
    + + void setOnVideoSizeChangedListener(OnVideoSizeChangedListener) +  
    +  + +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK +  
    + + int MEDIA_INFO_BAD_INTERLEAVING +  
    + + int MEDIA_INFO_NOT_SEEKABLE +  
    + + int MEDIA_INFO_UNKNOWN +  
    + + int MEDIA_INFO_VIDEO_TRACK_LAGGING +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.media.MediaRecorder.OutputFormat.html b/docs/html/sdk/api_diff/3/changes/android.media.MediaRecorder.OutputFormat.html new file mode 100644 index 000000000000..0967c567c7f4 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.media.MediaRecorder.OutputFormat.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.media.MediaRecorder.OutputFormat + + + + + + + + + + +
    +
    +
    +

    +Class android.media.MediaRecorder.OutputFormat +

    + + + +

    + + + + + + + + +
    Added Fields +
    + + int RAW_AMR +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.media.MediaRecorder.html b/docs/html/sdk/api_diff/3/changes/android.media.MediaRecorder.html new file mode 100644 index 000000000000..9daf4c350aaa --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.media.MediaRecorder.html @@ -0,0 +1,240 @@ + + + + + + + + + +android.media.MediaRecorder + + + + + + + + + + +
    +
    +
    +

    +Class android.media.MediaRecorder +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + void setCamera(Camera) +  
    + + void setMaxDuration(int) +  
    + + void setMaxFileSize(long) +  
    + + void setOnErrorListener(OnErrorListener) +  
    + + void setOnInfoListener(OnInfoListener) +  
    + + void setOutputFile(FileDescriptor) +  
    + + void setVideoEncoder(int) +  
    + + void setVideoFrameRate(int) +  
    + + void setVideoSize(int, int) +  
    + + void setVideoSource(int) +  
    +  +

    + + + + + + + + + +
    Changed Methods +
    + + void prepare() + +Change in exceptions thrown from java.lang.IllegalStateException to (java.io.IOException, java.lang.IllegalStateException).
    +
     
    +  + +

    + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int MEDIA_RECORDER_ERROR_UNKNOWN +  
    + + int MEDIA_RECORDER_INFO_MAX_DURATION_REACHED +  
    + + int MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED +  
    + + int MEDIA_RECORDER_INFO_UNKNOWN +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.media.RingtoneManager.html b/docs/html/sdk/api_diff/3/changes/android.media.RingtoneManager.html new file mode 100644 index 000000000000..e9fdbfc24b04 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.media.RingtoneManager.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.media.RingtoneManager + + + + + + + + + + +
    +
    +
    +

    +Class android.media.RingtoneManager +

    + + +

    + + + + + + + + +
    Added Methods +
    + + int inferStreamType() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.media.SoundPool.html b/docs/html/sdk/api_diff/3/changes/android.media.SoundPool.html new file mode 100644 index 000000000000..6e765d837f78 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.media.SoundPool.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.media.SoundPool + + + + + + + + + + +
    +
    +
    +

    +Class android.media.SoundPool +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + int load(AssetFileDescriptor, int) +  
    + + int load(FileDescriptor, long, long, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.net.ConnectivityManager.html b/docs/html/sdk/api_diff/3/changes/android.net.ConnectivityManager.html new file mode 100644 index 000000000000..7b0750e02f15 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.net.ConnectivityManager.html @@ -0,0 +1,138 @@ + + + + + + + + + +android.net.ConnectivityManager + + + + + + + + + + +
    +
    +
    +

    +Class android.net.ConnectivityManager +

    + + +

    + + + + + + + + +
    Added Methods +
    + + boolean getBackgroundDataSetting() +  
    +  + +

    + + + + + + + + +
    Added Fields +
    + + String ACTION_BACKGROUND_DATA_SETTING_CHANGED +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.net.NetworkInfo.html b/docs/html/sdk/api_diff/3/changes/android.net.NetworkInfo.html new file mode 100644 index 000000000000..6c3c26d2c4c4 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.net.NetworkInfo.html @@ -0,0 +1,152 @@ + + + + + + + + + +android.net.NetworkInfo + + + + + + + + + + +
    +
    +
    +

    +Class android.net.NetworkInfo +

    + +

    + + + + + + + + +
    Removed Constructors +
    + + NetworkInfo(int) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int getSubtype() +  
    + + String getSubtypeName() +  
    + + boolean isRoaming() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.net.wifi.WifiManager.html b/docs/html/sdk/api_diff/3/changes/android.net.wifi.WifiManager.html new file mode 100644 index 000000000000..2e79642e7662 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.net.wifi.WifiManager.html @@ -0,0 +1,145 @@ + + + + + + + + + +android.net.wifi.WifiManager + + + + + + + + + + +
    +
    +
    +

    +Class android.net.wifi.WifiManager +

    + + +

    + + + + + + + + +
    Added Methods +
    + + WifiLock createWifiLock(int, String) +  
    +  + +

    + + + + + + + + + + + + +
    Added Fields +
    + + int WIFI_MODE_FULL +  
    + + int WIFI_MODE_SCAN_ONLY +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.os.Binder.html b/docs/html/sdk/api_diff/3/changes/android.os.Binder.html new file mode 100644 index 000000000000..882803adaf42 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.os.Binder.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.os.Binder + + + + + + + + + + +
    +
    +
    +

    +Class android.os.Binder +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void dump(FileDescriptor, String[]) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.os.Build.html b/docs/html/sdk/api_diff/3/changes/android.os.Build.html new file mode 100644 index 000000000000..2a69a8c7c204 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.os.Build.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.os.Build + + + + + + + + + + +
    +
    +
    +

    +Class android.os.Build +

    + + + +

    + + + + + + + + +
    Added Fields +
    + + String DISPLAY +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.os.Debug.html b/docs/html/sdk/api_diff/3/changes/android.os.Debug.html new file mode 100644 index 000000000000..8e7e2db3eef8 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.os.Debug.html @@ -0,0 +1,141 @@ + + + + + + + + + +android.os.Debug + + + + + + + + + + +
    +
    +
    +

    +Class android.os.Debug +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void dumpHprofData(String) +  
    +  +

    + + + + + + + + + +
    Changed Methods +
    + + void changeDebugPort(int) + +Now deprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.os.Environment.html b/docs/html/sdk/api_diff/3/changes/android.os.Environment.html new file mode 100644 index 000000000000..4cc764375c64 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.os.Environment.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.os.Environment + + + + + + + + + + +
    +
    +
    +

    +Class android.os.Environment +

    + + + +

    + + + + + + + + + + + + +
    Added Fields +
    + + String MEDIA_CHECKING +  
    + + String MEDIA_NOFS +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.os.Handler.html b/docs/html/sdk/api_diff/3/changes/android.os.Handler.html new file mode 100644 index 000000000000..fc10c9b29cd1 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.os.Handler.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.os.Handler + + + + + + + + + + +
    +
    +
    +

    +Class android.os.Handler +

    + +

    + + + + + + + + + + + + +
    Added Constructors +
    + + Handler(Callback) +  
    + + Handler(Looper, Callback) +  
    +  + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.os.IBinder.html b/docs/html/sdk/api_diff/3/changes/android.os.IBinder.html new file mode 100644 index 000000000000..95745dc7d4a3 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.os.IBinder.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.os.IBinder + + + + + + + + + + +
    +
    +
    +

    +Interface android.os.IBinder +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void dump(FileDescriptor, String[]) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.os.Looper.html b/docs/html/sdk/api_diff/3/changes/android.os.Looper.html new file mode 100644 index 000000000000..d79ae756786f --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.os.Looper.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.os.Looper + + + + + + + + + + +
    +
    +
    +

    +Class android.os.Looper +

    + + +

    + + + + + + + + +
    Added Methods +
    + + Thread getThread() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.os.Parcel.html b/docs/html/sdk/api_diff/3/changes/android.os.Parcel.html new file mode 100644 index 000000000000..317b722d9f0f --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.os.Parcel.html @@ -0,0 +1,146 @@ + + + + + + + + + +android.os.Parcel + + + + + + + + + + +
    +
    +
    +

    +Class android.os.Parcel +

    + + +

    + + + + + + + + + + + + + + + + + + + +
    Changed Methods +
    + + HashMap readHashMap(ClassLoader) + +Change from deprecated to undeprecated.
    +
     
    + + void readMap(Map, ClassLoader) + +Change from deprecated to undeprecated.
    +
     
    + + void writeMap(Map) + +Change from deprecated to undeprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.os.ParcelFileDescriptor.html b/docs/html/sdk/api_diff/3/changes/android.os.ParcelFileDescriptor.html new file mode 100644 index 000000000000..77641d54c4dd --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.os.ParcelFileDescriptor.html @@ -0,0 +1,138 @@ + + + + + + + + + +android.os.ParcelFileDescriptor + + + + + + + + + + +
    +
    +
    +

    +Class android.os.ParcelFileDescriptor +

    + + +

    + + + + + + + + +
    Added Methods +
    + + long getStatSize() +  
    +  + +

    + + + + + + + + +
    Added Fields +
    + + int MODE_APPEND +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.preference.DialogPreference.html b/docs/html/sdk/api_diff/3/changes/android.preference.DialogPreference.html new file mode 100644 index 000000000000..93e05e7c6320 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.preference.DialogPreference.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.preference.DialogPreference + + + + + + + + + + +
    +
    +
    +

    +Class android.preference.DialogPreference +

    + + +

    + + + + + + + + +
    Added Methods +
    + + Dialog getDialog() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.Browser.html b/docs/html/sdk/api_diff/3/changes/android.provider.Browser.html new file mode 100644 index 000000000000..9a9a4b80ef09 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.provider.Browser.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.provider.Browser + + + + + + + + + + +
    +
    +
    +

    +Class android.provider.Browser +

    + + + +

    + + + + + + + + +
    Added Fields +
    + + String EXTRA_APPLICATION_ID +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.Contacts.Intents.Insert.html b/docs/html/sdk/api_diff/3/changes/android.provider.Contacts.Intents.Insert.html new file mode 100644 index 000000000000..32541826a888 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.provider.Contacts.Intents.Insert.html @@ -0,0 +1,179 @@ + + + + + + + + + +android.provider.Contacts.Intents.Insert + + + + + + + + + + +
    +
    +
    +

    +Class android.provider.Contacts.Intents.Insert +

    + + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + String PHONETIC_NAME +  
    + + String SECONDARY_EMAIL +  
    + + String SECONDARY_EMAIL_TYPE +  
    + + String SECONDARY_PHONE +  
    + + String SECONDARY_PHONE_TYPE +  
    + + String TERTIARY_EMAIL +  
    + + String TERTIARY_EMAIL_TYPE +  
    + + String TERTIARY_PHONE +  
    + + String TERTIARY_PHONE_TYPE +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.Contacts.Intents.html b/docs/html/sdk/api_diff/3/changes/android.provider.Contacts.Intents.html new file mode 100644 index 000000000000..1f758333c47e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.provider.Contacts.Intents.html @@ -0,0 +1,137 @@ + + + + + + + + + +android.provider.Contacts.Intents + + + + + + + + + + +
    +
    +
    +

    +Class android.provider.Contacts.Intents +

    + + + +

    + + + + + + + + + + + + + + + + +
    Added Fields +
    + + String EXTRA_CREATE_DESCRIPTION +  
    + + String EXTRA_FORCE_CREATE +  
    + + String SHOW_OR_CREATE_CONTACT +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.Contacts.PeopleColumns.html b/docs/html/sdk/api_diff/3/changes/android.provider.Contacts.PeopleColumns.html new file mode 100644 index 000000000000..e8c0f4d6d2c7 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.provider.Contacts.PeopleColumns.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.provider.Contacts.PeopleColumns + + + + + + + + + + +
    +
    +
    +

    +Interface android.provider.Contacts.PeopleColumns +

    + + + +

    + + + + + + + + +
    Added Fields +
    + + String PHONETIC_NAME +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Audio.AlbumColumns.html b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Audio.AlbumColumns.html new file mode 100644 index 000000000000..ade1498b3082 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Audio.AlbumColumns.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.provider.MediaStore.Audio.AlbumColumns + + + + + + + + + + +
    +
    +
    +

    +Interface android.provider.MediaStore.Audio.AlbumColumns +

    + + + +

    + + + + + + + + +
    Added Fields +
    + + String NUMBER_OF_SONGS_FOR_ARTIST +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Audio.Media.html b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Audio.Media.html new file mode 100644 index 000000000000..52bae9d6f275 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Audio.Media.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.provider.MediaStore.Audio.Media + + + + + + + + + + +
    +
    +
    +

    +Class android.provider.MediaStore.Audio.Media +

    + + + +

    + + + + + + + + +
    Added Fields +
    + + String EXTRA_MAX_BYTES +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Images.Media.html b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Images.Media.html new file mode 100644 index 000000000000..b375c3f9959f --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Images.Media.html @@ -0,0 +1,125 @@ + + + + + + + + + +android.provider.MediaStore.Images.Media + + + + + + + + + + +
    +
    +
    +

    +Class android.provider.MediaStore.Images.Media +

    + + + +

    + + + + + + + + + +
    Changed Fields +
    + + String DEFAULT_SORT_ORDER +Changed in value from "name ASC" to "bucket_display_name". +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Video.VideoColumns.html b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Video.VideoColumns.html new file mode 100644 index 000000000000..43494502563f --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Video.VideoColumns.html @@ -0,0 +1,137 @@ + + + + + + + + + +android.provider.MediaStore.Video.VideoColumns + + + + + + + + + + +
    +
    +
    +

    +Interface android.provider.MediaStore.Video.VideoColumns +

    + + + +

    + + + + + + + + + + + + + + + + +
    Added Fields +
    + + String BOOKMARK +  
    + + String BUCKET_DISPLAY_NAME +  
    + + String BUCKET_ID +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Video.html b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Video.html new file mode 100644 index 000000000000..60437625988c --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Video.html @@ -0,0 +1,125 @@ + + + + + + + + + +android.provider.MediaStore.Video + + + + + + + + + + +
    +
    +
    +

    +Class android.provider.MediaStore.Video +

    + + + +

    + + + + + + + + + +
    Changed Fields +
    + + String DEFAULT_SORT_ORDER +Changed in value from "name ASC" to "_display_name". +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.html b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.html new file mode 100644 index 000000000000..0d6a4cdce690 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.html @@ -0,0 +1,207 @@ + + + + + + + + + +android.provider.MediaStore + + + + + + + + + + +
    +
    +
    +

    +Class android.provider.MediaStore +

    + + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + String ACTION_IMAGE_CAPTURE +  
    + + String ACTION_VIDEO_CAPTURE +  
    + + String EXTRA_FINISH_ON_COMPLETION +  
    + + String EXTRA_MEDIA_ALBUM +  
    + + String EXTRA_MEDIA_ARTIST +  
    + + String EXTRA_MEDIA_FOCUS +  
    + + String EXTRA_MEDIA_TITLE +  
    + + String EXTRA_OUTPUT +  
    + + String EXTRA_SCREEN_ORIENTATION +  
    + + String EXTRA_VIDEO_QUALITY +  
    + + String INTENT_ACTION_MEDIA_SEARCH +  
    + + String INTENT_ACTION_STILL_IMAGE_CAMERA +  
    + + String INTENT_ACTION_VIDEO_CAMERA +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.Settings.System.html b/docs/html/sdk/api_diff/3/changes/android.provider.Settings.System.html new file mode 100644 index 000000000000..b7ef86c6695a --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.provider.Settings.System.html @@ -0,0 +1,502 @@ + + + + + + + + + +android.provider.Settings.System + + + + + + + + + + +
    +
    +
    +

    +Class android.provider.Settings.System +

    + + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + long getLong(ContentResolver, String) +  
    + + long getLong(ContentResolver, String, long) +  
    + + boolean putLong(ContentResolver, String, long) +  
    +  + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + String ACCELEROMETER_ROTATION +  
    + + String HAPTIC_FEEDBACK_ENABLED +  
    + + String LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED +  
    + + String VOLUME_NOTIFICATION +  
    + + String WIFI_MAX_DHCP_RETRY_COUNT +  
    + + String WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS +  
    + + String WIFI_SLEEP_POLICY +  
    + + int WIFI_SLEEP_POLICY_DEFAULT +  
    + + int WIFI_SLEEP_POLICY_NEVER +  
    + + int WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Fields +
    + + String ADB_ENABLED +Now deprecated.
    +
     
    + + String ANDROID_ID +Now deprecated.
    +
     
    + + String BLUETOOTH_ON +Now deprecated.
    +
     
    + + String DATA_ROAMING +Now deprecated.
    +
     
    + + String DEVICE_PROVISIONED +Now deprecated.
    +
     
    + + String HTTP_PROXY +Now deprecated.
    +
     
    + + String INSTALL_NON_MARKET_APPS +Now deprecated.
    +
     
    + + String LOCATION_PROVIDERS_ALLOWED +Now deprecated.
    +
     
    + + String LOGGING_ID +Now deprecated.
    +
     
    + + String NETWORK_PREFERENCE +Now deprecated.
    +
     
    + + String PARENTAL_CONTROL_ENABLED +Now deprecated.
    +
     
    + + String PARENTAL_CONTROL_LAST_UPDATE +Now deprecated.
    +
     
    + + String PARENTAL_CONTROL_REDIRECT_URL +Now deprecated.
    +
     
    + + String SETTINGS_CLASSNAME +Now deprecated.
    +
     
    + + String USB_MASS_STORAGE_ENABLED +Now deprecated.
    +
     
    + + String USE_GOOGLE_MAIL +Now deprecated.
    +
     
    + + String WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON +Now deprecated.
    +
     
    + + String WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY +Now deprecated.
    +
     
    + + String WIFI_NUM_OPEN_NETWORKS_KEPT +Now deprecated.
    +
     
    + + String WIFI_ON +Now deprecated.
    +
     
    + + String WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE +Now deprecated.
    +
     
    + + String WIFI_WATCHDOG_AP_COUNT +Now deprecated.
    +
     
    + + String WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS +Now deprecated.
    +
     
    + + String WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED +Now deprecated.
    +
     
    + + String WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS +Now deprecated.
    +
     
    + + String WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT +Now deprecated.
    +
     
    + + String WIFI_WATCHDOG_MAX_AP_CHECKS +Now deprecated.
    +
     
    + + String WIFI_WATCHDOG_ON +Now deprecated.
    +
     
    + + String WIFI_WATCHDOG_PING_COUNT +Now deprecated.
    +
     
    + + String WIFI_WATCHDOG_PING_DELAY_MS +Now deprecated.
    +
     
    + + String WIFI_WATCHDOG_PING_TIMEOUT_MS +Now deprecated.
    +
     
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.Settings.html b/docs/html/sdk/api_diff/3/changes/android.provider.Settings.html new file mode 100644 index 000000000000..227b462ed957 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.provider.Settings.html @@ -0,0 +1,200 @@ + + + + + + + + + +android.provider.Settings + + + + + + + + + + +
    +
    +
    +

    +Class android.provider.Settings +

    + + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + String ACTION_AIRPLANE_MODE_SETTINGS +  
    + + String ACTION_APPLICATION_DEVELOPMENT_SETTINGS +  
    + + String ACTION_DATA_ROAMING_SETTINGS +  
    + + String ACTION_INPUT_METHOD_SETTINGS +  
    + + String ACTION_INTERNAL_STORAGE_SETTINGS +  
    + + String ACTION_MANAGE_APPLICATIONS_SETTINGS +  
    + + String ACTION_MEMORY_CARD_SETTINGS +  
    + + String ACTION_NETWORK_OPERATOR_SETTINGS +  
    + + String ACTION_QUICK_LAUNCH_SETTINGS +  
    + + String ACTION_SYNC_SETTINGS +  
    + + String ACTION_USER_DICTIONARY_SETTINGS +  
    + + String ACTION_WIFI_IP_SETTINGS +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.telephony.PhoneNumberUtils.html b/docs/html/sdk/api_diff/3/changes/android.telephony.PhoneNumberUtils.html new file mode 100644 index 000000000000..6e0b240ca75b --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.telephony.PhoneNumberUtils.html @@ -0,0 +1,138 @@ + + + + + + + + + +android.telephony.PhoneNumberUtils + + + + + + + + + + +
    +
    +
    +

    +Class android.telephony.PhoneNumberUtils +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void formatJapaneseNumber(Editable) +  
    +  + +

    + + + + + + + + +
    Added Fields +
    + + int FORMAT_JAPAN +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.telephony.TelephonyManager.html b/docs/html/sdk/api_diff/3/changes/android.telephony.TelephonyManager.html new file mode 100644 index 000000000000..aa02f5c1f3a8 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.telephony.TelephonyManager.html @@ -0,0 +1,173 @@ + + + + + + + + + +android.telephony.TelephonyManager + + + + + + + + + + +
    +
    +
    +

    +Class android.telephony.TelephonyManager +

    + + +

    + + + + + + + + +
    Added Methods +
    + + List<NeighboringCellInfo> getNeighboringCellInfo() +  
    +  + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + String ACTION_PHONE_STATE_CHANGED +  
    + + String EXTRA_INCOMING_NUMBER +  
    + + String EXTRA_STATE +  
    + + String EXTRA_STATE_IDLE +  
    + + String EXTRA_STATE_OFFHOOK +  
    + + String EXTRA_STATE_RINGING +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.telephony.gsm.SmsMessage.html b/docs/html/sdk/api_diff/3/changes/android.telephony.gsm.SmsMessage.html new file mode 100644 index 000000000000..c6069043fe40 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.telephony.gsm.SmsMessage.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.telephony.gsm.SmsMessage + + + + + + + + + + +
    +
    +
    +

    +Class android.telephony.gsm.SmsMessage +

    + + +

    + + + + + + + + +
    Added Methods +
    + + int[] calculateLength(CharSequence, boolean) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.test.ActivityInstrumentationTestCase.html b/docs/html/sdk/api_diff/3/changes/android.test.ActivityInstrumentationTestCase.html new file mode 100644 index 000000000000..c3360776828e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.test.ActivityInstrumentationTestCase.html @@ -0,0 +1,109 @@ + + + + + + + + + +android.test.ActivityInstrumentationTestCase + + + + + + + + + + +
    +
    +
    +

    +Class android.test.ActivityInstrumentationTestCase +

    +

    Now deprecated.
    + + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.test.InstrumentationTestCase.html b/docs/html/sdk/api_diff/3/changes/android.test.InstrumentationTestCase.html new file mode 100644 index 000000000000..1fb403aaabe5 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.test.InstrumentationTestCase.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.test.InstrumentationTestCase + + + + + + + + + + +
    +
    +
    +

    +Class android.test.InstrumentationTestCase +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + T launchActivityWithIntent(String, Class<T>, Intent) +  
    + + void runTestOnUiThread(Runnable) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.test.ProviderTestCase.html b/docs/html/sdk/api_diff/3/changes/android.test.ProviderTestCase.html new file mode 100644 index 000000000000..ffbee6091afe --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.test.ProviderTestCase.html @@ -0,0 +1,109 @@ + + + + + + + + + +android.test.ProviderTestCase + + + + + + + + + + +
    +
    +
    +

    +Class android.test.ProviderTestCase +

    +

    Now deprecated.
    + + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.test.TouchUtils.html b/docs/html/sdk/api_diff/3/changes/android.test.TouchUtils.html new file mode 100644 index 000000000000..75f9e5e03e2a --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.test.TouchUtils.html @@ -0,0 +1,362 @@ + + + + + + + + + +android.test.TouchUtils + + + + + + + + + + +
    +
    +
    +

    +Class android.test.TouchUtils +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + void drag(InstrumentationTestCase, float, float, float, float, int) +  
    + + void dragQuarterScreenDown(InstrumentationTestCase, Activity) +  
    + + void dragQuarterScreenUp(InstrumentationTestCase, Activity) +  
    + + int dragViewBy(InstrumentationTestCase, View, int, int, int) +  
    + + int dragViewTo(InstrumentationTestCase, View, int, int, int) +  
    + + void dragViewToBottom(ActivityInstrumentationTestCase, View, int) +  
    + + void dragViewToBottom(InstrumentationTestCase, Activity, View, int) +  
    + + void dragViewToTop(InstrumentationTestCase, View) +  
    + + void dragViewToTop(InstrumentationTestCase, View, int) +  
    + + int dragViewToX(InstrumentationTestCase, View, int, int) +  
    + + int dragViewToY(InstrumentationTestCase, View, int, int) +  
    + + void longClickView(InstrumentationTestCase, View) +  
    + + void scrollToBottom(InstrumentationTestCase, Activity, ViewGroup) +  
    + + void scrollToTop(InstrumentationTestCase, Activity, ViewGroup) +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Methods +
    + + void drag(ActivityInstrumentationTestCase, float, float, float, float, int) + +Now deprecated.
    +
     
    + + void dragQuarterScreenDown(ActivityInstrumentationTestCase) + +Now deprecated.
    +
     
    + + void dragQuarterScreenUp(ActivityInstrumentationTestCase) + +Now deprecated.
    +
     
    + + int dragViewBy(ActivityInstrumentationTestCase, View, int, int, int) + +Now deprecated.
    +
     
    + + int dragViewTo(ActivityInstrumentationTestCase, View, int, int, int) + +Now deprecated.
    +
     
    + + void dragViewToBottom(ActivityInstrumentationTestCase, View) + +Now deprecated.
    +
     
    + + void dragViewToBottom(InstrumentationTestCase, Activity, View) + +Change in signature from (ActivityInstrumentationTestCase, View, int) to (InstrumentationTestCase, Activity, View).
    +
     
    + + void dragViewToTop(ActivityInstrumentationTestCase, View) + +Now deprecated.
    +
     
    + + void dragViewToTop(ActivityInstrumentationTestCase, View, int) + +Now deprecated.
    +
     
    + + int dragViewToX(ActivityInstrumentationTestCase, View, int, int) + +Now deprecated.
    +
     
    + + int dragViewToY(ActivityInstrumentationTestCase, View, int, int) + +Now deprecated.
    +
     
    + + void longClickView(ActivityInstrumentationTestCase, View) + +Now deprecated.
    +
     
    + + void scrollToBottom(ActivityInstrumentationTestCase, ViewGroup) + +Now deprecated.
    +
     
    + + void scrollToTop(ActivityInstrumentationTestCase, ViewGroup) + +Now deprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.test.mock.MockPackageManager.html b/docs/html/sdk/api_diff/3/changes/android.test.mock.MockPackageManager.html new file mode 100644 index 000000000000..8e727f35f6b8 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.test.mock.MockPackageManager.html @@ -0,0 +1,137 @@ + + + + + + + + + +android.test.mock.MockPackageManager + + + + + + + + + + +
    +
    +
    +

    +Class android.test.mock.MockPackageManager +

    + + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + Intent getLaunchIntentForPackage(String) +  
    + + String[] getSystemSharedLibraryNames() +  
    + + boolean isSafeMode() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.test.suitebuilder.TestMethod.html b/docs/html/sdk/api_diff/3/changes/android.test.suitebuilder.TestMethod.html new file mode 100644 index 000000000000..52467f3fbb2f --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.test.suitebuilder.TestMethod.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.test.suitebuilder.TestMethod + + + + + + + + + + +
    +
    +
    +

    +Class android.test.suitebuilder.TestMethod +

    + +

    + + + + + + + + + + + + +
    Added Constructors +
    + + TestMethod(String, Class<TestCase>) +  
    + + TestMethod(TestCase) +  
    +  + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.test.suitebuilder.TestSuiteBuilder.html b/docs/html/sdk/api_diff/3/changes/android.test.suitebuilder.TestSuiteBuilder.html new file mode 100644 index 000000000000..548f473b72f5 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.test.suitebuilder.TestSuiteBuilder.html @@ -0,0 +1,126 @@ + + + + + + + + + +android.test.suitebuilder.TestSuiteBuilder + + + + + + + + + + +
    +
    +
    +

    +Class android.test.suitebuilder.TestSuiteBuilder +

    + + +

    + + + + + + + + + +
    Changed Methods +
    + + TestSuiteBuilder addRequirements(Predicate<TestMethod>) + +Change in signature from void to Predicate<TestMethod>.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.Annotation.html b/docs/html/sdk/api_diff/3/changes/android.text.Annotation.html new file mode 100644 index 000000000000..863f172ffa65 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.Annotation.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.Annotation + + + + + + + + + + +
    +
    +
    +

    +Class android.text.Annotation +

    +

    Added interface android.text.ParcelableSpan.
    + +

    + + + + + + + + +
    Added Constructors +
    + + Annotation(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.AutoText.html b/docs/html/sdk/api_diff/3/changes/android.text.AutoText.html new file mode 100644 index 000000000000..04ef46d33271 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.AutoText.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.text.AutoText + + + + + + + + + + +
    +
    +
    +

    +Class android.text.AutoText +

    + + +

    + + + + + + + + +
    Added Methods +
    + + int getSize(View) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.SpanWatcher.html b/docs/html/sdk/api_diff/3/changes/android.text.SpanWatcher.html new file mode 100644 index 000000000000..fd9943a56ff2 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.SpanWatcher.html @@ -0,0 +1,109 @@ + + + + + + + + + +android.text.SpanWatcher + + + + + + + + + + +
    +
    +
    +

    +Interface android.text.SpanWatcher +

    +

    Added interface android.text.NoCopySpan.
    + + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.Spanned.html b/docs/html/sdk/api_diff/3/changes/android.text.Spanned.html new file mode 100644 index 000000000000..1c861979d671 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.Spanned.html @@ -0,0 +1,137 @@ + + + + + + + + + +android.text.Spanned + + + + + + + + + + +
    +
    +
    +

    +Interface android.text.Spanned +

    + + + +

    + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int SPAN_COMPOSING +  
    + + int SPAN_INTERMEDIATE +  
    + + int SPAN_POINT_MARK_MASK +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.TextUtils.html b/docs/html/sdk/api_diff/3/changes/android.text.TextUtils.html new file mode 100644 index 000000000000..9fc8dae935ee --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.TextUtils.html @@ -0,0 +1,159 @@ + + + + + + + + + +android.text.TextUtils + + + + + + + + + + +
    +
    +
    +

    +Class android.text.TextUtils +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + void dumpSpans(CharSequence, Printer, String) +  
    + + int getCapsMode(CharSequence, int, int) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int CAP_MODE_CHARACTERS +  
    + + int CAP_MODE_SENTENCES +  
    + + int CAP_MODE_WORDS +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.TextWatcher.html b/docs/html/sdk/api_diff/3/changes/android.text.TextWatcher.html new file mode 100644 index 000000000000..a3856f851c10 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.TextWatcher.html @@ -0,0 +1,109 @@ + + + + + + + + + +android.text.TextWatcher + + + + + + + + + + +
    +
    +
    +

    +Interface android.text.TextWatcher +

    +

    Added interface android.text.NoCopySpan.
    + + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.ArrowKeyMovementMethod.html b/docs/html/sdk/api_diff/3/changes/android.text.method.ArrowKeyMovementMethod.html new file mode 100644 index 000000000000..6a1ce5eda080 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.ArrowKeyMovementMethod.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.text.method.ArrowKeyMovementMethod + + + + + + + + + + +
    +
    +
    +

    +Class android.text.method.ArrowKeyMovementMethod +

    + + +

    + + + + + + + + +
    Added Methods +
    + + boolean onKeyOther(TextView, Spannable, KeyEvent) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.BaseKeyListener.html b/docs/html/sdk/api_diff/3/changes/android.text.method.BaseKeyListener.html new file mode 100644 index 000000000000..b8dddc31cea3 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.BaseKeyListener.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.text.method.BaseKeyListener + + + + + + + + + + +
    +
    +
    +

    +Class android.text.method.BaseKeyListener +

    + + +

    + + + + + + + + +
    Added Methods +
    + + boolean onKeyOther(View, Editable, KeyEvent) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.DateKeyListener.html b/docs/html/sdk/api_diff/3/changes/android.text.method.DateKeyListener.html new file mode 100644 index 000000000000..d49752c259cf --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.DateKeyListener.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.text.method.DateKeyListener + + + + + + + + + + +
    +
    +
    +

    +Class android.text.method.DateKeyListener +

    + + +

    + + + + + + + + +
    Added Methods +
    + + int getInputType() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.DateTimeKeyListener.html b/docs/html/sdk/api_diff/3/changes/android.text.method.DateTimeKeyListener.html new file mode 100644 index 000000000000..82734d3833ef --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.DateTimeKeyListener.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.text.method.DateTimeKeyListener + + + + + + + + + + +
    +
    +
    +

    +Class android.text.method.DateTimeKeyListener +

    + + +

    + + + + + + + + +
    Added Methods +
    + + int getInputType() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.DialerKeyListener.html b/docs/html/sdk/api_diff/3/changes/android.text.method.DialerKeyListener.html new file mode 100644 index 000000000000..435e701ed689 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.DialerKeyListener.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.text.method.DialerKeyListener + + + + + + + + + + +
    +
    +
    +

    +Class android.text.method.DialerKeyListener +

    + + +

    + + + + + + + + +
    Added Methods +
    + + int getInputType() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.DigitsKeyListener.html b/docs/html/sdk/api_diff/3/changes/android.text.method.DigitsKeyListener.html new file mode 100644 index 000000000000..f33d5fe695bd --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.DigitsKeyListener.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.text.method.DigitsKeyListener + + + + + + + + + + +
    +
    +
    +

    +Class android.text.method.DigitsKeyListener +

    + + +

    + + + + + + + + +
    Added Methods +
    + + int getInputType() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.KeyListener.html b/docs/html/sdk/api_diff/3/changes/android.text.method.KeyListener.html new file mode 100644 index 000000000000..2b24f03c022d --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.KeyListener.html @@ -0,0 +1,137 @@ + + + + + + + + + +android.text.method.KeyListener + + + + + + + + + + +
    +
    +
    +

    +Interface android.text.method.KeyListener +

    + + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + void clearMetaKeyState(View, Editable, int) +  
    + + int getInputType() +  
    + + boolean onKeyOther(View, Editable, KeyEvent) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.MetaKeyKeyListener.html b/docs/html/sdk/api_diff/3/changes/android.text.method.MetaKeyKeyListener.html new file mode 100644 index 000000000000..ecdedc1edb85 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.MetaKeyKeyListener.html @@ -0,0 +1,186 @@ + + + + + + + + + +android.text.method.MetaKeyKeyListener + + + + + + + + + + +
    +
    +
    +

    +Class android.text.method.MetaKeyKeyListener +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + long adjustMetaAfterKeypress(long) +  
    + + long clearMetaKeyState(long, int) +  
    + + void clearMetaKeyState(View, Editable, int) +  
    + + void clearMetaKeyState(Editable, int) +  
    + + int getMetaState(long) +  
    + + int getMetaState(long, int) +  
    + + long handleKeyDown(long, int, KeyEvent) +  
    + + long handleKeyUp(long, int, KeyEvent) +  
    + + boolean isSelectingMetaTracker(CharSequence, Object) +  
    + + long resetLockedMeta(long) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.MovementMethod.html b/docs/html/sdk/api_diff/3/changes/android.text.method.MovementMethod.html new file mode 100644 index 000000000000..a86dff5fea56 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.MovementMethod.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.text.method.MovementMethod + + + + + + + + + + +
    +
    +
    +

    +Interface android.text.method.MovementMethod +

    + + +

    + + + + + + + + +
    Added Methods +
    + + boolean onKeyOther(TextView, Spannable, KeyEvent) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.MultiTapKeyListener.html b/docs/html/sdk/api_diff/3/changes/android.text.method.MultiTapKeyListener.html new file mode 100644 index 000000000000..b7c2f52694ec --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.MultiTapKeyListener.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.text.method.MultiTapKeyListener + + + + + + + + + + +
    +
    +
    +

    +Class android.text.method.MultiTapKeyListener +

    + + +

    + + + + + + + + +
    Added Methods +
    + + int getInputType() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.QwertyKeyListener.html b/docs/html/sdk/api_diff/3/changes/android.text.method.QwertyKeyListener.html new file mode 100644 index 000000000000..fff86c659b13 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.QwertyKeyListener.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.text.method.QwertyKeyListener + + + + + + + + + + +
    +
    +
    +

    +Class android.text.method.QwertyKeyListener +

    + + +

    + + + + + + + + +
    Added Methods +
    + + int getInputType() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.ScrollingMovementMethod.html b/docs/html/sdk/api_diff/3/changes/android.text.method.ScrollingMovementMethod.html new file mode 100644 index 000000000000..acf5dcd844aa --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.ScrollingMovementMethod.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.text.method.ScrollingMovementMethod + + + + + + + + + + +
    +
    +
    +

    +Class android.text.method.ScrollingMovementMethod +

    + + +

    + + + + + + + + +
    Added Methods +
    + + boolean onKeyOther(TextView, Spannable, KeyEvent) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.TextKeyListener.html b/docs/html/sdk/api_diff/3/changes/android.text.method.TextKeyListener.html new file mode 100644 index 000000000000..f905b3fe75f3 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.TextKeyListener.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.text.method.TextKeyListener + + + + + + + + + + +
    +
    +
    +

    +Class android.text.method.TextKeyListener +

    + + +

    + + + + + + + + +
    Added Methods +
    + + int getInputType() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.TimeKeyListener.html b/docs/html/sdk/api_diff/3/changes/android.text.method.TimeKeyListener.html new file mode 100644 index 000000000000..0545b2fb4266 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.TimeKeyListener.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.text.method.TimeKeyListener + + + + + + + + + + +
    +
    +
    +

    +Class android.text.method.TimeKeyListener +

    + + +

    + + + + + + + + +
    Added Methods +
    + + int getInputType() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.Touch.html b/docs/html/sdk/api_diff/3/changes/android.text.method.Touch.html new file mode 100644 index 000000000000..fd0f64a6a3c8 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.Touch.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.text.method.Touch + + + + + + + + + + +
    +
    +
    +

    +Class android.text.method.Touch +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + int getInitialScrollX(TextView, Spannable) +  
    + + int getInitialScrollY(TextView, Spannable) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.AbsoluteSizeSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.AbsoluteSizeSpan.html new file mode 100644 index 000000000000..32b1098ef891 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.AbsoluteSizeSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.AbsoluteSizeSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.AbsoluteSizeSpan +

    +

    Added interface android.text.ParcelableSpan.
    + +

    + + + + + + + + +
    Added Constructors +
    + + AbsoluteSizeSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.AlignmentSpan.Standard.html b/docs/html/sdk/api_diff/3/changes/android.text.style.AlignmentSpan.Standard.html new file mode 100644 index 000000000000..86b03d47bbfb --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.AlignmentSpan.Standard.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.AlignmentSpan.Standard + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.AlignmentSpan.Standard +

    +

    Added interface android.text.ParcelableSpan.
    + +

    + + + + + + + + +
    Added Constructors +
    + + AlignmentSpan.Standard(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.BackgroundColorSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.BackgroundColorSpan.html new file mode 100644 index 000000000000..b7705aaee5f1 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.BackgroundColorSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.BackgroundColorSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.BackgroundColorSpan +

    +

    Added interfaces android.text.ParcelableSpan, android.text.style.UpdateAppearance.
    + +

    + + + + + + + + +
    Added Constructors +
    + + BackgroundColorSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.BulletSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.BulletSpan.html new file mode 100644 index 000000000000..10f6d2aa0445 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.BulletSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.BulletSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.BulletSpan +

    +

    Added interface android.text.ParcelableSpan.
    + +

    + + + + + + + + +
    Added Constructors +
    + + BulletSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.ClickableSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.ClickableSpan.html new file mode 100644 index 000000000000..0d7fecb93a4d --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.ClickableSpan.html @@ -0,0 +1,109 @@ + + + + + + + + + +android.text.style.ClickableSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.ClickableSpan +

    +

    Added interface android.text.style.UpdateAppearance.
    + + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.DynamicDrawableSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.DynamicDrawableSpan.html new file mode 100644 index 000000000000..2bc83fa5da73 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.DynamicDrawableSpan.html @@ -0,0 +1,167 @@ + + + + + + + + + +android.text.style.DynamicDrawableSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.DynamicDrawableSpan +

    + +

    + + + + + + + + +
    Added Constructors +
    + + DynamicDrawableSpan(int) +  
    +  + +

    + + + + + + + + +
    Added Methods +
    + + int getVerticalAlignment() +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int ALIGN_BASELINE +  
    + + int ALIGN_BOTTOM +  
    + + int mVerticalAlignment +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.ForegroundColorSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.ForegroundColorSpan.html new file mode 100644 index 000000000000..fa483c002d9f --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.ForegroundColorSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.ForegroundColorSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.ForegroundColorSpan +

    +

    Added interfaces android.text.ParcelableSpan, android.text.style.UpdateAppearance.
    + +

    + + + + + + + + +
    Added Constructors +
    + + ForegroundColorSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.ImageSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.ImageSpan.html new file mode 100644 index 000000000000..459e2b7e510c --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.ImageSpan.html @@ -0,0 +1,151 @@ + + + + + + + + + +android.text.style.ImageSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.ImageSpan +

    + +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Constructors +
    + + ImageSpan(Context, Uri, int) +  
    + + ImageSpan(Context, int, int) +  
    + + ImageSpan(Bitmap, int) +  
    + + ImageSpan(Drawable, int) +  
    + + ImageSpan(Drawable, String, int) +  
    +  + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.LeadingMarginSpan.Standard.html b/docs/html/sdk/api_diff/3/changes/android.text.style.LeadingMarginSpan.Standard.html new file mode 100644 index 000000000000..922bcbc607bc --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.LeadingMarginSpan.Standard.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.LeadingMarginSpan.Standard + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.LeadingMarginSpan.Standard +

    +

    Added interface android.text.ParcelableSpan.
    + +

    + + + + + + + + +
    Added Constructors +
    + + LeadingMarginSpan.Standard(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.MaskFilterSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.MaskFilterSpan.html new file mode 100644 index 000000000000..fbd8db93560c --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.MaskFilterSpan.html @@ -0,0 +1,109 @@ + + + + + + + + + +android.text.style.MaskFilterSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.MaskFilterSpan +

    +

    Added interface android.text.style.UpdateAppearance.
    + + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.QuoteSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.QuoteSpan.html new file mode 100644 index 000000000000..334c2233552a --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.QuoteSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.QuoteSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.QuoteSpan +

    +

    Added interface android.text.ParcelableSpan.
    + +

    + + + + + + + + +
    Added Constructors +
    + + QuoteSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.RasterizerSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.RasterizerSpan.html new file mode 100644 index 000000000000..62fb6479f8f7 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.RasterizerSpan.html @@ -0,0 +1,109 @@ + + + + + + + + + +android.text.style.RasterizerSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.RasterizerSpan +

    +

    Added interface android.text.style.UpdateAppearance.
    + + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.RelativeSizeSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.RelativeSizeSpan.html new file mode 100644 index 000000000000..17d97fba524b --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.RelativeSizeSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.RelativeSizeSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.RelativeSizeSpan +

    +

    Added interface android.text.ParcelableSpan.
    + +

    + + + + + + + + +
    Added Constructors +
    + + RelativeSizeSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.ScaleXSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.ScaleXSpan.html new file mode 100644 index 000000000000..ee289f518ff2 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.ScaleXSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.ScaleXSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.ScaleXSpan +

    +

    Added interface android.text.ParcelableSpan.
    + +

    + + + + + + + + +
    Added Constructors +
    + + ScaleXSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.StrikethroughSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.StrikethroughSpan.html new file mode 100644 index 000000000000..f045b964395f --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.StrikethroughSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.StrikethroughSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.StrikethroughSpan +

    +

    Added interfaces android.text.ParcelableSpan, android.text.style.UpdateAppearance.
    + +

    + + + + + + + + +
    Added Constructors +
    + + StrikethroughSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.StyleSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.StyleSpan.html new file mode 100644 index 000000000000..fcc16080d017 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.StyleSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.StyleSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.StyleSpan +

    +

    Added interface android.text.ParcelableSpan.
    + +

    + + + + + + + + +
    Added Constructors +
    + + StyleSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.SubscriptSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.SubscriptSpan.html new file mode 100644 index 000000000000..ec3d56242b15 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.SubscriptSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.SubscriptSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.SubscriptSpan +

    +

    Added interface android.text.ParcelableSpan.
    + +

    + + + + + + + + +
    Added Constructors +
    + + SubscriptSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.SuperscriptSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.SuperscriptSpan.html new file mode 100644 index 000000000000..853be697af24 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.SuperscriptSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.SuperscriptSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.SuperscriptSpan +

    +

    Added interface android.text.ParcelableSpan.
    + +

    + + + + + + + + +
    Added Constructors +
    + + SuperscriptSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.TextAppearanceSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.TextAppearanceSpan.html new file mode 100644 index 000000000000..719e68f0ce14 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.TextAppearanceSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.TextAppearanceSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.TextAppearanceSpan +

    +

    Added interface android.text.ParcelableSpan.
    + +

    + + + + + + + + +
    Added Constructors +
    + + TextAppearanceSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.TypefaceSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.TypefaceSpan.html new file mode 100644 index 000000000000..01b74e73408e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.TypefaceSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.TypefaceSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.TypefaceSpan +

    +

    Added interface android.text.ParcelableSpan.
    + +

    + + + + + + + + +
    Added Constructors +
    + + TypefaceSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.URLSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.URLSpan.html new file mode 100644 index 000000000000..2a659a4e35c0 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.URLSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.URLSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.URLSpan +

    +

    Added interface android.text.ParcelableSpan.
    + +

    + + + + + + + + +
    Added Constructors +
    + + URLSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.UnderlineSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.UnderlineSpan.html new file mode 100644 index 000000000000..6c596a03da91 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.UnderlineSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.UnderlineSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.UnderlineSpan +

    +

    Added interfaces android.text.ParcelableSpan, android.text.style.UpdateAppearance.
    + +

    + + + + + + + + +
    Added Constructors +
    + + UnderlineSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.UpdateLayout.html b/docs/html/sdk/api_diff/3/changes/android.text.style.UpdateLayout.html new file mode 100644 index 000000000000..4cca7b433476 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.UpdateLayout.html @@ -0,0 +1,109 @@ + + + + + + + + + +android.text.style.UpdateLayout + + + + + + + + + + +
    +
    +
    +

    +Interface android.text.style.UpdateLayout +

    +

    Added interface android.text.style.UpdateAppearance.
    + + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.util.SparseIntArray.html b/docs/html/sdk/api_diff/3/changes/android.util.SparseIntArray.html new file mode 100644 index 000000000000..5657765133fd --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.util.SparseIntArray.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.util.SparseIntArray + + + + + + + + + + +
    +
    +
    +

    +Class android.util.SparseIntArray +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void removeAt(int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.util.TimeUtils.html b/docs/html/sdk/api_diff/3/changes/android.util.TimeUtils.html new file mode 100644 index 000000000000..3317fae27bb3 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.util.TimeUtils.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.util.TimeUtils + + + + + + + + + + +
    +
    +
    +

    +Class android.util.TimeUtils +

    + + +

    + + + + + + + + +
    Added Methods +
    + + String getTimeZoneDatabaseVersion() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.GestureDetector.SimpleOnGestureListener.html b/docs/html/sdk/api_diff/3/changes/android.view.GestureDetector.SimpleOnGestureListener.html new file mode 100644 index 000000000000..0e00c6047a5e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.GestureDetector.SimpleOnGestureListener.html @@ -0,0 +1,138 @@ + + + + + + + + + +android.view.GestureDetector.SimpleOnGestureListener + + + + + + + + + + +
    +
    +
    +

    +Class android.view.GestureDetector.SimpleOnGestureListener +

    +

    Added interface android.view.GestureDetector.OnDoubleTapListener.
    + + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + boolean onDoubleTap(MotionEvent) +  
    + + boolean onDoubleTapEvent(MotionEvent) +  
    + + boolean onSingleTapConfirmed(MotionEvent) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.GestureDetector.html b/docs/html/sdk/api_diff/3/changes/android.view.GestureDetector.html new file mode 100644 index 000000000000..dec5a4d9da9a --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.GestureDetector.html @@ -0,0 +1,173 @@ + + + + + + + + + +android.view.GestureDetector + + + + + + + + + + +
    +
    +
    +

    +Class android.view.GestureDetector +

    + +

    + + + + + + + + + + + + +
    Added Constructors +
    + + GestureDetector(Context, OnGestureListener) +  
    + + GestureDetector(Context, OnGestureListener, Handler) +  
    +  +

    + + + + + + + + + + + + + + +
    Changed Constructors +
    + + GestureDetector(OnGestureListener) + +Now deprecated.
    +
     
    + + GestureDetector(OnGestureListener, Handler) + +Now deprecated.
    +
     
    +  + +

    + + + + + + + + +
    Added Methods +
    + + void setOnDoubleTapListener(OnDoubleTapListener) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.Gravity.html b/docs/html/sdk/api_diff/3/changes/android.view.Gravity.html new file mode 100644 index 000000000000..1aa10d3682fb --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.Gravity.html @@ -0,0 +1,166 @@ + + + + + + + + + +android.view.Gravity + + + + + + + + + + +
    +
    +
    +

    +Class android.view.Gravity +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void applyDisplay(int, Rect, Rect) +  
    +  + +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int AXIS_CLIP +  
    + + int CLIP_HORIZONTAL +  
    + + int CLIP_VERTICAL +  
    + + int DISPLAY_CLIP_HORIZONTAL +  
    + + int DISPLAY_CLIP_VERTICAL +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.KeyCharacterMap.html b/docs/html/sdk/api_diff/3/changes/android.view.KeyCharacterMap.html new file mode 100644 index 000000000000..7a409cbe1308 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.KeyCharacterMap.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.view.KeyCharacterMap + + + + + + + + + + +
    +
    +
    +

    +Class android.view.KeyCharacterMap +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + boolean deviceHasKey(int) +  
    + + boolean[] deviceHasKeys(int[]) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.KeyEvent.html b/docs/html/sdk/api_diff/3/changes/android.view.KeyEvent.html new file mode 100644 index 000000000000..bf3ec6b22e01 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.KeyEvent.html @@ -0,0 +1,275 @@ + + + + + + + + + +android.view.KeyEvent + + + + + + + + + + +
    +
    +
    +

    +Class android.view.KeyEvent +

    + +

    + + + + + + + + + + + + +
    Added Constructors +
    + + KeyEvent(KeyEvent) +  
    + + KeyEvent(long, String, int, int) +  
    +  + +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + KeyEvent changeAction(KeyEvent, int) +  
    + + KeyEvent changeFlags(KeyEvent, int) +  
    + + KeyEvent changeTimeRepeat(KeyEvent, long, int) +  
    + + String getCharacters() +  
    + + int getMaxKeyCode() +  
    +  + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int FLAG_EDITOR_ACTION +  
    + + int FLAG_FROM_SYSTEM +  
    + + int FLAG_KEEP_TOUCH_MODE +  
    + + int FLAG_SOFT_KEYBOARD +  
    + + int KEYCODE_MEDIA_FAST_FORWARD +  
    + + int KEYCODE_MEDIA_NEXT +  
    + + int KEYCODE_MEDIA_PLAY_PAUSE +  
    + + int KEYCODE_MEDIA_PREVIOUS +  
    + + int KEYCODE_MEDIA_REWIND +  
    + + int KEYCODE_MEDIA_STOP +  
    + + int KEYCODE_MUTE +  
    +  +

    + + + + + + + + + +
    Changed Fields +
    + + int MAX_KEYCODE +Now deprecated.
    +
     
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.Menu.html b/docs/html/sdk/api_diff/3/changes/android.view.Menu.html new file mode 100644 index 000000000000..09b910a42688 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.Menu.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.view.Menu + + + + + + + + + + +
    +
    +
    +

    +Interface android.view.Menu +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + void close() +  
    + + MenuItem getItem(int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.MotionEvent.html b/docs/html/sdk/api_diff/3/changes/android.view.MotionEvent.html new file mode 100644 index 000000000000..5291df778213 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.MotionEvent.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.view.MotionEvent + + + + + + + + + + +
    +
    +
    +

    +Class android.view.MotionEvent +

    + + + +

    + + + + + + + + +
    Added Fields +
    + + int ACTION_OUTSIDE +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.OrientationListener.html b/docs/html/sdk/api_diff/3/changes/android.view.OrientationListener.html new file mode 100644 index 000000000000..ac58489da46a --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.OrientationListener.html @@ -0,0 +1,124 @@ + + + + + + + + + +android.view.OrientationListener + + + + + + + + + + +
    +
    +
    +

    +Class android.view.OrientationListener +

    +

    Now deprecated.
    + +

    + + + + + + + + +
    Added Constructors +
    + + OrientationListener(Context, int) +  
    +  + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.View.html b/docs/html/sdk/api_diff/3/changes/android.view.View.html new file mode 100644 index 000000000000..ccd58a9d2c8a --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.View.html @@ -0,0 +1,257 @@ + + + + + + + + + +android.view.View + + + + + + + + + + +
    +
    +
    +

    +Class android.view.View +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + boolean checkInputConnectionProxy(View) +  
    + + boolean dispatchKeyEventPreIme(KeyEvent) +  
    + + void getWindowVisibleDisplayFrame(Rect) +  
    + + boolean isHapticFeedbackEnabled() +  
    + + boolean isInEditMode() +  
    + + boolean onCheckIsTextEditor() +  
    + + InputConnection onCreateInputConnection(EditorInfo) +  
    + + void onFinishTemporaryDetach() +  
    + + boolean onKeyPreIme(int, KeyEvent) +  
    + + void onStartTemporaryDetach() +  
    + + boolean performHapticFeedback(int) +  
    + + boolean performHapticFeedback(int, int) +  
    + + void setHapticFeedbackEnabled(boolean) +  
    + + void setScrollContainer(boolean) +  
    +  +

    + + + + + + + + + + + + + + +
    Changed Methods +
    + + Handler getHandler() + +Change of visibility from protected to public.
    +
     
    + + void playSoundEffect(int) + +Change of visibility from protected to public.
    +
     
    +  + +

    + + + + + + + + +
    Added Fields +
    + + int HAPTIC_FEEDBACK_ENABLED +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.ViewConfiguration.html b/docs/html/sdk/api_diff/3/changes/android.view.ViewConfiguration.html new file mode 100644 index 000000000000..0bf487c289d7 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.ViewConfiguration.html @@ -0,0 +1,282 @@ + + + + + + + + + +android.view.ViewConfiguration + + + + + + + + + + +
    +
    +
    +

    +Class android.view.ViewConfiguration +

    + +

    + + + + + + + + + +
    Changed Constructors +
    + + ViewConfiguration() + +Now deprecated.
    +
     
    +  + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + ViewConfiguration get(Context) +  
    + + int getDoubleTapTimeout() +  
    + + int getScaledDoubleTapSlop() +  
    + + int getScaledEdgeSlop() +  
    + + int getScaledFadingEdgeLength() +  
    + + int getScaledMaximumDrawingCacheSize() +  
    + + int getScaledMinimumFlingVelocity() +  
    + + int getScaledScrollBarSize() +  
    + + int getScaledTouchSlop() +  
    + + int getScaledWindowTouchSlop() +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Methods +
    + + int getEdgeSlop() + +Now deprecated.
    +
     
    + + int getFadingEdgeLength() + +Now deprecated.
    +
     
    + + int getMaximumDrawingCacheSize() + +Now deprecated.
    +
     
    + + int getMinimumFlingVelocity() + +Now deprecated.
    +
     
    + + int getScrollBarSize() + +Now deprecated.
    +
     
    + + int getTouchSlop() + +Now deprecated.
    +
     
    + + int getWindowTouchSlop() + +Now deprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.ViewDebug.html b/docs/html/sdk/api_diff/3/changes/android.view.ViewDebug.html new file mode 100644 index 000000000000..17c0c8a34ebe --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.ViewDebug.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.view.ViewDebug + + + + + + + + + + +
    +
    +
    +

    +Class android.view.ViewDebug +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void dumpCapturedView(String, Object) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.ViewGroup.html b/docs/html/sdk/api_diff/3/changes/android.view.ViewGroup.html new file mode 100644 index 000000000000..589f266ff2cf --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.ViewGroup.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.view.ViewGroup + + + + + + + + + + +
    +
    +
    +

    +Class android.view.ViewGroup +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void setStaticTransformationsEnabled(boolean) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.ViewParent.html b/docs/html/sdk/api_diff/3/changes/android.view.ViewParent.html new file mode 100644 index 000000000000..536e7e95c4fd --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.ViewParent.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.view.ViewParent + + + + + + + + + + +
    +
    +
    +

    +Interface android.view.ViewParent +

    + + +

    + + + + + + + + +
    Added Methods +
    + + boolean requestChildRectangleOnScreen(View, Rect, boolean) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.ViewTreeObserver.html b/docs/html/sdk/api_diff/3/changes/android.view.ViewTreeObserver.html new file mode 100644 index 000000000000..41753a737d44 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.ViewTreeObserver.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.view.ViewTreeObserver + + + + + + + + + + +
    +
    +
    +

    +Class android.view.ViewTreeObserver +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + void addOnScrollChangedListener(OnScrollChangedListener) +  
    + + void removeOnScrollChangedListener(OnScrollChangedListener) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.Window.html b/docs/html/sdk/api_diff/3/changes/android.view.Window.html new file mode 100644 index 000000000000..d84eb2b11810 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.Window.html @@ -0,0 +1,137 @@ + + + + + + + + + +android.view.Window + + + + + + + + + + +
    +
    +
    +

    +Class android.view.Window +

    + + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + boolean hasSoftInputMode() +  
    + + void setSoftInputMode(int) +  
    + + void setWindowAnimations(int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.WindowManager.LayoutParams.html b/docs/html/sdk/api_diff/3/changes/android.view.WindowManager.LayoutParams.html new file mode 100644 index 000000000000..7304b0ea7876 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.WindowManager.LayoutParams.html @@ -0,0 +1,292 @@ + + + + + + + + + +android.view.WindowManager.LayoutParams + + + + + + + + + + +
    +
    +
    +

    +Class android.view.WindowManager.LayoutParams +

    + + +

    + + + + + + + + +
    Added Methods +
    + + boolean mayUseInputMethod(int) +  
    +  + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int FLAG_ALT_FOCUSABLE_IM +  
    + + int FLAG_WATCH_OUTSIDE_TOUCH +  
    + + int SCREEN_BRIGHTNESS_CHANGED +  
    + + int SCREEN_ORIENTATION_CHANGED +  
    + + int SOFT_INPUT_ADJUST_PAN +  
    + + int SOFT_INPUT_ADJUST_RESIZE +  
    + + int SOFT_INPUT_ADJUST_UNSPECIFIED +  
    + + int SOFT_INPUT_IS_FORWARD_NAVIGATION +  
    + + int SOFT_INPUT_MASK_ADJUST +  
    + + int SOFT_INPUT_MASK_STATE +  
    + + int SOFT_INPUT_MODE_CHANGED +  
    + + int SOFT_INPUT_STATE_ALWAYS_HIDDEN +  
    + + int SOFT_INPUT_STATE_ALWAYS_VISIBLE +  
    + + int SOFT_INPUT_STATE_HIDDEN +  
    + + int SOFT_INPUT_STATE_UNCHANGED +  
    + + int SOFT_INPUT_STATE_UNSPECIFIED +  
    + + int SOFT_INPUT_STATE_VISIBLE +  
    + + int TYPE_APPLICATION_ATTACHED_DIALOG +  
    + + int TYPE_INPUT_METHOD +  
    + + int TYPE_INPUT_METHOD_DIALOG +  
    + + float screenBrightness +  
    + + int screenOrientation +  
    + + int softInputMode +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.animation.Animation.html b/docs/html/sdk/api_diff/3/changes/android.view.animation.Animation.html new file mode 100644 index 000000000000..9cdf434cb74e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.animation.Animation.html @@ -0,0 +1,138 @@ + + + + + + + + + +android.view.animation.Animation + + + + + + + + + + +
    +
    +
    +

    +Class android.view.animation.Animation +

    +

    Added interface java.lang.Cloneable.
    + + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + long computeDurationHint() +  
    + + boolean isFillEnabled() +  
    + + void setFillEnabled(boolean) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.animation.Transformation.html b/docs/html/sdk/api_diff/3/changes/android.view.animation.Transformation.html new file mode 100644 index 000000000000..8c5cbf55cf32 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.animation.Transformation.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.view.animation.Transformation + + + + + + + + + + +
    +
    +
    +

    +Class android.view.animation.Transformation +

    + + +

    + + + + + + + + +
    Added Methods +
    + + String toShortString() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.webkit.URLUtil.html b/docs/html/sdk/api_diff/3/changes/android.webkit.URLUtil.html new file mode 100644 index 000000000000..cff874168f2d --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.webkit.URLUtil.html @@ -0,0 +1,126 @@ + + + + + + + + + +android.webkit.URLUtil + + + + + + + + + + +
    +
    +
    +

    +Class android.webkit.URLUtil +

    + + +

    + + + + + + + + + +
    Changed Methods +
    + + boolean isCookielessProxyUrl(String) + +Now deprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.webkit.UrlInterceptHandler.html b/docs/html/sdk/api_diff/3/changes/android.webkit.UrlInterceptHandler.html new file mode 100644 index 000000000000..8664bc6e18f7 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.webkit.UrlInterceptHandler.html @@ -0,0 +1,141 @@ + + + + + + + + + +android.webkit.UrlInterceptHandler + + + + + + + + + + +
    +
    +
    +

    +Interface android.webkit.UrlInterceptHandler +

    + + +

    + + + + + + + + +
    Added Methods +
    + + PluginData getPluginData(String, Map<String, String>) +  
    +  +

    + + + + + + + + + +
    Changed Methods +
    + + CacheResult service(String, Map<String, String>) + +Now deprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.webkit.UrlInterceptRegistry.html b/docs/html/sdk/api_diff/3/changes/android.webkit.UrlInterceptRegistry.html new file mode 100644 index 000000000000..09d11496ddf4 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.webkit.UrlInterceptRegistry.html @@ -0,0 +1,141 @@ + + + + + + + + + +android.webkit.UrlInterceptRegistry + + + + + + + + + + +
    +
    +
    +

    +Class android.webkit.UrlInterceptRegistry +

    + + +

    + + + + + + + + +
    Added Methods +
    + + PluginData getPluginData(String, Map<String, String>) +  
    +  +

    + + + + + + + + + +
    Changed Methods +
    + + CacheResult getSurrogate(String, Map<String, String>) + +Now deprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.webkit.WebHistoryItem.html b/docs/html/sdk/api_diff/3/changes/android.webkit.WebHistoryItem.html new file mode 100644 index 000000000000..10140196bb07 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.webkit.WebHistoryItem.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.webkit.WebHistoryItem + + + + + + + + + + +
    +
    +
    +

    +Class android.webkit.WebHistoryItem +

    + + +

    + + + + + + + + +
    Added Methods +
    + + String getOriginalUrl() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.webkit.WebSettings.html b/docs/html/sdk/api_diff/3/changes/android.webkit.WebSettings.html new file mode 100644 index 000000000000..eb421cf63ad7 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.webkit.WebSettings.html @@ -0,0 +1,186 @@ + + + + + + + + + +android.webkit.WebSettings + + + + + + + + + + +
    +
    +
    +

    +Class android.webkit.WebSettings +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + boolean getAllowFileAccess() +  
    + + boolean getBuiltInZoomControls() +  
    + + String getUserAgentString() +  
    + + void setAllowFileAccess(boolean) +  
    + + void setBuiltInZoomControls(boolean) +  
    + + void setUserAgentString(String) +  
    +  +

    + + + + + + + + + + + + + + +
    Changed Methods +
    + + int getUserAgent() + +Now deprecated.
    +
     
    + + void setUserAgent(int) + +Now deprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.webkit.WebView.html b/docs/html/sdk/api_diff/3/changes/android.webkit.WebView.html new file mode 100644 index 000000000000..cd721c8fdfff --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.webkit.WebView.html @@ -0,0 +1,193 @@ + + + + + + + + + +android.webkit.WebView + + + + + + + + + + +
    +
    +
    +

    +Class android.webkit.WebView +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + void clearMatches() +  
    + + int findAll(String) +  
    + + void findNext(boolean) +  
    + + String getOriginalUrl() +  
    + + boolean restorePicture(Bundle, File) +  
    + + boolean savePicture(Bundle, File) +  
    + + void setNetworkAvailable(boolean) +  
    +  +

    + + + + + + + + + + + + + + +
    Changed Methods +
    + + View getZoomControls() + +Now deprecated.
    +
     
    + + void onGlobalFocusChanged(View, View) + +Now deprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.AbsListView.html b/docs/html/sdk/api_diff/3/changes/android.widget.AbsListView.html new file mode 100644 index 000000000000..6d1ed3535a44 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.AbsListView.html @@ -0,0 +1,151 @@ + + + + + + + + + +android.widget.AbsListView + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.AbsListView +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + CharSequence getTextFilter() +  
    + + boolean isFastScrollEnabled() +  
    + + boolean isSmoothScrollbarEnabled() +  
    + + void setFastScrollEnabled(boolean) +  
    + + void setSmoothScrollbarEnabled(boolean) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.AbsSeekBar.html b/docs/html/sdk/api_diff/3/changes/android.widget.AbsSeekBar.html new file mode 100644 index 000000000000..128b31f182e9 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.AbsSeekBar.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.widget.AbsSeekBar + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.AbsSeekBar +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + int getKeyProgressIncrement() +  
    + + void setKeyProgressIncrement(int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.AbsoluteLayout.html b/docs/html/sdk/api_diff/3/changes/android.widget.AbsoluteLayout.html new file mode 100644 index 000000000000..77025f08c08e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.AbsoluteLayout.html @@ -0,0 +1,109 @@ + + + + + + + + + +android.widget.AbsoluteLayout + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.AbsoluteLayout +

    +

    Now deprecated.
    + + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.ArrayAdapter.html b/docs/html/sdk/api_diff/3/changes/android.widget.ArrayAdapter.html new file mode 100644 index 000000000000..0beed263f3fb --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.ArrayAdapter.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.widget.ArrayAdapter + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.ArrayAdapter +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void sort(Comparator<? super T>) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.AutoCompleteTextView.html b/docs/html/sdk/api_diff/3/changes/android.widget.AutoCompleteTextView.html new file mode 100644 index 000000000000..a6e89e41b564 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.AutoCompleteTextView.html @@ -0,0 +1,214 @@ + + + + + + + + + +android.widget.AutoCompleteTextView + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.AutoCompleteTextView +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + void clearListSelection() +  
    + + int getDropDownAnchor() +  
    + + int getDropDownWidth() +  
    + + int getListSelection() +  
    + + OnItemClickListener getOnItemClickListener() +  
    + + OnItemSelectedListener getOnItemSelectedListener() +  
    + + boolean isPerformingCompletion() +  
    + + void setDropDownAnchor(int) +  
    + + void setDropDownWidth(int) +  
    + + void setListSelection(int) +  
    +  +

    + + + + + + + + + + + + + + +
    Changed Methods +
    + + OnItemClickListener getItemClickListener() + +Now deprecated.
    +
     
    + + OnItemSelectedListener getItemSelectedListener() + +Now deprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.Chronometer.html b/docs/html/sdk/api_diff/3/changes/android.widget.Chronometer.html new file mode 100644 index 000000000000..2a82a201933a --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.Chronometer.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.widget.Chronometer + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.Chronometer +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + OnChronometerTickListener getOnChronometerTickListener() +  
    + + void setOnChronometerTickListener(OnChronometerTickListener) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.CursorAdapter.html b/docs/html/sdk/api_diff/3/changes/android.widget.CursorAdapter.html new file mode 100644 index 000000000000..0a890300efd1 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.CursorAdapter.html @@ -0,0 +1,161 @@ + + + + + + + + + +android.widget.CursorAdapter + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.CursorAdapter +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void onContentChanged() +  
    +  +

    + + + + + + + + + + + + + + + + + + + +
    Changed Methods +
    + + int getCount() + +Change from final to non-final.
    +
     
    + + Object getItem(int) + +Change from final to non-final.
    +
     
    + + long getItemId(int) + +Change from final to non-final.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.GridView.html b/docs/html/sdk/api_diff/3/changes/android.widget.GridView.html new file mode 100644 index 000000000000..86e019ba9ce0 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.GridView.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.widget.GridView + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.GridView +

    + + + +

    + + + + + + + + +
    Added Fields +
    + + int STRETCH_SPACING_UNIFORM +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.ListView.html b/docs/html/sdk/api_diff/3/changes/android.widget.ListView.html new file mode 100644 index 000000000000..ecaf3096e598 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.ListView.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.widget.ListView + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.ListView +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + void setFooterDividersEnabled(boolean) +  
    + + void setHeaderDividersEnabled(boolean) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.PopupWindow.OnDismissListener.html b/docs/html/sdk/api_diff/3/changes/android.widget.PopupWindow.OnDismissListener.html new file mode 100644 index 000000000000..2e08886708b9 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.PopupWindow.OnDismissListener.html @@ -0,0 +1,109 @@ + + + + + + + + + +android.widget.PopupWindow.OnDismissListener + + + + + + + + + + +
    +
    +
    +

    +Interface android.widget.PopupWindow.OnDismissListener +

    +

    Change of visibility from to public.
    + + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.PopupWindow.html b/docs/html/sdk/api_diff/3/changes/android.widget.PopupWindow.html new file mode 100644 index 000000000000..b3a33037a77e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.PopupWindow.html @@ -0,0 +1,243 @@ + + + + + + + + + +android.widget.PopupWindow + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.PopupWindow +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int getInputMethodMode() +  
    + + int getMaxAvailableHeight(View, int) +  
    + + boolean isAboveAnchor() +  
    + + boolean isClippingEnabled() +  
    + + boolean isOutsideTouchable() +  
    + + boolean isTouchable() +  
    + + void setClippingEnabled(boolean) +  
    + + void setInputMethodMode(int) +  
    + + void setOutsideTouchable(boolean) +  
    + + void setTouchInterceptor(OnTouchListener) +  
    + + void setTouchable(boolean) +  
    + + void setWindowLayoutMode(int, int) +  
    + + void update() +  
    + + void update(int, int, int, int, boolean) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int INPUT_METHOD_FROM_FOCUSABLE +  
    + + int INPUT_METHOD_NEEDED +  
    + + int INPUT_METHOD_NOT_NEEDED +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.ProgressBar.html b/docs/html/sdk/api_diff/3/changes/android.widget.ProgressBar.html new file mode 100644 index 000000000000..eea94f2b5e04 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.ProgressBar.html @@ -0,0 +1,136 @@ + + + + + + + + + +android.widget.ProgressBar + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.ProgressBar +

    + + +

    + + + + + + + + + + + + + + +
    Changed Methods +
    + + void onRestoreInstanceState(Parcelable) + +Method was inherited from android.view.View, but is now defined locally. Change of visibility from protected to public.
    +
     
    + + Parcelable onSaveInstanceState() + +Method was inherited from android.view.View, but is now defined locally. Change of visibility from protected to public.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.RemoteViews.ActionException.html b/docs/html/sdk/api_diff/3/changes/android.widget.RemoteViews.ActionException.html new file mode 100644 index 000000000000..c2f5c9623291 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.RemoteViews.ActionException.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.widget.RemoteViews.ActionException + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.RemoteViews.ActionException +

    + +

    + + + + + + + + +
    Added Constructors +
    + + RemoteViews.ActionException(Exception) +  
    +  + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.RemoteViews.html b/docs/html/sdk/api_diff/3/changes/android.widget.RemoteViews.html new file mode 100644 index 000000000000..ef8eb0826080 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.RemoteViews.html @@ -0,0 +1,221 @@ + + + + + + + + + +android.widget.RemoteViews + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.RemoteViews +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + void setBitmap(int, String, Bitmap) +  
    + + void setBoolean(int, String, boolean) +  
    + + void setByte(int, String, byte) +  
    + + void setChar(int, String, char) +  
    + + void setCharSequence(int, String, CharSequence) +  
    + + void setDouble(int, String, double) +  
    + + void setFloat(int, String, float) +  
    + + void setImageViewBitmap(int, Bitmap) +  
    + + void setInt(int, String, int) +  
    + + void setLong(int, String, long) +  
    + + void setOnClickPendingIntent(int, PendingIntent) +  
    + + void setShort(int, String, short) +  
    + + void setString(int, String, String) +  
    + + void setTextColor(int, int) +  
    + + void setUri(int, String, Uri) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.ResourceCursorAdapter.html b/docs/html/sdk/api_diff/3/changes/android.widget.ResourceCursorAdapter.html new file mode 100644 index 000000000000..cee8f59b3d29 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.ResourceCursorAdapter.html @@ -0,0 +1,138 @@ + + + + + + + + + +android.widget.ResourceCursorAdapter + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.ResourceCursorAdapter +

    + +

    + + + + + + + + +
    Added Constructors +
    + + ResourceCursorAdapter(Context, int, Cursor, boolean) +  
    +  + +

    + + + + + + + + +
    Added Methods +
    + + void setViewResource(int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.Scroller.html b/docs/html/sdk/api_diff/3/changes/android.widget.Scroller.html new file mode 100644 index 000000000000..e5b524df6658 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.Scroller.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.widget.Scroller + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.Scroller +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + int getStartX() +  
    + + int getStartY() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.SimpleCursorAdapter.html b/docs/html/sdk/api_diff/3/changes/android.widget.SimpleCursorAdapter.html new file mode 100644 index 000000000000..63b7b132902c --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.SimpleCursorAdapter.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.widget.SimpleCursorAdapter + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.SimpleCursorAdapter +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void changeCursorAndColumns(Cursor, String[], int[]) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.TextView.html b/docs/html/sdk/api_diff/3/changes/android.widget.TextView.html new file mode 100644 index 000000000000..42ecdc9f58fa --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.TextView.html @@ -0,0 +1,333 @@ + + + + + + + + + +android.widget.TextView + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.TextView +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + void beginBatchEdit() +  
    + + boolean bringPointIntoView(int) +  
    + + void clearComposingText() +  
    + + boolean didTouchFocusSelect() +  
    + + void endBatchEdit() +  
    + + boolean extractText(ExtractedTextRequest, ExtractedText) +  
    + + Editable getEditableText() +  
    + + int getImeActionId() +  
    + + CharSequence getImeActionLabel() +  
    + + int getImeOptions() +  
    + + Bundle getInputExtras(boolean) +  
    + + int getInputType() +  
    + + String getPrivateImeOptions() +  
    + + boolean isInputMethodTarget() +  
    + + boolean moveCursorToVisibleOffset() +  
    + + void onBeginBatchEdit() +  
    + + void onCommitCompletion(CompletionInfo) +  
    + + void onEditorAction(int) +  
    + + void onEndBatchEdit() +  
    + + boolean onPrivateIMECommand(String, Bundle) +  
    + + void onSelectionChanged(int, int) +  
    + + boolean onTextContextMenuItem(int) +  
    + + void setCompoundDrawablesWithIntrinsicBounds(int, int, int, int) +  
    + + void setExtractedText(ExtractedText) +  
    + + void setImeActionLabel(CharSequence, int) +  
    + + void setImeOptions(int) +  
    + + void setInputExtras(int) +  
    + + void setInputType(int) +  
    + + void setOnEditorActionListener(OnEditorActionListener) +  
    + + void setPrivateImeOptions(String) +  
    + + void setRawInputType(int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/changes-summary.html b/docs/html/sdk/api_diff/3/changes/changes-summary.html new file mode 100644 index 000000000000..bf52a9658076 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/changes-summary.html @@ -0,0 +1,451 @@ + + + + + + + + + +Android API Differences Report + + + + + + + + + + +
    +
    +
    +
    +

    Android API Differences Report

    +

    This report details the changes in the core Android framework API between two API Level +specifications. It shows additions, modifications, and removals for packages, classes, methods, and fields. +The report also includes general statistics that characterize the extent and type of the differences.

    +

    This report is based a comparison of the Android API specifications +whose API Level identifiers are given in the upper-right corner of this page. It compares a +newer "to" API to an older "from" API, noting all changes relative to the +older API. So, for example, API elements marked as removed are no longer present in the "to" +API specification.

    +

    To navigate the report, use the "Select a Diffs Index" and "Filter the Index" +controls on the left. The report uses text formatting to indicate interface names, +links to reference documentation, and links to change +description. The statistics are accessible from the "Statistics" link in the upper-right corner.

    +

    For more information about the Android framework API and SDK, +see the Android Developers site.

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Packages +
    + + android.appwidget +  
    + + android.inputmethodservice +  
    + + android.speech +  
    + + android.text.format +  
    + + android.view.inputmethod +  
    + + java.beans +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Packages +
    + + android +  
    + + android.app +  
    + + android.content +  
    + + android.content.pm +  
    + + android.content.res +  
    + + android.database +  
    + + android.database.sqlite +  
    + + android.graphics +  
    + + android.graphics.drawable +  
    + + android.graphics.drawable.shapes +  
    + + android.hardware +  
    + + android.location +  
    + + android.media +  
    + + android.net +  
    + + android.net.wifi +  
    + + android.opengl +  
    + + android.os +  
    + + android.preference +  
    + + android.provider +  
    + + android.telephony +  
    + + android.telephony.gsm +  
    + + android.test +  
    + + android.test.mock +  
    + + android.test.suitebuilder +  
    + + android.text +  
    + + android.text.method +  
    + + android.text.style +  
    + + android.util +  
    + + android.view +  
    + + android.view.animation +  
    + + android.webkit +  
    + + android.widget +  
    + + dalvik.system +  
    + + java.lang +  
    + + java.lang.reflect +  
    + + java.net +  
    + + java.util +  
    + + java.util.jar +  
    + + java.util.logging +  
    +  + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/classes_index_additions.html b/docs/html/sdk/api_diff/3/changes/classes_index_additions.html new file mode 100644 index 000000000000..32a68e3117fd --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/classes_index_additions.html @@ -0,0 +1,469 @@ + + + + + + + + + +Class Additions Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Classes +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + +
    A  +C +D +G +H +I +J +L +M +N +O +P +R +S +T +U +V + TOP +

    +ActivityInstrumentationTestCase2
    +ActivityManager.RunningAppProcessInfo
    +AlphabetIndexer
    +AssetFileDescriptor.AutoCloseInputStream
    +AssetFileDescriptor.AutoCloseOutputStream
    +AsyncTask
    +AsyncTask.Status
    +AudioFormat
    +AudioRecord
    +AudioRecord.OnRecordPositionUpdateListener
    +AudioTrack
    +AudioTrack.OnPlaybackPositionUpdateListener
    + +
    C  +A +D +G +H +I +J +L +M +N +O +P +R +S +T +U +V + TOP +

    +Chronometer.OnChronometerTickListener
    +ConfigurationInfo
    + +
    D  +A +C +G +H +I +J +L +M +N +O +P +R +S +T +U +V + TOP +

    +DexClassLoader
    + +
    G  +A +C +D +H +I +J +L +M +N +O +P +R +S +T +U +V + TOP +

    +GeomagneticField
    +GestureDetector.OnDoubleTapListener
    +GLSurfaceView
    +GLSurfaceView.EGLConfigChooser
    +GLSurfaceView.GLWrapper
    +GLSurfaceView.Renderer
    +GpsSatellite
    +GpsStatus
    +GpsStatus.Listener
    + +
    H  +A +C +D +G +I +J +L +M +N +O +P +R +S +T +U +V + TOP +

    +Handler.Callback
    +HapticFeedbackConstants
    +HorizontalScrollView
    + +
    I  +A +C +D +G +H +J +L +M +N +O +P +R +S +T +U +V + TOP +

    +InputType
    +IntentService
    + +
    J  +A +C +D +G +H +I +L +M +N +O +P +R +S +T +U +V + TOP +

    +JetPlayer
    +JetPlayer.OnJetEventListener
    + +
    L  +A +C +D +G +H +I +J +M +N +O +P +R +S +T +U +V + TOP +

    +LauncherActivity.IconResizer
    +LauncherActivity.ListItem
    +LiveFolders
    + +
    M  +A +C +D +G +H +I +J +L +N +O +P +R +S +T +U +V + TOP +

    +MediaPlayer.OnInfoListener
    +MediaPlayer.OnVideoSizeChangedListener
    +MediaRecorder.OnErrorListener
    +MediaRecorder.OnInfoListener
    +MediaRecorder.VideoEncoder
    +MediaRecorder.VideoSource
    + +
    N  +A +C +D +G +H +I +J +L +M +O +P +R +S +T +U +V + TOP +

    +NeighboringCellInfo
    +NoCopySpan
    +NoCopySpan.Concrete
    + +
    O  +A +C +D +G +H +I +J +L +M +N +P +R +S +T +U +V + TOP +

    +OrientationEventListener
    + +
    P  +A +C +D +G +H +I +J +L +M +N +O +R +S +T +U +V + TOP +

    +ParcelableSpan
    +PluginData
    +PrintStreamPrinter
    +ProviderTestCase2
    + +
    R  +A +C +D +G +H +I +J +L +M +N +O +P +S +T +U +V + TOP +

    +R.bool
    +R.integer
    +ResultReceiver
    + +
    S  +A +C +D +G +H +I +J +L +M +N +O +P +R +T +U +V + TOP +

    +SectionIndexer
    +Sensor
    +SensorEvent
    +SensorEventListener
    +Settings.Secure
    +SlidingDrawer
    +SlidingDrawer.OnDrawerCloseListener
    +SlidingDrawer.OnDrawerOpenListener
    +SlidingDrawer.OnDrawerScrollListener
    + +
    T  +A +C +D +G +H +I +J +L +M +N +O +P +R +S +U +V + TOP +

    +TextView.OnEditorActionListener
    + +
    U  +A +C +D +G +H +I +J +L +M +N +O +P +R +S +T +V + TOP +

    +UpdateAppearance
    +UserDictionary
    +UserDictionary.Words
    + +
    V  +A +C +D +G +H +I +J +L +M +N +O +P +R +S +T +U + TOP +

    +ViewDebug.CapturedViewProperty
    +ViewTreeObserver.OnScrollChangedListener
    +Visibility
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/classes_index_all.html b/docs/html/sdk/api_diff/3/changes/classes_index_all.html new file mode 100644 index 000000000000..5815c29ca5a5 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/classes_index_all.html @@ -0,0 +1,963 @@ + + + + + + + + + +Class Differences Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +Classes +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + +
    A  +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +AbsListView
    +AbsoluteLayout
    +AbsoluteSizeSpan
    +AbsSeekBar
    +Activity
    +ActivityInfo
    +ActivityInstrumentationTestCase
    +ActivityInstrumentationTestCase2
    +ActivityManager
    +ActivityManager.RunningAppProcessInfo
    +AlarmManager
    +AlertDialog
    +AlignmentSpan.Standard
    +AlphabetIndexer
    +Animation
    +Annotation
    +ArrayAdapter
    +ArrowKeyMovementMethod
    +AssetFileDescriptor
    +AssetFileDescriptor.AutoCloseInputStream
    +AssetFileDescriptor.AutoCloseOutputStream
    +AsyncTask
    +AsyncTask.Status
    +AudioFormat
    +AudioManager
    +AudioRecord
    +AudioRecord.OnRecordPositionUpdateListener
    +AudioTrack
    +AudioTrack.OnPlaybackPositionUpdateListener
    +AutoCompleteTextView
    +AutoText
    + +
    B  +A +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +BackgroundColorSpan
    +BaseKeyListener
    +Binder
    +Bitmap
    +BroadcastReceiver
    +Browser
    +Build
    +BulletSpan
    + +
    C  +A +B +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +Camera
    +Canvas
    +Character.UnicodeBlock
    +Chronometer
    +Chronometer.OnChronometerTickListener
    +Class
    +ClickableSpan
    +Configuration
    +ConfigurationInfo
    +ConnectivityManager
    +Contacts.Intents
    +Contacts.Intents.Insert
    +Contacts.PeopleColumns
    +ContentProvider
    +ContentResolver
    +Context
    +Cursor
    +CursorAdapter
    +CursorWrapper
    + +
    D  +A +B +C +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +DatabaseUtils
    +Date
    +DateKeyListener
    +DateTimeKeyListener
    +Debug
    +DexClassLoader
    +DexFile
    +DialerKeyListener
    +DialogInterface
    +DialogPreference
    +DigitsKeyListener
    +Drawable
    +DynamicDrawableSpan
    + +
    E  +A +B +C +D +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +Environment
    + +
    F  +A +B +C +D +E +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +ForegroundColorSpan
    + +
    G  +A +B +C +D +E +F +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +GeomagneticField
    +GestureDetector
    +GestureDetector.OnDoubleTapListener
    +GestureDetector.SimpleOnGestureListener
    +GLSurfaceView
    +GLSurfaceView.EGLConfigChooser
    +GLSurfaceView.GLWrapper
    +GLSurfaceView.Renderer
    +GpsSatellite
    +GpsStatus
    +GpsStatus.Listener
    +Gravity
    +GridView
    + +
    H  +A +B +C +D +E +F +G +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +Handler
    +Handler.Callback
    +HapticFeedbackConstants
    +HorizontalScrollView
    + +
    I  +A +B +C +D +E +F +G +H +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +IBinder
    +ImageSpan
    +InputType
    +Instrumentation
    +InstrumentationTestCase
    +Intent
    +IntentService
    + +
    J  +A +B +C +D +E +F +G +H +I +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +JetPlayer
    +JetPlayer.OnJetEventListener
    + +
    K  +A +B +C +D +E +F +G +H +I +J +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +KeyCharacterMap
    +KeyEvent
    +KeyListener
    + +
    L  +A +B +C +D +E +F +G +H +I +J +K +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +LauncherActivity
    +LauncherActivity.IconResizer
    +LauncherActivity.ListItem
    +LeadingMarginSpan.Standard
    +Level
    +ListView
    +LiveFolders
    +Location
    +LocationManager
    +LogManager
    +Looper
    + +
    M  +A +B +C +D +E +F +G +H +I +J +K +L +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +Manifest.permission
    +MaskFilterSpan
    +MediaPlayer
    +MediaPlayer.OnInfoListener
    +MediaPlayer.OnVideoSizeChangedListener
    +MediaRecorder
    +MediaRecorder.OnErrorListener
    +MediaRecorder.OnInfoListener
    +MediaRecorder.OutputFormat
    +MediaRecorder.VideoEncoder
    +MediaRecorder.VideoSource
    +MediaStore
    +MediaStore.Audio.AlbumColumns
    +MediaStore.Audio.Media
    +MediaStore.Images.Media
    +MediaStore.Video
    +MediaStore.Video.VideoColumns
    +Menu
    +MetaKeyKeyListener
    +MockPackageManager
    +MotionEvent
    +MovementMethod
    +MultiTapKeyListener
    + +
    N  +A +B +C +D +E +F +G +H +I +J +K +L +M +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +NeighboringCellInfo
    +NetworkInfo
    +NoCopySpan
    +NoCopySpan.Concrete
    + +
    O  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +P +Q +R +S +T +U +V +W +Z + TOP +

    +OrientationEventListener
    +OrientationListener
    + +
    P  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +Q +R +S +T +U +V +W +Z + TOP +

    +Pack200.Packer
    +Pack200.Unpacker
    +PackageInfo
    +PackageManager
    +Parcel
    +ParcelableSpan
    +ParcelFileDescriptor
    +PendingIntent
    +PhoneNumberUtils
    +PluginData
    +PopupWindow
    +PopupWindow.OnDismissListener
    +PrintStreamPrinter
    +ProgressBar
    +ProviderTestCase
    +ProviderTestCase2
    +Proxy
    + +
    Q  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +R +S +T +U +V +W +Z + TOP +

    +QuoteSpan
    +QwertyKeyListener
    + +
    R  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +S +T +U +V +W +Z + TOP +

    +R.attr
    +R.bool
    +R.drawable
    +R.id
    +R.integer
    +R.string
    +R.style
    +RasterizerSpan
    +Rect
    +RectF
    +RelativeSizeSpan
    +RemoteViews
    +RemoteViews.ActionException
    +ResourceCursorAdapter
    +Resources
    +ResultReceiver
    +RingtoneManager
    +RotateDrawable
    + +
    S  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +T +U +V +W +Z + TOP +

    +ScaleDrawable
    +ScaleXSpan
    +Scroller
    +ScrollingMovementMethod
    +SectionIndexer
    +Sensor
    +SensorEvent
    +SensorEventListener
    +SensorListener
    +SensorManager
    +Settings
    +Settings.Secure
    +Settings.System
    +Shape
    +SimpleCursorAdapter
    +SlidingDrawer
    +SlidingDrawer.OnDrawerCloseListener
    +SlidingDrawer.OnDrawerOpenListener
    +SlidingDrawer.OnDrawerScrollListener
    +SmsMessage
    +Socket
    +SoundPool
    +Spanned
    +SpanWatcher
    +SparseIntArray
    +SQLiteDatabase
    +StrikethroughSpan
    +String
    +StyleSpan
    +SubscriptSpan
    +SuperscriptSpan
    + +
    T  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +U +V +W +Z + TOP +

    +TelephonyManager
    +TestMethod
    +TestSuiteBuilder
    +TextAppearanceSpan
    +TextKeyListener
    +TextUtils
    +TextView
    +TextView.OnEditorActionListener
    +TextWatcher
    +TimeKeyListener
    +TimeUtils
    +Touch
    +TouchUtils
    +Transformation
    +TransitionDrawable
    +TypedArray
    +TypefaceSpan
    + +
    U  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +V +W +Z + TOP +

    +UnderlineSpan
    +UpdateAppearance
    +UpdateLayout
    +UrlInterceptHandler
    +UrlInterceptRegistry
    +URLSpan
    +URLUtil
    +UserDictionary
    +UserDictionary.Words
    + +
    V  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +W +Z + TOP +

    +View
    +ViewConfiguration
    +ViewDebug
    +ViewDebug.CapturedViewProperty
    +ViewGroup
    +ViewParent
    +ViewTreeObserver
    +ViewTreeObserver.OnScrollChangedListener
    +Visibility
    +VMDebug
    + +
    W  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +Z + TOP +

    +WebHistoryItem
    +WebSettings
    +WebView
    +WifiManager
    +Window
    +WindowManager.LayoutParams
    + +
    Z  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W + TOP +

    +Zygote
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/classes_index_changes.html b/docs/html/sdk/api_diff/3/changes/classes_index_changes.html new file mode 100644 index 000000000000..58d4edcbc8a7 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/classes_index_changes.html @@ -0,0 +1,846 @@ + + + + + + + + + +Class Changes Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Classes +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + +
    A  +B +C +D +E +F +G +H +I +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +AbsListView
    +AbsoluteLayout
    +AbsoluteSizeSpan
    +AbsSeekBar
    +Activity
    +ActivityInfo
    +ActivityInstrumentationTestCase
    +ActivityManager
    +AlarmManager
    +AlertDialog
    +AlignmentSpan.Standard
    +Animation
    +Annotation
    +ArrayAdapter
    +ArrowKeyMovementMethod
    +AssetFileDescriptor
    +AudioManager
    +AutoCompleteTextView
    +AutoText
    + +
    B  +A +C +D +E +F +G +H +I +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +BackgroundColorSpan
    +BaseKeyListener
    +Binder
    +Bitmap
    +BroadcastReceiver
    +Browser
    +Build
    +BulletSpan
    + +
    C  +A +B +D +E +F +G +H +I +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +Camera
    +Canvas
    +Character.UnicodeBlock
    +Chronometer
    +Class
    +ClickableSpan
    +Configuration
    +ConnectivityManager
    +Contacts.Intents
    +Contacts.Intents.Insert
    +Contacts.PeopleColumns
    +ContentProvider
    +ContentResolver
    +Context
    +Cursor
    +CursorAdapter
    +CursorWrapper
    + +
    D  +A +B +C +E +F +G +H +I +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +DatabaseUtils
    +Date
    +DateKeyListener
    +DateTimeKeyListener
    +Debug
    +DexFile
    +DialerKeyListener
    +DialogInterface
    +DialogPreference
    +DigitsKeyListener
    +Drawable
    +DynamicDrawableSpan
    + +
    E  +A +B +C +D +F +G +H +I +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +Environment
    + +
    F  +A +B +C +D +E +G +H +I +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +ForegroundColorSpan
    + +
    G  +A +B +C +D +E +F +H +I +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +GestureDetector
    +GestureDetector.SimpleOnGestureListener
    +Gravity
    +GridView
    + +
    H  +A +B +C +D +E +F +G +I +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +Handler
    + +
    I  +A +B +C +D +E +F +G +H +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +IBinder
    +ImageSpan
    +Instrumentation
    +InstrumentationTestCase
    +Intent
    + +
    K  +A +B +C +D +E +F +G +H +I +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +KeyCharacterMap
    +KeyEvent
    +KeyListener
    + +
    L  +A +B +C +D +E +F +G +H +I +K +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +LauncherActivity
    +LeadingMarginSpan.Standard
    +Level
    +ListView
    +Location
    +LocationManager
    +LogManager
    +Looper
    + +
    M  +A +B +C +D +E +F +G +H +I +K +L +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +Manifest.permission
    +MaskFilterSpan
    +MediaPlayer
    +MediaRecorder
    +MediaRecorder.OutputFormat
    +MediaStore
    +MediaStore.Audio.AlbumColumns
    +MediaStore.Audio.Media
    +MediaStore.Images.Media
    +MediaStore.Video
    +MediaStore.Video.VideoColumns
    +Menu
    +MetaKeyKeyListener
    +MockPackageManager
    +MotionEvent
    +MovementMethod
    +MultiTapKeyListener
    + +
    N  +A +B +C +D +E +F +G +H +I +K +L +M +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +NetworkInfo
    + +
    O  +A +B +C +D +E +F +G +H +I +K +L +M +N +P +Q +R +S +T +U +V +W +Z + TOP +

    +OrientationListener
    + +
    P  +A +B +C +D +E +F +G +H +I +K +L +M +N +O +Q +R +S +T +U +V +W +Z + TOP +

    +Pack200.Packer
    +Pack200.Unpacker
    +PackageInfo
    +PackageManager
    +Parcel
    +ParcelFileDescriptor
    +PendingIntent
    +PhoneNumberUtils
    +PopupWindow
    +PopupWindow.OnDismissListener
    +ProgressBar
    +ProviderTestCase
    +Proxy
    + +
    Q  +A +B +C +D +E +F +G +H +I +K +L +M +N +O +P +R +S +T +U +V +W +Z + TOP +

    +QuoteSpan
    +QwertyKeyListener
    + +
    R  +A +B +C +D +E +F +G +H +I +K +L +M +N +O +P +Q +S +T +U +V +W +Z + TOP +

    +R.attr
    +R.drawable
    +R.id
    +R.string
    +R.style
    +RasterizerSpan
    +Rect
    +RectF
    +RelativeSizeSpan
    +RemoteViews
    +RemoteViews.ActionException
    +ResourceCursorAdapter
    +Resources
    +RingtoneManager
    +RotateDrawable
    + +
    S  +A +B +C +D +E +F +G +H +I +K +L +M +N +O +P +Q +R +T +U +V +W +Z + TOP +

    +ScaleDrawable
    +ScaleXSpan
    +Scroller
    +ScrollingMovementMethod
    +SensorListener
    +SensorManager
    +Settings
    +Settings.System
    +Shape
    +SimpleCursorAdapter
    +SmsMessage
    +Socket
    +SoundPool
    +Spanned
    +SpanWatcher
    +SparseIntArray
    +SQLiteDatabase
    +StrikethroughSpan
    +String
    +StyleSpan
    +SubscriptSpan
    +SuperscriptSpan
    + +
    T  +A +B +C +D +E +F +G +H +I +K +L +M +N +O +P +Q +R +S +U +V +W +Z + TOP +

    +TelephonyManager
    +TestMethod
    +TestSuiteBuilder
    +TextAppearanceSpan
    +TextKeyListener
    +TextUtils
    +TextView
    +TextWatcher
    +TimeKeyListener
    +TimeUtils
    +Touch
    +TouchUtils
    +Transformation
    +TransitionDrawable
    +TypedArray
    +TypefaceSpan
    + +
    U  +A +B +C +D +E +F +G +H +I +K +L +M +N +O +P +Q +R +S +T +V +W +Z + TOP +

    +UnderlineSpan
    +UpdateLayout
    +UrlInterceptHandler
    +UrlInterceptRegistry
    +URLSpan
    +URLUtil
    + +
    V  +A +B +C +D +E +F +G +H +I +K +L +M +N +O +P +Q +R +S +T +U +W +Z + TOP +

    +View
    +ViewConfiguration
    +ViewDebug
    +ViewGroup
    +ViewParent
    +ViewTreeObserver
    +VMDebug
    + +
    W  +A +B +C +D +E +F +G +H +I +K +L +M +N +O +P +Q +R +S +T +U +V +Z + TOP +

    +WebHistoryItem
    +WebSettings
    +WebView
    +WifiManager
    +Window
    +WindowManager.LayoutParams
    + +
    Z  +A +B +C +D +E +F +G +H +I +K +L +M +N +O +P +Q +R +S +T +U +V +W + TOP +

    +Zygote
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/classes_index_removals.html b/docs/html/sdk/api_diff/3/changes/classes_index_removals.html new file mode 100644 index 000000000000..bc5e2e821957 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/classes_index_removals.html @@ -0,0 +1,62 @@ + + + + + + + + + +Class Removals Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Classes +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/constructors_index_additions.html b/docs/html/sdk/api_diff/3/changes/constructors_index_additions.html new file mode 100644 index 000000000000..0dff7fe55a96 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/constructors_index_additions.html @@ -0,0 +1,409 @@ + + + + + + + + + +Constructor Additions Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Constructors +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + +
    A  +B +D +F +G +H +I +K +L +O +Q +R +S +T +U + TOP +

    +AbsoluteSizeSpan +(Parcel) constructor
    +AlignmentSpan.Standard +(Parcel) constructor
    +Annotation +(Parcel) constructor
    + +
    B  +A +D +F +G +H +I +K +L +O +Q +R +S +T +U + TOP +

    +BackgroundColorSpan +(Parcel) constructor
    +BulletSpan +(Parcel) constructor
    + +
    D  +A +B +F +G +H +I +K +L +O +Q +R +S +T +U + TOP +

    +DynamicDrawableSpan +(int) constructor
    + +
    F  +A +B +D +G +H +I +K +L +O +Q +R +S +T +U + TOP +

    +ForegroundColorSpan +(Parcel) constructor
    + +
    G  +A +B +D +F +H +I +K +L +O +Q +R +S +T +U + TOP +

    +GestureDetector
    +  GestureDetector +(Context, OnGestureListener) constructor
    +  GestureDetector +(Context, OnGestureListener, Handler) constructor
    + +
    H  +A +B +D +F +G +I +K +L +O +Q +R +S +T +U + TOP +

    +Handler
    +  Handler +(Callback) constructor
    +  Handler +(Looper, Callback) constructor
    + +
    I  +A +B +D +F +G +H +K +L +O +Q +R +S +T +U + TOP +

    +ImageSpan
    +  ImageSpan +(Context, Uri, int) constructor
    +  ImageSpan +(Context, int, int) constructor
    +  ImageSpan +(Bitmap, int) constructor
    +  ImageSpan +(Drawable, int) constructor
    +  ImageSpan +(Drawable, String, int) constructor
    + +
    K  +A +B +D +F +G +H +I +L +O +Q +R +S +T +U + TOP +

    +KeyEvent
    +  KeyEvent +(KeyEvent) constructor
    +  KeyEvent +(long, String, int, int) constructor
    + +
    L  +A +B +D +F +G +H +I +K +O +Q +R +S +T +U + TOP +

    +LeadingMarginSpan.Standard +(Parcel) constructor
    + +
    O  +A +B +D +F +G +H +I +K +L +Q +R +S +T +U + TOP +

    +OrientationListener +(Context, int) constructor
    + +
    Q  +A +B +D +F +G +H +I +K +L +O +R +S +T +U + TOP +

    +QuoteSpan +(Parcel) constructor
    + +
    R  +A +B +D +F +G +H +I +K +L +O +Q +S +T +U + TOP +

    +RelativeSizeSpan +(Parcel) constructor
    +RemoteViews.ActionException +(Exception) constructor
    +ResourceCursorAdapter +(Context, int, Cursor, boolean) constructor
    + +
    S  +A +B +D +F +G +H +I +K +L +O +Q +R +T +U + TOP +

    +ScaleXSpan +(Parcel) constructor
    +StrikethroughSpan +(Parcel) constructor
    +StyleSpan +(Parcel) constructor
    +SubscriptSpan +(Parcel) constructor
    +SuperscriptSpan +(Parcel) constructor
    + +
    T  +A +B +D +F +G +H +I +K +L +O +Q +R +S +U + TOP +

    +TestMethod
    +  TestMethod +(String, Class<TestCase>) constructor
    +  TestMethod +(TestCase) constructor
    +TextAppearanceSpan +(Parcel) constructor
    +TransitionDrawable +(Drawable[]) constructor
    +TypefaceSpan +(Parcel) constructor
    + +
    U  +A +B +D +F +G +H +I +K +L +O +Q +R +S +T + TOP +

    +UnderlineSpan +(Parcel) constructor
    +URLSpan +(Parcel) constructor
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/constructors_index_all.html b/docs/html/sdk/api_diff/3/changes/constructors_index_all.html new file mode 100644 index 000000000000..49ad673c48aa --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/constructors_index_all.html @@ -0,0 +1,514 @@ + + + + + + + + + +Constructor Differences Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +Constructors +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + +
    A  +B +D +F +G +H +I +K +L +N +O +Q +R +S +T +U +V + TOP +

    +AbsoluteSizeSpan +(Parcel) constructor
    +AlignmentSpan.Standard +(Parcel) constructor
    +Annotation +(Parcel) constructor
    + +
    B  +A +D +F +G +H +I +K +L +N +O +Q +R +S +T +U +V + TOP +

    +BackgroundColorSpan +(Parcel) constructor
    +BulletSpan +(Parcel) constructor
    + +
    D  +A +B +F +G +H +I +K +L +N +O +Q +R +S +T +U +V + TOP +

    +Date
    +  Date +() constructor
    +  Date +(int, int, int, int, int, int) constructor
    +DynamicDrawableSpan +(int) constructor
    + +
    F  +A +B +D +G +H +I +K +L +N +O +Q +R +S +T +U +V + TOP +

    +ForegroundColorSpan +(Parcel) constructor
    + +
    G  +A +B +D +F +H +I +K +L +N +O +Q +R +S +T +U +V + TOP +

    +GestureDetector
    +  GestureDetector +(Context, OnGestureListener) constructor
    +  GestureDetector +(Context, OnGestureListener, Handler) constructor
    +  GestureDetector +(OnGestureListener) constructor
    +  GestureDetector +(OnGestureListener, Handler) constructor
    + +
    H  +A +B +D +F +G +I +K +L +N +O +Q +R +S +T +U +V + TOP +

    +Handler
    +  Handler +(Callback) constructor
    +  Handler +(Looper, Callback) constructor
    + +
    I  +A +B +D +F +G +H +K +L +N +O +Q +R +S +T +U +V + TOP +

    +ImageSpan
    +  ImageSpan +(Context, Uri, int) constructor
    +  ImageSpan +(Context, int, int) constructor
    +  ImageSpan +(Bitmap, int) constructor
    +  ImageSpan +(Drawable, int) constructor
    +  ImageSpan +(Drawable, String, int) constructor
    + +
    K  +A +B +D +F +G +H +I +L +N +O +Q +R +S +T +U +V + TOP +

    +KeyEvent
    +  KeyEvent +(KeyEvent) constructor
    +  KeyEvent +(long, String, int, int) constructor
    + +
    L  +A +B +D +F +G +H +I +K +N +O +Q +R +S +T +U +V + TOP +

    +LeadingMarginSpan.Standard +(Parcel) constructor
    + +
    N  +A +B +D +F +G +H +I +K +L +O +Q +R +S +T +U +V + TOP +

    +NetworkInfo +(int) constructor
    + +
    O  +A +B +D +F +G +H +I +K +L +N +Q +R +S +T +U +V + TOP +

    +OrientationListener +(Context, int) constructor
    + +
    Q  +A +B +D +F +G +H +I +K +L +N +O +R +S +T +U +V + TOP +

    +QuoteSpan +(Parcel) constructor
    + +
    R  +A +B +D +F +G +H +I +K +L +N +O +Q +S +T +U +V + TOP +

    +RelativeSizeSpan +(Parcel) constructor
    +RemoteViews.ActionException +(Exception) constructor
    +ResourceCursorAdapter +(Context, int, Cursor, boolean) constructor
    + +
    S  +A +B +D +F +G +H +I +K +L +N +O +Q +R +T +U +V + TOP +

    +ScaleXSpan +(Parcel) constructor
    +Socket
    +  Socket +() constructor
    +  Socket +(String, int) constructor
    +  Socket +(String, int, InetAddress, int) constructor
    +  Socket +(Proxy) constructor
    +  Socket +(SocketImpl) constructor
    +StrikethroughSpan +(Parcel) constructor
    +String
    +  String +() constructor
    +  String +(byte[]) constructor
    +  String +(byte[], int) constructor
    +  String +(byte[], int, int) constructor
    +  String +(byte[], int, int, int) constructor
    +StyleSpan +(Parcel) constructor
    +SubscriptSpan +(Parcel) constructor
    +SuperscriptSpan +(Parcel) constructor
    + +
    T  +A +B +D +F +G +H +I +K +L +N +O +Q +R +S +U +V + TOP +

    +TestMethod
    +  TestMethod +(String, Class<TestCase>) constructor
    +  TestMethod +(TestCase) constructor
    +TextAppearanceSpan +(Parcel) constructor
    +TransitionDrawable +(Drawable[]) constructor
    +TypefaceSpan +(Parcel) constructor
    + +
    U  +A +B +D +F +G +H +I +K +L +N +O +Q +R +S +T +V + TOP +

    +UnderlineSpan +(Parcel) constructor
    +URLSpan +(Parcel) constructor
    + +
    V  +A +B +D +F +G +H +I +K +L +N +O +Q +R +S +T +U + TOP +

    +ViewConfiguration +() constructor
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/constructors_index_changes.html b/docs/html/sdk/api_diff/3/changes/constructors_index_changes.html new file mode 100644 index 000000000000..8ea3eec7b034 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/constructors_index_changes.html @@ -0,0 +1,124 @@ + + + + + + + + + +Constructor Changes Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Constructors +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + +
    D  +G +S +V + TOP +

    +Date
    +  Date +() constructor
    +  Date +(int, int, int, int, int, int) constructor
    + +
    G  +D +S +V + TOP +

    +GestureDetector
    +  GestureDetector +(OnGestureListener) constructor
    +  GestureDetector +(OnGestureListener, Handler) constructor
    + +
    S  +D +G +V + TOP +

    +Socket
    +  Socket +() constructor
    +  Socket +(String, int) constructor
    +  Socket +(String, int, InetAddress, int) constructor
    +  Socket +(Proxy) constructor
    +  Socket +(SocketImpl) constructor
    +String
    +  String +() constructor
    +  String +(byte[]) constructor
    +  String +(byte[], int) constructor
    +  String +(byte[], int, int) constructor
    +  String +(byte[], int, int, int) constructor
    + +
    V  +D +G +S + TOP +

    +ViewConfiguration +() constructor
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/constructors_index_removals.html b/docs/html/sdk/api_diff/3/changes/constructors_index_removals.html new file mode 100644 index 000000000000..8e591c1e3fd5 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/constructors_index_removals.html @@ -0,0 +1,68 @@ + + + + + + + + + +Constructor Removals Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Constructors +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + +
    N  + TOP +

    +NetworkInfo +(int) constructor
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/dalvik.system.DexFile.html b/docs/html/sdk/api_diff/3/changes/dalvik.system.DexFile.html new file mode 100644 index 000000000000..ef3937c0a195 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/dalvik.system.DexFile.html @@ -0,0 +1,123 @@ + + + + + + + + + +dalvik.system.DexFile + + + + + + + + + + +
    +
    +
    +

    +Class dalvik.system.DexFile +

    + + +

    + + + + + + + + +
    Added Methods +
    + + DexFile loadDex(String, String, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/dalvik.system.VMDebug.html b/docs/html/sdk/api_diff/3/changes/dalvik.system.VMDebug.html new file mode 100644 index 000000000000..c7ee90942566 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/dalvik.system.VMDebug.html @@ -0,0 +1,130 @@ + + + + + + + + + +dalvik.system.VMDebug + + + + + + + + + + +
    +
    +
    +

    +Class dalvik.system.VMDebug +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + void dumpHprofData(String) +  
    + + boolean isDebuggingEnabled() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/dalvik.system.Zygote.html b/docs/html/sdk/api_diff/3/changes/dalvik.system.Zygote.html new file mode 100644 index 000000000000..d26e9e64abe2 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/dalvik.system.Zygote.html @@ -0,0 +1,187 @@ + + + + + + + + + +dalvik.system.Zygote + + + + + + + + + + +
    +
    +
    +

    +Class dalvik.system.Zygote +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + int forkAndSpecialize(int, int, int[], int, int[][]) +  
    + + int forkSystemServer(int, int, int[], int, int[][]) +  
    +  +

    + + + + + + + + + + + + + + +
    Changed Methods +
    + + int forkAndSpecialize(int, int, int[], boolean, int[][]) + +Now deprecated.
    +
     
    + + int forkSystemServer(int, int, int[], boolean, int[][]) + +Now deprecated.
    +
     
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int DEBUG_ENABLE_ASSERT +  
    + + int DEBUG_ENABLE_CHECKJNI +  
    + + int DEBUG_ENABLE_DEBUGGER +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/fields_index_additions.html b/docs/html/sdk/api_diff/3/changes/fields_index_additions.html new file mode 100644 index 000000000000..c2c3b494595c --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/fields_index_additions.html @@ -0,0 +1,1129 @@ + + + + + + + + + +Field Additions Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Fields +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + +
    A  +B +C +D +E +F +G +H +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +ACCELEROMETER_ROTATION +
    +ACTION_AIRPLANE_MODE_SETTINGS +
    +ACTION_APPLICATION_DEVELOPMENT_SETTINGS +
    +ACTION_AUDIO_BECOMING_NOISY +
    +ACTION_BACKGROUND_DATA_SETTING_CHANGED +
    +ACTION_DATA_ROAMING_SETTINGS +
    +ACTION_IMAGE_CAPTURE +
    +ACTION_INPUT_METHOD_CHANGED +
    +ACTION_INPUT_METHOD_SETTINGS +
    +ACTION_INTERNAL_STORAGE_SETTINGS +
    +ACTION_MANAGE_APPLICATIONS_SETTINGS +
    +ACTION_MEDIA_CHECKING +
    +ACTION_MEDIA_NOFS +
    +ACTION_MEMORY_CARD_SETTINGS +
    +ACTION_NETWORK_OPERATOR_SETTINGS +
    +ACTION_OUTSIDE +
    +ACTION_PACKAGE_DATA_CLEARED +
    +ACTION_PACKAGE_REPLACED +
    +ACTION_PHONE_STATE_CHANGED +
    +ACTION_QUICK_LAUNCH_SETTINGS +
    +ACTION_SEARCH_LONG_PRESS +
    +ACTION_SYNC_SETTINGS +
    +ACTION_SYSTEM_TUTORIAL +
    +ACTION_USER_DICTIONARY_SETTINGS +
    +ACTION_USER_PRESENT +
    +ACTION_VIDEO_CAPTURE +
    +ACTION_WIFI_IP_SETTINGS +
    +addToDictionary +
    +ALIGN_BASELINE +
    +ALIGN_BOTTOM +
    +allowSingleTap +
    +animateOnClick +
    +AXIS_CLIP +
    +AXIS_MINUS_X +
    +AXIS_MINUS_Y +
    +AXIS_MINUS_Z +
    +AXIS_X +
    +AXIS_Y +
    +AXIS_Z +
    + +
    B  +A +C +D +E +F +G +H +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +backgroundDimEnabled +
    +BIND_APPWIDGET +
    +BIND_INPUT_METHOD +
    +BOOKMARK +
    +bottomOffset +
    +BUCKET_DISPLAY_NAME +
    +BUCKET_ID +
    +BUTTON_NEGATIVE +
    +BUTTON_NEUTRAL +
    +BUTTON_POSITIVE +
    + +
    C  +A +B +D +E +F +G +H +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +candidatesArea +
    +candidatesTextStyleSpans +
    +CAP_MODE_CHARACTERS +
    +CAP_MODE_SENTENCES +
    +CAP_MODE_WORDS +
    +CATEGORY_INFO +
    +CLIP_HORIZONTAL +
    +CLIP_VERTICAL +
    +closeButton +
    +codes +
    +configPreferences +
    +configure +
    +content +
    +copy +
    +copyUrl +
    +CREATOR
    + in  +android.content.res.AssetFileDescriptor +
    + in  +android.graphics.RectF +
    +cut +
    + +
    D  +A +B +C +E +F +G +H +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +dark_header +
    +DEBUG_ENABLE_ASSERT +
    +DEBUG_ENABLE_CHECKJNI +
    +DEBUG_ENABLE_DEBUGGER +
    +dialog_alert_title +
    +DISPLAY +
    +DISPLAY_CLIP_HORIZONTAL +
    +DISPLAY_CLIP_VERTICAL +
    +dropDownAnchor +
    +dropDownWidth +
    + +
    E  +A +B +C +D +F +G +H +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +editorExtras +
    +EXTRA_APPLICATION_ID +
    +EXTRA_CREATE_DESCRIPTION +
    +EXTRA_DATA_REMOVED +
    +EXTRA_FINISH_ON_COMPLETION +
    +EXTRA_FORCE_CREATE +
    +EXTRA_INCOMING_NUMBER +
    +EXTRA_MAX_BYTES +
    +EXTRA_MEDIA_ALBUM +
    +EXTRA_MEDIA_ARTIST +
    +EXTRA_MEDIA_FOCUS +
    +EXTRA_MEDIA_TITLE +
    +EXTRA_OUTPUT +
    +EXTRA_REPLACING +
    +EXTRA_SCREEN_ORIENTATION +
    +EXTRA_STATE +
    +EXTRA_STATE_IDLE +
    +EXTRA_STATE_OFFHOOK +
    +EXTRA_STATE_RINGING +
    +EXTRA_VIDEO_QUALITY +
    +extractArea +
    + +
    F  +A +B +C +D +E +G +H +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +fastScrollEnabled +
    +fillEnabled +
    +FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET +
    +FLAG_ACTIVITY_NO_USER_ACTION +
    +FLAG_ACTIVITY_REORDER_TO_FRONT +
    +FLAG_ALT_FOCUSABLE_IM +
    +FLAG_EDITOR_ACTION +
    +FLAG_FROM_SYSTEM +
    +FLAG_KEEP_TOUCH_MODE +
    +FLAG_NO_HISTORY +
    +FLAG_SOFT_KEYBOARD +
    +FLAG_UPDATE_CURRENT +
    +FLAG_WATCH_OUTSIDE_TOUCH +
    +footerDividersEnabled +
    +FORMAT_JAPAN +
    +FX_KEYPRESS_DELETE +
    +FX_KEYPRESS_RETURN +
    +FX_KEYPRESS_SPACEBAR +
    +FX_KEYPRESS_STANDARD +
    + +
    G  +A +B +C +D +E +F +H +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +GET_CONFIGURATIONS +
    +GET_UNINSTALLED_PACKAGES +
    + +
    H  +A +B +C +D +E +F +G +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +handle +
    +HAPTIC_FEEDBACK_ENABLED
    + in  +android.provider.Settings.System +
    + in  +android.view.View +
    +hapticFeedbackEnabled +
    +hardKeyboardHidden +
    +HARDKEYBOARDHIDDEN_NO +
    +HARDKEYBOARDHIDDEN_UNDEFINED +
    +HARDKEYBOARDHIDDEN_YES +
    +headerDividersEnabled +
    +horizontalGap +
    + +
    I  +A +B +C +D +E +F +G +H +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +ic_btn_speak_now +
    +iconPreview +
    +imeActionId +
    +imeActionLabel +
    +imeExtractEnterAnimation +
    +imeExtractExitAnimation +
    +imeFullscreenBackground +
    +imeOptions +
    +initialLayout +
    +innerRadius +
    +INPUT_METHOD_FROM_FOCUSABLE +
    +INPUT_METHOD_NEEDED +
    +INPUT_METHOD_NOT_NEEDED +
    +INPUT_METHOD_SERVICE +
    +inputArea +
    +inputExtractEditText +
    +inputType +
    +INSTALL_FAILED_CONFLICTING_PROVIDER +
    +INTENT_ACTION_MEDIA_SEARCH +
    +INTENT_ACTION_STILL_IMAGE_CAMERA +
    +INTENT_ACTION_VIDEO_CAMERA +
    +INTERVAL_DAY +
    +INTERVAL_FIFTEEN_MINUTES +
    +INTERVAL_HALF_DAY +
    +INTERVAL_HALF_HOUR +
    +INTERVAL_HOUR +
    +isDefault +
    +isModifier +
    +isRepeatable +
    +isScrollContainer +
    +isSticky +
    + +
    K  +A +B +C +D +E +F +G +H +I +L +M +N +P +R +S +T +U +V +W + TOP +

    +KEY_LOCATION_CHANGED +
    +KEY_PROVIDER_ENABLED +
    +KEY_STATUS_CHANGED +
    +keyBackground +
    +keyboardMode +
    +keyboardView +
    +KEYCODE_MEDIA_FAST_FORWARD +
    +KEYCODE_MEDIA_NEXT +
    +KEYCODE_MEDIA_PLAY_PAUSE +
    +KEYCODE_MEDIA_PREVIOUS +
    +KEYCODE_MEDIA_REWIND +
    +KEYCODE_MEDIA_STOP +
    +KEYCODE_MUTE +
    +keyEdgeFlags +
    +keyHeight +
    +keyIcon +
    +keyLabel +
    +keyOutputText +
    +keyPreviewHeight +
    +keyPreviewLayout +
    +keyPreviewOffset +
    +keyTextColor +
    +keyTextSize +
    +keyWidth +
    + +
    L  +A +B +C +D +E +F +G +H +I +K +M +N +P +R +S +T +U +V +W + TOP +

    +labelTextSize +
    +LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED +
    + +
    M  +A +B +C +D +E +F +G +H +I +K +L +N +P +R +S +T +U +V +W + TOP +

    +MEDIA_CHECKING +
    +MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK +
    +MEDIA_INFO_BAD_INTERLEAVING +
    +MEDIA_INFO_NOT_SEEKABLE +
    +MEDIA_INFO_UNKNOWN +
    +MEDIA_INFO_VIDEO_TRACK_LAGGING +
    +MEDIA_NOFS +
    +MEDIA_RECORDER_ERROR_UNKNOWN +
    +MEDIA_RECORDER_INFO_MAX_DURATION_REACHED +
    +MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED +
    +MEDIA_RECORDER_INFO_UNKNOWN +
    +MODE_APPEND +
    +MOUNT_FORMAT_FILESYSTEMS +
    +mVerticalAlignment +
    + +
    N  +A +B +C +D +E +F +G +H +I +K +L +M +P +R +S +T +U +V +W + TOP +

    +noHistory +
    +NUMBER_OF_SONGS_FOR_ARTIST +
    + +
    P  +A +B +C +D +E +F +G +H +I +K +L +M +N +R +S +T +U +V +W + TOP +

    +paste +
    +PHONETIC_NAME
    + in  +android.provider.Contacts.Intents.Insert +
    + in  +android.provider.Contacts.PeopleColumns +
    +popupCharacters +
    +popupKeyboard +
    +popupLayout +
    +privateImeOptions +
    + +
    R  +A +B +C +D +E +F +G +H +I +K +L +M +N +P +S +T +U +V +W + TOP +

    +RAW_AMR +
    +reqFiveWayNav +
    +reqHardKeyboard +
    +reqKeyboardType +
    +reqNavigation +
    +reqTouchScreen +
    +ROUTE_BLUETOOTH_A2DP +
    +ROUTE_BLUETOOTH_SCO +
    +rowEdgeFlags +
    + +
    S  +A +B +C +D +E +F +G +H +I +K +L +M +N +P +R +T +U +V +W + TOP +

    +SCREEN_BRIGHTNESS_CHANGED +
    +SCREEN_ORIENTATION_CHANGED +
    +screenBrightness +
    +screenOrientation +
    +SECONDARY_EMAIL +
    +SECONDARY_EMAIL_TYPE +
    +SECONDARY_PHONE +
    +SECONDARY_PHONE_TYPE +
    +selectAll +
    +settingsActivity +
    +sharedUserId +
    +sharedUserLabel
    + in  +android.R.attr +
    + in  +android.content.pm.PackageInfo +
    +SHOW_OR_CREATE_CONTACT +
    +smoothScrollbar +
    +SOFT_INPUT_ADJUST_PAN +
    +SOFT_INPUT_ADJUST_RESIZE +
    +SOFT_INPUT_ADJUST_UNSPECIFIED +
    +SOFT_INPUT_IS_FORWARD_NAVIGATION +
    +SOFT_INPUT_MASK_ADJUST +
    +SOFT_INPUT_MASK_STATE +
    +SOFT_INPUT_MODE_CHANGED +
    +SOFT_INPUT_STATE_ALWAYS_HIDDEN +
    +SOFT_INPUT_STATE_ALWAYS_VISIBLE +
    +SOFT_INPUT_STATE_HIDDEN +
    +SOFT_INPUT_STATE_UNCHANGED +
    +SOFT_INPUT_STATE_UNSPECIFIED +
    +SOFT_INPUT_STATE_VISIBLE +
    +softInputMode
    + in  +android.content.pm.ActivityInfo +
    + in  +android.view.WindowManager.LayoutParams +
    +SPAN_COMPOSING +
    +SPAN_INTERMEDIATE +
    +SPAN_POINT_MARK_MASK +
    +startSelectingText +
    +state_long_pressable +
    +stopSelectingText +
    +STREAM_NOTIFICATION +
    +STRETCH_SPACING_UNIFORM +
    +switchInputMethod +
    + +
    T  +A +B +C +D +E +F +G +H +I +K +L +M +N +P +R +S +U +V +W + TOP +

    +TERTIARY_EMAIL +
    +TERTIARY_EMAIL_TYPE +
    +TERTIARY_PHONE +
    +TERTIARY_PHONE_TYPE +
    +Theme_InputMethod +
    +Theme_Light_Panel +
    +Theme_NoDisplay +
    +Theme_Panel +
    +thickness +
    +title_bar_tall +
    +topOffset +
    +TYPE_APPLICATION_ATTACHED_DIALOG +
    +TYPE_INPUT_METHOD +
    +TYPE_INPUT_METHOD_DIALOG +
    + +
    U  +A +B +C +D +E +F +G +H +I +K +L +M +N +P +R +S +T +V +W + TOP +

    +UNKNOWN_LENGTH +
    +UPDATE_DEVICE_STATS +
    +updatePeriodMillis +
    + +
    V  +A +B +C +D +E +F +G +H +I +K +L +M +N +P +R +S +T +U +W + TOP +

    +verticalCorrection +
    +verticalGap +
    +VideoView_error_text_invalid_progressive_playback +
    +voiceLanguage +
    +voiceLanguageModel +
    +voiceMaxResults +
    +voicePromptText +
    +voiceSearchMode +
    +VOLUME_NOTIFICATION +
    + +
    W  +A +B +C +D +E +F +G +H +I +K +L +M +N +P +R +S +T +U +V + TOP +

    +Widget_KeyboardView +
    +WIFI_MAX_DHCP_RETRY_COUNT +
    +WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS +
    +WIFI_MODE_FULL +
    +WIFI_MODE_SCAN_ONLY +
    +WIFI_SLEEP_POLICY +
    +WIFI_SLEEP_POLICY_DEFAULT +
    +WIFI_SLEEP_POLICY_NEVER +
    +WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED +
    +windowDisablePreview +
    +windowNoDisplay +
    +windowSoftInputMode +
    +WRITE_SECURE_SETTINGS +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/fields_index_all.html b/docs/html/sdk/api_diff/3/changes/fields_index_all.html new file mode 100644 index 000000000000..786a36005452 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/fields_index_all.html @@ -0,0 +1,1270 @@ + + + + + + + + + +Field Differences Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +Fields +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + +
    A  +B +C +D +E +F +G +H +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +ACCELEROMETER_ROTATION +
    +ACTION_AIRPLANE_MODE_SETTINGS +
    +ACTION_APPLICATION_DEVELOPMENT_SETTINGS +
    +ACTION_AUDIO_BECOMING_NOISY +
    +ACTION_BACKGROUND_DATA_SETTING_CHANGED +
    +ACTION_DATA_ROAMING_SETTINGS +
    +ACTION_IMAGE_CAPTURE +
    +ACTION_INPUT_METHOD_CHANGED +
    +ACTION_INPUT_METHOD_SETTINGS +
    +ACTION_INTERNAL_STORAGE_SETTINGS +
    +ACTION_MANAGE_APPLICATIONS_SETTINGS +
    +ACTION_MEDIA_CHECKING +
    +ACTION_MEDIA_NOFS +
    +ACTION_MEMORY_CARD_SETTINGS +
    +ACTION_NETWORK_OPERATOR_SETTINGS +
    +ACTION_OUTSIDE +
    +ACTION_PACKAGE_DATA_CLEARED +
    +ACTION_PACKAGE_REPLACED +
    +ACTION_PHONE_STATE_CHANGED +
    +ACTION_QUICK_LAUNCH_SETTINGS +
    +ACTION_SEARCH_LONG_PRESS +
    +ACTION_SYNC_SETTINGS +
    +ACTION_SYSTEM_TUTORIAL +
    +ACTION_USER_DICTIONARY_SETTINGS +
    +ACTION_USER_PRESENT +
    +ACTION_VIDEO_CAPTURE +
    +ACTION_WIFI_IP_SETTINGS +
    +ADB_ENABLED +
    +addToDictionary +
    +ALIGN_BASELINE +
    +ALIGN_BOTTOM +
    +allowSingleTap +
    +ANDROID_ID +
    +animateOnClick +
    +autoText +
    +AXIS_CLIP +
    +AXIS_MINUS_X +
    +AXIS_MINUS_Y +
    +AXIS_MINUS_Z +
    +AXIS_X +
    +AXIS_Y +
    +AXIS_Z +
    + +
    B  +A +C +D +E +F +G +H +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +backgroundDimEnabled +
    +BIND_APPWIDGET +
    +BIND_INPUT_METHOD +
    +BLUETOOTH_ON +
    +BOOKMARK +
    +bottomOffset +
    +BUCKET_DISPLAY_NAME +
    +BUCKET_ID +
    +BUTTON1 +
    +BUTTON2 +
    +BUTTON3 +
    +BUTTON_NEGATIVE +
    +BUTTON_NEUTRAL +
    +BUTTON_POSITIVE +
    + +
    C  +A +B +D +E +F +G +H +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +candidatesArea +
    +candidatesTextStyleSpans +
    +CAP_MODE_CHARACTERS +
    +CAP_MODE_SENTENCES +
    +CAP_MODE_WORDS +
    +capitalize +
    +CATEGORY_GADGET +
    +CATEGORY_INFO +
    +CLIP_HORIZONTAL +
    +CLIP_VERTICAL +
    +closeButton +
    +codes +
    +configPreferences +
    +configure +
    +content +
    +copy +
    +copyUrl +
    +CREATOR
    + in  +android.content.res.AssetFileDescriptor +
    + in  +android.graphics.RectF +
    +cut +
    + +
    D  +A +B +C +E +F +G +H +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +dark_header +
    +DATA_ROAMING +
    +DATA_X +
    +DATA_Y +
    +DATA_Z +
    +DEBUG_ENABLE_ASSERT +
    +DEBUG_ENABLE_CHECKJNI +
    +DEBUG_ENABLE_DEBUGGER +
    +DEFAULT_SORT_ORDER
    + in  +android.provider.MediaStore.Images.Media +
    + in  +android.provider.MediaStore.Video +
    +DEVICE_PROVISIONED +
    +dialog_alert_title +
    +DISPLAY +
    +DISPLAY_CLIP_HORIZONTAL +
    +DISPLAY_CLIP_VERTICAL +
    +dropDownAnchor +
    +dropDownWidth +
    + +
    E  +A +B +C +D +F +G +H +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +editable +
    +editorExtras +
    +enabled +
    +EXTRA_APPLICATION_ID +
    +EXTRA_CREATE_DESCRIPTION +
    +EXTRA_DATA_REMOVED +
    +EXTRA_FINISH_ON_COMPLETION +
    +EXTRA_FORCE_CREATE +
    +EXTRA_INCOMING_NUMBER +
    +EXTRA_MAX_BYTES +
    +EXTRA_MEDIA_ALBUM +
    +EXTRA_MEDIA_ARTIST +
    +EXTRA_MEDIA_FOCUS +
    +EXTRA_MEDIA_TITLE +
    +EXTRA_OUTPUT +
    +EXTRA_REPLACING +
    +EXTRA_SCREEN_ORIENTATION +
    +EXTRA_STATE +
    +EXTRA_STATE_IDLE +
    +EXTRA_STATE_OFFHOOK +
    +EXTRA_STATE_RINGING +
    +EXTRA_VIDEO_QUALITY +
    +extractArea +
    + +
    F  +A +B +C +D +E +G +H +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +fastScrollEnabled +
    +fillEnabled +
    +FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET +
    +FLAG_ACTIVITY_NO_USER_ACTION +
    +FLAG_ACTIVITY_REORDER_TO_FRONT +
    +FLAG_ALT_FOCUSABLE_IM +
    +FLAG_EDITOR_ACTION +
    +FLAG_FROM_SYSTEM +
    +FLAG_KEEP_TOUCH_MODE +
    +FLAG_NO_HISTORY +
    +FLAG_SOFT_KEYBOARD +
    +FLAG_UPDATE_CURRENT +
    +FLAG_WATCH_OUTSIDE_TOUCH +
    +footerDividersEnabled +
    +FORMAT_JAPAN +
    +FX_KEYPRESS_DELETE +
    +FX_KEYPRESS_RETURN +
    +FX_KEYPRESS_SPACEBAR +
    +FX_KEYPRESS_STANDARD +
    + +
    G  +A +B +C +D +E +F +H +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +GET_CONFIGURATIONS +
    +GET_UNINSTALLED_PACKAGES +
    + +
    H  +A +B +C +D +E +F +G +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +handle +
    +HAPTIC_FEEDBACK_ENABLED
    + in  +android.provider.Settings.System +
    + in  +android.view.View +
    +hapticFeedbackEnabled +
    +hardKeyboardHidden +
    +HARDKEYBOARDHIDDEN_NO +
    +HARDKEYBOARDHIDDEN_UNDEFINED +
    +HARDKEYBOARDHIDDEN_YES +
    +headerDividersEnabled +
    +horizontalGap +
    +HTTP_PROXY +
    + +
    I  +A +B +C +D +E +F +G +H +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +ic_btn_speak_now +
    +iconPreview +
    +imeActionId +
    +imeActionLabel +
    +imeExtractEnterAnimation +
    +imeExtractExitAnimation +
    +imeFullscreenBackground +
    +imeOptions +
    +initialLayout +
    +innerRadius +
    +INPUT_METHOD_FROM_FOCUSABLE +
    +INPUT_METHOD_NEEDED +
    +INPUT_METHOD_NOT_NEEDED +
    +INPUT_METHOD_SERVICE +
    +inputArea +
    +inputExtractEditText +
    +inputMethod +
    +inputType +
    +INSTALL_FAILED_CONFLICTING_PROVIDER +
    +INSTALL_NON_MARKET_APPS +
    +INTENT_ACTION_MEDIA_SEARCH +
    +INTENT_ACTION_STILL_IMAGE_CAMERA +
    +INTENT_ACTION_VIDEO_CAMERA +
    +INTERVAL_DAY +
    +INTERVAL_FIFTEEN_MINUTES +
    +INTERVAL_HALF_DAY +
    +INTERVAL_HALF_HOUR +
    +INTERVAL_HOUR +
    +isDefault +
    +isModifier +
    +isRepeatable +
    +isScrollContainer +
    +isSticky +
    + +
    K  +A +B +C +D +E +F +G +H +I +L +M +N +P +R +S +T +U +V +W + TOP +

    +KEY_LOCATION_CHANGED +
    +KEY_PROVIDER_ENABLED +
    +KEY_STATUS_CHANGED +
    +keyBackground +
    +keyboardMode +
    +keyboardView +
    +KEYCODE_MEDIA_FAST_FORWARD +
    +KEYCODE_MEDIA_NEXT +
    +KEYCODE_MEDIA_PLAY_PAUSE +
    +KEYCODE_MEDIA_PREVIOUS +
    +KEYCODE_MEDIA_REWIND +
    +KEYCODE_MEDIA_STOP +
    +KEYCODE_MUTE +
    +keyEdgeFlags +
    +keyHeight +
    +keyIcon +
    +keyLabel +
    +keyOutputText +
    +keyPreviewHeight +
    +keyPreviewLayout +
    +keyPreviewOffset +
    +keyTextColor +
    +keyTextSize +
    +keyWidth +
    + +
    L  +A +B +C +D +E +F +G +H +I +K +M +N +P +R +S +T +U +V +W + TOP +

    +labelTextSize +
    +LIGHT_NO_MOON +
    +LOCATION_PROVIDERS_ALLOWED +
    +LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED +
    +LOGGING_ID +
    + +
    M  +A +B +C +D +E +F +G +H +I +K +L +N +P +R +S +T +U +V +W + TOP +

    +MAX_KEYCODE +
    +MEDIA_CHECKING +
    +MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK +
    +MEDIA_INFO_BAD_INTERLEAVING +
    +MEDIA_INFO_NOT_SEEKABLE +
    +MEDIA_INFO_UNKNOWN +
    +MEDIA_INFO_VIDEO_TRACK_LAGGING +
    +MEDIA_NOFS +
    +MEDIA_RECORDER_ERROR_UNKNOWN +
    +MEDIA_RECORDER_INFO_MAX_DURATION_REACHED +
    +MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED +
    +MEDIA_RECORDER_INFO_UNKNOWN +
    +MODE_APPEND +
    +MOUNT_FORMAT_FILESYSTEMS +
    +mVerticalAlignment +
    + +
    N  +A +B +C +D +E +F +G +H +I +K +L +M +P +R +S +T +U +V +W + TOP +

    +NETWORK_PREFERENCE +
    +noHistory +
    +NUM_STREAMS +
    +NUMBER_OF_SONGS_FOR_ARTIST +
    +numeric +
    + +
    P  +A +B +C +D +E +F +G +H +I +K +L +M +N +R +S +T +U +V +W + TOP +

    +PARENTAL_CONTROL_ENABLED +
    +PARENTAL_CONTROL_LAST_UPDATE +
    +PARENTAL_CONTROL_REDIRECT_URL +
    +password +
    +paste +
    +phoneNumber +
    +PHONETIC_NAME
    + in  +android.provider.Contacts.Intents.Insert +
    + in  +android.provider.Contacts.PeopleColumns +
    +popupCharacters +
    +popupKeyboard +
    +popupLayout +
    +privateImeOptions +
    + +
    R  +A +B +C +D +E +F +G +H +I +K +L +M +N +P +S +T +U +V +W + TOP +

    +RAW_AMR +
    +RAW_DATA_INDEX +
    +RAW_DATA_X +
    +RAW_DATA_Y +
    +RAW_DATA_Z +
    +reqFiveWayNav +
    +reqHardKeyboard +
    +reqKeyboardType +
    +reqNavigation +
    +reqTouchScreen +
    +ROUTE_BLUETOOTH +
    +ROUTE_BLUETOOTH_A2DP +
    +ROUTE_BLUETOOTH_SCO +
    +rowEdgeFlags +
    + +
    S  +A +B +C +D +E +F +G +H +I +K +L +M +N +P +R +T +U +V +W + TOP +

    +SCREEN_BRIGHTNESS_CHANGED +
    +SCREEN_ORIENTATION_CHANGED +
    +screenBrightness +
    +screenOrientation +
    +searchButtonText +
    +SECONDARY_EMAIL +
    +SECONDARY_EMAIL_TYPE +
    +SECONDARY_PHONE +
    +SECONDARY_PHONE_TYPE +
    +selectAll +
    +SENSOR_ACCELEROMETER +
    +SENSOR_ALL +
    +SENSOR_LIGHT +
    +SENSOR_MAGNETIC_FIELD +
    +SENSOR_MAX +
    +SENSOR_MIN +
    +SENSOR_ORIENTATION +
    +SENSOR_ORIENTATION_RAW +
    +SENSOR_PROXIMITY +
    +SENSOR_TEMPERATURE +
    +SENSOR_TRICORDER +
    +SETTINGS_CLASSNAME +
    +settingsActivity +
    +sharedUserId +
    +sharedUserLabel
    + in  +android.R.attr +
    + in  +android.content.pm.PackageInfo +
    +SHOW_OR_CREATE_CONTACT +
    +singleLine +
    +smoothScrollbar +
    +SOFT_INPUT_ADJUST_PAN +
    +SOFT_INPUT_ADJUST_RESIZE +
    +SOFT_INPUT_ADJUST_UNSPECIFIED +
    +SOFT_INPUT_IS_FORWARD_NAVIGATION +
    +SOFT_INPUT_MASK_ADJUST +
    +SOFT_INPUT_MASK_STATE +
    +SOFT_INPUT_MODE_CHANGED +
    +SOFT_INPUT_STATE_ALWAYS_HIDDEN +
    +SOFT_INPUT_STATE_ALWAYS_VISIBLE +
    +SOFT_INPUT_STATE_HIDDEN +
    +SOFT_INPUT_STATE_UNCHANGED +
    +SOFT_INPUT_STATE_UNSPECIFIED +
    +SOFT_INPUT_STATE_VISIBLE +
    +softInputMode
    + in  +android.content.pm.ActivityInfo +
    + in  +android.view.WindowManager.LayoutParams +
    +SPAN_COMPOSING +
    +SPAN_INTERMEDIATE +
    +SPAN_POINT_MARK_MASK +
    +startSelectingText +
    +state_long_pressable +
    +stopSelectingText +
    +STREAM_NOTIFICATION +
    +STRETCH_SPACING_UNIFORM +
    +switchInputMethod +
    + +
    T  +A +B +C +D +E +F +G +H +I +K +L +M +N +P +R +S +U +V +W + TOP +

    +TERTIARY_EMAIL +
    +TERTIARY_EMAIL_TYPE +
    +TERTIARY_PHONE +
    +TERTIARY_PHONE_TYPE +
    +Theme_InputMethod +
    +Theme_Light_Panel +
    +Theme_NoDisplay +
    +Theme_Panel +
    +thickness +
    +title_bar_tall +
    +topOffset +
    +TYPE_APPLICATION_ATTACHED_DIALOG +
    +TYPE_INPUT_METHOD +
    +TYPE_INPUT_METHOD_DIALOG +
    + +
    U  +A +B +C +D +E +F +G +H +I +K +L +M +N +P +R +S +T +V +W + TOP +

    +UNKNOWN_LENGTH +
    +UPDATE_DEVICE_STATS +
    +updatePeriodMillis +
    +USB_MASS_STORAGE_ENABLED +
    +USE_GOOGLE_MAIL +
    + +
    V  +A +B +C +D +E +F +G +H +I +K +L +M +N +P +R +S +T +U +W + TOP +

    +verticalCorrection +
    +verticalGap +
    +VideoView_error_text_invalid_progressive_playback +
    +voiceLanguage +
    +voiceLanguageModel +
    +voiceMaxResults +
    +voicePromptText +
    +voiceSearchMode +
    +VOLUME_NOTIFICATION +
    + +
    W  +A +B +C +D +E +F +G +H +I +K +L +M +N +P +R +S +T +U +V + TOP +

    +Widget_KeyboardView +
    +WIFI_MAX_DHCP_RETRY_COUNT +
    +WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS +
    +WIFI_MODE_FULL +
    +WIFI_MODE_SCAN_ONLY +
    +WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON +
    +WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY +
    +WIFI_NUM_OPEN_NETWORKS_KEPT +
    +WIFI_ON +
    +WIFI_SLEEP_POLICY +
    +WIFI_SLEEP_POLICY_DEFAULT +
    +WIFI_SLEEP_POLICY_NEVER +
    +WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED +
    +WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE +
    +WIFI_WATCHDOG_AP_COUNT +
    +WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS +
    +WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED +
    +WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS +
    +WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT +
    +WIFI_WATCHDOG_MAX_AP_CHECKS +
    +WIFI_WATCHDOG_ON +
    +WIFI_WATCHDOG_PING_COUNT +
    +WIFI_WATCHDOG_PING_DELAY_MS +
    +WIFI_WATCHDOG_PING_TIMEOUT_MS +
    +windowDisablePreview +
    +windowNoDisplay +
    +windowSoftInputMode +
    +WRITE_SECURE_SETTINGS +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/fields_index_changes.html b/docs/html/sdk/api_diff/3/changes/fields_index_changes.html new file mode 100644 index 000000000000..3f5dd5a9b775 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/fields_index_changes.html @@ -0,0 +1,471 @@ + + + + + + + + + +Field Changes Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Fields +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + +
    A  +B +C +D +E +H +I +L +M +N +P +R +S +U +W + TOP +

    +ADB_ENABLED +
    +ANDROID_ID +
    +autoText +
    + +
    B  +A +C +D +E +H +I +L +M +N +P +R +S +U +W + TOP +

    +BLUETOOTH_ON +
    +BUTTON1 +
    +BUTTON2 +
    +BUTTON3 +
    + +
    C  +A +B +D +E +H +I +L +M +N +P +R +S +U +W + TOP +

    +capitalize +
    + +
    D  +A +B +C +E +H +I +L +M +N +P +R +S +U +W + TOP +

    +DATA_ROAMING +
    +DATA_X +
    +DATA_Y +
    +DATA_Z +
    +DEFAULT_SORT_ORDER
    + in  +android.provider.MediaStore.Images.Media +
    + in  +android.provider.MediaStore.Video +
    +DEVICE_PROVISIONED +
    + +
    E  +A +B +C +D +H +I +L +M +N +P +R +S +U +W + TOP +

    +editable +
    +enabled +
    + +
    H  +A +B +C +D +E +I +L +M +N +P +R +S +U +W + TOP +

    +HTTP_PROXY +
    + +
    I  +A +B +C +D +E +H +L +M +N +P +R +S +U +W + TOP +

    +inputMethod +
    +INSTALL_NON_MARKET_APPS +
    + +
    L  +A +B +C +D +E +H +I +M +N +P +R +S +U +W + TOP +

    +LIGHT_NO_MOON +
    +LOCATION_PROVIDERS_ALLOWED +
    +LOGGING_ID +
    + +
    M  +A +B +C +D +E +H +I +L +N +P +R +S +U +W + TOP +

    +MAX_KEYCODE +
    + +
    N  +A +B +C +D +E +H +I +L +M +P +R +S +U +W + TOP +

    +NETWORK_PREFERENCE +
    +NUM_STREAMS +
    +numeric +
    + +
    P  +A +B +C +D +E +H +I +L +M +N +R +S +U +W + TOP +

    +PARENTAL_CONTROL_ENABLED +
    +PARENTAL_CONTROL_LAST_UPDATE +
    +PARENTAL_CONTROL_REDIRECT_URL +
    +password +
    +phoneNumber +
    + +
    R  +A +B +C +D +E +H +I +L +M +N +P +S +U +W + TOP +

    +RAW_DATA_INDEX +
    +RAW_DATA_X +
    +RAW_DATA_Y +
    +RAW_DATA_Z +
    +ROUTE_BLUETOOTH +
    + +
    S  +A +B +C +D +E +H +I +L +M +N +P +R +U +W + TOP +

    +searchButtonText +
    +SENSOR_ACCELEROMETER +
    +SENSOR_ALL +
    +SENSOR_LIGHT +
    +SENSOR_MAGNETIC_FIELD +
    +SENSOR_MAX +
    +SENSOR_MIN +
    +SENSOR_ORIENTATION +
    +SENSOR_ORIENTATION_RAW +
    +SENSOR_PROXIMITY +
    +SENSOR_TEMPERATURE +
    +SENSOR_TRICORDER +
    +SETTINGS_CLASSNAME +
    +singleLine +
    + +
    U  +A +B +C +D +E +H +I +L +M +N +P +R +S +W + TOP +

    +USB_MASS_STORAGE_ENABLED +
    +USE_GOOGLE_MAIL +
    + +
    W  +A +B +C +D +E +H +I +L +M +N +P +R +S +U + TOP +

    +WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON +
    +WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY +
    +WIFI_NUM_OPEN_NETWORKS_KEPT +
    +WIFI_ON +
    +WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE +
    +WIFI_WATCHDOG_AP_COUNT +
    +WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS +
    +WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED +
    +WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS +
    +WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT +
    +WIFI_WATCHDOG_MAX_AP_CHECKS +
    +WIFI_WATCHDOG_ON +
    +WIFI_WATCHDOG_PING_COUNT +
    +WIFI_WATCHDOG_PING_DELAY_MS +
    +WIFI_WATCHDOG_PING_TIMEOUT_MS +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/fields_index_removals.html b/docs/html/sdk/api_diff/3/changes/fields_index_removals.html new file mode 100644 index 000000000000..58ad6557e1eb --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/fields_index_removals.html @@ -0,0 +1,68 @@ + + + + + + + + + +Field Removals Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Fields +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + +
    C  + TOP +

    +CATEGORY_GADGET +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/java.lang.Character.UnicodeBlock.html b/docs/html/sdk/api_diff/3/changes/java.lang.Character.UnicodeBlock.html new file mode 100644 index 000000000000..f7c9d8f64068 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/java.lang.Character.UnicodeBlock.html @@ -0,0 +1,126 @@ + + + + + + + + + +java.lang.Character.UnicodeBlock + + + + + + + + + + +
    +
    +
    +

    +Class java.lang.Character.UnicodeBlock +

    + + +

    + + + + + + + + + +
    Changed Methods +
    + + UnicodeBlock forName(String) + +Change from non-final to final.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/java.lang.Class.html b/docs/html/sdk/api_diff/3/changes/java.lang.Class.html new file mode 100644 index 000000000000..fa0b05639952 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/java.lang.Class.html @@ -0,0 +1,166 @@ + + + + + + + + + +java.lang.Class + + + + + + + + + + +
    +
    +
    +

    +Class java.lang.Class +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Methods +
    + + Class[] getClasses() + +Change in return type from Class<?> to Class[].
    +
     
    + + Constructor[] getConstructors() + +Change in return type from Constructor<T> to Constructor[].
    +
     
    + + Class[] getDeclaredClasses() + +Change in return type from Class<?> to Class[].
    +
     
    + + Constructor[] getDeclaredConstructors() + +Change in return type from Constructor<T> to Constructor[].
    +
     
    + + Class[] getInterfaces() + +Change in return type from Class<?> to Class[].
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/java.lang.String.html b/docs/html/sdk/api_diff/3/changes/java.lang.String.html new file mode 100644 index 000000000000..5c41b8cc893e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/java.lang.String.html @@ -0,0 +1,161 @@ + + + + + + + + + +java.lang.String + + + + + + + + + + +
    +
    +
    +

    +Class java.lang.String +

    + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Constructors +
    + + String() + +  
    + + String(byte[]) + +  
    + + String(byte[], int) + +  
    + + String(byte[], int, int) + +  
    + + String(byte[], int, int, int) + +  
    +  + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/java.lang.reflect.Proxy.html b/docs/html/sdk/api_diff/3/changes/java.lang.reflect.Proxy.html new file mode 100644 index 000000000000..f593c0ee8e73 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/java.lang.reflect.Proxy.html @@ -0,0 +1,126 @@ + + + + + + + + + +java.lang.reflect.Proxy + + + + + + + + + + +
    +
    +
    +

    +Class java.lang.reflect.Proxy +

    + + +

    + + + + + + + + + +
    Changed Methods +
    + + Class<?> getProxyClass(ClassLoader, Class<?>) + +Change in signature from (ClassLoader, ) to (ClassLoader, Class<?>).
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/java.net.Socket.html b/docs/html/sdk/api_diff/3/changes/java.net.Socket.html new file mode 100644 index 000000000000..6027217d619c --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/java.net.Socket.html @@ -0,0 +1,161 @@ + + + + + + + + + +java.net.Socket + + + + + + + + + + +
    +
    +
    +

    +Class java.net.Socket +

    + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Constructors +
    + + Socket() + +  
    + + Socket(String, int) + +  
    + + Socket(String, int, InetAddress, int) + +  
    + + Socket(Proxy) + +  
    + + Socket(SocketImpl) + +  
    +  + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/java.util.Date.html b/docs/html/sdk/api_diff/3/changes/java.util.Date.html new file mode 100644 index 000000000000..6a8dd2685635 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/java.util.Date.html @@ -0,0 +1,134 @@ + + + + + + + + + +java.util.Date + + + + + + + + + + +
    +
    +
    +

    +Class java.util.Date +

    + +

    + + + + + + + + + + + + + + +
    Changed Constructors +
    + + Date() + +  
    + + Date(int, int, int, int, int, int) + +  
    +  + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/java.util.jar.Pack200.Packer.html b/docs/html/sdk/api_diff/3/changes/java.util.jar.Pack200.Packer.html new file mode 100644 index 000000000000..75b4cbc4a8f8 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/java.util.jar.Pack200.Packer.html @@ -0,0 +1,130 @@ + + + + + + + + + +java.util.jar.Pack200.Packer + + + + + + + + + + +
    +
    +
    +

    +Interface java.util.jar.Pack200.Packer +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + void addPropertyChangeListener(PropertyChangeListener) +  
    + + void removePropertyChangeListener(PropertyChangeListener) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/java.util.jar.Pack200.Unpacker.html b/docs/html/sdk/api_diff/3/changes/java.util.jar.Pack200.Unpacker.html new file mode 100644 index 000000000000..382fdea8428e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/java.util.jar.Pack200.Unpacker.html @@ -0,0 +1,130 @@ + + + + + + + + + +java.util.jar.Pack200.Unpacker + + + + + + + + + + +
    +
    +
    +

    +Interface java.util.jar.Pack200.Unpacker +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + void addPropertyChangeListener(PropertyChangeListener) +  
    + + void removePropertyChangeListener(PropertyChangeListener) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/java.util.logging.Level.html b/docs/html/sdk/api_diff/3/changes/java.util.logging.Level.html new file mode 100644 index 000000000000..7f5fd19782c8 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/java.util.logging.Level.html @@ -0,0 +1,127 @@ + + + + + + + + + +java.util.logging.Level + + + + + + + + + + +
    +
    +
    +

    +Class java.util.logging.Level +

    + + +

    + + + + + + + + + +
    Changed Methods +
    + + Level parse(String) + +Change in exceptions thrown from no exceptions to java.lang.IllegalArgumentException.
    + Change from final to non-final.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/java.util.logging.LogManager.html b/docs/html/sdk/api_diff/3/changes/java.util.logging.LogManager.html new file mode 100644 index 000000000000..d259077f26d9 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/java.util.logging.LogManager.html @@ -0,0 +1,137 @@ + + + + + + + + + +java.util.logging.LogManager + + + + + + + + + + +
    +
    +
    +

    +Class java.util.logging.LogManager +

    + + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + void addPropertyChangeListener(PropertyChangeListener) +  
    + + LoggingMXBean getLoggingMXBean() +  
    + + void removePropertyChangeListener(PropertyChangeListener) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/jdiff_help.html b/docs/html/sdk/api_diff/3/changes/jdiff_help.html new file mode 100644 index 000000000000..21a59f92d526 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/jdiff_help.html @@ -0,0 +1,135 @@ + + + + + + + + + +JDiff Help + + + + + + + + + + + + + + + + + +
    Generated by
    JDiff
    +
    + +
    +

    JDiff Documentation

    +
    +
    +JDiff is a Javadoc doclet which generates a report of the API differences between two versions of a product. It does not report changes in Javadoc comments, or changes in what a class or method does. +This help page describes the different parts of the output from JDiff. +
    +
    + See the reference page in the source for JDiff for information about how to generate a report like this one. +
    +
    +The indexes shown in the top-left frame help show each type of change in more detail. The index "All Differences" contains all the differences between the APIs, in alphabetical order. +These indexes all use the same format: +
      +
    • Removed packages, classes, constructors, methods and fields are struck through.
    • +
    • Added packages, classes, constructors, methods and fields appear in bold.
    • +
    • Changed packages, classes, constructors, methods and fields appear in normal text.
    • +
    +
    +
    +You can always tell when you are reading a JDiff page, rather than a Javadoc page, by the color of the index bar and the color of the background. +Links which take you to a Javadoc page are always in a typewriter font. +Just like Javadoc, all interface names are in italic, and class names are not italicized. Where there are multiple entries in an index with the same name, the heading for them is also in italics, but is not a link. +
    +
    +

    Javadoc

    +This is a link to the top-level Javadoc page for the new version of the product. +
    +
    +

    Overview

    +The overview is the top-level summary of what was removed, added and changed between versions. +
    +
    +

    Package

    +This is a link to the package containing the current changed class or interface. +
    +
    +

    Class

    +This is highlighted when you are looking at the changed class or interface. +
    +
    +

    Text Changes

    +This is a link to the top-level index of all documentation changes for the current package or class. +If it is not present, then there are no documentation changes for the current package or class. +This link can be removed entirely by not using the -docchanges option. +
    +
    +

    Statistics

    +This is a link to a page which shows statistics about the changes between the two APIs. +This link can be removed entirely by not using the -stats option. +
    +
    +

    Help

    +A link to this Help page for JDiff. +
    +
    +

    Prev/Next

    +These links take you to the previous and next changed package or class. +
    +
    +

    Frames/No Frames

    +These links show and hide the HTML frames. All pages are available with or without frames. +
    +
    +

    Complex Changes

    +There are some complex changes which can occur between versions, for example, when two or more methods with the same name change simultaneously, or when a method or field is moved into or from a superclass. +In these cases, the change will be seen as a removal and an addition, rather than as a change. Unexpected removals or additions are often part of one of these type of changes. +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/jdiff_statistics.html b/docs/html/sdk/api_diff/3/changes/jdiff_statistics.html new file mode 100644 index 000000000000..6faea52ee8f0 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/jdiff_statistics.html @@ -0,0 +1,1284 @@ + + + + + + + + + +API Change Statistics + + + + + + + + + + +
    +
    +
    +

    API Change Statistics

    +

    +The percent change statistic reported for all elements in the "to" API Level specification is defined recursively as follows:

    +
    +Percentage difference = 100 * (added + removed + 2*changed)
    +                        -----------------------------------
    +                        sum of public elements in BOTH APIs
    +
    +

    where added is the number of packages added, removed is the number of packages removed, and changed is the number of packages changed. +This definition is applied recursively for the classes and their program elements, so the value for a changed package will be less than 1, unless every class in that package has changed. +The definition ensures that if all packages are removed and all new packages are +added, the change will be 100%. Values are rounded here, so a value of 0% indicates a percentage difference of less than 0.5%.

    +

    The overall difference between the two APIs is approximately 4%. +

    +

    Contents

    +
    Changed Packages
    Sorted by percentage difference
    +
    Changed Classes and Interfaces
    Sorted by percentage difference
    +
    Total of Differences
    Listed by number and type
    +
    + +

    Changed Packages, Sorted by Percentage Difference

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Percentage DifferencePackage
    33android.opengl
    27android.media
    24android.text.style
    22android.hardware
    22android.location
    13android.content.res
    12dalvik.system
    9android.telephony
    9android.text.method
    8android.app
    8android.test
    8android.test.suitebuilder
    7android
    7android.text
    6android.provider
    6android.view
    5android.widget
    5android.os
    4android.webkit
    3android.content.pm
    2android.util
    1android.content
    1java.util.jar
    1android.graphics.drawable.shapes
    <1android.net
    <1android.graphics.drawable
    <1java.util.logging
    <1android.test.mock
    <1java.lang.reflect
    <1android.view.animation
    <1android.net.wifi
    <1android.telephony.gsm
    <1java.net
    <1android.database
    <1android.graphics
    <1java.lang
    <1android.database.sqlite
    <1android.preference
    <1java.util
    +
    + +

    Changed Classes and Interfaces, Sorted by Percentage Difference

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Percentage
    Difference
    Class or Interface
    84 +android.test.TouchUtils
    81 +dalvik.system.Zygote
    66 +android.webkit.UrlInterceptHandler
    61 +android.provider.MediaStore
    53 +android.view.GestureDetector
    50 +android.app.LauncherActivity
    50 +android.text.style.AlignmentSpan.Standard
    50 +android.text.style.StrikethroughSpan
    50 +android.text.style.UnderlineSpan
    50 +android.widget.PopupWindow.OnDismissListener
    48 +android.app.AlertDialog
    46 +android.content.DialogInterface
    45 +android.view.ViewConfiguration
    42 +android.text.method.KeyListener
    40 +android.text.Annotation
    40 +android.text.style.BackgroundColorSpan
    40 +android.text.style.ForegroundColorSpan
    40 +android.text.style.SubscriptSpan
    40 +android.text.style.SuperscriptSpan
    40 +android.text.style.URLSpan
    39 +android.media.MediaRecorder
    38 +android.text.style.DynamicDrawableSpan
    36 +android.content.res.AssetFileDescriptor
    36 +android.location.LocationManager
    34 +android.hardware.SensorManager
    33 +android.text.AutoText
    33 +android.text.method.Touch
    33 +android.text.style.AbsoluteSizeSpan
    33 +android.text.style.LeadingMarginSpan.Standard
    33 +android.text.style.RelativeSizeSpan
    33 +android.text.style.ScaleXSpan
    33 +android.text.style.StyleSpan
    33 +android.text.style.TypefaceSpan
    33 +android.widget.RemoteViews.ActionException
    31 +android.widget.RemoteViews
    30 +android.provider.Settings
    28 +android.text.style.QuoteSpan
    27 +android.app.AlarmManager
    26 +android.text.style.ImageSpan
    25 +android.hardware.SensorListener
    25 +android.text.method.MetaKeyKeyListener
    25 +android.text.style.BulletSpan
    25 +android.widget.ResourceCursorAdapter
    23 +android.provider.Contacts.Intents
    21 +android.widget.PopupWindow
    20 +android.R.id
    20 +android.provider.Settings.System
    20 +android.app.ActivityManager
    20 +android.text.method.BaseKeyListener
    20 +android.util.TimeUtils
    20 +android.widget.AutoCompleteTextView
    19 +android.provider.Contacts.Intents.Insert
    17 +android.view.GestureDetector.SimpleOnGestureListener
    16 +android.provider.MediaStore.Video
    16 +android.text.SpanWatcher
    16 +android.text.TextWatcher
    16 +android.text.style.ClickableSpan
    16 +android.text.style.MaskFilterSpan
    16 +android.text.style.RasterizerSpan
    16 +android.text.style.TextAppearanceSpan
    15 +android.webkit.UrlInterceptRegistry
    14 +android.media.MediaRecorder.OutputFormat
    14 +android.net.NetworkInfo
    14 +android.test.suitebuilder.TestMethod
    14 +android.text.method.QwertyKeyListener
    14 +android.widget.AbsSeekBar
    12 +android.view.WindowManager.LayoutParams
    12 +android.test.ActivityInstrumentationTestCase
    12 +android.test.InstrumentationTestCase
    12 +android.widget.AbsoluteLayout
    12 +java.util.logging.LogManager
    11 +android.view.Gravity
    11 +android.widget.CursorAdapter
    11 +android.widget.TextView
    11 +android.text.method.DateKeyListener
    11 +android.text.method.DateTimeKeyListener
    11 +android.text.method.DialerKeyListener
    11 +android.text.method.TimeKeyListener
    11 +android.webkit.WebHistoryItem
    11 +java.util.jar.Pack200.Unpacker
    10 +android.media.MediaPlayer
    10 +android.provider.MediaStore.Video.VideoColumns
    10 +android.test.ProviderTestCase
    10 +android.test.suitebuilder.TestSuiteBuilder
    10 +android.widget.Chronometer
    10 +java.net.Socket
    9 +android.graphics.drawable.TransitionDrawable
    9 +android.text.method.MultiTapKeyListener
    8 +android.media.AudioManager
    8 +android.view.ViewTreeObserver
    8 +java.lang.reflect.Proxy
    8 +android.content.pm.PackageInfo
    7 +android.text.Spanned
    7 +android.text.method.DigitsKeyListener
    7 +android.hardware.Camera
    7 +android.R.attr
    7 +android.telephony.TelephonyManager
    7 +android.media.SoundPool
    7 +android.os.Environment
    6 +android.view.KeyEvent
    6 +java.lang.String
    6 +android.graphics.drawable.shapes.Shape
    6 +android.text.method.MovementMethod
    6 +android.view.OrientationListener
    6 +dalvik.system.DexFile
    6 +java.util.Date
    6 +android.text.TextUtils
    6 +android.os.ParcelFileDescriptor
    5 +android.webkit.WebView
    5 +android.graphics.drawable.RotateDrawable
    5 +android.graphics.drawable.ScaleDrawable
    5 +android.provider.MediaStore.Audio.AlbumColumns
    5 +android.provider.MediaStore.Audio.Media
    5 +android.webkit.WebSettings
    5 +android.content.res.Resources
    5 +android.graphics.RectF
    5 +android.os.Looper
    5 +android.provider.Contacts.PeopleColumns
    5 +android.text.method.ArrowKeyMovementMethod
    5 +android.text.method.TextKeyListener
    5 +android.view.ViewDebug
    5 +android.widget.Scroller
    5 +android.widget.AbsListView
    5 +android.net.ConnectivityManager
    5 +android.view.KeyCharacterMap
    4 +android.content.res.Configuration
    4 +android.widget.ProgressBar
    4 +android.widget.SimpleCursorAdapter
    4 +android.R.string
    4 +java.lang.Class
    4 +java.util.jar.Pack200.Packer
    4 +android.provider.MediaStore.Images.Media
    3 +android.os.Build
    3 +android.os.IBinder
    3 +android.text.method.ScrollingMovementMethod
    3 +android.util.SparseIntArray
    3 +android.content.Intent
    3 +android.content.ContentResolver
    3 +android.net.wifi.WifiManager
    3 +android.content.BroadcastReceiver
    3 +android.os.Handler
    3 +android.view.Menu
    3 +android.view.animation.Animation
    3 +android.view.animation.Transformation
    2 +android.webkit.URLUtil
    2 +java.util.logging.Level
    2 +android.R.style
    2 +android.os.Binder
    2 +android.view.ViewParent
    2 +android.widget.GridView
    2 +android.test.mock.MockPackageManager
    2 +android.view.View
    2 +android.widget.ListView
    2 +android.app.PendingIntent
    2 +android.content.pm.PackageManager
    2 +android.telephony.PhoneNumberUtils
    2 +android.content.ContentProvider
    2 +android.Manifest.permission
    2 +android.widget.ArrayAdapter
    2 +android.content.pm.ActivityInfo
    2 +dalvik.system.VMDebug
    1 +android.database.sqlite.SQLiteDatabase
    1 +android.content.res.TypedArray
    1 +android.app.Activity
    1 +android.preference.DialogPreference
    1 +android.view.Window
    1 +android.graphics.Bitmap
    1 +android.os.Debug
    1 +android.provider.Browser
    1 +android.os.Parcel
    1 +android.database.DatabaseUtils
    1 +android.media.RingtoneManager
    1 +android.graphics.Rect
    1 +android.telephony.gsm.SmsMessage
    1 +android.database.Cursor
    1 +android.database.CursorWrapper
    1 +android.view.MotionEvent
    1 +android.location.Location
    1 +android.graphics.drawable.Drawable
    <1 +android.R.drawable
    <1 +android.app.Instrumentation
    <1 +android.graphics.Canvas
    <1 +android.content.Context
    <1 +android.view.ViewGroup
    <1 +java.lang.Character.UnicodeBlock
    <1 +android.text.style.UpdateLayout
    +
    + +

    Total of Differences, by Number and Type

    +

    +The table below lists the numbers of program elements (packages, classes, constructors, methods, and fields) that were removed, added or changed. The table includes only the highest-level program elements — that is, if a class with two methods was added, the number of methods added does not include those two methods, but the number of classes added does include that class. +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Number of Differences
      + RemovalsAdditionsChangesTotal
    Packages063945
    Classes and Interfaces067186253
    Constructors1361552
    Methods038171452
    Fields129668365
    Total27863791167
    +
    + +
    +
    + + + diff --git a/docs/html/sdk/api_diff/3/changes/jdiff_topleftframe.html b/docs/html/sdk/api_diff/3/changes/jdiff_topleftframe.html new file mode 100644 index 000000000000..666c9dd3ca8d --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/jdiff_topleftframe.html @@ -0,0 +1,64 @@ + + + + + + + + + +Android API Version Differences + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Select a Diffs Index:
    All Differences
    By Package
    By Class
    By Constructor
    By Method
    By Field
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/methods_index_additions.html b/docs/html/sdk/api_diff/3/changes/methods_index_additions.html new file mode 100644 index 000000000000..1fa2bdb6c706 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/methods_index_additions.html @@ -0,0 +1,1397 @@ + + + + + + + + + +Method Additions Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Methods +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + +
    A  +B +C +D +E +F +G +H +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +addGpsStatusListener +(Listener)
    +addOnScrollChangedListener +(OnScrollChangedListener)
    +addPropertyChangeListener
    +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Packer +
    +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Unpacker +
    +  type  +(PropertyChangeListener) in java.util.logging.LogManager +
    +addTestProvider +(String, boolean, boolean, boolean, boolean, boolean, boolean, boolean, int, int)
    +adjustMetaAfterKeypress +(long)
    +applyDisplay +(int, Rect, Rect)
    + +
    B  +A +C +D +E +F +G +H +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +beginBatchEdit +()
    +bringPointIntoView +(int)
    + +
    C  +A +B +D +E +F +G +H +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +calculateLength +(CharSequence, boolean)
    +callActivityOnUserLeaving +(Activity)
    +changeAction +(KeyEvent, int)
    +changeCursorAndColumns +(Cursor, String[], int[])
    +changeFlags +(KeyEvent, int)
    +changeTimeRepeat +(KeyEvent, long, int)
    +checkInputConnectionProxy +(View)
    +clearComposingText +()
    +clearListSelection +()
    +clearMatches +()
    +clearMetaKeyState
    +  type  +(View, Editable, int) in android.text.method.KeyListener +
    +  type  +(long, int) in android.text.method.MetaKeyKeyListener +
    +  type  +(View, Editable, int) in android.text.method.MetaKeyKeyListener +
    +  type  +(Editable, int) in android.text.method.MetaKeyKeyListener +
    +clearTestProviderEnabled +(String)
    +clearTestProviderLocation +(String)
    +clearTestProviderStatus +(String)
    +close +()
    +closeContextMenu +()
    +computeDurationHint +()
    +copyPixelsFromBuffer +(Buffer)
    +createInputStream +()
    +createOutputStream +()
    +createWifiLock +(int, String)
    + +
    D  +A +B +C +E +F +G +H +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +describeContents
    +  type  +() in android.content.res.AssetFileDescriptor +
    +  type  +() in android.graphics.RectF +
    +  type  +() in android.text.Annotation +
    +  type  +() in android.text.style.AbsoluteSizeSpan +
    +  type  +() in android.text.style.AlignmentSpan.Standard +
    +  type  +() in android.text.style.BackgroundColorSpan +
    +  type  +() in android.text.style.BulletSpan +
    +  type  +() in android.text.style.ForegroundColorSpan +
    +  type  +() in android.text.style.LeadingMarginSpan.Standard +
    +  type  +() in android.text.style.QuoteSpan +
    +  type  +() in android.text.style.RelativeSizeSpan +
    +  type  +() in android.text.style.ScaleXSpan +
    +  type  +() in android.text.style.StrikethroughSpan +
    +  type  +() in android.text.style.StyleSpan +
    +  type  +() in android.text.style.SubscriptSpan +
    +  type  +() in android.text.style.SuperscriptSpan +
    +  type  +() in android.text.style.TextAppearanceSpan +
    +  type  +() in android.text.style.TypefaceSpan +
    +  type  +() in android.text.style.URLSpan +
    +  type  +() in android.text.style.UnderlineSpan +
    +deviceHasKey +(int)
    +deviceHasKeys +(int[])
    +didTouchFocusSelect +()
    +dispatchKeyEventPreIme +(KeyEvent)
    +drag +(InstrumentationTestCase, float, float, float, float, int)
    +dragQuarterScreenDown +(InstrumentationTestCase, Activity)
    +dragQuarterScreenUp +(InstrumentationTestCase, Activity)
    +dragViewBy +(InstrumentationTestCase, View, int, int, int)
    +dragViewTo +(InstrumentationTestCase, View, int, int, int)
    +dragViewToBottom
    +  type  +(ActivityInstrumentationTestCase, View, int) in android.test.TouchUtils +
    +  type  +(InstrumentationTestCase, Activity, View, int) in android.test.TouchUtils +
    +dragViewToTop
    +  type  +(InstrumentationTestCase, View) in android.test.TouchUtils +
    +  type  +(InstrumentationTestCase, View, int) in android.test.TouchUtils +
    +dragViewToX +(InstrumentationTestCase, View, int, int)
    +dragViewToY +(InstrumentationTestCase, View, int, int)
    +drawBitmap +(int[], int, int, float, float, int, int, boolean, Paint)
    +dump
    +  type  +(Printer, String) in android.location.Location +
    +  type  +(FileDescriptor, String[]) in android.os.Binder +
    +  type  +(FileDescriptor, String[]) in android.os.IBinder +
    +dumpCapturedView +(String, Object)
    +dumpHprofData
    +  type  +(String) in android.os.Debug +
    +  type  +(String) in dalvik.system.VMDebug +
    +dumpSpans +(CharSequence, Printer, String)
    + +
    E  +A +B +C +D +F +G +H +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +endBatchEdit +()
    +extractText +(ExtractedTextRequest, ExtractedText)
    + +
    F  +A +B +C +D +E +G +H +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +findAll +(String)
    +findNext +(boolean)
    +forkAndSpecialize +(int, int, int[], int, int[][])
    +forkSystemServer +(int, int, int[], int, int[][])
    +formatJapaneseNumber +(Editable)
    + +
    G  +A +B +C +D +E +F +H +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +get +(Context)
    +getAllowFileAccess +()
    +getBackgroundDataSetting +()
    +getBoolean +(int)
    +getBuiltInZoomControls +()
    +getButton +(int)
    +getCapsMode +(CharSequence, int, int)
    +getCharacters +()
    +getDeclaredLength +()
    +getDefaultSensor +(int)
    +getDeviceConfigurationInfo +()
    +getDialog +()
    +getDoubleTapTimeout +()
    +getDrawable
    +  type  +() in android.graphics.drawable.RotateDrawable +
    +  type  +() in android.graphics.drawable.ScaleDrawable +
    +getDropDownAnchor +()
    +getDropDownWidth +()
    +getEditableText +()
    +getFraction +(int, int, int)
    +getGpsStatus +(GpsStatus)
    +getImeActionId +()
    +getImeActionLabel +()
    +getImeOptions +()
    +getInclination +(float[])
    +getInitialScrollX +(TextView, Spannable)
    +getInitialScrollY +(TextView, Spannable)
    +getInputExtras +(boolean)
    +getInputMethodMode +()
    +getInputType
    +  type  +() in android.text.method.DateKeyListener +
    +  type  +() in android.text.method.DateTimeKeyListener +
    +  type  +() in android.text.method.DialerKeyListener +
    +  type  +() in android.text.method.DigitsKeyListener +
    +  type  +() in android.text.method.KeyListener +
    +  type  +() in android.text.method.MultiTapKeyListener +
    +  type  +() in android.text.method.QwertyKeyListener +
    +  type  +() in android.text.method.TextKeyListener +
    +  type  +() in android.text.method.TimeKeyListener +
    +  type  +() in android.widget.TextView +
    +getItem +(int)
    +getKeyProgressIncrement +()
    +getLaunchIntentForPackage
    +  type  +(String) in android.content.pm.PackageManager +
    +  type  +(String) in android.test.mock.MockPackageManager +
    +getLayoutDimension +(int, int)
    +getListSelection +()
    +getListView +()
    +getLoggingMXBean +()
    +getLong
    +  type  +(ContentResolver, String) in android.provider.Settings.System +
    +  type  +(ContentResolver, String, long) in android.provider.Settings.System +
    +getMaxAvailableHeight +(View, int)
    +getMaxKeyCode +()
    +getMetaState
    +  type  +(long) in android.text.method.MetaKeyKeyListener +
    +  type  +(long, int) in android.text.method.MetaKeyKeyListener +
    +getNeighboringCellInfo +()
    +getOnChronometerTickListener +()
    +getOnItemClickListener +()
    +getOnItemSelectedListener +()
    +getOrientation +(float[], float[])
    +getOriginalUrl
    +  type  +() in android.webkit.WebHistoryItem +
    +  type  +() in android.webkit.WebView +
    +getPluginData
    +  type  +(String, Map<String, String>) in android.webkit.UrlInterceptHandler +
    +  type  +(String, Map<String, String>) in android.webkit.UrlInterceptRegistry +
    +getPrivateImeOptions +()
    +getRotationMatrix +(float[], float[], float[], float[])
    +getRunningAppProcesses +()
    +getScaledDoubleTapSlop +()
    +getScaledEdgeSlop +()
    +getScaledFadingEdgeLength +()
    +getScaledMaximumDrawingCacheSize +()
    +getScaledMinimumFlingVelocity +()
    +getScaledScrollBarSize +()
    +getScaledTouchSlop +()
    +getScaledWindowTouchSlop +()
    +getSensorList +(int)
    +getSize +(View)
    +getSpanTypeId
    +  type  +() in android.text.Annotation +
    +  type  +() in android.text.style.AbsoluteSizeSpan +
    +  type  +() in android.text.style.AlignmentSpan.Standard +
    +  type  +() in android.text.style.BackgroundColorSpan +
    +  type  +() in android.text.style.BulletSpan +
    +  type  +() in android.text.style.ForegroundColorSpan +
    +  type  +() in android.text.style.LeadingMarginSpan.Standard +
    +  type  +() in android.text.style.QuoteSpan +
    +  type  +() in android.text.style.RelativeSizeSpan +
    +  type  +() in android.text.style.ScaleXSpan +
    +  type  +() in android.text.style.StrikethroughSpan +
    +  type  +() in android.text.style.StyleSpan +
    +  type  +() in android.text.style.SubscriptSpan +
    +  type  +() in android.text.style.SuperscriptSpan +
    +  type  +() in android.text.style.TextAppearanceSpan +
    +  type  +() in android.text.style.TypefaceSpan +
    +  type  +() in android.text.style.URLSpan +
    +  type  +() in android.text.style.UnderlineSpan +
    +getStartX +()
    +getStartY +()
    +getStatSize +()
    +getSubtype +()
    +getSubtypeName +()
    +getSystemSharedLibraryNames
    +  type  +() in android.content.pm.PackageManager +
    +  type  +() in android.test.mock.MockPackageManager +
    +getTextFilter +()
    +getThread +()
    +getTimeZoneDatabaseVersion +()
    +getUserAgentString +()
    +getVerticalAlignment +()
    +getWindowVisibleDisplayFrame +(Rect)
    + +
    H  +A +B +C +D +E +F +G +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +handleKeyDown +(long, int, KeyEvent)
    +handleKeyUp +(long, int, KeyEvent)
    +hasSoftInputMode +()
    +hasWindowFocus +()
    + +
    I  +A +B +C +D +E +F +G +H +L +M +O +P +R +S +T +U +W +Y + TOP +

    +inferStreamType +()
    +intentForPosition +(int)
    +isAboveAnchor +()
    +isBluetoothA2dpOn +()
    +isClippingEnabled +()
    +isDebuggingEnabled +()
    +isFastScrollEnabled +()
    +isFillEnabled +()
    +isHapticFeedbackEnabled +()
    +isInEditMode +()
    +isInputMethodTarget +()
    +isLooping +()
    +isOutsideTouchable +()
    +isPerformingCompletion +()
    +isRoaming +()
    +isSafeMode
    +  type  +() in android.content.pm.PackageManager +
    +  type  +() in android.test.mock.MockPackageManager +
    +isSelectingMetaTracker +(CharSequence, Object)
    +isSmoothScrollbarEnabled +()
    +isTouchable +()
    + +
    L  +A +B +C +D +E +F +G +H +I +M +O +P +R +S +T +U +W +Y + TOP +

    +launchActivityWithIntent +(String, Class<T>, Intent)
    +load
    +  type  +(AssetFileDescriptor, int) in android.media.SoundPool +
    +  type  +(FileDescriptor, long, long, int) in android.media.SoundPool +
    +loadDex +(String, String, int)
    +longClickView +(InstrumentationTestCase, View)
    + +
    M  +A +B +C +D +E +F +G +H +I +L +O +P +R +S +T +U +W +Y + TOP +

    +makeListItems +()
    +mayUseInputMethod +(int)
    +moveCursorToVisibleOffset +()
    +mutate +()
    + +
    O  +A +B +C +D +E +F +G +H +I +L +M +P +R +S +T +U +W +Y + TOP +

    +onBeginBatchEdit +()
    +onCheckIsTextEditor +()
    +onCommitCompletion +(CompletionInfo)
    +onContentChanged +()
    +onCreateInputConnection +(EditorInfo)
    +onDoubleTap +(MotionEvent)
    +onDoubleTapEvent +(MotionEvent)
    +onEditorAction +(int)
    +onEndBatchEdit +()
    +onFinishTemporaryDetach +()
    +onKeyOther
    +  type  +(TextView, Spannable, KeyEvent) in android.text.method.ArrowKeyMovementMethod +
    +  type  +(View, Editable, KeyEvent) in android.text.method.BaseKeyListener +
    +  type  +(View, Editable, KeyEvent) in android.text.method.KeyListener +
    +  type  +(TextView, Spannable, KeyEvent) in android.text.method.MovementMethod +
    +  type  +(TextView, Spannable, KeyEvent) in android.text.method.ScrollingMovementMethod +
    +onKeyPreIme +(int, KeyEvent)
    +onPrivateIMECommand +(String, Bundle)
    +onSelectionChanged +(int, int)
    +onSingleTapConfirmed +(MotionEvent)
    +onStartTemporaryDetach +()
    +onTextContextMenuItem +(int)
    +onUserInteraction +()
    +onUserLeaveHint +()
    +openAssetFile +(Uri, String)
    +openAssetFileDescriptor +(Uri, String)
    +openOutputStream +(Uri, String)
    +openRawResource +(int, TypedValue)
    + +
    P  +A +B +C +D +E +F +G +H +I +L +M +O +R +S +T +U +W +Y + TOP +

    +parseBundleExtra +(String, AttributeSet, Bundle)
    +parseBundleExtras +(XmlResourceParser, Bundle)
    +peekService +(Context, Intent)
    +performHapticFeedback
    +  type  +(int) in android.view.View +
    +  type  +(int, int) in android.view.View +
    +playSoundEffect +(int, float)
    +putLong +(ContentResolver, String, long)
    + +
    R  +A +B +C +D +E +F +G +H +I +L +M +O +P +S +T +U +W +Y + TOP +

    +readFromParcel +(Parcel)
    +registerListener
    +  type  +(SensorEventListener, Sensor, int) in android.hardware.SensorManager +
    +  type  +(SensorEventListener, Sensor, int, Handler) in android.hardware.SensorManager +
    +remapCoordinateSystem +(float[], int, int, float[])
    +removeAt +(int)
    +removeGpsStatusListener +(Listener)
    +removeOnScrollChangedListener +(OnScrollChangedListener)
    +removePropertyChangeListener
    +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Packer +
    +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Unpacker +
    +  type  +(PropertyChangeListener) in java.util.logging.LogManager +
    +removeTestProvider +(String)
    +removeUpdates +(PendingIntent)
    +replaceExtras
    +  type  +(Intent) in android.content.Intent +
    +  type  +(Bundle) in android.content.Intent +
    +requestChildRectangleOnScreen +(View, Rect, boolean)
    +requestLocationUpdates +(String, long, float, PendingIntent)
    +resetLockedMeta +(long)
    +restartPackage +(String)
    +restorePicture +(Bundle, File)
    +runTestOnUiThread +(Runnable)
    + +
    S  +A +B +C +D +E +F +G +H +I +L +M +O +P +R +T +U +W +Y + TOP +

    +savePicture +(Bundle, File)
    +scrollToBottom +(InstrumentationTestCase, Activity, ViewGroup)
    +scrollToTop +(InstrumentationTestCase, Activity, ViewGroup)
    +sendExtraCommand +(String, String, Bundle)
    +setAllowFileAccess +(boolean)
    +setBitmap +(int, String, Bitmap)
    +setBluetoothA2dpOn +(boolean)
    +setBoolean +(int, String, boolean)
    +setBuiltInZoomControls +(boolean)
    +setButton
    +  type  +(CharSequence, OnClickListener) in android.app.AlertDialog +
    +  type  +(CharSequence, Message) in android.app.AlertDialog +
    +setByte +(int, String, byte)
    +setCamera +(Camera)
    +setChar +(int, String, char)
    +setCharSequence +(int, String, CharSequence)
    +setClippingEnabled +(boolean)
    +setCompoundDrawablesWithIntrinsicBounds +(int, int, int, int)
    +setDouble +(int, String, double)
    +setDropDownAnchor +(int)
    +setDropDownWidth +(int)
    +setExtractedText +(ExtractedText)
    +setFastScrollEnabled +(boolean)
    +setFillEnabled +(boolean)
    +setFloat +(int, String, float)
    +setFooterDividersEnabled +(boolean)
    +setHapticFeedbackEnabled +(boolean)
    +setHeaderDividersEnabled +(boolean)
    +setImageViewBitmap +(int, Bitmap)
    +setImeActionLabel +(CharSequence, int)
    +setImeOptions +(int)
    +setInexactRepeating +(int, long, long, PendingIntent)
    +setInputExtras +(int)
    +setInputMethodMode +(int)
    +setInputType +(int)
    +setInt +(int, String, int)
    +setKeyProgressIncrement +(int)
    +setListSelection +(int)
    +setLong +(int, String, long)
    +setMaxDuration +(int)
    +setMaxFileSize +(long)
    +setNetworkAvailable +(boolean)
    +setOnChronometerTickListener +(OnChronometerTickListener)
    +setOnClickPendingIntent +(int, PendingIntent)
    +setOnDoubleTapListener +(OnDoubleTapListener)
    +setOnEditorActionListener +(OnEditorActionListener)
    +setOnErrorListener +(OnErrorListener)
    +setOneShotPreviewCallback +(PreviewCallback)
    +setOnInfoListener
    +  type  +(OnInfoListener) in android.media.MediaPlayer +
    +  type  +(OnInfoListener) in android.media.MediaRecorder +
    +setOnVideoSizeChangedListener +(OnVideoSizeChangedListener)
    +setOutputFile +(FileDescriptor)
    +setOutsideTouchable +(boolean)
    +setPrivateImeOptions +(String)
    +setRawInputType +(int)
    +setScrollContainer +(boolean)
    +setShort +(int, String, short)
    +setSmoothScrollbarEnabled +(boolean)
    +setSoftInputMode +(int)
    +setStaticTransformationsEnabled +(boolean)
    +setString +(int, String, String)
    +setTestProviderEnabled +(String, boolean)
    +setTestProviderLocation +(String, Location)
    +setTestProviderStatus +(String, int, Bundle, long)
    +setTextColor +(int, int)
    +setTouchable +(boolean)
    +setTouchInterceptor +(OnTouchListener)
    +setUri +(int, String, Uri)
    +setUserAgentString +(String)
    +setVideoEncoder +(int)
    +setVideoFrameRate +(int)
    +setVideoSize +(int, int)
    +setVideoSource +(int)
    +setView +(View, int, int, int, int)
    +setViewResource +(int)
    +setVisible +(boolean)
    +setWindowAnimations +(int)
    +setWindowLayoutMode +(int, int)
    +sort +(Comparator<? super T>)
    + +
    T  +A +B +C +D +E +F +G +H +I +L +M +O +P +R +S +U +W +Y + TOP +

    +toShortString
    +  type  +() in android.graphics.Rect +
    +  type  +() in android.view.animation.Transformation +
    + +
    U  +A +B +C +D +E +F +G +H +I +L +M +O +P +R +S +T +W +Y + TOP +

    +unregisterListener
    +  type  +(SensorEventListener) in android.hardware.SensorManager +
    +  type  +(SensorEventListener, Sensor) in android.hardware.SensorManager +
    +update
    +  type  +() in android.widget.PopupWindow +
    +  type  +(int, int, int, int, boolean) in android.widget.PopupWindow +
    + +
    W  +A +B +C +D +E +F +G +H +I +L +M +O +P +R +S +T +U +Y + TOP +

    +writeToParcel
    +  type  +(Parcel, int) in android.content.res.AssetFileDescriptor +
    +  type  +(Parcel, int) in android.graphics.RectF +
    +  type  +(Parcel, int) in android.text.Annotation +
    +  type  +(Parcel, int) in android.text.style.AbsoluteSizeSpan +
    +  type  +(Parcel, int) in android.text.style.AlignmentSpan.Standard +
    +  type  +(Parcel, int) in android.text.style.BackgroundColorSpan +
    +  type  +(Parcel, int) in android.text.style.BulletSpan +
    +  type  +(Parcel, int) in android.text.style.ForegroundColorSpan +
    +  type  +(Parcel, int) in android.text.style.LeadingMarginSpan.Standard +
    +  type  +(Parcel, int) in android.text.style.QuoteSpan +
    +  type  +(Parcel, int) in android.text.style.RelativeSizeSpan +
    +  type  +(Parcel, int) in android.text.style.ScaleXSpan +
    +  type  +(Parcel, int) in android.text.style.StrikethroughSpan +
    +  type  +(Parcel, int) in android.text.style.StyleSpan +
    +  type  +(Parcel, int) in android.text.style.SubscriptSpan +
    +  type  +(Parcel, int) in android.text.style.SuperscriptSpan +
    +  type  +(Parcel, int) in android.text.style.TextAppearanceSpan +
    +  type  +(Parcel, int) in android.text.style.TypefaceSpan +
    +  type  +(Parcel, int) in android.text.style.URLSpan +
    +  type  +(Parcel, int) in android.text.style.UnderlineSpan +
    + +
    Y  +A +B +C +D +E +F +G +H +I +L +M +O +P +R +S +T +U +W + TOP +

    +yieldIfContendedSafely +()
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/methods_index_all.html b/docs/html/sdk/api_diff/3/changes/methods_index_all.html new file mode 100644 index 000000000000..22492a352290 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/methods_index_all.html @@ -0,0 +1,1600 @@ + + + + + + + + + +Method Differences Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +Methods +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + +
    A  +B +C +D +E +F +G +H +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +addGpsStatusListener +(Listener)
    +addOnScrollChangedListener +(OnScrollChangedListener)
    +addPropertyChangeListener
    +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Packer +
    +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Unpacker +
    +  type  +(PropertyChangeListener) in java.util.logging.LogManager +
    +addRequirements +(Predicate<TestMethod>)
    +addTestProvider +(String, boolean, boolean, boolean, boolean, boolean, boolean, boolean, int, int)
    +adjustMetaAfterKeypress +(long)
    +appendEscapedSQLString +(StringBuilder, String)
    +applyDisplay +(int, Rect, Rect)
    + +
    B  +A +C +D +E +F +G +H +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +beginBatchEdit +()
    +bringPointIntoView +(int)
    + +
    C  +A +B +D +E +F +G +H +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +calculateLength +(CharSequence, boolean)
    +callActivityOnUserLeaving +(Activity)
    +changeAction +(KeyEvent, int)
    +changeCursorAndColumns +(Cursor, String[], int[])
    +changeDebugPort +(int)
    +changeFlags +(KeyEvent, int)
    +changeTimeRepeat +(KeyEvent, long, int)
    +checkInputConnectionProxy +(View)
    +clearComposingText +()
    +clearListSelection +()
    +clearMatches +()
    +clearMetaKeyState
    +  type  +(View, Editable, int) in android.text.method.KeyListener +
    +  type  +(long, int) in android.text.method.MetaKeyKeyListener +
    +  type  +(View, Editable, int) in android.text.method.MetaKeyKeyListener +
    +  type  +(Editable, int) in android.text.method.MetaKeyKeyListener +
    +clearTestProviderEnabled +(String)
    +clearTestProviderLocation +(String)
    +clearTestProviderStatus +(String)
    +clone +()
    +close +()
    +closeContextMenu +()
    +computeDurationHint +()
    +copyPixelsFromBuffer +(Buffer)
    +createInputStream +()
    +createOutputStream +()
    +createWifiLock +(int, String)
    + +
    D  +A +B +C +E +F +G +H +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +describeContents
    +  type  +() in android.content.res.AssetFileDescriptor +
    +  type  +() in android.graphics.RectF +
    +  type  +() in android.text.Annotation +
    +  type  +() in android.text.style.AbsoluteSizeSpan +
    +  type  +() in android.text.style.AlignmentSpan.Standard +
    +  type  +() in android.text.style.BackgroundColorSpan +
    +  type  +() in android.text.style.BulletSpan +
    +  type  +() in android.text.style.ForegroundColorSpan +
    +  type  +() in android.text.style.LeadingMarginSpan.Standard +
    +  type  +() in android.text.style.QuoteSpan +
    +  type  +() in android.text.style.RelativeSizeSpan +
    +  type  +() in android.text.style.ScaleXSpan +
    +  type  +() in android.text.style.StrikethroughSpan +
    +  type  +() in android.text.style.StyleSpan +
    +  type  +() in android.text.style.SubscriptSpan +
    +  type  +() in android.text.style.SuperscriptSpan +
    +  type  +() in android.text.style.TextAppearanceSpan +
    +  type  +() in android.text.style.TypefaceSpan +
    +  type  +() in android.text.style.URLSpan +
    +  type  +() in android.text.style.UnderlineSpan +
    +deviceHasKey +(int)
    +deviceHasKeys +(int[])
    +didTouchFocusSelect +()
    +dispatchKeyEventPreIme +(KeyEvent)
    +drag
    +  type  +(InstrumentationTestCase, float, float, float, float, int) in android.test.TouchUtils +
    +  type  +(ActivityInstrumentationTestCase, float, float, float, float, int) in android.test.TouchUtils +
    +dragQuarterScreenDown
    +  type  +(InstrumentationTestCase, Activity) in android.test.TouchUtils +
    +  type  +(ActivityInstrumentationTestCase) in android.test.TouchUtils +
    +dragQuarterScreenUp
    +  type  +(InstrumentationTestCase, Activity) in android.test.TouchUtils +
    +  type  +(ActivityInstrumentationTestCase) in android.test.TouchUtils +
    +dragViewBy
    +  type  +(InstrumentationTestCase, View, int, int, int) in android.test.TouchUtils +
    +  type  +(ActivityInstrumentationTestCase, View, int, int, int) in android.test.TouchUtils +
    +dragViewTo
    +  type  +(InstrumentationTestCase, View, int, int, int) in android.test.TouchUtils +
    +  type  +(ActivityInstrumentationTestCase, View, int, int, int) in android.test.TouchUtils +
    +dragViewToBottom
    +  type  +(ActivityInstrumentationTestCase, View, int) in android.test.TouchUtils +
    +  type  +(InstrumentationTestCase, Activity, View, int) in android.test.TouchUtils +
    +  type  +(ActivityInstrumentationTestCase, View) in android.test.TouchUtils +
    +  type  +(InstrumentationTestCase, Activity, View) in android.test.TouchUtils +
    +dragViewToTop
    +  type  +(InstrumentationTestCase, View) in android.test.TouchUtils +
    +  type  +(InstrumentationTestCase, View, int) in android.test.TouchUtils +
    +  type  +(ActivityInstrumentationTestCase, View) in android.test.TouchUtils +
    +  type  +(ActivityInstrumentationTestCase, View, int) in android.test.TouchUtils +
    +dragViewToX
    +  type  +(InstrumentationTestCase, View, int, int) in android.test.TouchUtils +
    +  type  +(ActivityInstrumentationTestCase, View, int, int) in android.test.TouchUtils +
    +dragViewToY
    +  type  +(InstrumentationTestCase, View, int, int) in android.test.TouchUtils +
    +  type  +(ActivityInstrumentationTestCase, View, int, int) in android.test.TouchUtils +
    +drawBitmap +(int[], int, int, float, float, int, int, boolean, Paint)
    +dump
    +  type  +(Printer, String) in android.location.Location +
    +  type  +(FileDescriptor, String[]) in android.os.Binder +
    +  type  +(FileDescriptor, String[]) in android.os.IBinder +
    +dumpCapturedView +(String, Object)
    +dumpHprofData
    +  type  +(String) in android.os.Debug +
    +  type  +(String) in dalvik.system.VMDebug +
    +dumpSpans +(CharSequence, Printer, String)
    + +
    E  +A +B +C +D +F +G +H +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +endBatchEdit +()
    +extractText +(ExtractedTextRequest, ExtractedText)
    + +
    F  +A +B +C +D +E +G +H +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +findAll +(String)
    +findNext +(boolean)
    +forkAndSpecialize
    +  type  +(int, int, int[], int, int[][]) in dalvik.system.Zygote +
    +  type  +(int, int, int[], boolean, int[][]) in dalvik.system.Zygote +
    +forkSystemServer
    +  type  +(int, int, int[], int, int[][]) in dalvik.system.Zygote +
    +  type  +(int, int, int[], boolean, int[][]) in dalvik.system.Zygote +
    +formatJapaneseNumber +(Editable)
    +forName +(String)
    + +
    G  +A +B +C +D +E +F +H +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +get +(Context)
    +getAllowFileAccess +()
    +getBackgroundDataSetting +()
    +getBoolean +(int)
    +getBuiltInZoomControls +()
    +getButton +(int)
    +getCapsMode +(CharSequence, int, int)
    +getCharacters +()
    +getClasses +()
    +getColumnIndex
    +  type  +(String) in android.database.Cursor +
    +  type  +(String) in android.database.CursorWrapper +
    +getConstructors +()
    +getCount +()
    +getDeclaredClasses +()
    +getDeclaredConstructors +()
    +getDeclaredLength +()
    +getDefaultSensor +(int)
    +getDeviceConfigurationInfo +()
    +getDialog +()
    +getDoubleTapTimeout +()
    +getDrawable
    +  type  +() in android.graphics.drawable.RotateDrawable +
    +  type  +() in android.graphics.drawable.ScaleDrawable +
    +getDropDownAnchor +()
    +getDropDownWidth +()
    +getEdgeSlop +()
    +getEditableText +()
    +getFadingEdgeLength +()
    +getFraction +(int, int, int)
    +getGpsStatus +(GpsStatus)
    +getHandler +()
    +getImeActionId +()
    +getImeActionLabel +()
    +getImeOptions +()
    +getInclination +(float[])
    +getInitialScrollX +(TextView, Spannable)
    +getInitialScrollY +(TextView, Spannable)
    +getInputExtras +(boolean)
    +getInputMethodMode +()
    +getInputType
    +  type  +() in android.text.method.DateKeyListener +
    +  type  +() in android.text.method.DateTimeKeyListener +
    +  type  +() in android.text.method.DialerKeyListener +
    +  type  +() in android.text.method.DigitsKeyListener +
    +  type  +() in android.text.method.KeyListener +
    +  type  +() in android.text.method.MultiTapKeyListener +
    +  type  +() in android.text.method.QwertyKeyListener +
    +  type  +() in android.text.method.TextKeyListener +
    +  type  +() in android.text.method.TimeKeyListener +
    +  type  +() in android.widget.TextView +
    +getInterfaces +()
    +getItem
    +  type  +(int) in android.view.Menu +
    +  type  +(int) in android.widget.CursorAdapter +
    +getItemClickListener +()
    +getItemId +(int)
    +getItemSelectedListener +()
    +getKeyProgressIncrement +()
    +getLaunchIntentForPackage
    +  type  +(String) in android.content.pm.PackageManager +
    +  type  +(String) in android.test.mock.MockPackageManager +
    +getLayoutDimension +(int, int)
    +getListSelection +()
    +getListView +()
    +getLoggingMXBean +()
    +getLong
    +  type  +(ContentResolver, String) in android.provider.Settings.System +
    +  type  +(ContentResolver, String, long) in android.provider.Settings.System +
    +getMaxAvailableHeight +(View, int)
    +getMaximumDrawingCacheSize +()
    +getMaxKeyCode +()
    +getMetaState
    +  type  +(long) in android.text.method.MetaKeyKeyListener +
    +  type  +(long, int) in android.text.method.MetaKeyKeyListener +
    +getMinimumFlingVelocity +()
    +getNeighboringCellInfo +()
    +getOnChronometerTickListener +()
    +getOnItemClickListener +()
    +getOnItemSelectedListener +()
    +getOrientation +(float[], float[])
    +getOriginalUrl
    +  type  +() in android.webkit.WebHistoryItem +
    +  type  +() in android.webkit.WebView +
    +getPluginData
    +  type  +(String, Map<String, String>) in android.webkit.UrlInterceptHandler +
    +  type  +(String, Map<String, String>) in android.webkit.UrlInterceptRegistry +
    +getPrivateImeOptions +()
    +getProxyClass +(ClassLoader, Class<?>)
    +getRotationMatrix +(float[], float[], float[], float[])
    +getRunningAppProcesses +()
    +getScaledDoubleTapSlop +()
    +getScaledEdgeSlop +()
    +getScaledFadingEdgeLength +()
    +getScaledMaximumDrawingCacheSize +()
    +getScaledMinimumFlingVelocity +()
    +getScaledScrollBarSize +()
    +getScaledTouchSlop +()
    +getScaledWindowTouchSlop +()
    +getScrollBarSize +()
    +getSensorList +(int)
    +getSensors +()
    +getSize +(View)
    +getSpanTypeId
    +  type  +() in android.text.Annotation +
    +  type  +() in android.text.style.AbsoluteSizeSpan +
    +  type  +() in android.text.style.AlignmentSpan.Standard +
    +  type  +() in android.text.style.BackgroundColorSpan +
    +  type  +() in android.text.style.BulletSpan +
    +  type  +() in android.text.style.ForegroundColorSpan +
    +  type  +() in android.text.style.LeadingMarginSpan.Standard +
    +  type  +() in android.text.style.QuoteSpan +
    +  type  +() in android.text.style.RelativeSizeSpan +
    +  type  +() in android.text.style.ScaleXSpan +
    +  type  +() in android.text.style.StrikethroughSpan +
    +  type  +() in android.text.style.StyleSpan +
    +  type  +() in android.text.style.SubscriptSpan +
    +  type  +() in android.text.style.SuperscriptSpan +
    +  type  +() in android.text.style.TextAppearanceSpan +
    +  type  +() in android.text.style.TypefaceSpan +
    +  type  +() in android.text.style.URLSpan +
    +  type  +() in android.text.style.UnderlineSpan +
    +getStartX +()
    +getStartY +()
    +getStatSize +()
    +getSubtype +()
    +getSubtypeName +()
    +getSurrogate +(String, Map<String, String>)
    +getSystemSharedLibraryNames
    +  type  +() in android.content.pm.PackageManager +
    +  type  +() in android.test.mock.MockPackageManager +
    +getTargetIntent +()
    +getTextFilter +()
    +getThread +()
    +getTimeZoneDatabaseVersion +()
    +getTouchSlop +()
    +getUserAgent +()
    +getUserAgentString +()
    +getVerticalAlignment +()
    +getWindowTouchSlop +()
    +getWindowVisibleDisplayFrame +(Rect)
    +getZoomControls +()
    + +
    H  +A +B +C +D +E +F +G +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +handleKeyDown +(long, int, KeyEvent)
    +handleKeyUp +(long, int, KeyEvent)
    +hasSoftInputMode +()
    +hasWindowFocus +()
    + +
    I  +A +B +C +D +E +F +G +H +L +M +O +P +R +S +T +U +W +Y + TOP +

    +inferStreamType +()
    +intentForPosition +(int)
    +isAboveAnchor +()
    +isBluetoothA2dpOn +()
    +isClippingEnabled +()
    +isCookielessProxyUrl +(String)
    +isDebuggingEnabled +()
    +isFastScrollEnabled +()
    +isFillEnabled +()
    +isHapticFeedbackEnabled +()
    +isInEditMode +()
    +isInputMethodTarget +()
    +isLooping +()
    +isOutsideTouchable +()
    +isPerformingCompletion +()
    +isRoaming +()
    +isSafeMode
    +  type  +() in android.content.pm.PackageManager +
    +  type  +() in android.test.mock.MockPackageManager +
    +isSelectingMetaTracker +(CharSequence, Object)
    +isSmoothScrollbarEnabled +()
    +isTouchable +()
    + +
    L  +A +B +C +D +E +F +G +H +I +M +O +P +R +S +T +U +W +Y + TOP +

    +launchActivityWithIntent +(String, Class<T>, Intent)
    +load
    +  type  +(AssetFileDescriptor, int) in android.media.SoundPool +
    +  type  +(FileDescriptor, long, long, int) in android.media.SoundPool +
    +loadDex +(String, String, int)
    +longClickView
    +  type  +(InstrumentationTestCase, View) in android.test.TouchUtils +
    +  type  +(ActivityInstrumentationTestCase, View) in android.test.TouchUtils +
    + +
    M  +A +B +C +D +E +F +G +H +I +L +O +P +R +S +T +U +W +Y + TOP +

    +makeListItems +()
    +mayUseInputMethod +(int)
    +moveCursorToVisibleOffset +()
    +mutate +()
    + +
    O  +A +B +C +D +E +F +G +H +I +L +M +P +R +S +T +U +W +Y + TOP +

    +onBeginBatchEdit +()
    +onCheckIsTextEditor +()
    +onCommitCompletion +(CompletionInfo)
    +onContentChanged +()
    +onCreateInputConnection +(EditorInfo)
    +onDoubleTap +(MotionEvent)
    +onDoubleTapEvent +(MotionEvent)
    +onEditorAction +(int)
    +onEndBatchEdit +()
    +onFinishTemporaryDetach +()
    +onGlobalFocusChanged +(View, View)
    +onKeyOther
    +  type  +(TextView, Spannable, KeyEvent) in android.text.method.ArrowKeyMovementMethod +
    +  type  +(View, Editable, KeyEvent) in android.text.method.BaseKeyListener +
    +  type  +(View, Editable, KeyEvent) in android.text.method.KeyListener +
    +  type  +(TextView, Spannable, KeyEvent) in android.text.method.MovementMethod +
    +  type  +(TextView, Spannable, KeyEvent) in android.text.method.ScrollingMovementMethod +
    +onKeyPreIme +(int, KeyEvent)
    +onPrivateIMECommand +(String, Bundle)
    +onRestoreInstanceState +(Parcelable)
    +onSaveInstanceState +()
    +onSelectionChanged +(int, int)
    +onSingleTapConfirmed +(MotionEvent)
    +onStartTemporaryDetach +()
    +onTextContextMenuItem +(int)
    +onUserInteraction +()
    +onUserLeaveHint +()
    +openAssetFile +(Uri, String)
    +openAssetFileDescriptor +(Uri, String)
    +openOutputStream +(Uri, String)
    +openRawResource +(int, TypedValue)
    + +
    P  +A +B +C +D +E +F +G +H +I +L +M +O +R +S +T +U +W +Y + TOP +

    +parse +(String)
    +parseBundleExtra +(String, AttributeSet, Bundle)
    +parseBundleExtras +(XmlResourceParser, Bundle)
    +peekService +(Context, Intent)
    +performHapticFeedback
    +  type  +(int) in android.view.View +
    +  type  +(int, int) in android.view.View +
    +playSoundEffect
    +  type  +(int, float) in android.media.AudioManager +
    +  type  +(int) in android.view.View +
    +prepare +()
    +putLong +(ContentResolver, String, long)
    + +
    R  +A +B +C +D +E +F +G +H +I +L +M +O +P +S +T +U +W +Y + TOP +

    +readFromParcel +(Parcel)
    +readHashMap +(ClassLoader)
    +readMap +(Map, ClassLoader)
    +registerListener
    +  type  +(SensorEventListener, Sensor, int) in android.hardware.SensorManager +
    +  type  +(SensorEventListener, Sensor, int, Handler) in android.hardware.SensorManager +
    +  type  +(SensorListener, int) in android.hardware.SensorManager +
    +  type  +(SensorListener, int, int) in android.hardware.SensorManager +
    +remapCoordinateSystem +(float[], int, int, float[])
    +removeAt +(int)
    +removeGpsStatusListener +(Listener)
    +removeOnScrollChangedListener +(OnScrollChangedListener)
    +removePropertyChangeListener
    +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Packer +
    +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Unpacker +
    +  type  +(PropertyChangeListener) in java.util.logging.LogManager +
    +removeTestProvider +(String)
    +removeUpdates +(PendingIntent)
    +replaceExtras
    +  type  +(Intent) in android.content.Intent +
    +  type  +(Bundle) in android.content.Intent +
    +requestChildRectangleOnScreen +(View, Rect, boolean)
    +requestLocationUpdates +(String, long, float, PendingIntent)
    +resetLockedMeta +(long)
    +restartPackage +(String)
    +restorePicture +(Bundle, File)
    +runTestOnUiThread +(Runnable)
    + +
    S  +A +B +C +D +E +F +G +H +I +L +M +O +P +R +T +U +W +Y + TOP +

    +savePicture +(Bundle, File)
    +scrollToBottom
    +  type  +(InstrumentationTestCase, Activity, ViewGroup) in android.test.TouchUtils +
    +  type  +(ActivityInstrumentationTestCase, ViewGroup) in android.test.TouchUtils +
    +scrollToTop
    +  type  +(InstrumentationTestCase, Activity, ViewGroup) in android.test.TouchUtils +
    +  type  +(ActivityInstrumentationTestCase, ViewGroup) in android.test.TouchUtils +
    +sendExtraCommand +(String, String, Bundle)
    +service +(String, Map<String, String>)
    +setAllowFileAccess +(boolean)
    +setBitmap +(int, String, Bitmap)
    +setBluetoothA2dpOn +(boolean)
    +setBoolean +(int, String, boolean)
    +setBuiltInZoomControls +(boolean)
    +setButton
    +  type  +(CharSequence, OnClickListener) in android.app.AlertDialog +
    +  type  +(CharSequence, Message) in android.app.AlertDialog +
    +  type  +(int, CharSequence, OnClickListener) in android.app.AlertDialog +
    +  type  +(int, CharSequence, Message) in android.app.AlertDialog +
    +setButton2
    +  type  +(CharSequence, OnClickListener) in android.app.AlertDialog +
    +  type  +(CharSequence, Message) in android.app.AlertDialog +
    +setButton3
    +  type  +(CharSequence, OnClickListener) in android.app.AlertDialog +
    +  type  +(CharSequence, Message) in android.app.AlertDialog +
    +setByte +(int, String, byte)
    +setCamera +(Camera)
    +setChar +(int, String, char)
    +setCharSequence +(int, String, CharSequence)
    +setClippingEnabled +(boolean)
    +setCompoundDrawablesWithIntrinsicBounds +(int, int, int, int)
    +setDouble +(int, String, double)
    +setDropDownAnchor +(int)
    +setDropDownWidth +(int)
    +setExtractedText +(ExtractedText)
    +setFastScrollEnabled +(boolean)
    +setFillEnabled +(boolean)
    +setFloat +(int, String, float)
    +setFooterDividersEnabled +(boolean)
    +setHapticFeedbackEnabled +(boolean)
    +setHeaderDividersEnabled +(boolean)
    +setImageViewBitmap +(int, Bitmap)
    +setImeActionLabel +(CharSequence, int)
    +setImeOptions +(int)
    +setInexactRepeating +(int, long, long, PendingIntent)
    +setInputExtras +(int)
    +setInputMethodMode +(int)
    +setInputType +(int)
    +setInt +(int, String, int)
    +setKeyProgressIncrement +(int)
    +setListSelection +(int)
    +setLong +(int, String, long)
    +setMaxDuration +(int)
    +setMaxFileSize +(long)
    +setNetworkAvailable +(boolean)
    +setOnChronometerTickListener +(OnChronometerTickListener)
    +setOnClickPendingIntent +(int, PendingIntent)
    +setOnDoubleTapListener +(OnDoubleTapListener)
    +setOnEditorActionListener +(OnEditorActionListener)
    +setOnErrorListener +(OnErrorListener)
    +setOneShotPreviewCallback +(PreviewCallback)
    +setOnInfoListener
    +  type  +(OnInfoListener) in android.media.MediaPlayer +
    +  type  +(OnInfoListener) in android.media.MediaRecorder +
    +setOnVideoSizeChangedListener +(OnVideoSizeChangedListener)
    +setOutputFile +(FileDescriptor)
    +setOutsideTouchable +(boolean)
    +setPreviewDisplay +(SurfaceHolder)
    +setPrivateImeOptions +(String)
    +setRawInputType +(int)
    +setScrollContainer +(boolean)
    +setShort +(int, String, short)
    +setSmoothScrollbarEnabled +(boolean)
    +setSoftInputMode +(int)
    +setStaticTransformationsEnabled +(boolean)
    +setString +(int, String, String)
    +setTestProviderEnabled +(String, boolean)
    +setTestProviderLocation +(String, Location)
    +setTestProviderStatus +(String, int, Bundle, long)
    +setTextColor +(int, int)
    +setTouchable +(boolean)
    +setTouchInterceptor +(OnTouchListener)
    +setUri +(int, String, Uri)
    +setUserAgent +(int)
    +setUserAgentString +(String)
    +setVideoEncoder +(int)
    +setVideoFrameRate +(int)
    +setVideoSize +(int, int)
    +setVideoSource +(int)
    +setView +(View, int, int, int, int)
    +setViewResource +(int)
    +setVisible +(boolean)
    +setWindowAnimations +(int)
    +setWindowLayoutMode +(int, int)
    +sort +(Comparator<? super T>)
    + +
    T  +A +B +C +D +E +F +G +H +I +L +M +O +P +R +S +U +W +Y + TOP +

    +toShortString
    +  type  +() in android.graphics.Rect +
    +  type  +() in android.view.animation.Transformation +
    + +
    U  +A +B +C +D +E +F +G +H +I +L +M +O +P +R +S +T +W +Y + TOP +

    +unregisterListener
    +  type  +(SensorEventListener) in android.hardware.SensorManager +
    +  type  +(SensorEventListener, Sensor) in android.hardware.SensorManager +
    +  type  +(SensorListener) in android.hardware.SensorManager +
    +  type  +(SensorListener, int) in android.hardware.SensorManager +
    +update
    +  type  +() in android.widget.PopupWindow +
    +  type  +(int, int, int, int, boolean) in android.widget.PopupWindow +
    + +
    W  +A +B +C +D +E +F +G +H +I +L +M +O +P +R +S +T +U +Y + TOP +

    +writeMap +(Map)
    +writeToParcel
    +  type  +(Parcel, int) in android.content.res.AssetFileDescriptor +
    +  type  +(Parcel, int) in android.graphics.RectF +
    +  type  +(Parcel, int) in android.text.Annotation +
    +  type  +(Parcel, int) in android.text.style.AbsoluteSizeSpan +
    +  type  +(Parcel, int) in android.text.style.AlignmentSpan.Standard +
    +  type  +(Parcel, int) in android.text.style.BackgroundColorSpan +
    +  type  +(Parcel, int) in android.text.style.BulletSpan +
    +  type  +(Parcel, int) in android.text.style.ForegroundColorSpan +
    +  type  +(Parcel, int) in android.text.style.LeadingMarginSpan.Standard +
    +  type  +(Parcel, int) in android.text.style.QuoteSpan +
    +  type  +(Parcel, int) in android.text.style.RelativeSizeSpan +
    +  type  +(Parcel, int) in android.text.style.ScaleXSpan +
    +  type  +(Parcel, int) in android.text.style.StrikethroughSpan +
    +  type  +(Parcel, int) in android.text.style.StyleSpan +
    +  type  +(Parcel, int) in android.text.style.SubscriptSpan +
    +  type  +(Parcel, int) in android.text.style.SuperscriptSpan +
    +  type  +(Parcel, int) in android.text.style.TextAppearanceSpan +
    +  type  +(Parcel, int) in android.text.style.TypefaceSpan +
    +  type  +(Parcel, int) in android.text.style.URLSpan +
    +  type  +(Parcel, int) in android.text.style.UnderlineSpan +
    + +
    Y  +A +B +C +D +E +F +G +H +I +L +M +O +P +R +S +T +U +W + TOP +

    +yieldIfContended +()
    +yieldIfContendedSafely +()
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/methods_index_changes.html b/docs/html/sdk/api_diff/3/changes/methods_index_changes.html new file mode 100644 index 000000000000..1b1b305b9a44 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/methods_index_changes.html @@ -0,0 +1,466 @@ + + + + + + + + + +Method Changes Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Methods +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + +
    A  +C +D +F +G +I +L +O +P +R +S +U +W +Y + TOP +

    +addRequirements +(Predicate<TestMethod>)
    +appendEscapedSQLString +(StringBuilder, String)
    + +
    C  +A +D +F +G +I +L +O +P +R +S +U +W +Y + TOP +

    +changeDebugPort +(int)
    +clone +()
    + +
    D  +A +C +F +G +I +L +O +P +R +S +U +W +Y + TOP +

    +drag +(ActivityInstrumentationTestCase, float, float, float, float, int)
    +dragQuarterScreenDown +(ActivityInstrumentationTestCase)
    +dragQuarterScreenUp +(ActivityInstrumentationTestCase)
    +dragViewBy +(ActivityInstrumentationTestCase, View, int, int, int)
    +dragViewTo +(ActivityInstrumentationTestCase, View, int, int, int)
    +dragViewToBottom
    +  type  +(ActivityInstrumentationTestCase, View) in android.test.TouchUtils +
    +  type  +(InstrumentationTestCase, Activity, View) in android.test.TouchUtils +
    +dragViewToTop
    +  type  +(ActivityInstrumentationTestCase, View) in android.test.TouchUtils +
    +  type  +(ActivityInstrumentationTestCase, View, int) in android.test.TouchUtils +
    +dragViewToX +(ActivityInstrumentationTestCase, View, int, int)
    +dragViewToY +(ActivityInstrumentationTestCase, View, int, int)
    + +
    F  +A +C +D +G +I +L +O +P +R +S +U +W +Y + TOP +

    +forkAndSpecialize +(int, int, int[], boolean, int[][])
    +forkSystemServer +(int, int, int[], boolean, int[][])
    +forName +(String)
    + +
    G  +A +C +D +F +I +L +O +P +R +S +U +W +Y + TOP +

    +getClasses +()
    +getColumnIndex
    +  type  +(String) in android.database.Cursor +
    +  type  +(String) in android.database.CursorWrapper +
    +getConstructors +()
    +getCount +()
    +getDeclaredClasses +()
    +getDeclaredConstructors +()
    +getEdgeSlop +()
    +getFadingEdgeLength +()
    +getHandler +()
    +getInterfaces +()
    +getItem +(int)
    +getItemClickListener +()
    +getItemId +(int)
    +getItemSelectedListener +()
    +getMaximumDrawingCacheSize +()
    +getMinimumFlingVelocity +()
    +getProxyClass +(ClassLoader, Class<?>)
    +getScrollBarSize +()
    +getSensors +()
    +getSurrogate +(String, Map<String, String>)
    +getTargetIntent +()
    +getTouchSlop +()
    +getUserAgent +()
    +getWindowTouchSlop +()
    +getZoomControls +()
    + +
    I  +A +C +D +F +G +L +O +P +R +S +U +W +Y + TOP +

    +isCookielessProxyUrl +(String)
    + +
    L  +A +C +D +F +G +I +O +P +R +S +U +W +Y + TOP +

    +longClickView +(ActivityInstrumentationTestCase, View)
    + +
    O  +A +C +D +F +G +I +L +P +R +S +U +W +Y + TOP +

    +onGlobalFocusChanged +(View, View)
    +onRestoreInstanceState +(Parcelable)
    +onSaveInstanceState +()
    + +
    P  +A +C +D +F +G +I +L +O +R +S +U +W +Y + TOP +

    +parse +(String)
    +playSoundEffect +(int)
    +prepare +()
    + +
    R  +A +C +D +F +G +I +L +O +P +S +U +W +Y + TOP +

    +readHashMap +(ClassLoader)
    +readMap +(Map, ClassLoader)
    +registerListener
    +  type  +(SensorListener, int) in android.hardware.SensorManager +
    +  type  +(SensorListener, int, int) in android.hardware.SensorManager +
    + +
    S  +A +C +D +F +G +I +L +O +P +R +U +W +Y + TOP +

    +scrollToBottom +(ActivityInstrumentationTestCase, ViewGroup)
    +scrollToTop +(ActivityInstrumentationTestCase, ViewGroup)
    +service +(String, Map<String, String>)
    +setButton
    +  type  +(int, CharSequence, OnClickListener) in android.app.AlertDialog +
    +  type  +(int, CharSequence, Message) in android.app.AlertDialog +
    +setButton2
    +  type  +(CharSequence, OnClickListener) in android.app.AlertDialog +
    +  type  +(CharSequence, Message) in android.app.AlertDialog +
    +setButton3
    +  type  +(CharSequence, OnClickListener) in android.app.AlertDialog +
    +  type  +(CharSequence, Message) in android.app.AlertDialog +
    +setPreviewDisplay +(SurfaceHolder)
    +setUserAgent +(int)
    + +
    U  +A +C +D +F +G +I +L +O +P +R +S +W +Y + TOP +

    +unregisterListener
    +  type  +(SensorListener) in android.hardware.SensorManager +
    +  type  +(SensorListener, int) in android.hardware.SensorManager +
    + +
    W  +A +C +D +F +G +I +L +O +P +R +S +U +Y + TOP +

    +writeMap +(Map)
    + +
    Y  +A +C +D +F +G +I +L +O +P +R +S +U +W + TOP +

    +yieldIfContended +()
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/methods_index_removals.html b/docs/html/sdk/api_diff/3/changes/methods_index_removals.html new file mode 100644 index 000000000000..bbce14487297 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/methods_index_removals.html @@ -0,0 +1,62 @@ + + + + + + + + + +Method Removals Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Methods +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/packages_index_additions.html b/docs/html/sdk/api_diff/3/changes/packages_index_additions.html new file mode 100644 index 000000000000..ccd54fdc5c76 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/packages_index_additions.html @@ -0,0 +1,72 @@ + + + + + + + + + +Package Additions Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Packages +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    +
    +
    + +android.appwidget
    +android.inputmethodservice
    +android.speech
    +android.text.format
    +android.view.inputmethod
    + +java.beans
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/packages_index_all.html b/docs/html/sdk/api_diff/3/changes/packages_index_all.html new file mode 100644 index 000000000000..5876fe92fca9 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/packages_index_all.html @@ -0,0 +1,112 @@ + + + + + + + + + +Package Differences Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +Packages +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    +
    +
    + +android
    +android.app
    +android.appwidget
    +android.content
    +android.content.pm
    +android.content.res
    +android.database
    +android.database.sqlite
    +android.graphics
    +android.graphics.drawable
    +android.graphics.drawable.shapes
    +android.hardware
    +android.inputmethodservice
    +android.location
    +android.media
    +android.net
    +android.net.wifi
    +android.opengl
    +android.os
    +android.preference
    +android.provider
    +android.speech
    +android.telephony
    +android.telephony.gsm
    +android.test
    +android.test.mock
    +android.test.suitebuilder
    +android.text
    +android.text.format
    +android.text.method
    +android.text.style
    +android.util
    +android.view
    +android.view.animation
    +android.view.inputmethod
    +android.webkit
    +android.widget
    + +dalvik.system
    + +java.beans
    +java.lang
    +java.lang.reflect
    +java.net
    +java.util
    +java.util.jar
    +java.util.logging
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/packages_index_changes.html b/docs/html/sdk/api_diff/3/changes/packages_index_changes.html new file mode 100644 index 000000000000..3665a918f31f --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/packages_index_changes.html @@ -0,0 +1,106 @@ + + + + + + + + + +Package Changes Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Packages +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    +
    +
    + +android
    +android.app
    +android.content
    +android.content.pm
    +android.content.res
    +android.database
    +android.database.sqlite
    +android.graphics
    +android.graphics.drawable
    +android.graphics.drawable.shapes
    +android.hardware
    +android.location
    +android.media
    +android.net
    +android.net.wifi
    +android.opengl
    +android.os
    +android.preference
    +android.provider
    +android.telephony
    +android.telephony.gsm
    +android.test
    +android.test.mock
    +android.test.suitebuilder
    +android.text
    +android.text.method
    +android.text.style
    +android.util
    +android.view
    +android.view.animation
    +android.webkit
    +android.widget
    + +dalvik.system
    + +java.lang
    +java.lang.reflect
    +java.net
    +java.util
    +java.util.jar
    +java.util.logging
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/packages_index_removals.html b/docs/html/sdk/api_diff/3/changes/packages_index_removals.html new file mode 100644 index 000000000000..17a90d9989ca --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/packages_index_removals.html @@ -0,0 +1,64 @@ + + + + + + + + + +Package Removals Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Packages +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.app.html b/docs/html/sdk/api_diff/3/changes/pkg_android.app.html new file mode 100644 index 000000000000..c1602d80f1a3 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.app.html @@ -0,0 +1,198 @@ + + + + + + + + + +android.app + + + + + + + + + + +
    +
    +
    +

    +Package android.app +

    +

    + + + + + + + + + + + + + + + + + + + + +
    Added Classes +
    + + ActivityManager.RunningAppProcessInfo +  
    + + IntentService +  
    + + LauncherActivity.IconResizer +  
    + + LauncherActivity.ListItem +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Classes +
    + + Activity +  
    + + ActivityManager +  
    + + AlarmManager +  
    + + AlertDialog +  
    + + Instrumentation +  
    + + LauncherActivity +  
    + + PendingIntent +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.content.html b/docs/html/sdk/api_diff/3/changes/pkg_android.content.html new file mode 100644 index 000000000000..8a9f4af0a243 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.content.html @@ -0,0 +1,155 @@ + + + + + + + + + +android.content + + + + + + + + + + +
    +
    +
    +

    +Package android.content +

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Classes and Interfaces +
    + + BroadcastReceiver +  
    + + ContentProvider +  
    + + ContentResolver +  
    + + Context +  
    + + DialogInterface +  
    + + Intent +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.content.pm.html b/docs/html/sdk/api_diff/3/changes/pkg_android.content.pm.html new file mode 100644 index 000000000000..d3bddd4badc3 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.content.pm.html @@ -0,0 +1,149 @@ + + + + + + + + + +android.content.pm + + + + + + + + + + +
    +
    +
    +

    +Package android.content.pm +

    +

    + + + + + + + + +
    Added Classes +
    + + ConfigurationInfo +  
    +  +

    + + + + + + + + + + + + + + + + +
    Changed Classes +
    + + ActivityInfo +  
    + + PackageInfo +  
    + + PackageManager +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.content.res.html b/docs/html/sdk/api_diff/3/changes/pkg_android.content.res.html new file mode 100644 index 000000000000..81d234d2263c --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.content.res.html @@ -0,0 +1,163 @@ + + + + + + + + + +android.content.res + + + + + + + + + + +
    +
    +
    +

    +Package android.content.res +

    +

    + + + + + + + + + + + + +
    Added Classes +
    + + AssetFileDescriptor.AutoCloseInputStream +  
    + + AssetFileDescriptor.AutoCloseOutputStream +  
    +  +

    + + + + + + + + + + + + + + + + + + + + +
    Changed Classes +
    + + AssetFileDescriptor +  
    + + Configuration +  
    + + Resources +  
    + + TypedArray +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.database.html b/docs/html/sdk/api_diff/3/changes/pkg_android.database.html new file mode 100644 index 000000000000..70b964445d55 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.database.html @@ -0,0 +1,134 @@ + + + + + + + + + +android.database + + + + + + + + + + +
    +
    +
    +

    +Package android.database +

    +

    + + + + + + + + + + + + + + + + +
    Changed Classes and Interfaces +
    + + Cursor +  
    + + CursorWrapper +  
    + + DatabaseUtils +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.database.sqlite.html b/docs/html/sdk/api_diff/3/changes/pkg_android.database.sqlite.html new file mode 100644 index 000000000000..db2017bbdc9b --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.database.sqlite.html @@ -0,0 +1,120 @@ + + + + + + + + + +android.database.sqlite + + + + + + + + + + +
    +
    +
    +

    +Package android.database.sqlite +

    +

    + + + + + + + + +
    Changed Classes +
    + + SQLiteDatabase +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.graphics.drawable.html b/docs/html/sdk/api_diff/3/changes/pkg_android.graphics.drawable.html new file mode 100644 index 000000000000..6025b71b03d8 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.graphics.drawable.html @@ -0,0 +1,141 @@ + + + + + + + + + +android.graphics.drawable + + + + + + + + + + +
    +
    +
    +

    +Package android.graphics.drawable +

    +

    + + + + + + + + + + + + + + + + + + + + +
    Changed Classes +
    + + Drawable +  
    + + RotateDrawable +  
    + + ScaleDrawable +  
    + + TransitionDrawable +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.graphics.drawable.shapes.html b/docs/html/sdk/api_diff/3/changes/pkg_android.graphics.drawable.shapes.html new file mode 100644 index 000000000000..affdaabc6321 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.graphics.drawable.shapes.html @@ -0,0 +1,120 @@ + + + + + + + + + +android.graphics.drawable.shapes + + + + + + + + + + +
    +
    +
    +

    +Package android.graphics.drawable.shapes +

    +

    + + + + + + + + +
    Changed Classes +
    + + Shape +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.graphics.html b/docs/html/sdk/api_diff/3/changes/pkg_android.graphics.html new file mode 100644 index 000000000000..c7644d5860bd --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.graphics.html @@ -0,0 +1,141 @@ + + + + + + + + + +android.graphics + + + + + + + + + + +
    +
    +
    +

    +Package android.graphics +

    +

    + + + + + + + + + + + + + + + + + + + + +
    Changed Classes +
    + + Bitmap +  
    + + Canvas +  
    + + Rect +  
    + + RectF +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.hardware.html b/docs/html/sdk/api_diff/3/changes/pkg_android.hardware.html new file mode 100644 index 000000000000..63ebbdc19f69 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.hardware.html @@ -0,0 +1,170 @@ + + + + + + + + + +android.hardware + + + + + + + + + + +
    +
    +
    +

    +Package android.hardware +

    +

    + + + + + + + + + + + + + + + + + + + + +
    Added Classes and Interfaces +
    + + GeomagneticField +  
    + + Sensor +  
    + + SensorEvent +  
    + + SensorEventListener +  
    +  +

    + + + + + + + + + + + + + + + + +
    Changed Classes and Interfaces +
    + + Camera +  
    + + SensorListener +  
    + + SensorManager +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.html b/docs/html/sdk/api_diff/3/changes/pkg_android.html new file mode 100644 index 000000000000..0cedd98cb86e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.html @@ -0,0 +1,177 @@ + + + + + + + + + +android + + + + + + + + + + +
    +
    +
    +

    +Package android +

    +

    + + + + + + + + + + + + +
    Added Classes +
    + + R.bool +  
    + + R.integer +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Classes +
    + + Manifest.permission +  
    + + R.attr +  
    + + R.drawable +  
    + + R.id +  
    + + R.string +  
    + + R.style +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.location.html b/docs/html/sdk/api_diff/3/changes/pkg_android.location.html new file mode 100644 index 000000000000..2f8af381b95d --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.location.html @@ -0,0 +1,156 @@ + + + + + + + + + +android.location + + + + + + + + + + +
    +
    +
    +

    +Package android.location +

    +

    + + + + + + + + + + + + + + + + +
    Added Classes and Interfaces +
    + + GpsSatellite +  
    + + GpsStatus +  
    + + GpsStatus.Listener +  
    +  +

    + + + + + + + + + + + + +
    Changed Classes +
    + + Location +  
    + + LocationManager +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.media.html b/docs/html/sdk/api_diff/3/changes/pkg_android.media.html new file mode 100644 index 000000000000..c531240beb8d --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.media.html @@ -0,0 +1,254 @@ + + + + + + + + + +android.media + + + + + + + + + + +
    +
    +
    +

    +Package android.media +

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Classes and Interfaces +
    + + AudioFormat +  
    + + AudioRecord +  
    + + AudioRecord.OnRecordPositionUpdateListener +  
    + + AudioTrack +  
    + + AudioTrack.OnPlaybackPositionUpdateListener +  
    + + JetPlayer +  
    + + JetPlayer.OnJetEventListener +  
    + + MediaPlayer.OnInfoListener +  
    + + MediaPlayer.OnVideoSizeChangedListener +  
    + + MediaRecorder.OnErrorListener +  
    + + MediaRecorder.OnInfoListener +  
    + + MediaRecorder.VideoEncoder +  
    + + MediaRecorder.VideoSource +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Classes +
    + + AudioManager +  
    + + MediaPlayer +  
    + + MediaRecorder +  
    + + MediaRecorder.OutputFormat +  
    + + RingtoneManager +  
    + + SoundPool +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.net.html b/docs/html/sdk/api_diff/3/changes/pkg_android.net.html new file mode 100644 index 000000000000..cf2f916cede7 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.net.html @@ -0,0 +1,127 @@ + + + + + + + + + +android.net + + + + + + + + + + +
    +
    +
    +

    +Package android.net +

    +

    + + + + + + + + + + + + +
    Changed Classes +
    + + ConnectivityManager +  
    + + NetworkInfo +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.net.wifi.html b/docs/html/sdk/api_diff/3/changes/pkg_android.net.wifi.html new file mode 100644 index 000000000000..99f2951d1f78 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.net.wifi.html @@ -0,0 +1,120 @@ + + + + + + + + + +android.net.wifi + + + + + + + + + + +
    +
    +
    +

    +Package android.net.wifi +

    +

    + + + + + + + + +
    Changed Classes +
    + + WifiManager +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.opengl.html b/docs/html/sdk/api_diff/3/changes/pkg_android.opengl.html new file mode 100644 index 000000000000..622d8612fb97 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.opengl.html @@ -0,0 +1,148 @@ + + + + + + + + + +android.opengl + + + + + + + + + + +
    +
    +
    +

    +Package android.opengl +

    +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Classes and Interfaces +
    + + GLSurfaceView +  
    + + GLSurfaceView.EGLConfigChooser +  
    + + GLSurfaceView.GLWrapper +  
    + + GLSurfaceView.Renderer +  
    + + Visibility +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.os.html b/docs/html/sdk/api_diff/3/changes/pkg_android.os.html new file mode 100644 index 000000000000..098864ef879d --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.os.html @@ -0,0 +1,212 @@ + + + + + + + + + +android.os + + + + + + + + + + +
    +
    +
    +

    +Package android.os +

    +

    + + + + + + + + + + + + + + + + + + + + +
    Added Classes and Interfaces +
    + + AsyncTask +  
    + + AsyncTask.Status +  
    + + Handler.Callback +  
    + + ResultReceiver +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Classes and Interfaces +
    + + Binder +  
    + + Build +  
    + + Debug +  
    + + Environment +  
    + + Handler +  
    + + IBinder +  
    + + Looper +  
    + + Parcel +  
    + + ParcelFileDescriptor +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.preference.html b/docs/html/sdk/api_diff/3/changes/pkg_android.preference.html new file mode 100644 index 000000000000..5ffe3cb61f34 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.preference.html @@ -0,0 +1,120 @@ + + + + + + + + + +android.preference + + + + + + + + + + +
    +
    +
    +

    +Package android.preference +

    +

    + + + + + + + + +
    Changed Classes +
    + + DialogPreference +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.provider.html b/docs/html/sdk/api_diff/3/changes/pkg_android.provider.html new file mode 100644 index 000000000000..f16e4fd19767 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.provider.html @@ -0,0 +1,233 @@ + + + + + + + + + +android.provider + + + + + + + + + + +
    +
    +
    +

    +Package android.provider +

    +

    + + + + + + + + + + + + + + + + + + + + +
    Added Classes +
    + + LiveFolders +  
    + + Settings.Secure +  
    + + UserDictionary +  
    + + UserDictionary.Words +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Classes and Interfaces +
    + + Browser +  
    + + Contacts.Intents +  
    + + Contacts.Intents.Insert +  
    + + Contacts.PeopleColumns +  
    + + MediaStore +  
    + + MediaStore.Audio.AlbumColumns +  
    + + MediaStore.Audio.Media +  
    + + MediaStore.Images.Media +  
    + + MediaStore.Video +  
    + + MediaStore.Video.VideoColumns +  
    + + Settings +  
    + + Settings.System +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.telephony.gsm.html b/docs/html/sdk/api_diff/3/changes/pkg_android.telephony.gsm.html new file mode 100644 index 000000000000..d17223483e02 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.telephony.gsm.html @@ -0,0 +1,120 @@ + + + + + + + + + +android.telephony.gsm + + + + + + + + + + +
    +
    +
    +

    +Package android.telephony.gsm +

    +

    + + + + + + + + +
    Changed Classes +
    + + SmsMessage +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.telephony.html b/docs/html/sdk/api_diff/3/changes/pkg_android.telephony.html new file mode 100644 index 000000000000..8131269eab82 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.telephony.html @@ -0,0 +1,142 @@ + + + + + + + + + +android.telephony + + + + + + + + + + +
    +
    +
    +

    +Package android.telephony +

    +

    + + + + + + + + +
    Added Classes +
    + + NeighboringCellInfo +  
    +  +

    + + + + + + + + + + + + +
    Changed Classes +
    + + PhoneNumberUtils +  
    + + TelephonyManager +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.test.html b/docs/html/sdk/api_diff/3/changes/pkg_android.test.html new file mode 100644 index 000000000000..3b5edd42df00 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.test.html @@ -0,0 +1,163 @@ + + + + + + + + + +android.test + + + + + + + + + + +
    +
    +
    +

    +Package android.test +

    +

    + + + + + + + + + + + + +
    Added Classes +
    + + ActivityInstrumentationTestCase2 +  
    + + ProviderTestCase2 +  
    +  +

    + + + + + + + + + + + + + + + + + + + + +
    Changed Classes +
    + + ActivityInstrumentationTestCase +  
    + + InstrumentationTestCase +  
    + + ProviderTestCase +  
    + + TouchUtils +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.test.mock.html b/docs/html/sdk/api_diff/3/changes/pkg_android.test.mock.html new file mode 100644 index 000000000000..87a371cd22b1 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.test.mock.html @@ -0,0 +1,120 @@ + + + + + + + + + +android.test.mock + + + + + + + + + + +
    +
    +
    +

    +Package android.test.mock +

    +

    + + + + + + + + +
    Changed Classes +
    + + MockPackageManager +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.test.suitebuilder.html b/docs/html/sdk/api_diff/3/changes/pkg_android.test.suitebuilder.html new file mode 100644 index 000000000000..469db289da92 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.test.suitebuilder.html @@ -0,0 +1,127 @@ + + + + + + + + + +android.test.suitebuilder + + + + + + + + + + +
    +
    +
    +

    +Package android.test.suitebuilder +

    +

    + + + + + + + + + + + + +
    Changed Classes +
    + + TestMethod +  
    + + TestSuiteBuilder +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.text.html b/docs/html/sdk/api_diff/3/changes/pkg_android.text.html new file mode 100644 index 000000000000..ffc696676f16 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.text.html @@ -0,0 +1,191 @@ + + + + + + + + + +android.text + + + + + + + + + + +
    +
    +
    +

    +Package android.text +

    +

    + + + + + + + + + + + + + + + + + + + + +
    Added Classes and Interfaces +
    + + InputType +  
    + + NoCopySpan +  
    + + NoCopySpan.Concrete +  
    + + ParcelableSpan +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Classes and Interfaces +
    + + Annotation +  
    + + AutoText +  
    + + SpanWatcher +  
    + + Spanned +  
    + + TextUtils +  
    + + TextWatcher +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.text.method.html b/docs/html/sdk/api_diff/3/changes/pkg_android.text.method.html new file mode 100644 index 000000000000..89b94ad3125b --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.text.method.html @@ -0,0 +1,218 @@ + + + + + + + + + +android.text.method + + + + + + + + + + +
    +
    +
    +

    +Package android.text.method +

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Classes and Interfaces +
    + + ArrowKeyMovementMethod +  
    + + BaseKeyListener +  
    + + DateKeyListener +  
    + + DateTimeKeyListener +  
    + + DialerKeyListener +  
    + + DigitsKeyListener +  
    + + KeyListener +  
    + + MetaKeyKeyListener +  
    + + MovementMethod +  
    + + MultiTapKeyListener +  
    + + QwertyKeyListener +  
    + + ScrollingMovementMethod +  
    + + TextKeyListener +  
    + + TimeKeyListener +  
    + + Touch +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.text.style.html b/docs/html/sdk/api_diff/3/changes/pkg_android.text.style.html new file mode 100644 index 000000000000..e1e1fec0b4e9 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.text.style.html @@ -0,0 +1,289 @@ + + + + + + + + + +android.text.style + + + + + + + + + + +
    +
    +
    +

    +Package android.text.style +

    +

    + + + + + + + + +
    Added Interfaces +
    + + UpdateAppearance +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Classes and Interfaces +
    + + AbsoluteSizeSpan +  
    + + AlignmentSpan.Standard +  
    + + BackgroundColorSpan +  
    + + BulletSpan +  
    + + ClickableSpan +  
    + + DynamicDrawableSpan +  
    + + ForegroundColorSpan +  
    + + ImageSpan +  
    + + LeadingMarginSpan.Standard +  
    + + MaskFilterSpan +  
    + + QuoteSpan +  
    + + RasterizerSpan +  
    + + RelativeSizeSpan +  
    + + ScaleXSpan +  
    + + StrikethroughSpan +  
    + + StyleSpan +  
    + + SubscriptSpan +  
    + + SuperscriptSpan +  
    + + TextAppearanceSpan +  
    + + TypefaceSpan +  
    + + URLSpan +  
    + + UnderlineSpan +  
    + + UpdateLayout +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.util.html b/docs/html/sdk/api_diff/3/changes/pkg_android.util.html new file mode 100644 index 000000000000..7403be48c31e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.util.html @@ -0,0 +1,142 @@ + + + + + + + + + +android.util + + + + + + + + + + +
    +
    +
    +

    +Package android.util +

    +

    + + + + + + + + +
    Added Classes +
    + + PrintStreamPrinter +  
    +  +

    + + + + + + + + + + + + +
    Changed Classes +
    + + SparseIntArray +  
    + + TimeUtils +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.view.animation.html b/docs/html/sdk/api_diff/3/changes/pkg_android.view.animation.html new file mode 100644 index 000000000000..30c1badc27d7 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.view.animation.html @@ -0,0 +1,127 @@ + + + + + + + + + +android.view.animation + + + + + + + + + + +
    +
    +
    +

    +Package android.view.animation +

    +

    + + + + + + + + + + + + +
    Changed Classes +
    + + Animation +  
    + + Transformation +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.view.html b/docs/html/sdk/api_diff/3/changes/pkg_android.view.html new file mode 100644 index 000000000000..9b4a0427dacd --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.view.html @@ -0,0 +1,268 @@ + + + + + + + + + +android.view + + + + + + + + + + +
    +
    +
    +

    +Package android.view +

    +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Classes and Interfaces +
    + + GestureDetector.OnDoubleTapListener +  
    + + HapticFeedbackConstants +  
    + + OrientationEventListener +  
    + + ViewDebug.CapturedViewProperty +  
    + + ViewTreeObserver.OnScrollChangedListener +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Classes and Interfaces +
    + + GestureDetector +  
    + + GestureDetector.SimpleOnGestureListener +  
    + + Gravity +  
    + + KeyCharacterMap +  
    + + KeyEvent +  
    + + Menu +  
    + + MotionEvent +  
    + + OrientationListener +  
    + + View +  
    + + ViewConfiguration +  
    + + ViewDebug +  
    + + ViewGroup +  
    + + ViewParent +  
    + + ViewTreeObserver +  
    + + Window +  
    + + WindowManager.LayoutParams +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.webkit.html b/docs/html/sdk/api_diff/3/changes/pkg_android.webkit.html new file mode 100644 index 000000000000..339b9ab3b479 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.webkit.html @@ -0,0 +1,170 @@ + + + + + + + + + +android.webkit + + + + + + + + + + +
    +
    +
    +

    +Package android.webkit +

    +

    + + + + + + + + +
    Added Classes +
    + + PluginData +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Classes and Interfaces +
    + + URLUtil +  
    + + UrlInterceptHandler +  
    + + UrlInterceptRegistry +  
    + + WebHistoryItem +  
    + + WebSettings +  
    + + WebView +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.widget.html b/docs/html/sdk/api_diff/3/changes/pkg_android.widget.html new file mode 100644 index 000000000000..fc6e9015391a --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.widget.html @@ -0,0 +1,310 @@ + + + + + + + + + +android.widget + + + + + + + + + + +
    +
    +
    +

    +Package android.widget +

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Classes and Interfaces +
    + + AlphabetIndexer +  
    + + Chronometer.OnChronometerTickListener +  
    + + HorizontalScrollView +  
    + + SectionIndexer +  
    + + SlidingDrawer +  
    + + SlidingDrawer.OnDrawerCloseListener +  
    + + SlidingDrawer.OnDrawerOpenListener +  
    + + SlidingDrawer.OnDrawerScrollListener +  
    + + TextView.OnEditorActionListener +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Classes and Interfaces +
    + + AbsListView +  
    + + AbsSeekBar +  
    + + AbsoluteLayout +  
    + + ArrayAdapter +  
    + + AutoCompleteTextView +  
    + + Chronometer +  
    + + CursorAdapter +  
    + + GridView +  
    + + ListView +  
    + + PopupWindow +  
    + + PopupWindow.OnDismissListener +  
    + + ProgressBar +  
    + + RemoteViews +  
    + + RemoteViews.ActionException +  
    + + ResourceCursorAdapter +  
    + + Scroller +  
    + + SimpleCursorAdapter +  
    + + TextView +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_dalvik.system.html b/docs/html/sdk/api_diff/3/changes/pkg_dalvik.system.html new file mode 100644 index 000000000000..654be0fb246e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_dalvik.system.html @@ -0,0 +1,149 @@ + + + + + + + + + +dalvik.system + + + + + + + + + + +
    +
    +
    +

    +Package dalvik.system +

    +

    + + + + + + + + +
    Added Classes +
    + + DexClassLoader +  
    +  +

    + + + + + + + + + + + + + + + + +
    Changed Classes +
    + + DexFile +  
    + + VMDebug +  
    + + Zygote +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_java.lang.html b/docs/html/sdk/api_diff/3/changes/pkg_java.lang.html new file mode 100644 index 000000000000..d7699273d263 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_java.lang.html @@ -0,0 +1,134 @@ + + + + + + + + + +java.lang + + + + + + + + + + +
    +
    +
    +

    +Package java.lang +

    +

    + + + + + + + + + + + + + + + + +
    Changed Classes +
    + + Character.UnicodeBlock +  
    + + Class +  
    + + String +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_java.lang.reflect.html b/docs/html/sdk/api_diff/3/changes/pkg_java.lang.reflect.html new file mode 100644 index 000000000000..ccc643dd8c99 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_java.lang.reflect.html @@ -0,0 +1,120 @@ + + + + + + + + + +java.lang.reflect + + + + + + + + + + +
    +
    +
    +

    +Package java.lang.reflect +

    +

    + + + + + + + + +
    Changed Classes +
    + + Proxy +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_java.net.html b/docs/html/sdk/api_diff/3/changes/pkg_java.net.html new file mode 100644 index 000000000000..98cc83d2cd89 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_java.net.html @@ -0,0 +1,120 @@ + + + + + + + + + +java.net + + + + + + + + + + +
    +
    +
    +

    +Package java.net +

    +

    + + + + + + + + +
    Changed Classes +
    + + Socket +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_java.util.html b/docs/html/sdk/api_diff/3/changes/pkg_java.util.html new file mode 100644 index 000000000000..462c73b083b6 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_java.util.html @@ -0,0 +1,120 @@ + + + + + + + + + +java.util + + + + + + + + + + +
    +
    +
    +

    +Package java.util +

    +

    + + + + + + + + +
    Changed Classes +
    + + Date +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_java.util.jar.html b/docs/html/sdk/api_diff/3/changes/pkg_java.util.jar.html new file mode 100644 index 000000000000..f1ac6e5d7f7d --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_java.util.jar.html @@ -0,0 +1,127 @@ + + + + + + + + + +java.util.jar + + + + + + + + + + +
    +
    +
    +

    +Package java.util.jar +

    +

    + + + + + + + + + + + + +
    Changed Interfaces +
    + + Pack200.Packer +  
    + + Pack200.Unpacker +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_java.util.logging.html b/docs/html/sdk/api_diff/3/changes/pkg_java.util.logging.html new file mode 100644 index 000000000000..f2cc23d8472e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_java.util.logging.html @@ -0,0 +1,127 @@ + + + + + + + + + +java.util.logging + + + + + + + + + + +
    +
    +
    +

    +Package java.util.logging +

    +

    + + + + + + + + + + + + +
    Changed Classes +
    + + Level +  
    + + LogManager +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/stylesheet-jdiff.css b/docs/html/sdk/api_diff/3/stylesheet-jdiff.css new file mode 100644 index 000000000000..b3c1b9af86b9 --- /dev/null +++ b/docs/html/sdk/api_diff/3/stylesheet-jdiff.css @@ -0,0 +1,37 @@ + +/* (http://www.jdiff.org) */ + +div.and-diff-id {border: 1px solid #eee;position:relative;float:right;clear:both;padding:0px;} +table.diffspectable {border:1px;padding:0px;margin:0px;} +.diffspechead {background-color:#eee;} +.diffspectable tr {border:0px;padding:0px;} +.diffspectable td {background-color:eee;border:0px;font-size:90%;font-weight:normal;padding:0px;padding-left:1px;padding-right:1px;text-align:center;color:777;} +td.diffvalueold {color:orange;background-color:white;border:0px;font-size:80%;font-style:normal;text-align:left;padding:0px;padding-left:1px;padding-right:1px;line-height:.95em;} +td.diffvaluenew {color:green;background-color:white;border:0px;font-size:80%;font-weight:normal;text-align:left;padding:0px;padding-left:1px;padding-right:1px;line-height:.95em;} +td.diffvalue {color:444;background-color:white;border:0px;font-size:80%;font-weight:normal;text-align:left;padding:0px;padding-left:1px;padding-right:1px;line-height:.95em;} +td.diffspec {background-color:white;border:0px;font-size:80%;font-weight:normal;padding:1px;color:444;text-align:right;padding-right:.5em;line-height:.95em;} +tt {font-size:11pt;font-family:monospace;} +.indexHeader { + font-size:96%; + line-height:.8em;} +.jdiffIndex td { + font-size:96%; + xline-height:.8em; + padding:2px; + padding-left:1em;} +.indexText { + font-size:100%; + padding-left:1em;} +#indexTableCaption { + font-size:96%; + margin-top:.25em; + margin-bottom:0; + } +.hiddenlink { + font-size:96%; + line-height:.8em; + text-decoration:none;} +a { + text-decoration:none;} +a:hover { + text-decoration:underline;} -- cgit v1.2.3-59-g8ed1b From e4c0336fc743c8d34d1f1774e63132344d0f09f2 Mon Sep 17 00:00:00 2001 From: Dirk Dougherty <> Date: Tue, 21 Apr 2009 14:54:32 -0700 Subject: AI 147230: am: CL 147228 Add API diff report to SDK docs (API Level 2 to 3) Original author: ddougherty Merged from: //branches/cupcake/... Automated import of CL 147230 --- docs/html/sdk/api_diff/3/changes.html | 49 + .../3/changes/alldiffs_index_additions.html | 3144 +++++++++++++++ .../sdk/api_diff/3/changes/alldiffs_index_all.html | 4178 ++++++++++++++++++++ .../api_diff/3/changes/alldiffs_index_changes.html | 1652 ++++++++ .../3/changes/alldiffs_index_removals.html | 78 + .../3/changes/android.Manifest.permission.html | 151 + .../sdk/api_diff/3/changes/android.R.attr.html | 739 ++++ .../sdk/api_diff/3/changes/android.R.drawable.html | 137 + docs/html/sdk/api_diff/3/changes/android.R.id.html | 221 ++ .../sdk/api_diff/3/changes/android.R.string.html | 130 + .../sdk/api_diff/3/changes/android.R.style.html | 151 + .../api_diff/3/changes/android.app.Activity.html | 151 + .../3/changes/android.app.ActivityManager.html | 137 + .../3/changes/android.app.AlarmManager.html | 166 + .../3/changes/android.app.AlertDialog.html | 219 + .../3/changes/android.app.Instrumentation.html | 123 + .../3/changes/android.app.LauncherActivity.html | 148 + .../3/changes/android.app.PendingIntent.html | 123 + .../changes/android.content.BroadcastReceiver.html | 123 + .../3/changes/android.content.ContentProvider.html | 123 + .../3/changes/android.content.ContentResolver.html | 130 + .../3/changes/android.content.Context.html | 123 + .../3/changes/android.content.DialogInterface.html | 172 + .../api_diff/3/changes/android.content.Intent.html | 251 ++ .../3/changes/android.content.pm.ActivityInfo.html | 130 + .../3/changes/android.content.pm.PackageInfo.html | 137 + .../changes/android.content.pm.PackageManager.html | 166 + .../android.content.res.AssetFileDescriptor.html | 174 + .../changes/android.content.res.Configuration.html | 144 + .../3/changes/android.content.res.Resources.html | 151 + .../3/changes/android.content.res.TypedArray.html | 123 + .../3/changes/android.database.Cursor.html | 126 + .../3/changes/android.database.CursorWrapper.html | 126 + .../3/changes/android.database.DatabaseUtils.html | 126 + .../android.database.sqlite.SQLiteDatabase.html | 141 + .../3/changes/android.graphics.Bitmap.html | 123 + .../3/changes/android.graphics.Canvas.html | 123 + .../api_diff/3/changes/android.graphics.Rect.html | 123 + .../api_diff/3/changes/android.graphics.RectF.html | 153 + .../android.graphics.drawable.Drawable.html | 123 + .../android.graphics.drawable.RotateDrawable.html | 123 + .../android.graphics.drawable.ScaleDrawable.html | 123 + ...droid.graphics.drawable.TransitionDrawable.html | 123 + .../android.graphics.drawable.shapes.Shape.html | 128 + .../3/changes/android.hardware.Camera.html | 141 + .../3/changes/android.hardware.SensorListener.html | 109 + .../3/changes/android.hardware.SensorManager.html | 473 +++ .../3/changes/android.location.Location.html | 123 + .../changes/android.location.LocationManager.html | 243 ++ .../3/changes/android.media.AudioManager.html | 227 ++ .../3/changes/android.media.MediaPlayer.html | 180 + .../android.media.MediaRecorder.OutputFormat.html | 123 + .../3/changes/android.media.MediaRecorder.html | 240 ++ .../3/changes/android.media.RingtoneManager.html | 123 + .../3/changes/android.media.SoundPool.html | 130 + .../3/changes/android.net.ConnectivityManager.html | 138 + .../3/changes/android.net.NetworkInfo.html | 152 + .../3/changes/android.net.wifi.WifiManager.html | 145 + .../sdk/api_diff/3/changes/android.os.Binder.html | 123 + .../sdk/api_diff/3/changes/android.os.Build.html | 123 + .../sdk/api_diff/3/changes/android.os.Debug.html | 141 + .../api_diff/3/changes/android.os.Environment.html | 130 + .../sdk/api_diff/3/changes/android.os.Handler.html | 130 + .../sdk/api_diff/3/changes/android.os.IBinder.html | 123 + .../sdk/api_diff/3/changes/android.os.Looper.html | 123 + .../sdk/api_diff/3/changes/android.os.Parcel.html | 146 + .../3/changes/android.os.ParcelFileDescriptor.html | 138 + .../android.preference.DialogPreference.html | 123 + .../3/changes/android.provider.Browser.html | 123 + .../android.provider.Contacts.Intents.Insert.html | 179 + .../changes/android.provider.Contacts.Intents.html | 137 + .../android.provider.Contacts.PeopleColumns.html | 123 + ...oid.provider.MediaStore.Audio.AlbumColumns.html | 123 + .../android.provider.MediaStore.Audio.Media.html | 123 + .../android.provider.MediaStore.Images.Media.html | 125 + ...oid.provider.MediaStore.Video.VideoColumns.html | 137 + .../changes/android.provider.MediaStore.Video.html | 125 + .../3/changes/android.provider.MediaStore.html | 207 + .../changes/android.provider.Settings.System.html | 502 +++ .../3/changes/android.provider.Settings.html | 200 + .../android.telephony.PhoneNumberUtils.html | 138 + .../android.telephony.TelephonyManager.html | 173 + .../changes/android.telephony.gsm.SmsMessage.html | 123 + ...droid.test.ActivityInstrumentationTestCase.html | 109 + .../android.test.InstrumentationTestCase.html | 130 + .../3/changes/android.test.ProviderTestCase.html | 109 + .../3/changes/android.test.TouchUtils.html | 362 ++ .../android.test.mock.MockPackageManager.html | 137 + .../android.test.suitebuilder.TestMethod.html | 130 + ...android.test.suitebuilder.TestSuiteBuilder.html | 126 + .../3/changes/android.text.Annotation.html | 153 + .../api_diff/3/changes/android.text.AutoText.html | 123 + .../3/changes/android.text.SpanWatcher.html | 109 + .../api_diff/3/changes/android.text.Spanned.html | 137 + .../api_diff/3/changes/android.text.TextUtils.html | 159 + .../3/changes/android.text.TextWatcher.html | 109 + ...android.text.method.ArrowKeyMovementMethod.html | 123 + .../android.text.method.BaseKeyListener.html | 123 + .../android.text.method.DateKeyListener.html | 123 + .../android.text.method.DateTimeKeyListener.html | 123 + .../android.text.method.DialerKeyListener.html | 123 + .../android.text.method.DigitsKeyListener.html | 123 + .../3/changes/android.text.method.KeyListener.html | 137 + .../android.text.method.MetaKeyKeyListener.html | 186 + .../android.text.method.MovementMethod.html | 123 + .../android.text.method.MultiTapKeyListener.html | 123 + .../android.text.method.QwertyKeyListener.html | 123 + ...ndroid.text.method.ScrollingMovementMethod.html | 123 + .../android.text.method.TextKeyListener.html | 123 + .../android.text.method.TimeKeyListener.html | 123 + .../3/changes/android.text.method.Touch.html | 130 + .../android.text.style.AbsoluteSizeSpan.html | 153 + .../android.text.style.AlignmentSpan.Standard.html | 153 + .../android.text.style.BackgroundColorSpan.html | 153 + .../3/changes/android.text.style.BulletSpan.html | 153 + .../changes/android.text.style.ClickableSpan.html | 109 + .../android.text.style.DynamicDrawableSpan.html | 167 + .../android.text.style.ForegroundColorSpan.html | 153 + .../3/changes/android.text.style.ImageSpan.html | 151 + ...roid.text.style.LeadingMarginSpan.Standard.html | 153 + .../changes/android.text.style.MaskFilterSpan.html | 109 + .../3/changes/android.text.style.QuoteSpan.html | 153 + .../changes/android.text.style.RasterizerSpan.html | 109 + .../android.text.style.RelativeSizeSpan.html | 153 + .../3/changes/android.text.style.ScaleXSpan.html | 153 + .../android.text.style.StrikethroughSpan.html | 153 + .../3/changes/android.text.style.StyleSpan.html | 153 + .../changes/android.text.style.SubscriptSpan.html | 153 + .../android.text.style.SuperscriptSpan.html | 153 + .../android.text.style.TextAppearanceSpan.html | 153 + .../3/changes/android.text.style.TypefaceSpan.html | 153 + .../3/changes/android.text.style.URLSpan.html | 153 + .../changes/android.text.style.UnderlineSpan.html | 153 + .../3/changes/android.text.style.UpdateLayout.html | 109 + .../3/changes/android.util.SparseIntArray.html | 123 + .../api_diff/3/changes/android.util.TimeUtils.html | 123 + ...ew.GestureDetector.SimpleOnGestureListener.html | 138 + .../3/changes/android.view.GestureDetector.html | 173 + .../api_diff/3/changes/android.view.Gravity.html | 166 + .../3/changes/android.view.KeyCharacterMap.html | 130 + .../api_diff/3/changes/android.view.KeyEvent.html | 275 ++ .../sdk/api_diff/3/changes/android.view.Menu.html | 130 + .../3/changes/android.view.MotionEvent.html | 123 + .../changes/android.view.OrientationListener.html | 124 + .../sdk/api_diff/3/changes/android.view.View.html | 257 ++ .../3/changes/android.view.ViewConfiguration.html | 282 ++ .../api_diff/3/changes/android.view.ViewDebug.html | 123 + .../api_diff/3/changes/android.view.ViewGroup.html | 123 + .../3/changes/android.view.ViewParent.html | 123 + .../3/changes/android.view.ViewTreeObserver.html | 130 + .../api_diff/3/changes/android.view.Window.html | 137 + .../android.view.WindowManager.LayoutParams.html | 292 ++ .../changes/android.view.animation.Animation.html | 138 + .../android.view.animation.Transformation.html | 123 + .../api_diff/3/changes/android.webkit.URLUtil.html | 126 + .../android.webkit.UrlInterceptHandler.html | 141 + .../android.webkit.UrlInterceptRegistry.html | 141 + .../3/changes/android.webkit.WebHistoryItem.html | 123 + .../3/changes/android.webkit.WebSettings.html | 186 + .../api_diff/3/changes/android.webkit.WebView.html | 193 + .../3/changes/android.widget.AbsListView.html | 151 + .../3/changes/android.widget.AbsSeekBar.html | 130 + .../3/changes/android.widget.AbsoluteLayout.html | 109 + .../3/changes/android.widget.ArrayAdapter.html | 123 + .../android.widget.AutoCompleteTextView.html | 214 + .../3/changes/android.widget.Chronometer.html | 130 + .../3/changes/android.widget.CursorAdapter.html | 161 + .../3/changes/android.widget.GridView.html | 123 + .../3/changes/android.widget.ListView.html | 130 + ...droid.widget.PopupWindow.OnDismissListener.html | 109 + .../3/changes/android.widget.PopupWindow.html | 243 ++ .../3/changes/android.widget.ProgressBar.html | 136 + ...android.widget.RemoteViews.ActionException.html | 123 + .../3/changes/android.widget.RemoteViews.html | 221 ++ .../android.widget.ResourceCursorAdapter.html | 138 + .../3/changes/android.widget.Scroller.html | 130 + .../android.widget.SimpleCursorAdapter.html | 123 + .../3/changes/android.widget.TextView.html | 333 ++ .../sdk/api_diff/3/changes/changes-summary.html | 451 +++ .../3/changes/classes_index_additions.html | 469 +++ .../sdk/api_diff/3/changes/classes_index_all.html | 963 +++++ .../api_diff/3/changes/classes_index_changes.html | 846 ++++ .../api_diff/3/changes/classes_index_removals.html | 62 + .../3/changes/constructors_index_additions.html | 409 ++ .../api_diff/3/changes/constructors_index_all.html | 514 +++ .../3/changes/constructors_index_changes.html | 124 + .../3/changes/constructors_index_removals.html | 68 + .../api_diff/3/changes/dalvik.system.DexFile.html | 123 + .../api_diff/3/changes/dalvik.system.VMDebug.html | 130 + .../api_diff/3/changes/dalvik.system.Zygote.html | 187 + .../api_diff/3/changes/fields_index_additions.html | 1129 ++++++ .../sdk/api_diff/3/changes/fields_index_all.html | 1270 ++++++ .../api_diff/3/changes/fields_index_changes.html | 471 +++ .../api_diff/3/changes/fields_index_removals.html | 68 + .../changes/java.lang.Character.UnicodeBlock.html | 126 + .../sdk/api_diff/3/changes/java.lang.Class.html | 166 + .../sdk/api_diff/3/changes/java.lang.String.html | 161 + .../3/changes/java.lang.reflect.Proxy.html | 126 + .../sdk/api_diff/3/changes/java.net.Socket.html | 161 + .../sdk/api_diff/3/changes/java.util.Date.html | 134 + .../3/changes/java.util.jar.Pack200.Packer.html | 130 + .../3/changes/java.util.jar.Pack200.Unpacker.html | 130 + .../3/changes/java.util.logging.Level.html | 127 + .../3/changes/java.util.logging.LogManager.html | 137 + docs/html/sdk/api_diff/3/changes/jdiff_help.html | 135 + .../sdk/api_diff/3/changes/jdiff_statistics.html | 1284 ++++++ .../sdk/api_diff/3/changes/jdiff_topleftframe.html | 64 + .../3/changes/methods_index_additions.html | 1397 +++++++ .../sdk/api_diff/3/changes/methods_index_all.html | 1600 ++++++++ .../api_diff/3/changes/methods_index_changes.html | 466 +++ .../api_diff/3/changes/methods_index_removals.html | 62 + .../3/changes/packages_index_additions.html | 72 + .../sdk/api_diff/3/changes/packages_index_all.html | 112 + .../api_diff/3/changes/packages_index_changes.html | 106 + .../3/changes/packages_index_removals.html | 64 + .../sdk/api_diff/3/changes/pkg_android.app.html | 198 + .../api_diff/3/changes/pkg_android.content.html | 155 + .../api_diff/3/changes/pkg_android.content.pm.html | 149 + .../3/changes/pkg_android.content.res.html | 163 + .../api_diff/3/changes/pkg_android.database.html | 134 + .../3/changes/pkg_android.database.sqlite.html | 120 + .../3/changes/pkg_android.graphics.drawable.html | 141 + .../pkg_android.graphics.drawable.shapes.html | 120 + .../api_diff/3/changes/pkg_android.graphics.html | 141 + .../api_diff/3/changes/pkg_android.hardware.html | 170 + docs/html/sdk/api_diff/3/changes/pkg_android.html | 177 + .../api_diff/3/changes/pkg_android.location.html | 156 + .../sdk/api_diff/3/changes/pkg_android.media.html | 254 ++ .../sdk/api_diff/3/changes/pkg_android.net.html | 127 + .../api_diff/3/changes/pkg_android.net.wifi.html | 120 + .../sdk/api_diff/3/changes/pkg_android.opengl.html | 148 + .../sdk/api_diff/3/changes/pkg_android.os.html | 212 + .../api_diff/3/changes/pkg_android.preference.html | 120 + .../api_diff/3/changes/pkg_android.provider.html | 233 ++ .../3/changes/pkg_android.telephony.gsm.html | 120 + .../api_diff/3/changes/pkg_android.telephony.html | 142 + .../sdk/api_diff/3/changes/pkg_android.test.html | 163 + .../api_diff/3/changes/pkg_android.test.mock.html | 120 + .../3/changes/pkg_android.test.suitebuilder.html | 127 + .../sdk/api_diff/3/changes/pkg_android.text.html | 191 + .../3/changes/pkg_android.text.method.html | 218 + .../api_diff/3/changes/pkg_android.text.style.html | 289 ++ .../sdk/api_diff/3/changes/pkg_android.util.html | 142 + .../3/changes/pkg_android.view.animation.html | 127 + .../sdk/api_diff/3/changes/pkg_android.view.html | 268 ++ .../sdk/api_diff/3/changes/pkg_android.webkit.html | 170 + .../sdk/api_diff/3/changes/pkg_android.widget.html | 310 ++ .../sdk/api_diff/3/changes/pkg_dalvik.system.html | 149 + .../html/sdk/api_diff/3/changes/pkg_java.lang.html | 134 + .../api_diff/3/changes/pkg_java.lang.reflect.html | 120 + docs/html/sdk/api_diff/3/changes/pkg_java.net.html | 120 + .../html/sdk/api_diff/3/changes/pkg_java.util.html | 120 + .../sdk/api_diff/3/changes/pkg_java.util.jar.html | 127 + .../api_diff/3/changes/pkg_java.util.logging.html | 127 + docs/html/sdk/api_diff/3/stylesheet-jdiff.css | 37 + 255 files changed, 56240 insertions(+) create mode 100644 docs/html/sdk/api_diff/3/changes.html create mode 100644 docs/html/sdk/api_diff/3/changes/alldiffs_index_additions.html create mode 100644 docs/html/sdk/api_diff/3/changes/alldiffs_index_all.html create mode 100644 docs/html/sdk/api_diff/3/changes/alldiffs_index_changes.html create mode 100644 docs/html/sdk/api_diff/3/changes/alldiffs_index_removals.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.Manifest.permission.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.R.attr.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.R.drawable.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.R.id.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.R.string.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.R.style.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.app.Activity.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.app.ActivityManager.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.app.AlarmManager.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.app.AlertDialog.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.app.Instrumentation.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.app.LauncherActivity.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.app.PendingIntent.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.content.BroadcastReceiver.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.content.ContentProvider.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.content.ContentResolver.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.content.Context.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.content.DialogInterface.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.content.Intent.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.content.pm.ActivityInfo.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.content.pm.PackageInfo.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.content.pm.PackageManager.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.content.res.AssetFileDescriptor.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.content.res.Configuration.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.content.res.Resources.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.content.res.TypedArray.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.database.Cursor.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.database.CursorWrapper.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.database.DatabaseUtils.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.database.sqlite.SQLiteDatabase.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.graphics.Bitmap.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.graphics.Canvas.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.graphics.Rect.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.graphics.RectF.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.graphics.drawable.Drawable.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.graphics.drawable.RotateDrawable.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.graphics.drawable.ScaleDrawable.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.graphics.drawable.TransitionDrawable.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.graphics.drawable.shapes.Shape.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.hardware.Camera.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.hardware.SensorListener.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.hardware.SensorManager.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.location.Location.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.location.LocationManager.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.media.AudioManager.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.media.MediaPlayer.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.media.MediaRecorder.OutputFormat.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.media.MediaRecorder.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.media.RingtoneManager.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.media.SoundPool.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.net.ConnectivityManager.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.net.NetworkInfo.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.net.wifi.WifiManager.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.os.Binder.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.os.Build.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.os.Debug.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.os.Environment.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.os.Handler.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.os.IBinder.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.os.Looper.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.os.Parcel.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.os.ParcelFileDescriptor.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.preference.DialogPreference.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.provider.Browser.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.provider.Contacts.Intents.Insert.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.provider.Contacts.Intents.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.provider.Contacts.PeopleColumns.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Audio.AlbumColumns.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Audio.Media.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Images.Media.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Video.VideoColumns.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Video.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.provider.Settings.System.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.provider.Settings.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.telephony.PhoneNumberUtils.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.telephony.TelephonyManager.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.telephony.gsm.SmsMessage.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.test.ActivityInstrumentationTestCase.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.test.InstrumentationTestCase.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.test.ProviderTestCase.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.test.TouchUtils.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.test.mock.MockPackageManager.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.test.suitebuilder.TestMethod.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.test.suitebuilder.TestSuiteBuilder.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.Annotation.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.AutoText.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.SpanWatcher.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.Spanned.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.TextUtils.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.TextWatcher.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.method.ArrowKeyMovementMethod.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.method.BaseKeyListener.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.method.DateKeyListener.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.method.DateTimeKeyListener.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.method.DialerKeyListener.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.method.DigitsKeyListener.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.method.KeyListener.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.method.MetaKeyKeyListener.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.method.MovementMethod.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.method.MultiTapKeyListener.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.method.QwertyKeyListener.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.method.ScrollingMovementMethod.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.method.TextKeyListener.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.method.TimeKeyListener.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.method.Touch.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.style.AbsoluteSizeSpan.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.style.AlignmentSpan.Standard.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.style.BackgroundColorSpan.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.style.BulletSpan.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.style.ClickableSpan.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.style.DynamicDrawableSpan.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.style.ForegroundColorSpan.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.style.ImageSpan.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.style.LeadingMarginSpan.Standard.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.style.MaskFilterSpan.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.style.QuoteSpan.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.style.RasterizerSpan.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.style.RelativeSizeSpan.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.style.ScaleXSpan.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.style.StrikethroughSpan.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.style.StyleSpan.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.style.SubscriptSpan.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.style.SuperscriptSpan.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.style.TextAppearanceSpan.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.style.TypefaceSpan.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.style.URLSpan.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.style.UnderlineSpan.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.style.UpdateLayout.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.util.SparseIntArray.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.util.TimeUtils.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.view.GestureDetector.SimpleOnGestureListener.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.view.GestureDetector.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.view.Gravity.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.view.KeyCharacterMap.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.view.KeyEvent.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.view.Menu.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.view.MotionEvent.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.view.OrientationListener.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.view.View.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.view.ViewConfiguration.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.view.ViewDebug.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.view.ViewGroup.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.view.ViewParent.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.view.ViewTreeObserver.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.view.Window.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.view.WindowManager.LayoutParams.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.view.animation.Animation.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.view.animation.Transformation.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.webkit.URLUtil.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.webkit.UrlInterceptHandler.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.webkit.UrlInterceptRegistry.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.webkit.WebHistoryItem.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.webkit.WebSettings.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.webkit.WebView.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.widget.AbsListView.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.widget.AbsSeekBar.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.widget.AbsoluteLayout.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.widget.ArrayAdapter.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.widget.AutoCompleteTextView.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.widget.Chronometer.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.widget.CursorAdapter.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.widget.GridView.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.widget.ListView.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.widget.PopupWindow.OnDismissListener.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.widget.PopupWindow.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.widget.ProgressBar.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.widget.RemoteViews.ActionException.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.widget.RemoteViews.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.widget.ResourceCursorAdapter.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.widget.Scroller.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.widget.SimpleCursorAdapter.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.widget.TextView.html create mode 100644 docs/html/sdk/api_diff/3/changes/changes-summary.html create mode 100644 docs/html/sdk/api_diff/3/changes/classes_index_additions.html create mode 100644 docs/html/sdk/api_diff/3/changes/classes_index_all.html create mode 100644 docs/html/sdk/api_diff/3/changes/classes_index_changes.html create mode 100644 docs/html/sdk/api_diff/3/changes/classes_index_removals.html create mode 100644 docs/html/sdk/api_diff/3/changes/constructors_index_additions.html create mode 100644 docs/html/sdk/api_diff/3/changes/constructors_index_all.html create mode 100644 docs/html/sdk/api_diff/3/changes/constructors_index_changes.html create mode 100644 docs/html/sdk/api_diff/3/changes/constructors_index_removals.html create mode 100644 docs/html/sdk/api_diff/3/changes/dalvik.system.DexFile.html create mode 100644 docs/html/sdk/api_diff/3/changes/dalvik.system.VMDebug.html create mode 100644 docs/html/sdk/api_diff/3/changes/dalvik.system.Zygote.html create mode 100644 docs/html/sdk/api_diff/3/changes/fields_index_additions.html create mode 100644 docs/html/sdk/api_diff/3/changes/fields_index_all.html create mode 100644 docs/html/sdk/api_diff/3/changes/fields_index_changes.html create mode 100644 docs/html/sdk/api_diff/3/changes/fields_index_removals.html create mode 100644 docs/html/sdk/api_diff/3/changes/java.lang.Character.UnicodeBlock.html create mode 100644 docs/html/sdk/api_diff/3/changes/java.lang.Class.html create mode 100644 docs/html/sdk/api_diff/3/changes/java.lang.String.html create mode 100644 docs/html/sdk/api_diff/3/changes/java.lang.reflect.Proxy.html create mode 100644 docs/html/sdk/api_diff/3/changes/java.net.Socket.html create mode 100644 docs/html/sdk/api_diff/3/changes/java.util.Date.html create mode 100644 docs/html/sdk/api_diff/3/changes/java.util.jar.Pack200.Packer.html create mode 100644 docs/html/sdk/api_diff/3/changes/java.util.jar.Pack200.Unpacker.html create mode 100644 docs/html/sdk/api_diff/3/changes/java.util.logging.Level.html create mode 100644 docs/html/sdk/api_diff/3/changes/java.util.logging.LogManager.html create mode 100644 docs/html/sdk/api_diff/3/changes/jdiff_help.html create mode 100644 docs/html/sdk/api_diff/3/changes/jdiff_statistics.html create mode 100644 docs/html/sdk/api_diff/3/changes/jdiff_topleftframe.html create mode 100644 docs/html/sdk/api_diff/3/changes/methods_index_additions.html create mode 100644 docs/html/sdk/api_diff/3/changes/methods_index_all.html create mode 100644 docs/html/sdk/api_diff/3/changes/methods_index_changes.html create mode 100644 docs/html/sdk/api_diff/3/changes/methods_index_removals.html create mode 100644 docs/html/sdk/api_diff/3/changes/packages_index_additions.html create mode 100644 docs/html/sdk/api_diff/3/changes/packages_index_all.html create mode 100644 docs/html/sdk/api_diff/3/changes/packages_index_changes.html create mode 100644 docs/html/sdk/api_diff/3/changes/packages_index_removals.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.app.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.content.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.content.pm.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.content.res.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.database.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.database.sqlite.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.graphics.drawable.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.graphics.drawable.shapes.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.graphics.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.hardware.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.location.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.media.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.net.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.net.wifi.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.opengl.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.os.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.preference.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.provider.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.telephony.gsm.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.telephony.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.test.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.test.mock.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.test.suitebuilder.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.text.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.text.method.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.text.style.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.util.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.view.animation.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.view.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.webkit.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.widget.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_dalvik.system.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_java.lang.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_java.lang.reflect.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_java.net.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_java.util.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_java.util.jar.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_java.util.logging.html create mode 100644 docs/html/sdk/api_diff/3/stylesheet-jdiff.css diff --git a/docs/html/sdk/api_diff/3/changes.html b/docs/html/sdk/api_diff/3/changes.html new file mode 100644 index 000000000000..2ff5de822254 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes.html @@ -0,0 +1,49 @@ + + + + + + + + + + +API Differences between 2 and 3 + + + + + + + + + + + + + + +<H2> +Frame Alert +</H2> + +<P> +This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. +<BR> +Link to <A HREF="changes/changes-summary.html" target="_top">Non-frame version.</A> + + diff --git a/docs/html/sdk/api_diff/3/changes/alldiffs_index_additions.html b/docs/html/sdk/api_diff/3/changes/alldiffs_index_additions.html new file mode 100644 index 000000000000..41f78ab79d97 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/alldiffs_index_additions.html @@ -0,0 +1,3144 @@ + + + + + + + + + +All Additions Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Differences +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + + +
    A  +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +AbsoluteSizeSpan +(Parcel) constructor
    + +ACCELEROMETER_ROTATION +
    + +ACTION_AIRPLANE_MODE_SETTINGS +
    + +ACTION_APPLICATION_DEVELOPMENT_SETTINGS +
    + +ACTION_AUDIO_BECOMING_NOISY +
    + +ACTION_BACKGROUND_DATA_SETTING_CHANGED +
    + +ACTION_DATA_ROAMING_SETTINGS +
    + +ACTION_IMAGE_CAPTURE +
    + +ACTION_INPUT_METHOD_CHANGED +
    + +ACTION_INPUT_METHOD_SETTINGS +
    + +ACTION_INTERNAL_STORAGE_SETTINGS +
    + +ACTION_MANAGE_APPLICATIONS_SETTINGS +
    + +ACTION_MEDIA_CHECKING +
    + +ACTION_MEDIA_NOFS +
    + +ACTION_MEMORY_CARD_SETTINGS +
    + +ACTION_NETWORK_OPERATOR_SETTINGS +
    + +ACTION_OUTSIDE +
    + +ACTION_PACKAGE_DATA_CLEARED +
    + +ACTION_PACKAGE_REPLACED +
    + +ACTION_PHONE_STATE_CHANGED +
    + +ACTION_QUICK_LAUNCH_SETTINGS +
    + +ACTION_SEARCH_LONG_PRESS +
    + +ACTION_SYNC_SETTINGS +
    + +ACTION_SYSTEM_TUTORIAL +
    + +ACTION_USER_DICTIONARY_SETTINGS +
    + +ACTION_USER_PRESENT +
    + +ACTION_VIDEO_CAPTURE +
    + +ACTION_WIFI_IP_SETTINGS +
    + +ActivityInstrumentationTestCase2
    + +ActivityManager.RunningAppProcessInfo
    + +addGpsStatusListener +(Listener)
    + +addOnScrollChangedListener +(OnScrollChangedListener)
    + +addPropertyChangeListener
    +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Packer +
    + +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Unpacker +
    + +  type  +(PropertyChangeListener) in java.util.logging.LogManager +
    + +addTestProvider +(String, boolean, boolean, boolean, boolean, boolean, boolean, boolean, int, int)
    + +addToDictionary +
    + +adjustMetaAfterKeypress +(long)
    + +ALIGN_BASELINE +
    + +ALIGN_BOTTOM +
    + +AlignmentSpan.Standard +(Parcel) constructor
    + +allowSingleTap +
    + +AlphabetIndexer
    + +android.appwidget
    + +android.inputmethodservice
    + +android.speech
    + +android.text.format
    + +android.view.inputmethod
    + +animateOnClick +
    + +Annotation +(Parcel) constructor
    + +applyDisplay +(int, Rect, Rect)
    + +AssetFileDescriptor.AutoCloseInputStream
    + +AssetFileDescriptor.AutoCloseOutputStream
    + +AsyncTask
    + +AsyncTask.Status
    + +AudioFormat
    + +AudioRecord
    + +AudioRecord.OnRecordPositionUpdateListener
    + +AudioTrack
    + +AudioTrack.OnPlaybackPositionUpdateListener
    + +AXIS_CLIP +
    + +AXIS_MINUS_X +
    + +AXIS_MINUS_Y +
    + +AXIS_MINUS_Z +
    + +AXIS_X +
    + +AXIS_Y +
    + +AXIS_Z +
    + + +
    B  +A +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +BackgroundColorSpan +(Parcel) constructor
    + +backgroundDimEnabled +
    + +beginBatchEdit +()
    + +BIND_APPWIDGET +
    + +BIND_INPUT_METHOD +
    + +BOOKMARK +
    + +bottomOffset +
    + +bringPointIntoView +(int)
    + +BUCKET_DISPLAY_NAME +
    + +BUCKET_ID +
    + +BulletSpan +(Parcel) constructor
    + +BUTTON_NEGATIVE +
    + +BUTTON_NEUTRAL +
    + +BUTTON_POSITIVE +
    + + +
    C  +A +B +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +calculateLength +(CharSequence, boolean)
    + +callActivityOnUserLeaving +(Activity)
    + +candidatesArea +
    + +candidatesTextStyleSpans +
    + +CAP_MODE_CHARACTERS +
    + +CAP_MODE_SENTENCES +
    + +CAP_MODE_WORDS +
    + +CATEGORY_INFO +
    + +changeAction +(KeyEvent, int)
    + +changeCursorAndColumns +(Cursor, String[], int[])
    + +changeFlags +(KeyEvent, int)
    + +changeTimeRepeat +(KeyEvent, long, int)
    + +checkInputConnectionProxy +(View)
    + +Chronometer.OnChronometerTickListener
    + +clearComposingText +()
    + +clearListSelection +()
    + +clearMatches +()
    + +clearMetaKeyState
    +  type  +(View, Editable, int) in android.text.method.KeyListener +
    + +  type  +(long, int) in android.text.method.MetaKeyKeyListener +
    + +  type  +(View, Editable, int) in android.text.method.MetaKeyKeyListener +
    + +  type  +(Editable, int) in android.text.method.MetaKeyKeyListener +
    + +clearTestProviderEnabled +(String)
    + +clearTestProviderLocation +(String)
    + +clearTestProviderStatus +(String)
    + +CLIP_HORIZONTAL +
    + +CLIP_VERTICAL +
    + +close +()
    + +closeButton +
    + +closeContextMenu +()
    + +codes +
    + +computeDurationHint +()
    + +configPreferences +
    + +ConfigurationInfo
    + +configure +
    + +content +
    + +copy +
    + +copyPixelsFromBuffer +(Buffer)
    + +copyUrl +
    + +createInputStream +()
    + +createOutputStream +()
    + +createWifiLock +(int, String)
    + +CREATOR
    + in  +android.content.res.AssetFileDescriptor +
    + + in  +android.graphics.RectF +
    + +cut +
    + + +
    D  +A +B +C +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +dark_header +
    + +DEBUG_ENABLE_ASSERT +
    + +DEBUG_ENABLE_CHECKJNI +
    + +DEBUG_ENABLE_DEBUGGER +
    + +describeContents
    +  type  +() in android.content.res.AssetFileDescriptor +
    + +  type  +() in android.graphics.RectF +
    + +  type  +() in android.text.Annotation +
    + +  type  +() in android.text.style.AbsoluteSizeSpan +
    + +  type  +() in android.text.style.AlignmentSpan.Standard +
    + +  type  +() in android.text.style.BackgroundColorSpan +
    + +  type  +() in android.text.style.BulletSpan +
    + +  type  +() in android.text.style.ForegroundColorSpan +
    + +  type  +() in android.text.style.LeadingMarginSpan.Standard +
    + +  type  +() in android.text.style.QuoteSpan +
    + +  type  +() in android.text.style.RelativeSizeSpan +
    + +  type  +() in android.text.style.ScaleXSpan +
    + +  type  +() in android.text.style.StrikethroughSpan +
    + +  type  +() in android.text.style.StyleSpan +
    + +  type  +() in android.text.style.SubscriptSpan +
    + +  type  +() in android.text.style.SuperscriptSpan +
    + +  type  +() in android.text.style.TextAppearanceSpan +
    + +  type  +() in android.text.style.TypefaceSpan +
    + +  type  +() in android.text.style.URLSpan +
    + +  type  +() in android.text.style.UnderlineSpan +
    + +deviceHasKey +(int)
    + +deviceHasKeys +(int[])
    + +DexClassLoader
    + +dialog_alert_title +
    + +didTouchFocusSelect +()
    + +dispatchKeyEventPreIme +(KeyEvent)
    + +DISPLAY +
    + +DISPLAY_CLIP_HORIZONTAL +
    + +DISPLAY_CLIP_VERTICAL +
    + +drag +(InstrumentationTestCase, float, float, float, float, int)
    + +dragQuarterScreenDown +(InstrumentationTestCase, Activity)
    + +dragQuarterScreenUp +(InstrumentationTestCase, Activity)
    + +dragViewBy +(InstrumentationTestCase, View, int, int, int)
    + +dragViewTo +(InstrumentationTestCase, View, int, int, int)
    + +dragViewToBottom
    +  type  +(ActivityInstrumentationTestCase, View, int) in android.test.TouchUtils +
    + +  type  +(InstrumentationTestCase, Activity, View, int) in android.test.TouchUtils +
    + +dragViewToTop
    +  type  +(InstrumentationTestCase, View) in android.test.TouchUtils +
    + +  type  +(InstrumentationTestCase, View, int) in android.test.TouchUtils +
    + +dragViewToX +(InstrumentationTestCase, View, int, int)
    + +dragViewToY +(InstrumentationTestCase, View, int, int)
    + +drawBitmap +(int[], int, int, float, float, int, int, boolean, Paint)
    + +dropDownAnchor +
    + +dropDownWidth +
    + +dump
    +  type  +(Printer, String) in android.location.Location +
    + +  type  +(FileDescriptor, String[]) in android.os.Binder +
    + +  type  +(FileDescriptor, String[]) in android.os.IBinder +
    + +dumpCapturedView +(String, Object)
    + +dumpHprofData
    +  type  +(String) in android.os.Debug +
    + +  type  +(String) in dalvik.system.VMDebug +
    + +dumpSpans +(CharSequence, Printer, String)
    + +DynamicDrawableSpan +(int) constructor
    + + +
    E  +A +B +C +D +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +editorExtras +
    + +endBatchEdit +()
    + +EXTRA_APPLICATION_ID +
    + +EXTRA_CREATE_DESCRIPTION +
    + +EXTRA_DATA_REMOVED +
    + +EXTRA_FINISH_ON_COMPLETION +
    + +EXTRA_FORCE_CREATE +
    + +EXTRA_INCOMING_NUMBER +
    + +EXTRA_MAX_BYTES +
    + +EXTRA_MEDIA_ALBUM +
    + +EXTRA_MEDIA_ARTIST +
    + +EXTRA_MEDIA_FOCUS +
    + +EXTRA_MEDIA_TITLE +
    + +EXTRA_OUTPUT +
    + +EXTRA_REPLACING +
    + +EXTRA_SCREEN_ORIENTATION +
    + +EXTRA_STATE +
    + +EXTRA_STATE_IDLE +
    + +EXTRA_STATE_OFFHOOK +
    + +EXTRA_STATE_RINGING +
    + +EXTRA_VIDEO_QUALITY +
    + +extractArea +
    + +extractText +(ExtractedTextRequest, ExtractedText)
    + + +
    F  +A +B +C +D +E +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +fastScrollEnabled +
    + +fillEnabled +
    + +findAll +(String)
    + +findNext +(boolean)
    + +FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET +
    + +FLAG_ACTIVITY_NO_USER_ACTION +
    + +FLAG_ACTIVITY_REORDER_TO_FRONT +
    + +FLAG_ALT_FOCUSABLE_IM +
    + +FLAG_EDITOR_ACTION +
    + +FLAG_FROM_SYSTEM +
    + +FLAG_KEEP_TOUCH_MODE +
    + +FLAG_NO_HISTORY +
    + +FLAG_SOFT_KEYBOARD +
    + +FLAG_UPDATE_CURRENT +
    + +FLAG_WATCH_OUTSIDE_TOUCH +
    + +footerDividersEnabled +
    + +ForegroundColorSpan +(Parcel) constructor
    + +forkAndSpecialize +(int, int, int[], int, int[][])
    + +forkSystemServer +(int, int, int[], int, int[][])
    + +FORMAT_JAPAN +
    + +formatJapaneseNumber +(Editable)
    + +FX_KEYPRESS_DELETE +
    + +FX_KEYPRESS_RETURN +
    + +FX_KEYPRESS_SPACEBAR +
    + +FX_KEYPRESS_STANDARD +
    + + +
    G  +A +B +C +D +E +F +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +GeomagneticField
    + +GestureDetector
    +  GestureDetector +(Context, OnGestureListener) constructor
    + +  GestureDetector +(Context, OnGestureListener, Handler) constructor
    + +GestureDetector.OnDoubleTapListener
    + +get +(Context)
    + +GET_CONFIGURATIONS +
    + +GET_UNINSTALLED_PACKAGES +
    + +getAllowFileAccess +()
    + +getBackgroundDataSetting +()
    + +getBoolean +(int)
    + +getBuiltInZoomControls +()
    + +getButton +(int)
    + +getCapsMode +(CharSequence, int, int)
    + +getCharacters +()
    + +getDeclaredLength +()
    + +getDefaultSensor +(int)
    + +getDeviceConfigurationInfo +()
    + +getDialog +()
    + +getDoubleTapTimeout +()
    + +getDrawable
    +  type  +() in android.graphics.drawable.RotateDrawable +
    + +  type  +() in android.graphics.drawable.ScaleDrawable +
    + +getDropDownAnchor +()
    + +getDropDownWidth +()
    + +getEditableText +()
    + +getFraction +(int, int, int)
    + +getGpsStatus +(GpsStatus)
    + +getImeActionId +()
    + +getImeActionLabel +()
    + +getImeOptions +()
    + +getInclination +(float[])
    + +getInitialScrollX +(TextView, Spannable)
    + +getInitialScrollY +(TextView, Spannable)
    + +getInputExtras +(boolean)
    + +getInputMethodMode +()
    + +getInputType
    +  type  +() in android.text.method.DateKeyListener +
    + +  type  +() in android.text.method.DateTimeKeyListener +
    + +  type  +() in android.text.method.DialerKeyListener +
    + +  type  +() in android.text.method.DigitsKeyListener +
    + +  type  +() in android.text.method.KeyListener +
    + +  type  +() in android.text.method.MultiTapKeyListener +
    + +  type  +() in android.text.method.QwertyKeyListener +
    + +  type  +() in android.text.method.TextKeyListener +
    + +  type  +() in android.text.method.TimeKeyListener +
    + +  type  +() in android.widget.TextView +
    + +getItem +(int)
    + +getKeyProgressIncrement +()
    + +getLaunchIntentForPackage
    +  type  +(String) in android.content.pm.PackageManager +
    + +  type  +(String) in android.test.mock.MockPackageManager +
    + +getLayoutDimension +(int, int)
    + +getListSelection +()
    + +getListView +()
    + +getLoggingMXBean +()
    + +getLong
    +  type  +(ContentResolver, String) in android.provider.Settings.System +
    + +  type  +(ContentResolver, String, long) in android.provider.Settings.System +
    + +getMaxAvailableHeight +(View, int)
    + +getMaxKeyCode +()
    + +getMetaState
    +  type  +(long) in android.text.method.MetaKeyKeyListener +
    + +  type  +(long, int) in android.text.method.MetaKeyKeyListener +
    + +getNeighboringCellInfo +()
    + +getOnChronometerTickListener +()
    + +getOnItemClickListener +()
    + +getOnItemSelectedListener +()
    + +getOrientation +(float[], float[])
    + +getOriginalUrl
    +  type  +() in android.webkit.WebHistoryItem +
    + +  type  +() in android.webkit.WebView +
    + +getPluginData
    +  type  +(String, Map<String, String>) in android.webkit.UrlInterceptHandler +
    + +  type  +(String, Map<String, String>) in android.webkit.UrlInterceptRegistry +
    + +getPrivateImeOptions +()
    + +getRotationMatrix +(float[], float[], float[], float[])
    + +getRunningAppProcesses +()
    + +getScaledDoubleTapSlop +()
    + +getScaledEdgeSlop +()
    + +getScaledFadingEdgeLength +()
    + +getScaledMaximumDrawingCacheSize +()
    + +getScaledMinimumFlingVelocity +()
    + +getScaledScrollBarSize +()
    + +getScaledTouchSlop +()
    + +getScaledWindowTouchSlop +()
    + +getSensorList +(int)
    + +getSize +(View)
    + +getSpanTypeId
    +  type  +() in android.text.Annotation +
    + +  type  +() in android.text.style.AbsoluteSizeSpan +
    + +  type  +() in android.text.style.AlignmentSpan.Standard +
    + +  type  +() in android.text.style.BackgroundColorSpan +
    + +  type  +() in android.text.style.BulletSpan +
    + +  type  +() in android.text.style.ForegroundColorSpan +
    + +  type  +() in android.text.style.LeadingMarginSpan.Standard +
    + +  type  +() in android.text.style.QuoteSpan +
    + +  type  +() in android.text.style.RelativeSizeSpan +
    + +  type  +() in android.text.style.ScaleXSpan +
    + +  type  +() in android.text.style.StrikethroughSpan +
    + +  type  +() in android.text.style.StyleSpan +
    + +  type  +() in android.text.style.SubscriptSpan +
    + +  type  +() in android.text.style.SuperscriptSpan +
    + +  type  +() in android.text.style.TextAppearanceSpan +
    + +  type  +() in android.text.style.TypefaceSpan +
    + +  type  +() in android.text.style.URLSpan +
    + +  type  +() in android.text.style.UnderlineSpan +
    + +getStartX +()
    + +getStartY +()
    + +getStatSize +()
    + +getSubtype +()
    + +getSubtypeName +()
    + +getSystemSharedLibraryNames
    +  type  +() in android.content.pm.PackageManager +
    + +  type  +() in android.test.mock.MockPackageManager +
    + +getTextFilter +()
    + +getThread +()
    + +getTimeZoneDatabaseVersion +()
    + +getUserAgentString +()
    + +getVerticalAlignment +()
    + +getWindowVisibleDisplayFrame +(Rect)
    + +GLSurfaceView
    + +GLSurfaceView.EGLConfigChooser
    + +GLSurfaceView.GLWrapper
    + +GLSurfaceView.Renderer
    + +GpsSatellite
    + +GpsStatus
    + +GpsStatus.Listener
    + + +
    H  +A +B +C +D +E +F +G +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +handle +
    + +handleKeyDown +(long, int, KeyEvent)
    + +handleKeyUp +(long, int, KeyEvent)
    + +Handler
    +  Handler +(Callback) constructor
    + +  Handler +(Looper, Callback) constructor
    + +Handler.Callback
    + +HAPTIC_FEEDBACK_ENABLED
    + in  +android.provider.Settings.System +
    + + in  +android.view.View +
    + +HapticFeedbackConstants
    + +hapticFeedbackEnabled +
    + +hardKeyboardHidden +
    + +HARDKEYBOARDHIDDEN_NO +
    + +HARDKEYBOARDHIDDEN_UNDEFINED +
    + +HARDKEYBOARDHIDDEN_YES +
    + +hasSoftInputMode +()
    + +hasWindowFocus +()
    + +headerDividersEnabled +
    + +horizontalGap +
    + +HorizontalScrollView
    + + +
    I  +A +B +C +D +E +F +G +H +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +ic_btn_speak_now +
    + +iconPreview +
    + +ImageSpan
    +  ImageSpan +(Context, Uri, int) constructor
    + +  ImageSpan +(Context, int, int) constructor
    + +  ImageSpan +(Bitmap, int) constructor
    + +  ImageSpan +(Drawable, int) constructor
    + +  ImageSpan +(Drawable, String, int) constructor
    + +imeActionId +
    + +imeActionLabel +
    + +imeExtractEnterAnimation +
    + +imeExtractExitAnimation +
    + +imeFullscreenBackground +
    + +imeOptions +
    + +inferStreamType +()
    + +initialLayout +
    + +innerRadius +
    + +INPUT_METHOD_FROM_FOCUSABLE +
    + +INPUT_METHOD_NEEDED +
    + +INPUT_METHOD_NOT_NEEDED +
    + +INPUT_METHOD_SERVICE +
    + +inputArea +
    + +inputExtractEditText +
    + +InputType
    + +inputType +
    + +INSTALL_FAILED_CONFLICTING_PROVIDER +
    + +INTENT_ACTION_MEDIA_SEARCH +
    + +INTENT_ACTION_STILL_IMAGE_CAMERA +
    + +INTENT_ACTION_VIDEO_CAMERA +
    + +intentForPosition +(int)
    + +IntentService
    + +INTERVAL_DAY +
    + +INTERVAL_FIFTEEN_MINUTES +
    + +INTERVAL_HALF_DAY +
    + +INTERVAL_HALF_HOUR +
    + +INTERVAL_HOUR +
    + +isAboveAnchor +()
    + +isBluetoothA2dpOn +()
    + +isClippingEnabled +()
    + +isDebuggingEnabled +()
    + +isDefault +
    + +isFastScrollEnabled +()
    + +isFillEnabled +()
    + +isHapticFeedbackEnabled +()
    + +isInEditMode +()
    + +isInputMethodTarget +()
    + +isLooping +()
    + +isModifier +
    + +isOutsideTouchable +()
    + +isPerformingCompletion +()
    + +isRepeatable +
    + +isRoaming +()
    + +isSafeMode
    +  type  +() in android.content.pm.PackageManager +
    + +  type  +() in android.test.mock.MockPackageManager +
    + +isScrollContainer +
    + +isSelectingMetaTracker +(CharSequence, Object)
    + +isSmoothScrollbarEnabled +()
    + +isSticky +
    + +isTouchable +()
    + + +java.beans
    + +JetPlayer
    + +JetPlayer.OnJetEventListener
    + + +
    K  +A +B +C +D +E +F +G +H +I +J +L +M +N +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +KEY_LOCATION_CHANGED +
    + +KEY_PROVIDER_ENABLED +
    + +KEY_STATUS_CHANGED +
    + +keyBackground +
    + +keyboardMode +
    + +keyboardView +
    + +KEYCODE_MEDIA_FAST_FORWARD +
    + +KEYCODE_MEDIA_NEXT +
    + +KEYCODE_MEDIA_PLAY_PAUSE +
    + +KEYCODE_MEDIA_PREVIOUS +
    + +KEYCODE_MEDIA_REWIND +
    + +KEYCODE_MEDIA_STOP +
    + +KEYCODE_MUTE +
    + +keyEdgeFlags +
    + +KeyEvent
    +  KeyEvent +(KeyEvent) constructor
    + +  KeyEvent +(long, String, int, int) constructor
    + +keyHeight +
    + +keyIcon +
    + +keyLabel +
    + +keyOutputText +
    + +keyPreviewHeight +
    + +keyPreviewLayout +
    + +keyPreviewOffset +
    + +keyTextColor +
    + +keyTextSize +
    + +keyWidth +
    + + +
    L  +A +B +C +D +E +F +G +H +I +J +K +M +N +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +labelTextSize +
    + +launchActivityWithIntent +(String, Class<T>, Intent)
    + +LauncherActivity.IconResizer
    + +LauncherActivity.ListItem
    + +LeadingMarginSpan.Standard +(Parcel) constructor
    + +LiveFolders
    + +load
    +  type  +(AssetFileDescriptor, int) in android.media.SoundPool +
    + +  type  +(FileDescriptor, long, long, int) in android.media.SoundPool +
    + +loadDex +(String, String, int)
    + +LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED +
    + +longClickView +(InstrumentationTestCase, View)
    + + +
    M  +A +B +C +D +E +F +G +H +I +J +K +L +N +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +makeListItems +()
    + +mayUseInputMethod +(int)
    + +MEDIA_CHECKING +
    + +MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK +
    + +MEDIA_INFO_BAD_INTERLEAVING +
    + +MEDIA_INFO_NOT_SEEKABLE +
    + +MEDIA_INFO_UNKNOWN +
    + +MEDIA_INFO_VIDEO_TRACK_LAGGING +
    + +MEDIA_NOFS +
    + +MEDIA_RECORDER_ERROR_UNKNOWN +
    + +MEDIA_RECORDER_INFO_MAX_DURATION_REACHED +
    + +MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED +
    + +MEDIA_RECORDER_INFO_UNKNOWN +
    + +MediaPlayer.OnInfoListener
    + +MediaPlayer.OnVideoSizeChangedListener
    + +MediaRecorder.OnErrorListener
    + +MediaRecorder.OnInfoListener
    + +MediaRecorder.VideoEncoder
    + +MediaRecorder.VideoSource
    + +MODE_APPEND +
    + +MOUNT_FORMAT_FILESYSTEMS +
    + +moveCursorToVisibleOffset +()
    + +mutate +()
    + +mVerticalAlignment +
    + + +
    N  +A +B +C +D +E +F +G +H +I +J +K +L +M +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +NeighboringCellInfo
    + +NoCopySpan
    + +NoCopySpan.Concrete
    + +noHistory +
    + +NUMBER_OF_SONGS_FOR_ARTIST +
    + + +
    O  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +P +Q +R +S +T +U +V +W +Y + TOP +

    +onBeginBatchEdit +()
    + +onCheckIsTextEditor +()
    + +onCommitCompletion +(CompletionInfo)
    + +onContentChanged +()
    + +onCreateInputConnection +(EditorInfo)
    + +onDoubleTap +(MotionEvent)
    + +onDoubleTapEvent +(MotionEvent)
    + +onEditorAction +(int)
    + +onEndBatchEdit +()
    + +onFinishTemporaryDetach +()
    + +onKeyOther
    +  type  +(TextView, Spannable, KeyEvent) in android.text.method.ArrowKeyMovementMethod +
    + +  type  +(View, Editable, KeyEvent) in android.text.method.BaseKeyListener +
    + +  type  +(View, Editable, KeyEvent) in android.text.method.KeyListener +
    + +  type  +(TextView, Spannable, KeyEvent) in android.text.method.MovementMethod +
    + +  type  +(TextView, Spannable, KeyEvent) in android.text.method.ScrollingMovementMethod +
    + +onKeyPreIme +(int, KeyEvent)
    + +onPrivateIMECommand +(String, Bundle)
    + +onSelectionChanged +(int, int)
    + +onSingleTapConfirmed +(MotionEvent)
    + +onStartTemporaryDetach +()
    + +onTextContextMenuItem +(int)
    + +onUserInteraction +()
    + +onUserLeaveHint +()
    + +openAssetFile +(Uri, String)
    + +openAssetFileDescriptor +(Uri, String)
    + +openOutputStream +(Uri, String)
    + +openRawResource +(int, TypedValue)
    + +OrientationEventListener
    + +OrientationListener +(Context, int) constructor
    + + +
    P  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +Q +R +S +T +U +V +W +Y + TOP +

    +ParcelableSpan
    + +parseBundleExtra +(String, AttributeSet, Bundle)
    + +parseBundleExtras +(XmlResourceParser, Bundle)
    + +paste +
    + +peekService +(Context, Intent)
    + +performHapticFeedback
    +  type  +(int) in android.view.View +
    + +  type  +(int, int) in android.view.View +
    + +PHONETIC_NAME
    + in  +android.provider.Contacts.Intents.Insert +
    + + in  +android.provider.Contacts.PeopleColumns +
    + +playSoundEffect +(int, float)
    + +PluginData
    + +popupCharacters +
    + +popupKeyboard +
    + +popupLayout +
    + +PrintStreamPrinter
    + +privateImeOptions +
    + +ProviderTestCase2
    + +putLong +(ContentResolver, String, long)
    + + +
    Q  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +R +S +T +U +V +W +Y + TOP +

    +QuoteSpan +(Parcel) constructor
    + + +
    R  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +S +T +U +V +W +Y + TOP +

    +R.bool
    + +R.integer
    + +RAW_AMR +
    + +readFromParcel +(Parcel)
    + +registerListener
    +  type  +(SensorEventListener, Sensor, int) in android.hardware.SensorManager +
    + +  type  +(SensorEventListener, Sensor, int, Handler) in android.hardware.SensorManager +
    + +RelativeSizeSpan +(Parcel) constructor
    + +remapCoordinateSystem +(float[], int, int, float[])
    + +RemoteViews.ActionException +(Exception) constructor
    + +removeAt +(int)
    + +removeGpsStatusListener +(Listener)
    + +removeOnScrollChangedListener +(OnScrollChangedListener)
    + +removePropertyChangeListener
    +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Packer +
    + +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Unpacker +
    + +  type  +(PropertyChangeListener) in java.util.logging.LogManager +
    + +removeTestProvider +(String)
    + +removeUpdates +(PendingIntent)
    + +replaceExtras
    +  type  +(Intent) in android.content.Intent +
    + +  type  +(Bundle) in android.content.Intent +
    + +reqFiveWayNav +
    + +reqHardKeyboard +
    + +reqKeyboardType +
    + +reqNavigation +
    + +reqTouchScreen +
    + +requestChildRectangleOnScreen +(View, Rect, boolean)
    + +requestLocationUpdates +(String, long, float, PendingIntent)
    + +resetLockedMeta +(long)
    + +ResourceCursorAdapter +(Context, int, Cursor, boolean) constructor
    + +restartPackage +(String)
    + +restorePicture +(Bundle, File)
    + +ResultReceiver
    + +ROUTE_BLUETOOTH_A2DP +
    + +ROUTE_BLUETOOTH_SCO +
    + +rowEdgeFlags +
    + +runTestOnUiThread +(Runnable)
    + + +
    S  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +T +U +V +W +Y + TOP +

    +savePicture +(Bundle, File)
    + +ScaleXSpan +(Parcel) constructor
    + +SCREEN_BRIGHTNESS_CHANGED +
    + +SCREEN_ORIENTATION_CHANGED +
    + +screenBrightness +
    + +screenOrientation +
    + +scrollToBottom +(InstrumentationTestCase, Activity, ViewGroup)
    + +scrollToTop +(InstrumentationTestCase, Activity, ViewGroup)
    + +SECONDARY_EMAIL +
    + +SECONDARY_EMAIL_TYPE +
    + +SECONDARY_PHONE +
    + +SECONDARY_PHONE_TYPE +
    + +SectionIndexer
    + +selectAll +
    + +sendExtraCommand +(String, String, Bundle)
    + +Sensor
    + +SensorEvent
    + +SensorEventListener
    + +setAllowFileAccess +(boolean)
    + +setBitmap +(int, String, Bitmap)
    + +setBluetoothA2dpOn +(boolean)
    + +setBoolean +(int, String, boolean)
    + +setBuiltInZoomControls +(boolean)
    + +setButton
    +  type  +(CharSequence, OnClickListener) in android.app.AlertDialog +
    + +  type  +(CharSequence, Message) in android.app.AlertDialog +
    + +setByte +(int, String, byte)
    + +setCamera +(Camera)
    + +setChar +(int, String, char)
    + +setCharSequence +(int, String, CharSequence)
    + +setClippingEnabled +(boolean)
    + +setCompoundDrawablesWithIntrinsicBounds +(int, int, int, int)
    + +setDouble +(int, String, double)
    + +setDropDownAnchor +(int)
    + +setDropDownWidth +(int)
    + +setExtractedText +(ExtractedText)
    + +setFastScrollEnabled +(boolean)
    + +setFillEnabled +(boolean)
    + +setFloat +(int, String, float)
    + +setFooterDividersEnabled +(boolean)
    + +setHapticFeedbackEnabled +(boolean)
    + +setHeaderDividersEnabled +(boolean)
    + +setImageViewBitmap +(int, Bitmap)
    + +setImeActionLabel +(CharSequence, int)
    + +setImeOptions +(int)
    + +setInexactRepeating +(int, long, long, PendingIntent)
    + +setInputExtras +(int)
    + +setInputMethodMode +(int)
    + +setInputType +(int)
    + +setInt +(int, String, int)
    + +setKeyProgressIncrement +(int)
    + +setListSelection +(int)
    + +setLong +(int, String, long)
    + +setMaxDuration +(int)
    + +setMaxFileSize +(long)
    + +setNetworkAvailable +(boolean)
    + +setOnChronometerTickListener +(OnChronometerTickListener)
    + +setOnClickPendingIntent +(int, PendingIntent)
    + +setOnDoubleTapListener +(OnDoubleTapListener)
    + +setOnEditorActionListener +(OnEditorActionListener)
    + +setOnErrorListener +(OnErrorListener)
    + +setOneShotPreviewCallback +(PreviewCallback)
    + +setOnInfoListener
    +  type  +(OnInfoListener) in android.media.MediaPlayer +
    + +  type  +(OnInfoListener) in android.media.MediaRecorder +
    + +setOnVideoSizeChangedListener +(OnVideoSizeChangedListener)
    + +setOutputFile +(FileDescriptor)
    + +setOutsideTouchable +(boolean)
    + +setPrivateImeOptions +(String)
    + +setRawInputType +(int)
    + +setScrollContainer +(boolean)
    + +setShort +(int, String, short)
    + +setSmoothScrollbarEnabled +(boolean)
    + +setSoftInputMode +(int)
    + +setStaticTransformationsEnabled +(boolean)
    + +setString +(int, String, String)
    + +setTestProviderEnabled +(String, boolean)
    + +setTestProviderLocation +(String, Location)
    + +setTestProviderStatus +(String, int, Bundle, long)
    + +setTextColor +(int, int)
    + +Settings.Secure
    + +settingsActivity +
    + +setTouchable +(boolean)
    + +setTouchInterceptor +(OnTouchListener)
    + +setUri +(int, String, Uri)
    + +setUserAgentString +(String)
    + +setVideoEncoder +(int)
    + +setVideoFrameRate +(int)
    + +setVideoSize +(int, int)
    + +setVideoSource +(int)
    + +setView +(View, int, int, int, int)
    + +setViewResource +(int)
    + +setVisible +(boolean)
    + +setWindowAnimations +(int)
    + +setWindowLayoutMode +(int, int)
    + +sharedUserId +
    + +sharedUserLabel
    + in  +android.R.attr +
    + + in  +android.content.pm.PackageInfo +
    + +SHOW_OR_CREATE_CONTACT +
    + +SlidingDrawer
    + +SlidingDrawer.OnDrawerCloseListener
    + +SlidingDrawer.OnDrawerOpenListener
    + +SlidingDrawer.OnDrawerScrollListener
    + +smoothScrollbar +
    + +SOFT_INPUT_ADJUST_PAN +
    + +SOFT_INPUT_ADJUST_RESIZE +
    + +SOFT_INPUT_ADJUST_UNSPECIFIED +
    + +SOFT_INPUT_IS_FORWARD_NAVIGATION +
    + +SOFT_INPUT_MASK_ADJUST +
    + +SOFT_INPUT_MASK_STATE +
    + +SOFT_INPUT_MODE_CHANGED +
    + +SOFT_INPUT_STATE_ALWAYS_HIDDEN +
    + +SOFT_INPUT_STATE_ALWAYS_VISIBLE +
    + +SOFT_INPUT_STATE_HIDDEN +
    + +SOFT_INPUT_STATE_UNCHANGED +
    + +SOFT_INPUT_STATE_UNSPECIFIED +
    + +SOFT_INPUT_STATE_VISIBLE +
    + +softInputMode
    + in  +android.content.pm.ActivityInfo +
    + + in  +android.view.WindowManager.LayoutParams +
    + +sort +(Comparator<? super T>)
    + +SPAN_COMPOSING +
    + +SPAN_INTERMEDIATE +
    + +SPAN_POINT_MARK_MASK +
    + +startSelectingText +
    + +state_long_pressable +
    + +stopSelectingText +
    + +STREAM_NOTIFICATION +
    + +STRETCH_SPACING_UNIFORM +
    + +StrikethroughSpan +(Parcel) constructor
    + +StyleSpan +(Parcel) constructor
    + +SubscriptSpan +(Parcel) constructor
    + +SuperscriptSpan +(Parcel) constructor
    + +switchInputMethod +
    + + +
    T  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +U +V +W +Y + TOP +

    +TERTIARY_EMAIL +
    + +TERTIARY_EMAIL_TYPE +
    + +TERTIARY_PHONE +
    + +TERTIARY_PHONE_TYPE +
    + +TestMethod
    +  TestMethod +(String, Class<TestCase>) constructor
    + +  TestMethod +(TestCase) constructor
    + +TextAppearanceSpan +(Parcel) constructor
    + +TextView.OnEditorActionListener
    + +Theme_InputMethod +
    + +Theme_Light_Panel +
    + +Theme_NoDisplay +
    + +Theme_Panel +
    + +thickness +
    + +title_bar_tall +
    + +topOffset +
    + +toShortString
    +  type  +() in android.graphics.Rect +
    + +  type  +() in android.view.animation.Transformation +
    + +TransitionDrawable +(Drawable[]) constructor
    + +TYPE_APPLICATION_ATTACHED_DIALOG +
    + +TYPE_INPUT_METHOD +
    + +TYPE_INPUT_METHOD_DIALOG +
    + +TypefaceSpan +(Parcel) constructor
    + + +
    U  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +V +W +Y + TOP +

    +UnderlineSpan +(Parcel) constructor
    + +UNKNOWN_LENGTH +
    + +unregisterListener
    +  type  +(SensorEventListener) in android.hardware.SensorManager +
    + +  type  +(SensorEventListener, Sensor) in android.hardware.SensorManager +
    + +update
    +  type  +() in android.widget.PopupWindow +
    + +  type  +(int, int, int, int, boolean) in android.widget.PopupWindow +
    + +UPDATE_DEVICE_STATS +
    + +UpdateAppearance
    + +updatePeriodMillis +
    + +URLSpan +(Parcel) constructor
    + +UserDictionary
    + +UserDictionary.Words
    + + +
    V  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +W +Y + TOP +

    +verticalCorrection +
    + +verticalGap +
    + +VideoView_error_text_invalid_progressive_playback +
    + +ViewDebug.CapturedViewProperty
    + +ViewTreeObserver.OnScrollChangedListener
    + +Visibility
    + +voiceLanguage +
    + +voiceLanguageModel +
    + +voiceMaxResults +
    + +voicePromptText +
    + +voiceSearchMode +
    + +VOLUME_NOTIFICATION +
    + + +
    W  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +Y + TOP +

    +Widget_KeyboardView +
    + +WIFI_MAX_DHCP_RETRY_COUNT +
    + +WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS +
    + +WIFI_MODE_FULL +
    + +WIFI_MODE_SCAN_ONLY +
    + +WIFI_SLEEP_POLICY +
    + +WIFI_SLEEP_POLICY_DEFAULT +
    + +WIFI_SLEEP_POLICY_NEVER +
    + +WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED +
    + +windowDisablePreview +
    + +windowNoDisplay +
    + +windowSoftInputMode +
    + +WRITE_SECURE_SETTINGS +
    + +writeToParcel
    +  type  +(Parcel, int) in android.content.res.AssetFileDescriptor +
    + +  type  +(Parcel, int) in android.graphics.RectF +
    + +  type  +(Parcel, int) in android.text.Annotation +
    + +  type  +(Parcel, int) in android.text.style.AbsoluteSizeSpan +
    + +  type  +(Parcel, int) in android.text.style.AlignmentSpan.Standard +
    + +  type  +(Parcel, int) in android.text.style.BackgroundColorSpan +
    + +  type  +(Parcel, int) in android.text.style.BulletSpan +
    + +  type  +(Parcel, int) in android.text.style.ForegroundColorSpan +
    + +  type  +(Parcel, int) in android.text.style.LeadingMarginSpan.Standard +
    + +  type  +(Parcel, int) in android.text.style.QuoteSpan +
    + +  type  +(Parcel, int) in android.text.style.RelativeSizeSpan +
    + +  type  +(Parcel, int) in android.text.style.ScaleXSpan +
    + +  type  +(Parcel, int) in android.text.style.StrikethroughSpan +
    + +  type  +(Parcel, int) in android.text.style.StyleSpan +
    + +  type  +(Parcel, int) in android.text.style.SubscriptSpan +
    + +  type  +(Parcel, int) in android.text.style.SuperscriptSpan +
    + +  type  +(Parcel, int) in android.text.style.TextAppearanceSpan +
    + +  type  +(Parcel, int) in android.text.style.TypefaceSpan +
    + +  type  +(Parcel, int) in android.text.style.URLSpan +
    + +  type  +(Parcel, int) in android.text.style.UnderlineSpan +
    + + +
    Y  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W + TOP +

    +yieldIfContendedSafely +()
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/alldiffs_index_all.html b/docs/html/sdk/api_diff/3/changes/alldiffs_index_all.html new file mode 100644 index 000000000000..48da98bb8776 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/alldiffs_index_all.html @@ -0,0 +1,4178 @@ + + + + + + + + + +All Differences Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Differences +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + + +
    A  +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +AbsListView
    + +AbsoluteLayout
    + +AbsoluteSizeSpan
    +  android.text.style
    + +  AbsoluteSizeSpan +(Parcel) constructor
    + +AbsSeekBar
    + +ACCELEROMETER_ROTATION +
    + +ACTION_AIRPLANE_MODE_SETTINGS +
    + +ACTION_APPLICATION_DEVELOPMENT_SETTINGS +
    + +ACTION_AUDIO_BECOMING_NOISY +
    + +ACTION_BACKGROUND_DATA_SETTING_CHANGED +
    + +ACTION_DATA_ROAMING_SETTINGS +
    + +ACTION_IMAGE_CAPTURE +
    + +ACTION_INPUT_METHOD_CHANGED +
    + +ACTION_INPUT_METHOD_SETTINGS +
    + +ACTION_INTERNAL_STORAGE_SETTINGS +
    + +ACTION_MANAGE_APPLICATIONS_SETTINGS +
    + +ACTION_MEDIA_CHECKING +
    + +ACTION_MEDIA_NOFS +
    + +ACTION_MEMORY_CARD_SETTINGS +
    + +ACTION_NETWORK_OPERATOR_SETTINGS +
    + +ACTION_OUTSIDE +
    + +ACTION_PACKAGE_DATA_CLEARED +
    + +ACTION_PACKAGE_REPLACED +
    + +ACTION_PHONE_STATE_CHANGED +
    + +ACTION_QUICK_LAUNCH_SETTINGS +
    + +ACTION_SEARCH_LONG_PRESS +
    + +ACTION_SYNC_SETTINGS +
    + +ACTION_SYSTEM_TUTORIAL +
    + +ACTION_USER_DICTIONARY_SETTINGS +
    + +ACTION_USER_PRESENT +
    + +ACTION_VIDEO_CAPTURE +
    + +ACTION_WIFI_IP_SETTINGS +
    + +Activity
    + +ActivityInfo
    + +ActivityInstrumentationTestCase
    + +ActivityInstrumentationTestCase2
    + +ActivityManager
    + +ActivityManager.RunningAppProcessInfo
    + +ADB_ENABLED +
    + +addGpsStatusListener +(Listener)
    + +addOnScrollChangedListener +(OnScrollChangedListener)
    + +addPropertyChangeListener
    +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Packer +
    + +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Unpacker +
    + +  type  +(PropertyChangeListener) in java.util.logging.LogManager +
    + +addRequirements +(Predicate<TestMethod>)
    + +addTestProvider +(String, boolean, boolean, boolean, boolean, boolean, boolean, boolean, int, int)
    + +addToDictionary +
    + +adjustMetaAfterKeypress +(long)
    + +AlarmManager
    + +AlertDialog
    + +ALIGN_BASELINE +
    + +ALIGN_BOTTOM +
    + +AlignmentSpan.Standard
    +  android.text.style
    + +  AlignmentSpan.Standard +(Parcel) constructor
    + +allowSingleTap +
    + +AlphabetIndexer
    + +android
    + +android.app
    + +android.appwidget
    + +android.content
    + +android.content.pm
    + +android.content.res
    + +android.database
    + +android.database.sqlite
    + +android.graphics
    + +android.graphics.drawable
    + +android.graphics.drawable.shapes
    + +android.hardware
    + +android.inputmethodservice
    + +android.location
    + +android.media
    + +android.net
    + +android.net.wifi
    + +android.opengl
    + +android.os
    + +android.preference
    + +android.provider
    + +android.speech
    + +android.telephony
    + +android.telephony.gsm
    + +android.test
    + +android.test.mock
    + +android.test.suitebuilder
    + +android.text
    + +android.text.format
    + +android.text.method
    + +android.text.style
    + +android.util
    + +android.view
    + +android.view.animation
    + +android.view.inputmethod
    + +android.webkit
    + +android.widget
    + +ANDROID_ID +
    + +animateOnClick +
    + +Animation
    + +Annotation
    +  android.text
    + +  Annotation +(Parcel) constructor
    + +appendEscapedSQLString +(StringBuilder, String)
    + +applyDisplay +(int, Rect, Rect)
    + +ArrayAdapter
    + +ArrowKeyMovementMethod
    + +AssetFileDescriptor
    + +AssetFileDescriptor.AutoCloseInputStream
    + +AssetFileDescriptor.AutoCloseOutputStream
    + +AsyncTask
    + +AsyncTask.Status
    + +AudioFormat
    + +AudioManager
    + +AudioRecord
    + +AudioRecord.OnRecordPositionUpdateListener
    + +AudioTrack
    + +AudioTrack.OnPlaybackPositionUpdateListener
    + +AutoCompleteTextView
    + +AutoText
    + +autoText +
    + +AXIS_CLIP +
    + +AXIS_MINUS_X +
    + +AXIS_MINUS_Y +
    + +AXIS_MINUS_Z +
    + +AXIS_X +
    + +AXIS_Y +
    + +AXIS_Z +
    + + +
    B  +A +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +BackgroundColorSpan
    +  android.text.style
    + +  BackgroundColorSpan +(Parcel) constructor
    + +backgroundDimEnabled +
    + +BaseKeyListener
    + +beginBatchEdit +()
    + +BIND_APPWIDGET +
    + +BIND_INPUT_METHOD +
    + +Binder
    + +Bitmap
    + +BLUETOOTH_ON +
    + +BOOKMARK +
    + +bottomOffset +
    + +bringPointIntoView +(int)
    + +BroadcastReceiver
    + +Browser
    + +BUCKET_DISPLAY_NAME +
    + +BUCKET_ID +
    + +Build
    + +BulletSpan
    +  android.text.style
    + +  BulletSpan +(Parcel) constructor
    + +BUTTON1 +
    + +BUTTON2 +
    + +BUTTON3 +
    + +BUTTON_NEGATIVE +
    + +BUTTON_NEUTRAL +
    + +BUTTON_POSITIVE +
    + + +
    C  +A +B +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +calculateLength +(CharSequence, boolean)
    + +callActivityOnUserLeaving +(Activity)
    + +Camera
    + +candidatesArea +
    + +candidatesTextStyleSpans +
    + +Canvas
    + +CAP_MODE_CHARACTERS +
    + +CAP_MODE_SENTENCES +
    + +CAP_MODE_WORDS +
    + +capitalize +
    + +CATEGORY_GADGET +
    + +CATEGORY_INFO +
    + +changeAction +(KeyEvent, int)
    + +changeCursorAndColumns +(Cursor, String[], int[])
    + +changeDebugPort +(int)
    + +changeFlags +(KeyEvent, int)
    + +changeTimeRepeat +(KeyEvent, long, int)
    + +Character.UnicodeBlock
    + +checkInputConnectionProxy +(View)
    + +Chronometer
    + +Chronometer.OnChronometerTickListener
    + +Class
    + +clearComposingText +()
    + +clearListSelection +()
    + +clearMatches +()
    + +clearMetaKeyState
    +  type  +(View, Editable, int) in android.text.method.KeyListener +
    + +  type  +(long, int) in android.text.method.MetaKeyKeyListener +
    + +  type  +(View, Editable, int) in android.text.method.MetaKeyKeyListener +
    + +  type  +(Editable, int) in android.text.method.MetaKeyKeyListener +
    + +clearTestProviderEnabled +(String)
    + +clearTestProviderLocation +(String)
    + +clearTestProviderStatus +(String)
    + +ClickableSpan
    + +CLIP_HORIZONTAL +
    + +CLIP_VERTICAL +
    + +clone +()
    + +close +()
    + +closeButton +
    + +closeContextMenu +()
    + +codes +
    + +computeDurationHint +()
    + +configPreferences +
    + +Configuration
    + +ConfigurationInfo
    + +configure +
    + +ConnectivityManager
    + +Contacts.Intents
    + +Contacts.Intents.Insert
    + +Contacts.PeopleColumns
    + +content +
    + +ContentProvider
    + +ContentResolver
    + +Context
    + +copy +
    + +copyPixelsFromBuffer +(Buffer)
    + +copyUrl +
    + +createInputStream +()
    + +createOutputStream +()
    + +createWifiLock +(int, String)
    + +CREATOR
    + in  +android.content.res.AssetFileDescriptor +
    + + in  +android.graphics.RectF +
    + +Cursor
    + +CursorAdapter
    + +CursorWrapper
    + +cut +
    + + +dalvik.system
    + +dark_header +
    + +DATA_ROAMING +
    + +DATA_X +
    + +DATA_Y +
    + +DATA_Z +
    + +DatabaseUtils
    + +Date
    +  java.util
    + +  Date +() constructor
    + +  Date +(int, int, int, int, int, int) constructor
    + +DateKeyListener
    + +DateTimeKeyListener
    + +Debug
    + +DEBUG_ENABLE_ASSERT +
    + +DEBUG_ENABLE_CHECKJNI +
    + +DEBUG_ENABLE_DEBUGGER +
    + +DEFAULT_SORT_ORDER
    + in  +android.provider.MediaStore.Images.Media +
    + + in  +android.provider.MediaStore.Video +
    + +describeContents
    +  type  +() in android.content.res.AssetFileDescriptor +
    + +  type  +() in android.graphics.RectF +
    + +  type  +() in android.text.Annotation +
    + +  type  +() in android.text.style.AbsoluteSizeSpan +
    + +  type  +() in android.text.style.AlignmentSpan.Standard +
    + +  type  +() in android.text.style.BackgroundColorSpan +
    + +  type  +() in android.text.style.BulletSpan +
    + +  type  +() in android.text.style.ForegroundColorSpan +
    + +  type  +() in android.text.style.LeadingMarginSpan.Standard +
    + +  type  +() in android.text.style.QuoteSpan +
    + +  type  +() in android.text.style.RelativeSizeSpan +
    + +  type  +() in android.text.style.ScaleXSpan +
    + +  type  +() in android.text.style.StrikethroughSpan +
    + +  type  +() in android.text.style.StyleSpan +
    + +  type  +() in android.text.style.SubscriptSpan +
    + +  type  +() in android.text.style.SuperscriptSpan +
    + +  type  +() in android.text.style.TextAppearanceSpan +
    + +  type  +() in android.text.style.TypefaceSpan +
    + +  type  +() in android.text.style.URLSpan +
    + +  type  +() in android.text.style.UnderlineSpan +
    + +DEVICE_PROVISIONED +
    + +deviceHasKey +(int)
    + +deviceHasKeys +(int[])
    + +DexClassLoader
    + +DexFile
    + +DialerKeyListener
    + +dialog_alert_title +
    + +DialogInterface
    + +DialogPreference
    + +didTouchFocusSelect +()
    + +DigitsKeyListener
    + +dispatchKeyEventPreIme +(KeyEvent)
    + +DISPLAY +
    + +DISPLAY_CLIP_HORIZONTAL +
    + +DISPLAY_CLIP_VERTICAL +
    + +drag
    +  type  +(InstrumentationTestCase, float, float, float, float, int) in android.test.TouchUtils +
    + +  type  +(ActivityInstrumentationTestCase, float, float, float, float, int) in android.test.TouchUtils +
    + +dragQuarterScreenDown
    +  type  +(InstrumentationTestCase, Activity) in android.test.TouchUtils +
    + +  type  +(ActivityInstrumentationTestCase) in android.test.TouchUtils +
    + +dragQuarterScreenUp
    +  type  +(InstrumentationTestCase, Activity) in android.test.TouchUtils +
    + +  type  +(ActivityInstrumentationTestCase) in android.test.TouchUtils +
    + +dragViewBy
    +  type  +(InstrumentationTestCase, View, int, int, int) in android.test.TouchUtils +
    + +  type  +(ActivityInstrumentationTestCase, View, int, int, int) in android.test.TouchUtils +
    + +dragViewTo
    +  type  +(InstrumentationTestCase, View, int, int, int) in android.test.TouchUtils +
    + +  type  +(ActivityInstrumentationTestCase, View, int, int, int) in android.test.TouchUtils +
    + +dragViewToBottom
    +  type  +(ActivityInstrumentationTestCase, View, int) in android.test.TouchUtils +
    + +  type  +(InstrumentationTestCase, Activity, View, int) in android.test.TouchUtils +
    + +  type  +(ActivityInstrumentationTestCase, View) in android.test.TouchUtils +
    + +  type  +(InstrumentationTestCase, Activity, View) in android.test.TouchUtils +
    + +dragViewToTop
    +  type  +(InstrumentationTestCase, View) in android.test.TouchUtils +
    + +  type  +(InstrumentationTestCase, View, int) in android.test.TouchUtils +
    + +  type  +(ActivityInstrumentationTestCase, View) in android.test.TouchUtils +
    + +  type  +(ActivityInstrumentationTestCase, View, int) in android.test.TouchUtils +
    + +dragViewToX
    +  type  +(InstrumentationTestCase, View, int, int) in android.test.TouchUtils +
    + +  type  +(ActivityInstrumentationTestCase, View, int, int) in android.test.TouchUtils +
    + +dragViewToY
    +  type  +(InstrumentationTestCase, View, int, int) in android.test.TouchUtils +
    + +  type  +(ActivityInstrumentationTestCase, View, int, int) in android.test.TouchUtils +
    + +Drawable
    + +drawBitmap +(int[], int, int, float, float, int, int, boolean, Paint)
    + +dropDownAnchor +
    + +dropDownWidth +
    + +dump
    +  type  +(Printer, String) in android.location.Location +
    + +  type  +(FileDescriptor, String[]) in android.os.Binder +
    + +  type  +(FileDescriptor, String[]) in android.os.IBinder +
    + +dumpCapturedView +(String, Object)
    + +dumpHprofData
    +  type  +(String) in android.os.Debug +
    + +  type  +(String) in dalvik.system.VMDebug +
    + +dumpSpans +(CharSequence, Printer, String)
    + +DynamicDrawableSpan
    +  android.text.style
    + +  DynamicDrawableSpan +(int) constructor
    + + +
    E  +A +B +C +D +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +editable +
    + +editorExtras +
    + +enabled +
    + +endBatchEdit +()
    + +Environment
    + +EXTRA_APPLICATION_ID +
    + +EXTRA_CREATE_DESCRIPTION +
    + +EXTRA_DATA_REMOVED +
    + +EXTRA_FINISH_ON_COMPLETION +
    + +EXTRA_FORCE_CREATE +
    + +EXTRA_INCOMING_NUMBER +
    + +EXTRA_MAX_BYTES +
    + +EXTRA_MEDIA_ALBUM +
    + +EXTRA_MEDIA_ARTIST +
    + +EXTRA_MEDIA_FOCUS +
    + +EXTRA_MEDIA_TITLE +
    + +EXTRA_OUTPUT +
    + +EXTRA_REPLACING +
    + +EXTRA_SCREEN_ORIENTATION +
    + +EXTRA_STATE +
    + +EXTRA_STATE_IDLE +
    + +EXTRA_STATE_OFFHOOK +
    + +EXTRA_STATE_RINGING +
    + +EXTRA_VIDEO_QUALITY +
    + +extractArea +
    + +extractText +(ExtractedTextRequest, ExtractedText)
    + + +
    F  +A +B +C +D +E +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +fastScrollEnabled +
    + +fillEnabled +
    + +findAll +(String)
    + +findNext +(boolean)
    + +FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET +
    + +FLAG_ACTIVITY_NO_USER_ACTION +
    + +FLAG_ACTIVITY_REORDER_TO_FRONT +
    + +FLAG_ALT_FOCUSABLE_IM +
    + +FLAG_EDITOR_ACTION +
    + +FLAG_FROM_SYSTEM +
    + +FLAG_KEEP_TOUCH_MODE +
    + +FLAG_NO_HISTORY +
    + +FLAG_SOFT_KEYBOARD +
    + +FLAG_UPDATE_CURRENT +
    + +FLAG_WATCH_OUTSIDE_TOUCH +
    + +footerDividersEnabled +
    + +ForegroundColorSpan
    +  android.text.style
    + +  ForegroundColorSpan +(Parcel) constructor
    + +forkAndSpecialize
    +  type  +(int, int, int[], int, int[][]) in dalvik.system.Zygote +
    + +  type  +(int, int, int[], boolean, int[][]) in dalvik.system.Zygote +
    + +forkSystemServer
    +  type  +(int, int, int[], int, int[][]) in dalvik.system.Zygote +
    + +  type  +(int, int, int[], boolean, int[][]) in dalvik.system.Zygote +
    + +FORMAT_JAPAN +
    + +formatJapaneseNumber +(Editable)
    + +forName +(String)
    + +FX_KEYPRESS_DELETE +
    + +FX_KEYPRESS_RETURN +
    + +FX_KEYPRESS_SPACEBAR +
    + +FX_KEYPRESS_STANDARD +
    + + +
    G  +A +B +C +D +E +F +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +GeomagneticField
    + +GestureDetector
    +  android.view
    + +  GestureDetector +(Context, OnGestureListener) constructor
    + +  GestureDetector +(Context, OnGestureListener, Handler) constructor
    + +  GestureDetector +(OnGestureListener) constructor
    + +  GestureDetector +(OnGestureListener, Handler) constructor
    + +GestureDetector.OnDoubleTapListener
    + +GestureDetector.SimpleOnGestureListener
    + +get +(Context)
    + +GET_CONFIGURATIONS +
    + +GET_UNINSTALLED_PACKAGES +
    + +getAllowFileAccess +()
    + +getBackgroundDataSetting +()
    + +getBoolean +(int)
    + +getBuiltInZoomControls +()
    + +getButton +(int)
    + +getCapsMode +(CharSequence, int, int)
    + +getCharacters +()
    + +getClasses +()
    + +getColumnIndex
    +  type  +(String) in android.database.Cursor +
    + +  type  +(String) in android.database.CursorWrapper +
    + +getConstructors +()
    + +getCount +()
    + +getDeclaredClasses +()
    + +getDeclaredConstructors +()
    + +getDeclaredLength +()
    + +getDefaultSensor +(int)
    + +getDeviceConfigurationInfo +()
    + +getDialog +()
    + +getDoubleTapTimeout +()
    + +getDrawable
    +  type  +() in android.graphics.drawable.RotateDrawable +
    + +  type  +() in android.graphics.drawable.ScaleDrawable +
    + +getDropDownAnchor +()
    + +getDropDownWidth +()
    + +getEdgeSlop +()
    + +getEditableText +()
    + +getFadingEdgeLength +()
    + +getFraction +(int, int, int)
    + +getGpsStatus +(GpsStatus)
    + +getHandler +()
    + +getImeActionId +()
    + +getImeActionLabel +()
    + +getImeOptions +()
    + +getInclination +(float[])
    + +getInitialScrollX +(TextView, Spannable)
    + +getInitialScrollY +(TextView, Spannable)
    + +getInputExtras +(boolean)
    + +getInputMethodMode +()
    + +getInputType
    +  type  +() in android.text.method.DateKeyListener +
    + +  type  +() in android.text.method.DateTimeKeyListener +
    + +  type  +() in android.text.method.DialerKeyListener +
    + +  type  +() in android.text.method.DigitsKeyListener +
    + +  type  +() in android.text.method.KeyListener +
    + +  type  +() in android.text.method.MultiTapKeyListener +
    + +  type  +() in android.text.method.QwertyKeyListener +
    + +  type  +() in android.text.method.TextKeyListener +
    + +  type  +() in android.text.method.TimeKeyListener +
    + +  type  +() in android.widget.TextView +
    + +getInterfaces +()
    + +getItem
    +  type  +(int) in android.view.Menu +
    + +  type  +(int) in android.widget.CursorAdapter +
    + +getItemClickListener +()
    + +getItemId +(int)
    + +getItemSelectedListener +()
    + +getKeyProgressIncrement +()
    + +getLaunchIntentForPackage
    +  type  +(String) in android.content.pm.PackageManager +
    + +  type  +(String) in android.test.mock.MockPackageManager +
    + +getLayoutDimension +(int, int)
    + +getListSelection +()
    + +getListView +()
    + +getLoggingMXBean +()
    + +getLong
    +  type  +(ContentResolver, String) in android.provider.Settings.System +
    + +  type  +(ContentResolver, String, long) in android.provider.Settings.System +
    + +getMaxAvailableHeight +(View, int)
    + +getMaximumDrawingCacheSize +()
    + +getMaxKeyCode +()
    + +getMetaState
    +  type  +(long) in android.text.method.MetaKeyKeyListener +
    + +  type  +(long, int) in android.text.method.MetaKeyKeyListener +
    + +getMinimumFlingVelocity +()
    + +getNeighboringCellInfo +()
    + +getOnChronometerTickListener +()
    + +getOnItemClickListener +()
    + +getOnItemSelectedListener +()
    + +getOrientation +(float[], float[])
    + +getOriginalUrl
    +  type  +() in android.webkit.WebHistoryItem +
    + +  type  +() in android.webkit.WebView +
    + +getPluginData
    +  type  +(String, Map<String, String>) in android.webkit.UrlInterceptHandler +
    + +  type  +(String, Map<String, String>) in android.webkit.UrlInterceptRegistry +
    + +getPrivateImeOptions +()
    + +getProxyClass +(ClassLoader, Class<?>)
    + +getRotationMatrix +(float[], float[], float[], float[])
    + +getRunningAppProcesses +()
    + +getScaledDoubleTapSlop +()
    + +getScaledEdgeSlop +()
    + +getScaledFadingEdgeLength +()
    + +getScaledMaximumDrawingCacheSize +()
    + +getScaledMinimumFlingVelocity +()
    + +getScaledScrollBarSize +()
    + +getScaledTouchSlop +()
    + +getScaledWindowTouchSlop +()
    + +getScrollBarSize +()
    + +getSensorList +(int)
    + +getSensors +()
    + +getSize +(View)
    + +getSpanTypeId
    +  type  +() in android.text.Annotation +
    + +  type  +() in android.text.style.AbsoluteSizeSpan +
    + +  type  +() in android.text.style.AlignmentSpan.Standard +
    + +  type  +() in android.text.style.BackgroundColorSpan +
    + +  type  +() in android.text.style.BulletSpan +
    + +  type  +() in android.text.style.ForegroundColorSpan +
    + +  type  +() in android.text.style.LeadingMarginSpan.Standard +
    + +  type  +() in android.text.style.QuoteSpan +
    + +  type  +() in android.text.style.RelativeSizeSpan +
    + +  type  +() in android.text.style.ScaleXSpan +
    + +  type  +() in android.text.style.StrikethroughSpan +
    + +  type  +() in android.text.style.StyleSpan +
    + +  type  +() in android.text.style.SubscriptSpan +
    + +  type  +() in android.text.style.SuperscriptSpan +
    + +  type  +() in android.text.style.TextAppearanceSpan +
    + +  type  +() in android.text.style.TypefaceSpan +
    + +  type  +() in android.text.style.URLSpan +
    + +  type  +() in android.text.style.UnderlineSpan +
    + +getStartX +()
    + +getStartY +()
    + +getStatSize +()
    + +getSubtype +()
    + +getSubtypeName +()
    + +getSurrogate +(String, Map<String, String>)
    + +getSystemSharedLibraryNames
    +  type  +() in android.content.pm.PackageManager +
    + +  type  +() in android.test.mock.MockPackageManager +
    + +getTargetIntent +()
    + +getTextFilter +()
    + +getThread +()
    + +getTimeZoneDatabaseVersion +()
    + +getTouchSlop +()
    + +getUserAgent +()
    + +getUserAgentString +()
    + +getVerticalAlignment +()
    + +getWindowTouchSlop +()
    + +getWindowVisibleDisplayFrame +(Rect)
    + +getZoomControls +()
    + +GLSurfaceView
    + +GLSurfaceView.EGLConfigChooser
    + +GLSurfaceView.GLWrapper
    + +GLSurfaceView.Renderer
    + +GpsSatellite
    + +GpsStatus
    + +GpsStatus.Listener
    + +Gravity
    + +GridView
    + + +
    H  +A +B +C +D +E +F +G +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +handle +
    + +handleKeyDown +(long, int, KeyEvent)
    + +handleKeyUp +(long, int, KeyEvent)
    + +Handler
    +  android.os
    + +  Handler +(Callback) constructor
    + +  Handler +(Looper, Callback) constructor
    + +Handler.Callback
    + +HAPTIC_FEEDBACK_ENABLED
    + in  +android.provider.Settings.System +
    + + in  +android.view.View +
    + +HapticFeedbackConstants
    + +hapticFeedbackEnabled +
    + +hardKeyboardHidden +
    + +HARDKEYBOARDHIDDEN_NO +
    + +HARDKEYBOARDHIDDEN_UNDEFINED +
    + +HARDKEYBOARDHIDDEN_YES +
    + +hasSoftInputMode +()
    + +hasWindowFocus +()
    + +headerDividersEnabled +
    + +horizontalGap +
    + +HorizontalScrollView
    + +HTTP_PROXY +
    + + +
    I  +A +B +C +D +E +F +G +H +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +IBinder
    + +ic_btn_speak_now +
    + +iconPreview +
    + +ImageSpan
    +  android.text.style
    + +  ImageSpan +(Context, Uri, int) constructor
    + +  ImageSpan +(Context, int, int) constructor
    + +  ImageSpan +(Bitmap, int) constructor
    + +  ImageSpan +(Drawable, int) constructor
    + +  ImageSpan +(Drawable, String, int) constructor
    + +imeActionId +
    + +imeActionLabel +
    + +imeExtractEnterAnimation +
    + +imeExtractExitAnimation +
    + +imeFullscreenBackground +
    + +imeOptions +
    + +inferStreamType +()
    + +initialLayout +
    + +innerRadius +
    + +INPUT_METHOD_FROM_FOCUSABLE +
    + +INPUT_METHOD_NEEDED +
    + +INPUT_METHOD_NOT_NEEDED +
    + +INPUT_METHOD_SERVICE +
    + +inputArea +
    + +inputExtractEditText +
    + +inputMethod +
    + +InputType
    + +inputType +
    + +INSTALL_FAILED_CONFLICTING_PROVIDER +
    + +INSTALL_NON_MARKET_APPS +
    + +Instrumentation
    + +InstrumentationTestCase
    + +Intent
    + +INTENT_ACTION_MEDIA_SEARCH +
    + +INTENT_ACTION_STILL_IMAGE_CAMERA +
    + +INTENT_ACTION_VIDEO_CAMERA +
    + +intentForPosition +(int)
    + +IntentService
    + +INTERVAL_DAY +
    + +INTERVAL_FIFTEEN_MINUTES +
    + +INTERVAL_HALF_DAY +
    + +INTERVAL_HALF_HOUR +
    + +INTERVAL_HOUR +
    + +isAboveAnchor +()
    + +isBluetoothA2dpOn +()
    + +isClippingEnabled +()
    + +isCookielessProxyUrl +(String)
    + +isDebuggingEnabled +()
    + +isDefault +
    + +isFastScrollEnabled +()
    + +isFillEnabled +()
    + +isHapticFeedbackEnabled +()
    + +isInEditMode +()
    + +isInputMethodTarget +()
    + +isLooping +()
    + +isModifier +
    + +isOutsideTouchable +()
    + +isPerformingCompletion +()
    + +isRepeatable +
    + +isRoaming +()
    + +isSafeMode
    +  type  +() in android.content.pm.PackageManager +
    + +  type  +() in android.test.mock.MockPackageManager +
    + +isScrollContainer +
    + +isSelectingMetaTracker +(CharSequence, Object)
    + +isSmoothScrollbarEnabled +()
    + +isSticky +
    + +isTouchable +()
    + + +java.beans
    + +java.lang
    + +java.lang.reflect
    + +java.net
    + +java.util
    + +java.util.jar
    + +java.util.logging
    + +JetPlayer
    + +JetPlayer.OnJetEventListener
    + + +
    K  +A +B +C +D +E +F +G +H +I +J +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +KEY_LOCATION_CHANGED +
    + +KEY_PROVIDER_ENABLED +
    + +KEY_STATUS_CHANGED +
    + +keyBackground +
    + +keyboardMode +
    + +keyboardView +
    + +KeyCharacterMap
    + +KEYCODE_MEDIA_FAST_FORWARD +
    + +KEYCODE_MEDIA_NEXT +
    + +KEYCODE_MEDIA_PLAY_PAUSE +
    + +KEYCODE_MEDIA_PREVIOUS +
    + +KEYCODE_MEDIA_REWIND +
    + +KEYCODE_MEDIA_STOP +
    + +KEYCODE_MUTE +
    + +keyEdgeFlags +
    + +KeyEvent
    +  android.view
    + +  KeyEvent +(KeyEvent) constructor
    + +  KeyEvent +(long, String, int, int) constructor
    + +keyHeight +
    + +keyIcon +
    + +keyLabel +
    + +KeyListener
    + +keyOutputText +
    + +keyPreviewHeight +
    + +keyPreviewLayout +
    + +keyPreviewOffset +
    + +keyTextColor +
    + +keyTextSize +
    + +keyWidth +
    + + +
    L  +A +B +C +D +E +F +G +H +I +J +K +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +labelTextSize +
    + +launchActivityWithIntent +(String, Class<T>, Intent)
    + +LauncherActivity
    + +LauncherActivity.IconResizer
    + +LauncherActivity.ListItem
    + +LeadingMarginSpan.Standard
    +  android.text.style
    + +  LeadingMarginSpan.Standard +(Parcel) constructor
    + +Level
    + +LIGHT_NO_MOON +
    + +ListView
    + +LiveFolders
    + +load
    +  type  +(AssetFileDescriptor, int) in android.media.SoundPool +
    + +  type  +(FileDescriptor, long, long, int) in android.media.SoundPool +
    + +loadDex +(String, String, int)
    + +Location
    + +LOCATION_PROVIDERS_ALLOWED +
    + +LocationManager
    + +LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED +
    + +LOGGING_ID +
    + +LogManager
    + +longClickView
    +  type  +(InstrumentationTestCase, View) in android.test.TouchUtils +
    + +  type  +(ActivityInstrumentationTestCase, View) in android.test.TouchUtils +
    + +Looper
    + + +
    M  +A +B +C +D +E +F +G +H +I +J +K +L +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +makeListItems +()
    + +Manifest.permission
    + +MaskFilterSpan
    + +MAX_KEYCODE +
    + +mayUseInputMethod +(int)
    + +MEDIA_CHECKING +
    + +MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK +
    + +MEDIA_INFO_BAD_INTERLEAVING +
    + +MEDIA_INFO_NOT_SEEKABLE +
    + +MEDIA_INFO_UNKNOWN +
    + +MEDIA_INFO_VIDEO_TRACK_LAGGING +
    + +MEDIA_NOFS +
    + +MEDIA_RECORDER_ERROR_UNKNOWN +
    + +MEDIA_RECORDER_INFO_MAX_DURATION_REACHED +
    + +MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED +
    + +MEDIA_RECORDER_INFO_UNKNOWN +
    + +MediaPlayer
    + +MediaPlayer.OnInfoListener
    + +MediaPlayer.OnVideoSizeChangedListener
    + +MediaRecorder
    + +MediaRecorder.OnErrorListener
    + +MediaRecorder.OnInfoListener
    + +MediaRecorder.OutputFormat
    + +MediaRecorder.VideoEncoder
    + +MediaRecorder.VideoSource
    + +MediaStore
    + +MediaStore.Audio.AlbumColumns
    + +MediaStore.Audio.Media
    + +MediaStore.Images.Media
    + +MediaStore.Video
    + +MediaStore.Video.VideoColumns
    + +Menu
    + +MetaKeyKeyListener
    + +MockPackageManager
    + +MODE_APPEND +
    + +MotionEvent
    + +MOUNT_FORMAT_FILESYSTEMS +
    + +moveCursorToVisibleOffset +()
    + +MovementMethod
    + +MultiTapKeyListener
    + +mutate +()
    + +mVerticalAlignment +
    + + +
    N  +A +B +C +D +E +F +G +H +I +J +K +L +M +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +NeighboringCellInfo
    + +NETWORK_PREFERENCE +
    + +NetworkInfo
    +  android.net
    + +  NetworkInfo +(int) constructor
    + +NoCopySpan
    + +NoCopySpan.Concrete
    + +noHistory +
    + +NUM_STREAMS +
    + +NUMBER_OF_SONGS_FOR_ARTIST +
    + +numeric +
    + + +
    O  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +onBeginBatchEdit +()
    + +onCheckIsTextEditor +()
    + +onCommitCompletion +(CompletionInfo)
    + +onContentChanged +()
    + +onCreateInputConnection +(EditorInfo)
    + +onDoubleTap +(MotionEvent)
    + +onDoubleTapEvent +(MotionEvent)
    + +onEditorAction +(int)
    + +onEndBatchEdit +()
    + +onFinishTemporaryDetach +()
    + +onGlobalFocusChanged +(View, View)
    + +onKeyOther
    +  type  +(TextView, Spannable, KeyEvent) in android.text.method.ArrowKeyMovementMethod +
    + +  type  +(View, Editable, KeyEvent) in android.text.method.BaseKeyListener +
    + +  type  +(View, Editable, KeyEvent) in android.text.method.KeyListener +
    + +  type  +(TextView, Spannable, KeyEvent) in android.text.method.MovementMethod +
    + +  type  +(TextView, Spannable, KeyEvent) in android.text.method.ScrollingMovementMethod +
    + +onKeyPreIme +(int, KeyEvent)
    + +onPrivateIMECommand +(String, Bundle)
    + +onRestoreInstanceState +(Parcelable)
    + +onSaveInstanceState +()
    + +onSelectionChanged +(int, int)
    + +onSingleTapConfirmed +(MotionEvent)
    + +onStartTemporaryDetach +()
    + +onTextContextMenuItem +(int)
    + +onUserInteraction +()
    + +onUserLeaveHint +()
    + +openAssetFile +(Uri, String)
    + +openAssetFileDescriptor +(Uri, String)
    + +openOutputStream +(Uri, String)
    + +openRawResource +(int, TypedValue)
    + +OrientationEventListener
    + +OrientationListener
    +  android.view
    + +  OrientationListener +(Context, int) constructor
    + + +
    P  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +Q +R +S +T +U +V +W +Y +Z + TOP +

    +Pack200.Packer
    + +Pack200.Unpacker
    + +PackageInfo
    + +PackageManager
    + +Parcel
    + +ParcelableSpan
    + +ParcelFileDescriptor
    + +PARENTAL_CONTROL_ENABLED +
    + +PARENTAL_CONTROL_LAST_UPDATE +
    + +PARENTAL_CONTROL_REDIRECT_URL +
    + +parse +(String)
    + +parseBundleExtra +(String, AttributeSet, Bundle)
    + +parseBundleExtras +(XmlResourceParser, Bundle)
    + +password +
    + +paste +
    + +peekService +(Context, Intent)
    + +PendingIntent
    + +performHapticFeedback
    +  type  +(int) in android.view.View +
    + +  type  +(int, int) in android.view.View +
    + +phoneNumber +
    + +PhoneNumberUtils
    + +PHONETIC_NAME
    + in  +android.provider.Contacts.Intents.Insert +
    + + in  +android.provider.Contacts.PeopleColumns +
    + +playSoundEffect
    +  type  +(int, float) in android.media.AudioManager +
    + +  type  +(int) in android.view.View +
    + +PluginData
    + +popupCharacters +
    + +popupKeyboard +
    + +popupLayout +
    + +PopupWindow
    + +PopupWindow.OnDismissListener
    + +prepare +()
    + +PrintStreamPrinter
    + +privateImeOptions +
    + +ProgressBar
    + +ProviderTestCase
    + +ProviderTestCase2
    + +Proxy
    + +putLong +(ContentResolver, String, long)
    + + +
    Q  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +R +S +T +U +V +W +Y +Z + TOP +

    +QuoteSpan
    +  android.text.style
    + +  QuoteSpan +(Parcel) constructor
    + +QwertyKeyListener
    + + +
    R  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +S +T +U +V +W +Y +Z + TOP +

    +R.attr
    + +R.bool
    + +R.drawable
    + +R.id
    + +R.integer
    + +R.string
    + +R.style
    + +RasterizerSpan
    + +RAW_AMR +
    + +RAW_DATA_INDEX +
    + +RAW_DATA_X +
    + +RAW_DATA_Y +
    + +RAW_DATA_Z +
    + +readFromParcel +(Parcel)
    + +readHashMap +(ClassLoader)
    + +readMap +(Map, ClassLoader)
    + +Rect
    + +RectF
    + +registerListener
    +  type  +(SensorEventListener, Sensor, int) in android.hardware.SensorManager +
    + +  type  +(SensorEventListener, Sensor, int, Handler) in android.hardware.SensorManager +
    + +  type  +(SensorListener, int) in android.hardware.SensorManager +
    + +  type  +(SensorListener, int, int) in android.hardware.SensorManager +
    + +RelativeSizeSpan
    +  android.text.style
    + +  RelativeSizeSpan +(Parcel) constructor
    + +remapCoordinateSystem +(float[], int, int, float[])
    + +RemoteViews
    + +RemoteViews.ActionException
    +  android.widget
    + +  RemoteViews.ActionException +(Exception) constructor
    + +removeAt +(int)
    + +removeGpsStatusListener +(Listener)
    + +removeOnScrollChangedListener +(OnScrollChangedListener)
    + +removePropertyChangeListener
    +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Packer +
    + +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Unpacker +
    + +  type  +(PropertyChangeListener) in java.util.logging.LogManager +
    + +removeTestProvider +(String)
    + +removeUpdates +(PendingIntent)
    + +replaceExtras
    +  type  +(Intent) in android.content.Intent +
    + +  type  +(Bundle) in android.content.Intent +
    + +reqFiveWayNav +
    + +reqHardKeyboard +
    + +reqKeyboardType +
    + +reqNavigation +
    + +reqTouchScreen +
    + +requestChildRectangleOnScreen +(View, Rect, boolean)
    + +requestLocationUpdates +(String, long, float, PendingIntent)
    + +resetLockedMeta +(long)
    + +ResourceCursorAdapter
    +  android.widget
    + +  ResourceCursorAdapter +(Context, int, Cursor, boolean) constructor
    + +Resources
    + +restartPackage +(String)
    + +restorePicture +(Bundle, File)
    + +ResultReceiver
    + +RingtoneManager
    + +RotateDrawable
    + +ROUTE_BLUETOOTH +
    + +ROUTE_BLUETOOTH_A2DP +
    + +ROUTE_BLUETOOTH_SCO +
    + +rowEdgeFlags +
    + +runTestOnUiThread +(Runnable)
    + + +
    S  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +T +U +V +W +Y +Z + TOP +

    +savePicture +(Bundle, File)
    + +ScaleDrawable
    + +ScaleXSpan
    +  android.text.style
    + +  ScaleXSpan +(Parcel) constructor
    + +SCREEN_BRIGHTNESS_CHANGED +
    + +SCREEN_ORIENTATION_CHANGED +
    + +screenBrightness +
    + +screenOrientation +
    + +Scroller
    + +ScrollingMovementMethod
    + +scrollToBottom
    +  type  +(InstrumentationTestCase, Activity, ViewGroup) in android.test.TouchUtils +
    + +  type  +(ActivityInstrumentationTestCase, ViewGroup) in android.test.TouchUtils +
    + +scrollToTop
    +  type  +(InstrumentationTestCase, Activity, ViewGroup) in android.test.TouchUtils +
    + +  type  +(ActivityInstrumentationTestCase, ViewGroup) in android.test.TouchUtils +
    + +searchButtonText +
    + +SECONDARY_EMAIL +
    + +SECONDARY_EMAIL_TYPE +
    + +SECONDARY_PHONE +
    + +SECONDARY_PHONE_TYPE +
    + +SectionIndexer
    + +selectAll +
    + +sendExtraCommand +(String, String, Bundle)
    + +Sensor
    + +SENSOR_ACCELEROMETER +
    + +SENSOR_ALL +
    + +SENSOR_LIGHT +
    + +SENSOR_MAGNETIC_FIELD +
    + +SENSOR_MAX +
    + +SENSOR_MIN +
    + +SENSOR_ORIENTATION +
    + +SENSOR_ORIENTATION_RAW +
    + +SENSOR_PROXIMITY +
    + +SENSOR_TEMPERATURE +
    + +SENSOR_TRICORDER +
    + +SensorEvent
    + +SensorEventListener
    + +SensorListener
    + +SensorManager
    + +service +(String, Map<String, String>)
    + +setAllowFileAccess +(boolean)
    + +setBitmap +(int, String, Bitmap)
    + +setBluetoothA2dpOn +(boolean)
    + +setBoolean +(int, String, boolean)
    + +setBuiltInZoomControls +(boolean)
    + +setButton
    +  type  +(CharSequence, OnClickListener) in android.app.AlertDialog +
    + +  type  +(CharSequence, Message) in android.app.AlertDialog +
    + +  type  +(int, CharSequence, OnClickListener) in android.app.AlertDialog +
    + +  type  +(int, CharSequence, Message) in android.app.AlertDialog +
    + +setButton2
    +  type  +(CharSequence, OnClickListener) in android.app.AlertDialog +
    + +  type  +(CharSequence, Message) in android.app.AlertDialog +
    + +setButton3
    +  type  +(CharSequence, OnClickListener) in android.app.AlertDialog +
    + +  type  +(CharSequence, Message) in android.app.AlertDialog +
    + +setByte +(int, String, byte)
    + +setCamera +(Camera)
    + +setChar +(int, String, char)
    + +setCharSequence +(int, String, CharSequence)
    + +setClippingEnabled +(boolean)
    + +setCompoundDrawablesWithIntrinsicBounds +(int, int, int, int)
    + +setDouble +(int, String, double)
    + +setDropDownAnchor +(int)
    + +setDropDownWidth +(int)
    + +setExtractedText +(ExtractedText)
    + +setFastScrollEnabled +(boolean)
    + +setFillEnabled +(boolean)
    + +setFloat +(int, String, float)
    + +setFooterDividersEnabled +(boolean)
    + +setHapticFeedbackEnabled +(boolean)
    + +setHeaderDividersEnabled +(boolean)
    + +setImageViewBitmap +(int, Bitmap)
    + +setImeActionLabel +(CharSequence, int)
    + +setImeOptions +(int)
    + +setInexactRepeating +(int, long, long, PendingIntent)
    + +setInputExtras +(int)
    + +setInputMethodMode +(int)
    + +setInputType +(int)
    + +setInt +(int, String, int)
    + +setKeyProgressIncrement +(int)
    + +setListSelection +(int)
    + +setLong +(int, String, long)
    + +setMaxDuration +(int)
    + +setMaxFileSize +(long)
    + +setNetworkAvailable +(boolean)
    + +setOnChronometerTickListener +(OnChronometerTickListener)
    + +setOnClickPendingIntent +(int, PendingIntent)
    + +setOnDoubleTapListener +(OnDoubleTapListener)
    + +setOnEditorActionListener +(OnEditorActionListener)
    + +setOnErrorListener +(OnErrorListener)
    + +setOneShotPreviewCallback +(PreviewCallback)
    + +setOnInfoListener
    +  type  +(OnInfoListener) in android.media.MediaPlayer +
    + +  type  +(OnInfoListener) in android.media.MediaRecorder +
    + +setOnVideoSizeChangedListener +(OnVideoSizeChangedListener)
    + +setOutputFile +(FileDescriptor)
    + +setOutsideTouchable +(boolean)
    + +setPreviewDisplay +(SurfaceHolder)
    + +setPrivateImeOptions +(String)
    + +setRawInputType +(int)
    + +setScrollContainer +(boolean)
    + +setShort +(int, String, short)
    + +setSmoothScrollbarEnabled +(boolean)
    + +setSoftInputMode +(int)
    + +setStaticTransformationsEnabled +(boolean)
    + +setString +(int, String, String)
    + +setTestProviderEnabled +(String, boolean)
    + +setTestProviderLocation +(String, Location)
    + +setTestProviderStatus +(String, int, Bundle, long)
    + +setTextColor +(int, int)
    + +Settings
    + +Settings.Secure
    + +Settings.System
    + +SETTINGS_CLASSNAME +
    + +settingsActivity +
    + +setTouchable +(boolean)
    + +setTouchInterceptor +(OnTouchListener)
    + +setUri +(int, String, Uri)
    + +setUserAgent +(int)
    + +setUserAgentString +(String)
    + +setVideoEncoder +(int)
    + +setVideoFrameRate +(int)
    + +setVideoSize +(int, int)
    + +setVideoSource +(int)
    + +setView +(View, int, int, int, int)
    + +setViewResource +(int)
    + +setVisible +(boolean)
    + +setWindowAnimations +(int)
    + +setWindowLayoutMode +(int, int)
    + +Shape
    + +sharedUserId +
    + +sharedUserLabel
    + in  +android.R.attr +
    + + in  +android.content.pm.PackageInfo +
    + +SHOW_OR_CREATE_CONTACT +
    + +SimpleCursorAdapter
    + +singleLine +
    + +SlidingDrawer
    + +SlidingDrawer.OnDrawerCloseListener
    + +SlidingDrawer.OnDrawerOpenListener
    + +SlidingDrawer.OnDrawerScrollListener
    + +smoothScrollbar +
    + +SmsMessage
    + +Socket
    +  java.net
    + +  Socket +() constructor
    + +  Socket +(String, int) constructor
    + +  Socket +(String, int, InetAddress, int) constructor
    + +  Socket +(Proxy) constructor
    + +  Socket +(SocketImpl) constructor
    + +SOFT_INPUT_ADJUST_PAN +
    + +SOFT_INPUT_ADJUST_RESIZE +
    + +SOFT_INPUT_ADJUST_UNSPECIFIED +
    + +SOFT_INPUT_IS_FORWARD_NAVIGATION +
    + +SOFT_INPUT_MASK_ADJUST +
    + +SOFT_INPUT_MASK_STATE +
    + +SOFT_INPUT_MODE_CHANGED +
    + +SOFT_INPUT_STATE_ALWAYS_HIDDEN +
    + +SOFT_INPUT_STATE_ALWAYS_VISIBLE +
    + +SOFT_INPUT_STATE_HIDDEN +
    + +SOFT_INPUT_STATE_UNCHANGED +
    + +SOFT_INPUT_STATE_UNSPECIFIED +
    + +SOFT_INPUT_STATE_VISIBLE +
    + +softInputMode
    + in  +android.content.pm.ActivityInfo +
    + + in  +android.view.WindowManager.LayoutParams +
    + +sort +(Comparator<? super T>)
    + +SoundPool
    + +SPAN_COMPOSING +
    + +SPAN_INTERMEDIATE +
    + +SPAN_POINT_MARK_MASK +
    + +Spanned
    + +SpanWatcher
    + +SparseIntArray
    + +SQLiteDatabase
    + +startSelectingText +
    + +state_long_pressable +
    + +stopSelectingText +
    + +STREAM_NOTIFICATION +
    + +STRETCH_SPACING_UNIFORM +
    + +StrikethroughSpan
    +  android.text.style
    + +  StrikethroughSpan +(Parcel) constructor
    + +String
    +  java.lang
    + +  String +() constructor
    + +  String +(byte[]) constructor
    + +  String +(byte[], int) constructor
    + +  String +(byte[], int, int) constructor
    + +  String +(byte[], int, int, int) constructor
    + +StyleSpan
    +  android.text.style
    + +  StyleSpan +(Parcel) constructor
    + +SubscriptSpan
    +  android.text.style
    + +  SubscriptSpan +(Parcel) constructor
    + +SuperscriptSpan
    +  android.text.style
    + +  SuperscriptSpan +(Parcel) constructor
    + +switchInputMethod +
    + + +
    T  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +U +V +W +Y +Z + TOP +

    +TelephonyManager
    + +TERTIARY_EMAIL +
    + +TERTIARY_EMAIL_TYPE +
    + +TERTIARY_PHONE +
    + +TERTIARY_PHONE_TYPE +
    + +TestMethod
    +  android.test.suitebuilder
    + +  TestMethod +(String, Class<TestCase>) constructor
    + +  TestMethod +(TestCase) constructor
    + +TestSuiteBuilder
    + +TextAppearanceSpan
    +  android.text.style
    + +  TextAppearanceSpan +(Parcel) constructor
    + +TextKeyListener
    + +TextUtils
    + +TextView
    + +TextView.OnEditorActionListener
    + +TextWatcher
    + +Theme_InputMethod +
    + +Theme_Light_Panel +
    + +Theme_NoDisplay +
    + +Theme_Panel +
    + +thickness +
    + +TimeKeyListener
    + +TimeUtils
    + +title_bar_tall +
    + +topOffset +
    + +toShortString
    +  type  +() in android.graphics.Rect +
    + +  type  +() in android.view.animation.Transformation +
    + +Touch
    + +TouchUtils
    + +Transformation
    + +TransitionDrawable
    +  android.graphics.drawable
    + +  TransitionDrawable +(Drawable[]) constructor
    + +TYPE_APPLICATION_ATTACHED_DIALOG +
    + +TYPE_INPUT_METHOD +
    + +TYPE_INPUT_METHOD_DIALOG +
    + +TypedArray
    + +TypefaceSpan
    +  android.text.style
    + +  TypefaceSpan +(Parcel) constructor
    + + +
    U  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +V +W +Y +Z + TOP +

    +UnderlineSpan
    +  android.text.style
    + +  UnderlineSpan +(Parcel) constructor
    + +UNKNOWN_LENGTH +
    + +unregisterListener
    +  type  +(SensorEventListener) in android.hardware.SensorManager +
    + +  type  +(SensorEventListener, Sensor) in android.hardware.SensorManager +
    + +  type  +(SensorListener) in android.hardware.SensorManager +
    + +  type  +(SensorListener, int) in android.hardware.SensorManager +
    + +update
    +  type  +() in android.widget.PopupWindow +
    + +  type  +(int, int, int, int, boolean) in android.widget.PopupWindow +
    + +UPDATE_DEVICE_STATS +
    + +UpdateAppearance
    + +UpdateLayout
    + +updatePeriodMillis +
    + +UrlInterceptHandler
    + +UrlInterceptRegistry
    + +URLSpan
    +  android.text.style
    + +  URLSpan +(Parcel) constructor
    + +URLUtil
    + +USB_MASS_STORAGE_ENABLED +
    + +USE_GOOGLE_MAIL +
    + +UserDictionary
    + +UserDictionary.Words
    + + +
    V  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +W +Y +Z + TOP +

    +verticalCorrection +
    + +verticalGap +
    + +VideoView_error_text_invalid_progressive_playback +
    + +View
    + +ViewConfiguration
    +  android.view
    + +  ViewConfiguration +() constructor
    + +ViewDebug
    + +ViewDebug.CapturedViewProperty
    + +ViewGroup
    + +ViewParent
    + +ViewTreeObserver
    + +ViewTreeObserver.OnScrollChangedListener
    + +Visibility
    + +VMDebug
    + +voiceLanguage +
    + +voiceLanguageModel +
    + +voiceMaxResults +
    + +voicePromptText +
    + +voiceSearchMode +
    + +VOLUME_NOTIFICATION +
    + + +
    W  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +Y +Z + TOP +

    +WebHistoryItem
    + +WebSettings
    + +WebView
    + +Widget_KeyboardView +
    + +WIFI_MAX_DHCP_RETRY_COUNT +
    + +WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS +
    + +WIFI_MODE_FULL +
    + +WIFI_MODE_SCAN_ONLY +
    + +WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON +
    + +WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY +
    + +WIFI_NUM_OPEN_NETWORKS_KEPT +
    + +WIFI_ON +
    + +WIFI_SLEEP_POLICY +
    + +WIFI_SLEEP_POLICY_DEFAULT +
    + +WIFI_SLEEP_POLICY_NEVER +
    + +WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED +
    + +WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE +
    + +WIFI_WATCHDOG_AP_COUNT +
    + +WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS +
    + +WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED +
    + +WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS +
    + +WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT +
    + +WIFI_WATCHDOG_MAX_AP_CHECKS +
    + +WIFI_WATCHDOG_ON +
    + +WIFI_WATCHDOG_PING_COUNT +
    + +WIFI_WATCHDOG_PING_DELAY_MS +
    + +WIFI_WATCHDOG_PING_TIMEOUT_MS +
    + +WifiManager
    + +Window
    + +windowDisablePreview +
    + +WindowManager.LayoutParams
    + +windowNoDisplay +
    + +windowSoftInputMode +
    + +WRITE_SECURE_SETTINGS +
    + +writeMap +(Map)
    + +writeToParcel
    +  type  +(Parcel, int) in android.content.res.AssetFileDescriptor +
    + +  type  +(Parcel, int) in android.graphics.RectF +
    + +  type  +(Parcel, int) in android.text.Annotation +
    + +  type  +(Parcel, int) in android.text.style.AbsoluteSizeSpan +
    + +  type  +(Parcel, int) in android.text.style.AlignmentSpan.Standard +
    + +  type  +(Parcel, int) in android.text.style.BackgroundColorSpan +
    + +  type  +(Parcel, int) in android.text.style.BulletSpan +
    + +  type  +(Parcel, int) in android.text.style.ForegroundColorSpan +
    + +  type  +(Parcel, int) in android.text.style.LeadingMarginSpan.Standard +
    + +  type  +(Parcel, int) in android.text.style.QuoteSpan +
    + +  type  +(Parcel, int) in android.text.style.RelativeSizeSpan +
    + +  type  +(Parcel, int) in android.text.style.ScaleXSpan +
    + +  type  +(Parcel, int) in android.text.style.StrikethroughSpan +
    + +  type  +(Parcel, int) in android.text.style.StyleSpan +
    + +  type  +(Parcel, int) in android.text.style.SubscriptSpan +
    + +  type  +(Parcel, int) in android.text.style.SuperscriptSpan +
    + +  type  +(Parcel, int) in android.text.style.TextAppearanceSpan +
    + +  type  +(Parcel, int) in android.text.style.TypefaceSpan +
    + +  type  +(Parcel, int) in android.text.style.URLSpan +
    + +  type  +(Parcel, int) in android.text.style.UnderlineSpan +
    + + +
    Y  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +yieldIfContended +()
    + +yieldIfContendedSafely +()
    + + +
    Z  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +Zygote
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/alldiffs_index_changes.html b/docs/html/sdk/api_diff/3/changes/alldiffs_index_changes.html new file mode 100644 index 000000000000..b35bdb35ce4b --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/alldiffs_index_changes.html @@ -0,0 +1,1652 @@ + + + + + + + + + +All Changes Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Differences +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + + +
    A  +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +AbsListView
    + +AbsoluteLayout
    + +AbsoluteSizeSpan
    + +AbsSeekBar
    + +Activity
    + +ActivityInfo
    + +ActivityInstrumentationTestCase
    + +ActivityManager
    + +ADB_ENABLED +
    + +addRequirements +(Predicate<TestMethod>)
    + +AlarmManager
    + +AlertDialog
    + +AlignmentSpan.Standard
    + +android
    + +android.app
    + +android.content
    + +android.content.pm
    + +android.content.res
    + +android.database
    + +android.database.sqlite
    + +android.graphics
    + +android.graphics.drawable
    + +android.graphics.drawable.shapes
    + +android.hardware
    + +android.location
    + +android.media
    + +android.net
    + +android.net.wifi
    + +android.opengl
    + +android.os
    + +android.preference
    + +android.provider
    + +android.telephony
    + +android.telephony.gsm
    + +android.test
    + +android.test.mock
    + +android.test.suitebuilder
    + +android.text
    + +android.text.method
    + +android.text.style
    + +android.util
    + +android.view
    + +android.view.animation
    + +android.webkit
    + +android.widget
    + +ANDROID_ID +
    + +Animation
    + +Annotation
    + +appendEscapedSQLString +(StringBuilder, String)
    + +ArrayAdapter
    + +ArrowKeyMovementMethod
    + +AssetFileDescriptor
    + +AudioManager
    + +AutoCompleteTextView
    + +AutoText
    + +autoText +
    + + +
    B  +A +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +BackgroundColorSpan
    + +BaseKeyListener
    + +Binder
    + +Bitmap
    + +BLUETOOTH_ON +
    + +BroadcastReceiver
    + +Browser
    + +Build
    + +BulletSpan
    + +BUTTON1 +
    + +BUTTON2 +
    + +BUTTON3 +
    + + +
    C  +A +B +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +Camera
    + +Canvas
    + +capitalize +
    + +changeDebugPort +(int)
    + +Character.UnicodeBlock
    + +Chronometer
    + +Class
    + +ClickableSpan
    + +clone +()
    + +Configuration
    + +ConnectivityManager
    + +Contacts.Intents
    + +Contacts.Intents.Insert
    + +Contacts.PeopleColumns
    + +ContentProvider
    + +ContentResolver
    + +Context
    + +Cursor
    + +CursorAdapter
    + +CursorWrapper
    + + +dalvik.system
    + +DATA_ROAMING +
    + +DATA_X +
    + +DATA_Y +
    + +DATA_Z +
    + +DatabaseUtils
    + +Date
    +  java.util
    + +  Date +() constructor
    + +  Date +(int, int, int, int, int, int) constructor
    + +DateKeyListener
    + +DateTimeKeyListener
    + +Debug
    + +DEFAULT_SORT_ORDER
    + in  +android.provider.MediaStore.Images.Media +
    + + in  +android.provider.MediaStore.Video +
    + +DEVICE_PROVISIONED +
    + +DexFile
    + +DialerKeyListener
    + +DialogInterface
    + +DialogPreference
    + +DigitsKeyListener
    + +drag +(ActivityInstrumentationTestCase, float, float, float, float, int)
    + +dragQuarterScreenDown +(ActivityInstrumentationTestCase)
    + +dragQuarterScreenUp +(ActivityInstrumentationTestCase)
    + +dragViewBy +(ActivityInstrumentationTestCase, View, int, int, int)
    + +dragViewTo +(ActivityInstrumentationTestCase, View, int, int, int)
    + +dragViewToBottom
    +  type  +(ActivityInstrumentationTestCase, View) in android.test.TouchUtils +
    + +  type  +(InstrumentationTestCase, Activity, View) in android.test.TouchUtils +
    + +dragViewToTop
    +  type  +(ActivityInstrumentationTestCase, View) in android.test.TouchUtils +
    + +  type  +(ActivityInstrumentationTestCase, View, int) in android.test.TouchUtils +
    + +dragViewToX +(ActivityInstrumentationTestCase, View, int, int)
    + +dragViewToY +(ActivityInstrumentationTestCase, View, int, int)
    + +Drawable
    + +DynamicDrawableSpan
    + + +
    E  +A +B +C +D +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +editable +
    + +enabled +
    + +Environment
    + + +
    F  +A +B +C +D +E +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +ForegroundColorSpan
    + +forkAndSpecialize +(int, int, int[], boolean, int[][])
    + +forkSystemServer +(int, int, int[], boolean, int[][])
    + +forName +(String)
    + + +
    G  +A +B +C +D +E +F +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +GestureDetector
    +  android.view
    + +  GestureDetector +(OnGestureListener) constructor
    + +  GestureDetector +(OnGestureListener, Handler) constructor
    + +GestureDetector.SimpleOnGestureListener
    + +getClasses +()
    + +getColumnIndex
    +  type  +(String) in android.database.Cursor +
    + +  type  +(String) in android.database.CursorWrapper +
    + +getConstructors +()
    + +getCount +()
    + +getDeclaredClasses +()
    + +getDeclaredConstructors +()
    + +getEdgeSlop +()
    + +getFadingEdgeLength +()
    + +getHandler +()
    + +getInterfaces +()
    + +getItem +(int)
    + +getItemClickListener +()
    + +getItemId +(int)
    + +getItemSelectedListener +()
    + +getMaximumDrawingCacheSize +()
    + +getMinimumFlingVelocity +()
    + +getProxyClass +(ClassLoader, Class<?>)
    + +getScrollBarSize +()
    + +getSensors +()
    + +getSurrogate +(String, Map<String, String>)
    + +getTargetIntent +()
    + +getTouchSlop +()
    + +getUserAgent +()
    + +getWindowTouchSlop +()
    + +getZoomControls +()
    + +Gravity
    + +GridView
    + + +
    H  +A +B +C +D +E +F +G +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +Handler
    + +HTTP_PROXY +
    + + +
    I  +A +B +C +D +E +F +G +H +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +IBinder
    + +ImageSpan
    + +inputMethod +
    + +INSTALL_NON_MARKET_APPS +
    + +Instrumentation
    + +InstrumentationTestCase
    + +Intent
    + +isCookielessProxyUrl +(String)
    + + +java.lang
    + +java.lang.reflect
    + +java.net
    + +java.util
    + +java.util.jar
    + +java.util.logging
    + + +
    K  +A +B +C +D +E +F +G +H +I +J +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +KeyCharacterMap
    + +KeyEvent
    + +KeyListener
    + + +
    L  +A +B +C +D +E +F +G +H +I +J +K +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +LauncherActivity
    + +LeadingMarginSpan.Standard
    + +Level
    + +LIGHT_NO_MOON +
    + +ListView
    + +Location
    + +LOCATION_PROVIDERS_ALLOWED +
    + +LocationManager
    + +LOGGING_ID +
    + +LogManager
    + +longClickView +(ActivityInstrumentationTestCase, View)
    + +Looper
    + + +
    M  +A +B +C +D +E +F +G +H +I +J +K +L +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +Manifest.permission
    + +MaskFilterSpan
    + +MAX_KEYCODE +
    + +MediaPlayer
    + +MediaRecorder
    + +MediaRecorder.OutputFormat
    + +MediaStore
    + +MediaStore.Audio.AlbumColumns
    + +MediaStore.Audio.Media
    + +MediaStore.Images.Media
    + +MediaStore.Video
    + +MediaStore.Video.VideoColumns
    + +Menu
    + +MetaKeyKeyListener
    + +MockPackageManager
    + +MotionEvent
    + +MovementMethod
    + +MultiTapKeyListener
    + + +
    N  +A +B +C +D +E +F +G +H +I +J +K +L +M +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +NETWORK_PREFERENCE +
    + +NetworkInfo
    + +NUM_STREAMS +
    + +numeric +
    + + +
    O  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +onGlobalFocusChanged +(View, View)
    + +onRestoreInstanceState +(Parcelable)
    + +onSaveInstanceState +()
    + +OrientationListener
    + + +
    P  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +Q +R +S +T +U +V +W +Y +Z + TOP +

    +Pack200.Packer
    + +Pack200.Unpacker
    + +PackageInfo
    + +PackageManager
    + +Parcel
    + +ParcelFileDescriptor
    + +PARENTAL_CONTROL_ENABLED +
    + +PARENTAL_CONTROL_LAST_UPDATE +
    + +PARENTAL_CONTROL_REDIRECT_URL +
    + +parse +(String)
    + +password +
    + +PendingIntent
    + +phoneNumber +
    + +PhoneNumberUtils
    + +playSoundEffect +(int)
    + +PopupWindow
    + +PopupWindow.OnDismissListener
    + +prepare +()
    + +ProgressBar
    + +ProviderTestCase
    + +Proxy
    + + +
    Q  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +R +S +T +U +V +W +Y +Z + TOP +

    +QuoteSpan
    + +QwertyKeyListener
    + + +
    R  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +S +T +U +V +W +Y +Z + TOP +

    +R.attr
    + +R.drawable
    + +R.id
    + +R.string
    + +R.style
    + +RasterizerSpan
    + +RAW_DATA_INDEX +
    + +RAW_DATA_X +
    + +RAW_DATA_Y +
    + +RAW_DATA_Z +
    + +readHashMap +(ClassLoader)
    + +readMap +(Map, ClassLoader)
    + +Rect
    + +RectF
    + +registerListener
    +  type  +(SensorListener, int) in android.hardware.SensorManager +
    + +  type  +(SensorListener, int, int) in android.hardware.SensorManager +
    + +RelativeSizeSpan
    + +RemoteViews
    + +RemoteViews.ActionException
    + +ResourceCursorAdapter
    + +Resources
    + +RingtoneManager
    + +RotateDrawable
    + +ROUTE_BLUETOOTH +
    + + +
    S  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +T +U +V +W +Y +Z + TOP +

    +ScaleDrawable
    + +ScaleXSpan
    + +Scroller
    + +ScrollingMovementMethod
    + +scrollToBottom +(ActivityInstrumentationTestCase, ViewGroup)
    + +scrollToTop +(ActivityInstrumentationTestCase, ViewGroup)
    + +searchButtonText +
    + +SENSOR_ACCELEROMETER +
    + +SENSOR_ALL +
    + +SENSOR_LIGHT +
    + +SENSOR_MAGNETIC_FIELD +
    + +SENSOR_MAX +
    + +SENSOR_MIN +
    + +SENSOR_ORIENTATION +
    + +SENSOR_ORIENTATION_RAW +
    + +SENSOR_PROXIMITY +
    + +SENSOR_TEMPERATURE +
    + +SENSOR_TRICORDER +
    + +SensorListener
    + +SensorManager
    + +service +(String, Map<String, String>)
    + +setButton
    +  type  +(int, CharSequence, OnClickListener) in android.app.AlertDialog +
    + +  type  +(int, CharSequence, Message) in android.app.AlertDialog +
    + +setButton2
    +  type  +(CharSequence, OnClickListener) in android.app.AlertDialog +
    + +  type  +(CharSequence, Message) in android.app.AlertDialog +
    + +setButton3
    +  type  +(CharSequence, OnClickListener) in android.app.AlertDialog +
    + +  type  +(CharSequence, Message) in android.app.AlertDialog +
    + +setPreviewDisplay +(SurfaceHolder)
    + +Settings
    + +Settings.System
    + +SETTINGS_CLASSNAME +
    + +setUserAgent +(int)
    + +Shape
    + +SimpleCursorAdapter
    + +singleLine +
    + +SmsMessage
    + +Socket
    +  java.net
    + +  Socket +() constructor
    + +  Socket +(String, int) constructor
    + +  Socket +(String, int, InetAddress, int) constructor
    + +  Socket +(Proxy) constructor
    + +  Socket +(SocketImpl) constructor
    + +SoundPool
    + +Spanned
    + +SpanWatcher
    + +SparseIntArray
    + +SQLiteDatabase
    + +StrikethroughSpan
    + +String
    +  java.lang
    + +  String +() constructor
    + +  String +(byte[]) constructor
    + +  String +(byte[], int) constructor
    + +  String +(byte[], int, int) constructor
    + +  String +(byte[], int, int, int) constructor
    + +StyleSpan
    + +SubscriptSpan
    + +SuperscriptSpan
    + + +
    T  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +U +V +W +Y +Z + TOP +

    +TelephonyManager
    + +TestMethod
    + +TestSuiteBuilder
    + +TextAppearanceSpan
    + +TextKeyListener
    + +TextUtils
    + +TextView
    + +TextWatcher
    + +TimeKeyListener
    + +TimeUtils
    + +Touch
    + +TouchUtils
    + +Transformation
    + +TransitionDrawable
    + +TypedArray
    + +TypefaceSpan
    + + +
    U  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +V +W +Y +Z + TOP +

    +UnderlineSpan
    + +unregisterListener
    +  type  +(SensorListener) in android.hardware.SensorManager +
    + +  type  +(SensorListener, int) in android.hardware.SensorManager +
    + +UpdateLayout
    + +UrlInterceptHandler
    + +UrlInterceptRegistry
    + +URLSpan
    + +URLUtil
    + +USB_MASS_STORAGE_ENABLED +
    + +USE_GOOGLE_MAIL +
    + + +
    V  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +W +Y +Z + TOP +

    +View
    + +ViewConfiguration
    +  android.view
    + +  ViewConfiguration +() constructor
    + +ViewDebug
    + +ViewGroup
    + +ViewParent
    + +ViewTreeObserver
    + +VMDebug
    + + +
    W  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +Y +Z + TOP +

    +WebHistoryItem
    + +WebSettings
    + +WebView
    + +WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON +
    + +WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY +
    + +WIFI_NUM_OPEN_NETWORKS_KEPT +
    + +WIFI_ON +
    + +WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE +
    + +WIFI_WATCHDOG_AP_COUNT +
    + +WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS +
    + +WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED +
    + +WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS +
    + +WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT +
    + +WIFI_WATCHDOG_MAX_AP_CHECKS +
    + +WIFI_WATCHDOG_ON +
    + +WIFI_WATCHDOG_PING_COUNT +
    + +WIFI_WATCHDOG_PING_DELAY_MS +
    + +WIFI_WATCHDOG_PING_TIMEOUT_MS +
    + +WifiManager
    + +Window
    + +WindowManager.LayoutParams
    + +writeMap +(Map)
    + + +
    Y  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +yieldIfContended +()
    + + +
    Z  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +Zygote
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/alldiffs_index_removals.html b/docs/html/sdk/api_diff/3/changes/alldiffs_index_removals.html new file mode 100644 index 000000000000..662b26690d2e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/alldiffs_index_removals.html @@ -0,0 +1,78 @@ + + + + + + + + + +All Removals Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Differences +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + + +
    C  +N + TOP +

    +CATEGORY_GADGET +
    + + +
    N  +C + TOP +

    +NetworkInfo +(int) constructor
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.Manifest.permission.html b/docs/html/sdk/api_diff/3/changes/android.Manifest.permission.html new file mode 100644 index 000000000000..76591022179e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.Manifest.permission.html @@ -0,0 +1,151 @@ + + + + + + + + + +android.Manifest.permission + + + + + + + + + + +
    +
    +
    +

    +Class android.Manifest.permission +

    + + + +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + String BIND_APPWIDGET +  
    + + String BIND_INPUT_METHOD +  
    + + String MOUNT_FORMAT_FILESYSTEMS +  
    + + String UPDATE_DEVICE_STATS +  
    + + String WRITE_SECURE_SETTINGS +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.R.attr.html b/docs/html/sdk/api_diff/3/changes/android.R.attr.html new file mode 100644 index 000000000000..7df16a121329 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.R.attr.html @@ -0,0 +1,739 @@ + + + + + + + + + +android.R.attr + + + + + + + + + + +
    +
    +
    +

    +Class android.R.attr +

    + + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int allowSingleTap +  
    + + int animateOnClick +  
    + + int backgroundDimEnabled +  
    + + int bottomOffset +  
    + + int candidatesTextStyleSpans +  
    + + int codes +  
    + + int configure +  
    + + int content +  
    + + int dropDownAnchor +  
    + + int dropDownWidth +  
    + + int editorExtras +  
    + + int fastScrollEnabled +  
    + + int fillEnabled +  
    + + int footerDividersEnabled +  
    + + int handle +  
    + + int hapticFeedbackEnabled +  
    + + int headerDividersEnabled +  
    + + int horizontalGap +  
    + + int iconPreview +  
    + + int imeActionId +  
    + + int imeActionLabel +  
    + + int imeExtractEnterAnimation +  
    + + int imeExtractExitAnimation +  
    + + int imeFullscreenBackground +  
    + + int imeOptions +  
    + + int initialLayout +  
    + + int innerRadius +  
    + + int inputType +  
    + + int isDefault +  
    + + int isModifier +  
    + + int isRepeatable +  
    + + int isScrollContainer +  
    + + int isSticky +  
    + + int keyBackground +  
    + + int keyEdgeFlags +  
    + + int keyHeight +  
    + + int keyIcon +  
    + + int keyLabel +  
    + + int keyOutputText +  
    + + int keyPreviewHeight +  
    + + int keyPreviewLayout +  
    + + int keyPreviewOffset +  
    + + int keyTextColor +  
    + + int keyTextSize +  
    + + int keyWidth +  
    + + int keyboardMode +  
    + + int labelTextSize +  
    + + int noHistory +  
    + + int popupCharacters +  
    + + int popupKeyboard +  
    + + int popupLayout +  
    + + int privateImeOptions +  
    + + int reqFiveWayNav +  
    + + int reqHardKeyboard +  
    + + int reqKeyboardType +  
    + + int reqNavigation +  
    + + int reqTouchScreen +  
    + + int rowEdgeFlags +  
    + + int settingsActivity +  
    + + int sharedUserLabel +  
    + + int smoothScrollbar +  
    + + int state_long_pressable +  
    + + int thickness +  
    + + int topOffset +  
    + + int updatePeriodMillis +  
    + + int verticalCorrection +  
    + + int verticalGap +  
    + + int voiceLanguage +  
    + + int voiceLanguageModel +  
    + + int voiceMaxResults +  
    + + int voicePromptText +  
    + + int voiceSearchMode +  
    + + int windowDisablePreview +  
    + + int windowNoDisplay +  
    + + int windowSoftInputMode +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Fields +
    + + int autoText +Now deprecated.
    +
     
    + + int capitalize +Now deprecated.
    +
     
    + + int editable +Now deprecated.
    +
     
    + + int enabled +Now deprecated.
    +
     
    + + int inputMethod +Now deprecated.
    +
     
    + + int numeric +Now deprecated.
    +
     
    + + int password +Now deprecated.
    +
     
    + + int phoneNumber +Now deprecated.
    +
     
    + + int searchButtonText +Now deprecated.
    +
     
    + + int singleLine +Now deprecated.
    +
     
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.R.drawable.html b/docs/html/sdk/api_diff/3/changes/android.R.drawable.html new file mode 100644 index 000000000000..fe046dd7370f --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.R.drawable.html @@ -0,0 +1,137 @@ + + + + + + + + + +android.R.drawable + + + + + + + + + + +
    +
    +
    +

    +Class android.R.drawable +

    + + + +

    + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int dark_header +  
    + + int ic_btn_speak_now +  
    + + int title_bar_tall +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.R.id.html b/docs/html/sdk/api_diff/3/changes/android.R.id.html new file mode 100644 index 000000000000..d30fc1da3b7f --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.R.id.html @@ -0,0 +1,221 @@ + + + + + + + + + +android.R.id + + + + + + + + + + +
    +
    +
    +

    +Class android.R.id +

    + + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int addToDictionary +  
    + + int candidatesArea +  
    + + int closeButton +  
    + + int copy +  
    + + int copyUrl +  
    + + int cut +  
    + + int extractArea +  
    + + int inputArea +  
    + + int inputExtractEditText +  
    + + int keyboardView +  
    + + int paste +  
    + + int selectAll +  
    + + int startSelectingText +  
    + + int stopSelectingText +  
    + + int switchInputMethod +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.R.string.html b/docs/html/sdk/api_diff/3/changes/android.R.string.html new file mode 100644 index 000000000000..5d18ffa187c6 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.R.string.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.R.string + + + + + + + + + + +
    +
    +
    +

    +Class android.R.string +

    + + + +

    + + + + + + + + + + + + +
    Added Fields +
    + + int VideoView_error_text_invalid_progressive_playback +  
    + + int dialog_alert_title +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.R.style.html b/docs/html/sdk/api_diff/3/changes/android.R.style.html new file mode 100644 index 000000000000..726bab9fb2b4 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.R.style.html @@ -0,0 +1,151 @@ + + + + + + + + + +android.R.style + + + + + + + + + + +
    +
    +
    +

    +Class android.R.style +

    + + + +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int Theme_InputMethod +  
    + + int Theme_Light_Panel +  
    + + int Theme_NoDisplay +  
    + + int Theme_Panel +  
    + + int Widget_KeyboardView +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.app.Activity.html b/docs/html/sdk/api_diff/3/changes/android.app.Activity.html new file mode 100644 index 000000000000..7ff5871e76ce --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.app.Activity.html @@ -0,0 +1,151 @@ + + + + + + + + + +android.app.Activity + + + + + + + + + + +
    +
    +
    +

    +Class android.app.Activity +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + void closeContextMenu() +  
    + + boolean hasWindowFocus() +  
    + + void onUserInteraction() +  
    + + void onUserLeaveHint() +  
    + + void setVisible(boolean) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.app.ActivityManager.html b/docs/html/sdk/api_diff/3/changes/android.app.ActivityManager.html new file mode 100644 index 000000000000..bd473fb8a393 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.app.ActivityManager.html @@ -0,0 +1,137 @@ + + + + + + + + + +android.app.ActivityManager + + + + + + + + + + +
    +
    +
    +

    +Class android.app.ActivityManager +

    + + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + ConfigurationInfo getDeviceConfigurationInfo() +  
    + + List<RunningAppProcessInfo> getRunningAppProcesses() +  
    + + void restartPackage(String) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.app.AlarmManager.html b/docs/html/sdk/api_diff/3/changes/android.app.AlarmManager.html new file mode 100644 index 000000000000..b8280f2fc9b6 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.app.AlarmManager.html @@ -0,0 +1,166 @@ + + + + + + + + + +android.app.AlarmManager + + + + + + + + + + +
    +
    +
    +

    +Class android.app.AlarmManager +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void setInexactRepeating(int, long, long, PendingIntent) +  
    +  + +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + long INTERVAL_DAY +  
    + + long INTERVAL_FIFTEEN_MINUTES +  
    + + long INTERVAL_HALF_DAY +  
    + + long INTERVAL_HALF_HOUR +  
    + + long INTERVAL_HOUR +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.app.AlertDialog.html b/docs/html/sdk/api_diff/3/changes/android.app.AlertDialog.html new file mode 100644 index 000000000000..bb8cdb1624fe --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.app.AlertDialog.html @@ -0,0 +1,219 @@ + + + + + + + + + +android.app.AlertDialog + + + + + + + + + + +
    +
    +
    +

    +Class android.app.AlertDialog +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + Button getButton(int) +  
    + + ListView getListView() +  
    + + void setButton(CharSequence, OnClickListener) +  
    + + void setButton(CharSequence, Message) +  
    + + void setView(View, int, int, int, int) +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Methods +
    + + void setButton(int, CharSequence, OnClickListener) + +Change in signature from (CharSequence, OnClickListener) to (int, CharSequence, OnClickListener).
    +
     
    + + void setButton(int, CharSequence, Message) + +Change in signature from (CharSequence, Message) to (int, CharSequence, Message).
    +
     
    + + void setButton2(CharSequence, OnClickListener) + +Now deprecated.
    +
     
    + + void setButton2(CharSequence, Message) + +Now deprecated.
    +
     
    + + void setButton3(CharSequence, OnClickListener) + +Now deprecated.
    +
     
    + + void setButton3(CharSequence, Message) + +Now deprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.app.Instrumentation.html b/docs/html/sdk/api_diff/3/changes/android.app.Instrumentation.html new file mode 100644 index 000000000000..b6f26a6df962 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.app.Instrumentation.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.app.Instrumentation + + + + + + + + + + +
    +
    +
    +

    +Class android.app.Instrumentation +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void callActivityOnUserLeaving(Activity) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.app.LauncherActivity.html b/docs/html/sdk/api_diff/3/changes/android.app.LauncherActivity.html new file mode 100644 index 000000000000..60f7f29a6071 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.app.LauncherActivity.html @@ -0,0 +1,148 @@ + + + + + + + + + +android.app.LauncherActivity + + + + + + + + + + +
    +
    +
    +

    +Class android.app.LauncherActivity +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + Intent intentForPosition(int) +  
    + + List<ListItem> makeListItems() +  
    +  +

    + + + + + + + + + +
    Changed Methods +
    + + Intent getTargetIntent() + +Changed from abstract to non-abstract. +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.app.PendingIntent.html b/docs/html/sdk/api_diff/3/changes/android.app.PendingIntent.html new file mode 100644 index 000000000000..6155508fcd81 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.app.PendingIntent.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.app.PendingIntent + + + + + + + + + + +
    +
    +
    +

    +Class android.app.PendingIntent +

    + + + +

    + + + + + + + + +
    Added Fields +
    + + int FLAG_UPDATE_CURRENT +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.content.BroadcastReceiver.html b/docs/html/sdk/api_diff/3/changes/android.content.BroadcastReceiver.html new file mode 100644 index 000000000000..bd8cc8ccadb6 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.content.BroadcastReceiver.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.content.BroadcastReceiver + + + + + + + + + + +
    +
    +
    +

    +Class android.content.BroadcastReceiver +

    + + +

    + + + + + + + + +
    Added Methods +
    + + IBinder peekService(Context, Intent) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.content.ContentProvider.html b/docs/html/sdk/api_diff/3/changes/android.content.ContentProvider.html new file mode 100644 index 000000000000..c6de32605166 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.content.ContentProvider.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.content.ContentProvider + + + + + + + + + + +
    +
    +
    +

    +Class android.content.ContentProvider +

    + + +

    + + + + + + + + +
    Added Methods +
    + + AssetFileDescriptor openAssetFile(Uri, String) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.content.ContentResolver.html b/docs/html/sdk/api_diff/3/changes/android.content.ContentResolver.html new file mode 100644 index 000000000000..2101198a7f04 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.content.ContentResolver.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.content.ContentResolver + + + + + + + + + + +
    +
    +
    +

    +Class android.content.ContentResolver +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + AssetFileDescriptor openAssetFileDescriptor(Uri, String) +  
    + + OutputStream openOutputStream(Uri, String) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.content.Context.html b/docs/html/sdk/api_diff/3/changes/android.content.Context.html new file mode 100644 index 000000000000..ac3d99da74f2 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.content.Context.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.content.Context + + + + + + + + + + +
    +
    +
    +

    +Class android.content.Context +

    + + + +

    + + + + + + + + +
    Added Fields +
    + + String INPUT_METHOD_SERVICE +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.content.DialogInterface.html b/docs/html/sdk/api_diff/3/changes/android.content.DialogInterface.html new file mode 100644 index 000000000000..17dd651368bc --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.content.DialogInterface.html @@ -0,0 +1,172 @@ + + + + + + + + + +android.content.DialogInterface + + + + + + + + + + +
    +
    +
    +

    +Interface android.content.DialogInterface +

    + + + +

    + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int BUTTON_NEGATIVE +  
    + + int BUTTON_NEUTRAL +  
    + + int BUTTON_POSITIVE +  
    +  +

    + + + + + + + + + + + + + + + + + + + +
    Changed Fields +
    + + int BUTTON1 +Now deprecated.
    +
     
    + + int BUTTON2 +Now deprecated.
    +
     
    + + int BUTTON3 +Now deprecated.
    +
     
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.content.Intent.html b/docs/html/sdk/api_diff/3/changes/android.content.Intent.html new file mode 100644 index 000000000000..edb02387b0aa --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.content.Intent.html @@ -0,0 +1,251 @@ + + + + + + + + + +android.content.Intent + + + + + + + + + + +
    +
    +
    +

    +Class android.content.Intent +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + Intent replaceExtras(Intent) +  
    + + Intent replaceExtras(Bundle) +  
    +  + +

    + + + + + + + + +
    Removed Fields +
    + + String CATEGORY_GADGET +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + String ACTION_INPUT_METHOD_CHANGED +  
    + + String ACTION_MEDIA_CHECKING +  
    + + String ACTION_MEDIA_NOFS +  
    + + String ACTION_PACKAGE_DATA_CLEARED +  
    + + String ACTION_PACKAGE_REPLACED +  
    + + String ACTION_SEARCH_LONG_PRESS +  
    + + String ACTION_SYSTEM_TUTORIAL +  
    + + String ACTION_USER_PRESENT +  
    + + String CATEGORY_INFO +  
    + + String EXTRA_DATA_REMOVED +  
    + + String EXTRA_REPLACING +  
    + + int FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET +  
    + + int FLAG_ACTIVITY_NO_USER_ACTION +  
    + + int FLAG_ACTIVITY_REORDER_TO_FRONT +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.content.pm.ActivityInfo.html b/docs/html/sdk/api_diff/3/changes/android.content.pm.ActivityInfo.html new file mode 100644 index 000000000000..5c62f6b769d0 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.content.pm.ActivityInfo.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.content.pm.ActivityInfo + + + + + + + + + + +
    +
    +
    +

    +Class android.content.pm.ActivityInfo +

    + + + +

    + + + + + + + + + + + + +
    Added Fields +
    + + int FLAG_NO_HISTORY +  
    + + int softInputMode +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.content.pm.PackageInfo.html b/docs/html/sdk/api_diff/3/changes/android.content.pm.PackageInfo.html new file mode 100644 index 000000000000..b360d7c2bba2 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.content.pm.PackageInfo.html @@ -0,0 +1,137 @@ + + + + + + + + + +android.content.pm.PackageInfo + + + + + + + + + + +
    +
    +
    +

    +Class android.content.pm.PackageInfo +

    + + + +

    + + + + + + + + + + + + + + + + +
    Added Fields +
    + + ConfigurationInfo[] configPreferences +  
    + + String sharedUserId +  
    + + int sharedUserLabel +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.content.pm.PackageManager.html b/docs/html/sdk/api_diff/3/changes/android.content.pm.PackageManager.html new file mode 100644 index 000000000000..efd37c54f3b1 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.content.pm.PackageManager.html @@ -0,0 +1,166 @@ + + + + + + + + + +android.content.pm.PackageManager + + + + + + + + + + +
    +
    +
    +

    +Class android.content.pm.PackageManager +

    + + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + Intent getLaunchIntentForPackage(String) +  
    + + String[] getSystemSharedLibraryNames() +  
    + + boolean isSafeMode() +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int GET_CONFIGURATIONS +  
    + + int GET_UNINSTALLED_PACKAGES +  
    + + int INSTALL_FAILED_CONFLICTING_PROVIDER +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.content.res.AssetFileDescriptor.html b/docs/html/sdk/api_diff/3/changes/android.content.res.AssetFileDescriptor.html new file mode 100644 index 000000000000..458a70a74ecf --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.content.res.AssetFileDescriptor.html @@ -0,0 +1,174 @@ + + + + + + + + + +android.content.res.AssetFileDescriptor + + + + + + + + + + +
    +
    +
    +

    +Class android.content.res.AssetFileDescriptor +

    +

    Added interface android.os.Parcelable.
    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + FileInputStream createInputStream() +  
    + + FileOutputStream createOutputStream() +  
    + + int describeContents() +  
    + + long getDeclaredLength() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + + + + + + + + + + + + +
    Added Fields +
    + + Creator CREATOR +  
    + + long UNKNOWN_LENGTH +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.content.res.Configuration.html b/docs/html/sdk/api_diff/3/changes/android.content.res.Configuration.html new file mode 100644 index 000000000000..3b8f943aceb7 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.content.res.Configuration.html @@ -0,0 +1,144 @@ + + + + + + + + + +android.content.res.Configuration + + + + + + + + + + +
    +
    +
    +

    +Class android.content.res.Configuration +

    + + + +

    + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int HARDKEYBOARDHIDDEN_NO +  
    + + int HARDKEYBOARDHIDDEN_UNDEFINED +  
    + + int HARDKEYBOARDHIDDEN_YES +  
    + + int hardKeyboardHidden +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.content.res.Resources.html b/docs/html/sdk/api_diff/3/changes/android.content.res.Resources.html new file mode 100644 index 000000000000..7fde1f983310 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.content.res.Resources.html @@ -0,0 +1,151 @@ + + + + + + + + + +android.content.res.Resources + + + + + + + + + + +
    +
    +
    +

    +Class android.content.res.Resources +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + boolean getBoolean(int) +  
    + + float getFraction(int, int, int) +  
    + + InputStream openRawResource(int, TypedValue) +  
    + + void parseBundleExtra(String, AttributeSet, Bundle) +  
    + + void parseBundleExtras(XmlResourceParser, Bundle) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.content.res.TypedArray.html b/docs/html/sdk/api_diff/3/changes/android.content.res.TypedArray.html new file mode 100644 index 000000000000..f1336fc7d7ed --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.content.res.TypedArray.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.content.res.TypedArray + + + + + + + + + + +
    +
    +
    +

    +Class android.content.res.TypedArray +

    + + +

    + + + + + + + + +
    Added Methods +
    + + int getLayoutDimension(int, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.database.Cursor.html b/docs/html/sdk/api_diff/3/changes/android.database.Cursor.html new file mode 100644 index 000000000000..020402a4c714 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.database.Cursor.html @@ -0,0 +1,126 @@ + + + + + + + + + +android.database.Cursor + + + + + + + + + + +
    +
    +
    +

    +Interface android.database.Cursor +

    + + +

    + + + + + + + + + +
    Changed Methods +
    + + int getColumnIndex(String) + +Change from deprecated to undeprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.database.CursorWrapper.html b/docs/html/sdk/api_diff/3/changes/android.database.CursorWrapper.html new file mode 100644 index 000000000000..3a7675d57da6 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.database.CursorWrapper.html @@ -0,0 +1,126 @@ + + + + + + + + + +android.database.CursorWrapper + + + + + + + + + + +
    +
    +
    +

    +Class android.database.CursorWrapper +

    + + +

    + + + + + + + + + +
    Changed Methods +
    + + int getColumnIndex(String) + +Change from deprecated to undeprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.database.DatabaseUtils.html b/docs/html/sdk/api_diff/3/changes/android.database.DatabaseUtils.html new file mode 100644 index 000000000000..114beaeeee62 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.database.DatabaseUtils.html @@ -0,0 +1,126 @@ + + + + + + + + + +android.database.DatabaseUtils + + + + + + + + + + +
    +
    +
    +

    +Class android.database.DatabaseUtils +

    + + +

    + + + + + + + + + +
    Changed Methods +
    + + void appendEscapedSQLString(StringBuilder, String) + +Change from deprecated to undeprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.database.sqlite.SQLiteDatabase.html b/docs/html/sdk/api_diff/3/changes/android.database.sqlite.SQLiteDatabase.html new file mode 100644 index 000000000000..cd59c1b85431 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.database.sqlite.SQLiteDatabase.html @@ -0,0 +1,141 @@ + + + + + + + + + +android.database.sqlite.SQLiteDatabase + + + + + + + + + + +
    +
    +
    +

    +Class android.database.sqlite.SQLiteDatabase +

    + + +

    + + + + + + + + +
    Added Methods +
    + + boolean yieldIfContendedSafely() +  
    +  +

    + + + + + + + + + +
    Changed Methods +
    + + boolean yieldIfContended() + +Now deprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.graphics.Bitmap.html b/docs/html/sdk/api_diff/3/changes/android.graphics.Bitmap.html new file mode 100644 index 000000000000..f6ddc29c10bf --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.graphics.Bitmap.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.graphics.Bitmap + + + + + + + + + + +
    +
    +
    +

    +Class android.graphics.Bitmap +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void copyPixelsFromBuffer(Buffer) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.graphics.Canvas.html b/docs/html/sdk/api_diff/3/changes/android.graphics.Canvas.html new file mode 100644 index 000000000000..cf8ceef7ab5f --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.graphics.Canvas.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.graphics.Canvas + + + + + + + + + + +
    +
    +
    +

    +Class android.graphics.Canvas +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void drawBitmap(int[], int, int, float, float, int, int, boolean, Paint) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.graphics.Rect.html b/docs/html/sdk/api_diff/3/changes/android.graphics.Rect.html new file mode 100644 index 000000000000..1c0b1f342d37 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.graphics.Rect.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.graphics.Rect + + + + + + + + + + +
    +
    +
    +

    +Class android.graphics.Rect +

    + + +

    + + + + + + + + +
    Added Methods +
    + + String toShortString() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.graphics.RectF.html b/docs/html/sdk/api_diff/3/changes/android.graphics.RectF.html new file mode 100644 index 000000000000..4e9b91b2a2ed --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.graphics.RectF.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.graphics.RectF + + + + + + + + + + +
    +
    +
    +

    +Class android.graphics.RectF +

    +

    Added interface android.os.Parcelable.
    + + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + void readFromParcel(Parcel) +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + + + + + + + + +
    Added Fields +
    + + Creator CREATOR +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.Drawable.html b/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.Drawable.html new file mode 100644 index 000000000000..faa70b96da44 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.Drawable.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.graphics.drawable.Drawable + + + + + + + + + + +
    +
    +
    +

    +Class android.graphics.drawable.Drawable +

    + + +

    + + + + + + + + +
    Added Methods +
    + + Drawable mutate() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.RotateDrawable.html b/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.RotateDrawable.html new file mode 100644 index 000000000000..8cffe1e0bdb9 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.RotateDrawable.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.graphics.drawable.RotateDrawable + + + + + + + + + + +
    +
    +
    +

    +Class android.graphics.drawable.RotateDrawable +

    + + +

    + + + + + + + + +
    Added Methods +
    + + Drawable getDrawable() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.ScaleDrawable.html b/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.ScaleDrawable.html new file mode 100644 index 000000000000..529f38026ebe --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.ScaleDrawable.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.graphics.drawable.ScaleDrawable + + + + + + + + + + +
    +
    +
    +

    +Class android.graphics.drawable.ScaleDrawable +

    + + +

    + + + + + + + + +
    Added Methods +
    + + Drawable getDrawable() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.TransitionDrawable.html b/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.TransitionDrawable.html new file mode 100644 index 000000000000..d7dc8eafcf3c --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.TransitionDrawable.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.graphics.drawable.TransitionDrawable + + + + + + + + + + +
    +
    +
    +

    +Class android.graphics.drawable.TransitionDrawable +

    + +

    + + + + + + + + +
    Added Constructors +
    + + TransitionDrawable(Drawable[]) +  
    +  + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.shapes.Shape.html b/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.shapes.Shape.html new file mode 100644 index 000000000000..836aa9215913 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.shapes.Shape.html @@ -0,0 +1,128 @@ + + + + + + + + + +android.graphics.drawable.shapes.Shape + + + + + + + + + + +
    +
    +
    +

    +Class android.graphics.drawable.shapes.Shape +

    +

    Added interface java.lang.Cloneable.
    + + +

    + + + + + + + + + +
    Changed Methods +
    + + Shape clone() + +Change in return type from Object to Shape.
    + Method was inherited from java.lang.Object, but is now defined locally. Change of visibility from protected to public.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.hardware.Camera.html b/docs/html/sdk/api_diff/3/changes/android.hardware.Camera.html new file mode 100644 index 000000000000..b7a0dd37a122 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.hardware.Camera.html @@ -0,0 +1,141 @@ + + + + + + + + + +android.hardware.Camera + + + + + + + + + + +
    +
    +
    +

    +Class android.hardware.Camera +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void setOneShotPreviewCallback(PreviewCallback) +  
    +  +

    + + + + + + + + + +
    Changed Methods +
    + + void setPreviewDisplay(SurfaceHolder) + +Change in exceptions thrown from no exceptions to java.io.IOException.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.hardware.SensorListener.html b/docs/html/sdk/api_diff/3/changes/android.hardware.SensorListener.html new file mode 100644 index 000000000000..9b63571fcf52 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.hardware.SensorListener.html @@ -0,0 +1,109 @@ + + + + + + + + + +android.hardware.SensorListener + + + + + + + + + + +
    +
    +
    +

    +Interface android.hardware.SensorListener +

    +

    Now deprecated.
    + + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.hardware.SensorManager.html b/docs/html/sdk/api_diff/3/changes/android.hardware.SensorManager.html new file mode 100644 index 000000000000..e42eebaf21f9 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.hardware.SensorManager.html @@ -0,0 +1,473 @@ + + + + + + + + + +android.hardware.SensorManager + + + + + + + + + + +
    +
    +
    +

    +Class android.hardware.SensorManager +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + Sensor getDefaultSensor(int) +  
    + + float getInclination(float[]) +  
    + + float[] getOrientation(float[], float[]) +  
    + + boolean getRotationMatrix(float[], float[], float[], float[]) +  
    + + List<Sensor> getSensorList(int) +  
    + + boolean registerListener(SensorEventListener, Sensor, int) +  
    + + boolean registerListener(SensorEventListener, Sensor, int, Handler) +  
    + + boolean remapCoordinateSystem(float[], int, int, float[]) +  
    + + void unregisterListener(SensorEventListener) +  
    + + void unregisterListener(SensorEventListener, Sensor) +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Methods +
    + + int getSensors() + +Now deprecated.
    +
     
    + + boolean registerListener(SensorListener, int) + +Now deprecated.
    +
     
    + + boolean registerListener(SensorListener, int, int) + +Now deprecated.
    +
     
    + + void unregisterListener(SensorListener) + +Now deprecated.
    +
     
    + + void unregisterListener(SensorListener, int) + +Now deprecated.
    +
     
    +  + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int AXIS_MINUS_X +  
    + + int AXIS_MINUS_Y +  
    + + int AXIS_MINUS_Z +  
    + + int AXIS_X +  
    + + int AXIS_Y +  
    + + int AXIS_Z +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Fields +
    + + int DATA_X +Now deprecated.
    +
     
    + + int DATA_Y +Now deprecated.
    +
     
    + + int DATA_Z +Now deprecated.
    +
     
    + + float LIGHT_NO_MOON +Changed in value from 0.0010f to 0.001f. +  
    + + int RAW_DATA_INDEX +Now deprecated.
    +
     
    + + int RAW_DATA_X +Now deprecated.
    +
     
    + + int RAW_DATA_Y +Now deprecated.
    +
     
    + + int RAW_DATA_Z +Now deprecated.
    +
     
    + + int SENSOR_ACCELEROMETER +Now deprecated.
    +
     
    + + int SENSOR_ALL +Now deprecated.
    +
     
    + + int SENSOR_LIGHT +Now deprecated.
    +
     
    + + int SENSOR_MAGNETIC_FIELD +Now deprecated.
    +
     
    + + int SENSOR_MAX +Now deprecated.
    +
     
    + + int SENSOR_MIN +Now deprecated.
    +
     
    + + int SENSOR_ORIENTATION +Now deprecated.
    +
     
    + + int SENSOR_ORIENTATION_RAW +Now deprecated.
    +
     
    + + int SENSOR_PROXIMITY +Now deprecated.
    +
     
    + + int SENSOR_TEMPERATURE +Now deprecated.
    +
     
    + + int SENSOR_TRICORDER +Now deprecated.
    +
     
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.location.Location.html b/docs/html/sdk/api_diff/3/changes/android.location.Location.html new file mode 100644 index 000000000000..03d3f894f33c --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.location.Location.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.location.Location + + + + + + + + + + +
    +
    +
    +

    +Class android.location.Location +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void dump(Printer, String) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.location.LocationManager.html b/docs/html/sdk/api_diff/3/changes/android.location.LocationManager.html new file mode 100644 index 000000000000..4cd68386cbd4 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.location.LocationManager.html @@ -0,0 +1,243 @@ + + + + + + + + + +android.location.LocationManager + + + + + + + + + + +
    +
    +
    +

    +Class android.location.LocationManager +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + boolean addGpsStatusListener(Listener) +  
    + + void addTestProvider(String, boolean, boolean, boolean, boolean, boolean, boolean, boolean, int, int) +  
    + + void clearTestProviderEnabled(String) +  
    + + void clearTestProviderLocation(String) +  
    + + void clearTestProviderStatus(String) +  
    + + GpsStatus getGpsStatus(GpsStatus) +  
    + + void removeGpsStatusListener(Listener) +  
    + + void removeTestProvider(String) +  
    + + void removeUpdates(PendingIntent) +  
    + + void requestLocationUpdates(String, long, float, PendingIntent) +  
    + + boolean sendExtraCommand(String, String, Bundle) +  
    + + void setTestProviderEnabled(String, boolean) +  
    + + void setTestProviderLocation(String, Location) +  
    + + void setTestProviderStatus(String, int, Bundle, long) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Fields +
    + + String KEY_LOCATION_CHANGED +  
    + + String KEY_PROVIDER_ENABLED +  
    + + String KEY_STATUS_CHANGED +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.media.AudioManager.html b/docs/html/sdk/api_diff/3/changes/android.media.AudioManager.html new file mode 100644 index 000000000000..a98d840ffaf7 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.media.AudioManager.html @@ -0,0 +1,227 @@ + + + + + + + + + +android.media.AudioManager + + + + + + + + + + +
    +
    +
    +

    +Class android.media.AudioManager +

    + + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + boolean isBluetoothA2dpOn() +  
    + + void playSoundEffect(int, float) +  
    + + void setBluetoothA2dpOn(boolean) +  
    +  + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + String ACTION_AUDIO_BECOMING_NOISY +  
    + + int FX_KEYPRESS_DELETE +  
    + + int FX_KEYPRESS_RETURN +  
    + + int FX_KEYPRESS_SPACEBAR +  
    + + int FX_KEYPRESS_STANDARD +  
    + + int ROUTE_BLUETOOTH_A2DP +  
    + + int ROUTE_BLUETOOTH_SCO +  
    + + int STREAM_NOTIFICATION +  
    +  +

    + + + + + + + + + + + + + + +
    Changed Fields +
    + + int NUM_STREAMS +Now deprecated.
    +
     
    + + int ROUTE_BLUETOOTH +Now deprecated.
    +
     
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.media.MediaPlayer.html b/docs/html/sdk/api_diff/3/changes/android.media.MediaPlayer.html new file mode 100644 index 000000000000..7704e1232ee8 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.media.MediaPlayer.html @@ -0,0 +1,180 @@ + + + + + + + + + +android.media.MediaPlayer + + + + + + + + + + +
    +
    +
    +

    +Class android.media.MediaPlayer +

    + + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + boolean isLooping() +  
    + + void setOnInfoListener(OnInfoListener) +  
    + + void setOnVideoSizeChangedListener(OnVideoSizeChangedListener) +  
    +  + +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK +  
    + + int MEDIA_INFO_BAD_INTERLEAVING +  
    + + int MEDIA_INFO_NOT_SEEKABLE +  
    + + int MEDIA_INFO_UNKNOWN +  
    + + int MEDIA_INFO_VIDEO_TRACK_LAGGING +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.media.MediaRecorder.OutputFormat.html b/docs/html/sdk/api_diff/3/changes/android.media.MediaRecorder.OutputFormat.html new file mode 100644 index 000000000000..0967c567c7f4 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.media.MediaRecorder.OutputFormat.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.media.MediaRecorder.OutputFormat + + + + + + + + + + +
    +
    +
    +

    +Class android.media.MediaRecorder.OutputFormat +

    + + + +

    + + + + + + + + +
    Added Fields +
    + + int RAW_AMR +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.media.MediaRecorder.html b/docs/html/sdk/api_diff/3/changes/android.media.MediaRecorder.html new file mode 100644 index 000000000000..9daf4c350aaa --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.media.MediaRecorder.html @@ -0,0 +1,240 @@ + + + + + + + + + +android.media.MediaRecorder + + + + + + + + + + +
    +
    +
    +

    +Class android.media.MediaRecorder +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + void setCamera(Camera) +  
    + + void setMaxDuration(int) +  
    + + void setMaxFileSize(long) +  
    + + void setOnErrorListener(OnErrorListener) +  
    + + void setOnInfoListener(OnInfoListener) +  
    + + void setOutputFile(FileDescriptor) +  
    + + void setVideoEncoder(int) +  
    + + void setVideoFrameRate(int) +  
    + + void setVideoSize(int, int) +  
    + + void setVideoSource(int) +  
    +  +

    + + + + + + + + + +
    Changed Methods +
    + + void prepare() + +Change in exceptions thrown from java.lang.IllegalStateException to (java.io.IOException, java.lang.IllegalStateException).
    +
     
    +  + +

    + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int MEDIA_RECORDER_ERROR_UNKNOWN +  
    + + int MEDIA_RECORDER_INFO_MAX_DURATION_REACHED +  
    + + int MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED +  
    + + int MEDIA_RECORDER_INFO_UNKNOWN +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.media.RingtoneManager.html b/docs/html/sdk/api_diff/3/changes/android.media.RingtoneManager.html new file mode 100644 index 000000000000..e9fdbfc24b04 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.media.RingtoneManager.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.media.RingtoneManager + + + + + + + + + + +
    +
    +
    +

    +Class android.media.RingtoneManager +

    + + +

    + + + + + + + + +
    Added Methods +
    + + int inferStreamType() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.media.SoundPool.html b/docs/html/sdk/api_diff/3/changes/android.media.SoundPool.html new file mode 100644 index 000000000000..6e765d837f78 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.media.SoundPool.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.media.SoundPool + + + + + + + + + + +
    +
    +
    +

    +Class android.media.SoundPool +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + int load(AssetFileDescriptor, int) +  
    + + int load(FileDescriptor, long, long, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.net.ConnectivityManager.html b/docs/html/sdk/api_diff/3/changes/android.net.ConnectivityManager.html new file mode 100644 index 000000000000..7b0750e02f15 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.net.ConnectivityManager.html @@ -0,0 +1,138 @@ + + + + + + + + + +android.net.ConnectivityManager + + + + + + + + + + +
    +
    +
    +

    +Class android.net.ConnectivityManager +

    + + +

    + + + + + + + + +
    Added Methods +
    + + boolean getBackgroundDataSetting() +  
    +  + +

    + + + + + + + + +
    Added Fields +
    + + String ACTION_BACKGROUND_DATA_SETTING_CHANGED +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.net.NetworkInfo.html b/docs/html/sdk/api_diff/3/changes/android.net.NetworkInfo.html new file mode 100644 index 000000000000..6c3c26d2c4c4 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.net.NetworkInfo.html @@ -0,0 +1,152 @@ + + + + + + + + + +android.net.NetworkInfo + + + + + + + + + + +
    +
    +
    +

    +Class android.net.NetworkInfo +

    + +

    + + + + + + + + +
    Removed Constructors +
    + + NetworkInfo(int) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int getSubtype() +  
    + + String getSubtypeName() +  
    + + boolean isRoaming() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.net.wifi.WifiManager.html b/docs/html/sdk/api_diff/3/changes/android.net.wifi.WifiManager.html new file mode 100644 index 000000000000..2e79642e7662 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.net.wifi.WifiManager.html @@ -0,0 +1,145 @@ + + + + + + + + + +android.net.wifi.WifiManager + + + + + + + + + + +
    +
    +
    +

    +Class android.net.wifi.WifiManager +

    + + +

    + + + + + + + + +
    Added Methods +
    + + WifiLock createWifiLock(int, String) +  
    +  + +

    + + + + + + + + + + + + +
    Added Fields +
    + + int WIFI_MODE_FULL +  
    + + int WIFI_MODE_SCAN_ONLY +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.os.Binder.html b/docs/html/sdk/api_diff/3/changes/android.os.Binder.html new file mode 100644 index 000000000000..882803adaf42 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.os.Binder.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.os.Binder + + + + + + + + + + +
    +
    +
    +

    +Class android.os.Binder +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void dump(FileDescriptor, String[]) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.os.Build.html b/docs/html/sdk/api_diff/3/changes/android.os.Build.html new file mode 100644 index 000000000000..2a69a8c7c204 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.os.Build.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.os.Build + + + + + + + + + + +
    +
    +
    +

    +Class android.os.Build +

    + + + +

    + + + + + + + + +
    Added Fields +
    + + String DISPLAY +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.os.Debug.html b/docs/html/sdk/api_diff/3/changes/android.os.Debug.html new file mode 100644 index 000000000000..8e7e2db3eef8 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.os.Debug.html @@ -0,0 +1,141 @@ + + + + + + + + + +android.os.Debug + + + + + + + + + + +
    +
    +
    +

    +Class android.os.Debug +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void dumpHprofData(String) +  
    +  +

    + + + + + + + + + +
    Changed Methods +
    + + void changeDebugPort(int) + +Now deprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.os.Environment.html b/docs/html/sdk/api_diff/3/changes/android.os.Environment.html new file mode 100644 index 000000000000..4cc764375c64 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.os.Environment.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.os.Environment + + + + + + + + + + +
    +
    +
    +

    +Class android.os.Environment +

    + + + +

    + + + + + + + + + + + + +
    Added Fields +
    + + String MEDIA_CHECKING +  
    + + String MEDIA_NOFS +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.os.Handler.html b/docs/html/sdk/api_diff/3/changes/android.os.Handler.html new file mode 100644 index 000000000000..fc10c9b29cd1 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.os.Handler.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.os.Handler + + + + + + + + + + +
    +
    +
    +

    +Class android.os.Handler +

    + +

    + + + + + + + + + + + + +
    Added Constructors +
    + + Handler(Callback) +  
    + + Handler(Looper, Callback) +  
    +  + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.os.IBinder.html b/docs/html/sdk/api_diff/3/changes/android.os.IBinder.html new file mode 100644 index 000000000000..95745dc7d4a3 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.os.IBinder.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.os.IBinder + + + + + + + + + + +
    +
    +
    +

    +Interface android.os.IBinder +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void dump(FileDescriptor, String[]) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.os.Looper.html b/docs/html/sdk/api_diff/3/changes/android.os.Looper.html new file mode 100644 index 000000000000..d79ae756786f --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.os.Looper.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.os.Looper + + + + + + + + + + +
    +
    +
    +

    +Class android.os.Looper +

    + + +

    + + + + + + + + +
    Added Methods +
    + + Thread getThread() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.os.Parcel.html b/docs/html/sdk/api_diff/3/changes/android.os.Parcel.html new file mode 100644 index 000000000000..317b722d9f0f --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.os.Parcel.html @@ -0,0 +1,146 @@ + + + + + + + + + +android.os.Parcel + + + + + + + + + + +
    +
    +
    +

    +Class android.os.Parcel +

    + + +

    + + + + + + + + + + + + + + + + + + + +
    Changed Methods +
    + + HashMap readHashMap(ClassLoader) + +Change from deprecated to undeprecated.
    +
     
    + + void readMap(Map, ClassLoader) + +Change from deprecated to undeprecated.
    +
     
    + + void writeMap(Map) + +Change from deprecated to undeprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.os.ParcelFileDescriptor.html b/docs/html/sdk/api_diff/3/changes/android.os.ParcelFileDescriptor.html new file mode 100644 index 000000000000..77641d54c4dd --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.os.ParcelFileDescriptor.html @@ -0,0 +1,138 @@ + + + + + + + + + +android.os.ParcelFileDescriptor + + + + + + + + + + +
    +
    +
    +

    +Class android.os.ParcelFileDescriptor +

    + + +

    + + + + + + + + +
    Added Methods +
    + + long getStatSize() +  
    +  + +

    + + + + + + + + +
    Added Fields +
    + + int MODE_APPEND +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.preference.DialogPreference.html b/docs/html/sdk/api_diff/3/changes/android.preference.DialogPreference.html new file mode 100644 index 000000000000..93e05e7c6320 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.preference.DialogPreference.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.preference.DialogPreference + + + + + + + + + + +
    +
    +
    +

    +Class android.preference.DialogPreference +

    + + +

    + + + + + + + + +
    Added Methods +
    + + Dialog getDialog() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.Browser.html b/docs/html/sdk/api_diff/3/changes/android.provider.Browser.html new file mode 100644 index 000000000000..9a9a4b80ef09 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.provider.Browser.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.provider.Browser + + + + + + + + + + +
    +
    +
    +

    +Class android.provider.Browser +

    + + + +

    + + + + + + + + +
    Added Fields +
    + + String EXTRA_APPLICATION_ID +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.Contacts.Intents.Insert.html b/docs/html/sdk/api_diff/3/changes/android.provider.Contacts.Intents.Insert.html new file mode 100644 index 000000000000..32541826a888 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.provider.Contacts.Intents.Insert.html @@ -0,0 +1,179 @@ + + + + + + + + + +android.provider.Contacts.Intents.Insert + + + + + + + + + + +
    +
    +
    +

    +Class android.provider.Contacts.Intents.Insert +

    + + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + String PHONETIC_NAME +  
    + + String SECONDARY_EMAIL +  
    + + String SECONDARY_EMAIL_TYPE +  
    + + String SECONDARY_PHONE +  
    + + String SECONDARY_PHONE_TYPE +  
    + + String TERTIARY_EMAIL +  
    + + String TERTIARY_EMAIL_TYPE +  
    + + String TERTIARY_PHONE +  
    + + String TERTIARY_PHONE_TYPE +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.Contacts.Intents.html b/docs/html/sdk/api_diff/3/changes/android.provider.Contacts.Intents.html new file mode 100644 index 000000000000..1f758333c47e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.provider.Contacts.Intents.html @@ -0,0 +1,137 @@ + + + + + + + + + +android.provider.Contacts.Intents + + + + + + + + + + +
    +
    +
    +

    +Class android.provider.Contacts.Intents +

    + + + +

    + + + + + + + + + + + + + + + + +
    Added Fields +
    + + String EXTRA_CREATE_DESCRIPTION +  
    + + String EXTRA_FORCE_CREATE +  
    + + String SHOW_OR_CREATE_CONTACT +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.Contacts.PeopleColumns.html b/docs/html/sdk/api_diff/3/changes/android.provider.Contacts.PeopleColumns.html new file mode 100644 index 000000000000..e8c0f4d6d2c7 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.provider.Contacts.PeopleColumns.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.provider.Contacts.PeopleColumns + + + + + + + + + + +
    +
    +
    +

    +Interface android.provider.Contacts.PeopleColumns +

    + + + +

    + + + + + + + + +
    Added Fields +
    + + String PHONETIC_NAME +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Audio.AlbumColumns.html b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Audio.AlbumColumns.html new file mode 100644 index 000000000000..ade1498b3082 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Audio.AlbumColumns.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.provider.MediaStore.Audio.AlbumColumns + + + + + + + + + + +
    +
    +
    +

    +Interface android.provider.MediaStore.Audio.AlbumColumns +

    + + + +

    + + + + + + + + +
    Added Fields +
    + + String NUMBER_OF_SONGS_FOR_ARTIST +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Audio.Media.html b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Audio.Media.html new file mode 100644 index 000000000000..52bae9d6f275 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Audio.Media.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.provider.MediaStore.Audio.Media + + + + + + + + + + +
    +
    +
    +

    +Class android.provider.MediaStore.Audio.Media +

    + + + +

    + + + + + + + + +
    Added Fields +
    + + String EXTRA_MAX_BYTES +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Images.Media.html b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Images.Media.html new file mode 100644 index 000000000000..b375c3f9959f --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Images.Media.html @@ -0,0 +1,125 @@ + + + + + + + + + +android.provider.MediaStore.Images.Media + + + + + + + + + + +
    +
    +
    +

    +Class android.provider.MediaStore.Images.Media +

    + + + +

    + + + + + + + + + +
    Changed Fields +
    + + String DEFAULT_SORT_ORDER +Changed in value from "name ASC" to "bucket_display_name". +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Video.VideoColumns.html b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Video.VideoColumns.html new file mode 100644 index 000000000000..43494502563f --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Video.VideoColumns.html @@ -0,0 +1,137 @@ + + + + + + + + + +android.provider.MediaStore.Video.VideoColumns + + + + + + + + + + +
    +
    +
    +

    +Interface android.provider.MediaStore.Video.VideoColumns +

    + + + +

    + + + + + + + + + + + + + + + + +
    Added Fields +
    + + String BOOKMARK +  
    + + String BUCKET_DISPLAY_NAME +  
    + + String BUCKET_ID +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Video.html b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Video.html new file mode 100644 index 000000000000..60437625988c --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Video.html @@ -0,0 +1,125 @@ + + + + + + + + + +android.provider.MediaStore.Video + + + + + + + + + + +
    +
    +
    +

    +Class android.provider.MediaStore.Video +

    + + + +

    + + + + + + + + + +
    Changed Fields +
    + + String DEFAULT_SORT_ORDER +Changed in value from "name ASC" to "_display_name". +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.html b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.html new file mode 100644 index 000000000000..0d6a4cdce690 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.html @@ -0,0 +1,207 @@ + + + + + + + + + +android.provider.MediaStore + + + + + + + + + + +
    +
    +
    +

    +Class android.provider.MediaStore +

    + + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + String ACTION_IMAGE_CAPTURE +  
    + + String ACTION_VIDEO_CAPTURE +  
    + + String EXTRA_FINISH_ON_COMPLETION +  
    + + String EXTRA_MEDIA_ALBUM +  
    + + String EXTRA_MEDIA_ARTIST +  
    + + String EXTRA_MEDIA_FOCUS +  
    + + String EXTRA_MEDIA_TITLE +  
    + + String EXTRA_OUTPUT +  
    + + String EXTRA_SCREEN_ORIENTATION +  
    + + String EXTRA_VIDEO_QUALITY +  
    + + String INTENT_ACTION_MEDIA_SEARCH +  
    + + String INTENT_ACTION_STILL_IMAGE_CAMERA +  
    + + String INTENT_ACTION_VIDEO_CAMERA +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.Settings.System.html b/docs/html/sdk/api_diff/3/changes/android.provider.Settings.System.html new file mode 100644 index 000000000000..b7ef86c6695a --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.provider.Settings.System.html @@ -0,0 +1,502 @@ + + + + + + + + + +android.provider.Settings.System + + + + + + + + + + +
    +
    +
    +

    +Class android.provider.Settings.System +

    + + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + long getLong(ContentResolver, String) +  
    + + long getLong(ContentResolver, String, long) +  
    + + boolean putLong(ContentResolver, String, long) +  
    +  + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + String ACCELEROMETER_ROTATION +  
    + + String HAPTIC_FEEDBACK_ENABLED +  
    + + String LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED +  
    + + String VOLUME_NOTIFICATION +  
    + + String WIFI_MAX_DHCP_RETRY_COUNT +  
    + + String WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS +  
    + + String WIFI_SLEEP_POLICY +  
    + + int WIFI_SLEEP_POLICY_DEFAULT +  
    + + int WIFI_SLEEP_POLICY_NEVER +  
    + + int WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Fields +
    + + String ADB_ENABLED +Now deprecated.
    +
     
    + + String ANDROID_ID +Now deprecated.
    +
     
    + + String BLUETOOTH_ON +Now deprecated.
    +
     
    + + String DATA_ROAMING +Now deprecated.
    +
     
    + + String DEVICE_PROVISIONED +Now deprecated.
    +
     
    + + String HTTP_PROXY +Now deprecated.
    +
     
    + + String INSTALL_NON_MARKET_APPS +Now deprecated.
    +
     
    + + String LOCATION_PROVIDERS_ALLOWED +Now deprecated.
    +
     
    + + String LOGGING_ID +Now deprecated.
    +
     
    + + String NETWORK_PREFERENCE +Now deprecated.
    +
     
    + + String PARENTAL_CONTROL_ENABLED +Now deprecated.
    +
     
    + + String PARENTAL_CONTROL_LAST_UPDATE +Now deprecated.
    +
     
    + + String PARENTAL_CONTROL_REDIRECT_URL +Now deprecated.
    +
     
    + + String SETTINGS_CLASSNAME +Now deprecated.
    +
     
    + + String USB_MASS_STORAGE_ENABLED +Now deprecated.
    +
     
    + + String USE_GOOGLE_MAIL +Now deprecated.
    +
     
    + + String WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON +Now deprecated.
    +
     
    + + String WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY +Now deprecated.
    +
     
    + + String WIFI_NUM_OPEN_NETWORKS_KEPT +Now deprecated.
    +
     
    + + String WIFI_ON +Now deprecated.
    +
     
    + + String WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE +Now deprecated.
    +
     
    + + String WIFI_WATCHDOG_AP_COUNT +Now deprecated.
    +
     
    + + String WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS +Now deprecated.
    +
     
    + + String WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED +Now deprecated.
    +
     
    + + String WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS +Now deprecated.
    +
     
    + + String WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT +Now deprecated.
    +
     
    + + String WIFI_WATCHDOG_MAX_AP_CHECKS +Now deprecated.
    +
     
    + + String WIFI_WATCHDOG_ON +Now deprecated.
    +
     
    + + String WIFI_WATCHDOG_PING_COUNT +Now deprecated.
    +
     
    + + String WIFI_WATCHDOG_PING_DELAY_MS +Now deprecated.
    +
     
    + + String WIFI_WATCHDOG_PING_TIMEOUT_MS +Now deprecated.
    +
     
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.Settings.html b/docs/html/sdk/api_diff/3/changes/android.provider.Settings.html new file mode 100644 index 000000000000..227b462ed957 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.provider.Settings.html @@ -0,0 +1,200 @@ + + + + + + + + + +android.provider.Settings + + + + + + + + + + +
    +
    +
    +

    +Class android.provider.Settings +

    + + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + String ACTION_AIRPLANE_MODE_SETTINGS +  
    + + String ACTION_APPLICATION_DEVELOPMENT_SETTINGS +  
    + + String ACTION_DATA_ROAMING_SETTINGS +  
    + + String ACTION_INPUT_METHOD_SETTINGS +  
    + + String ACTION_INTERNAL_STORAGE_SETTINGS +  
    + + String ACTION_MANAGE_APPLICATIONS_SETTINGS +  
    + + String ACTION_MEMORY_CARD_SETTINGS +  
    + + String ACTION_NETWORK_OPERATOR_SETTINGS +  
    + + String ACTION_QUICK_LAUNCH_SETTINGS +  
    + + String ACTION_SYNC_SETTINGS +  
    + + String ACTION_USER_DICTIONARY_SETTINGS +  
    + + String ACTION_WIFI_IP_SETTINGS +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.telephony.PhoneNumberUtils.html b/docs/html/sdk/api_diff/3/changes/android.telephony.PhoneNumberUtils.html new file mode 100644 index 000000000000..6e0b240ca75b --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.telephony.PhoneNumberUtils.html @@ -0,0 +1,138 @@ + + + + + + + + + +android.telephony.PhoneNumberUtils + + + + + + + + + + +
    +
    +
    +

    +Class android.telephony.PhoneNumberUtils +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void formatJapaneseNumber(Editable) +  
    +  + +

    + + + + + + + + +
    Added Fields +
    + + int FORMAT_JAPAN +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.telephony.TelephonyManager.html b/docs/html/sdk/api_diff/3/changes/android.telephony.TelephonyManager.html new file mode 100644 index 000000000000..aa02f5c1f3a8 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.telephony.TelephonyManager.html @@ -0,0 +1,173 @@ + + + + + + + + + +android.telephony.TelephonyManager + + + + + + + + + + +
    +
    +
    +

    +Class android.telephony.TelephonyManager +

    + + +

    + + + + + + + + +
    Added Methods +
    + + List<NeighboringCellInfo> getNeighboringCellInfo() +  
    +  + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + String ACTION_PHONE_STATE_CHANGED +  
    + + String EXTRA_INCOMING_NUMBER +  
    + + String EXTRA_STATE +  
    + + String EXTRA_STATE_IDLE +  
    + + String EXTRA_STATE_OFFHOOK +  
    + + String EXTRA_STATE_RINGING +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.telephony.gsm.SmsMessage.html b/docs/html/sdk/api_diff/3/changes/android.telephony.gsm.SmsMessage.html new file mode 100644 index 000000000000..c6069043fe40 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.telephony.gsm.SmsMessage.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.telephony.gsm.SmsMessage + + + + + + + + + + +
    +
    +
    +

    +Class android.telephony.gsm.SmsMessage +

    + + +

    + + + + + + + + +
    Added Methods +
    + + int[] calculateLength(CharSequence, boolean) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.test.ActivityInstrumentationTestCase.html b/docs/html/sdk/api_diff/3/changes/android.test.ActivityInstrumentationTestCase.html new file mode 100644 index 000000000000..c3360776828e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.test.ActivityInstrumentationTestCase.html @@ -0,0 +1,109 @@ + + + + + + + + + +android.test.ActivityInstrumentationTestCase + + + + + + + + + + +
    +
    +
    +

    +Class android.test.ActivityInstrumentationTestCase +

    +

    Now deprecated.
    + + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.test.InstrumentationTestCase.html b/docs/html/sdk/api_diff/3/changes/android.test.InstrumentationTestCase.html new file mode 100644 index 000000000000..1fb403aaabe5 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.test.InstrumentationTestCase.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.test.InstrumentationTestCase + + + + + + + + + + +
    +
    +
    +

    +Class android.test.InstrumentationTestCase +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + T launchActivityWithIntent(String, Class<T>, Intent) +  
    + + void runTestOnUiThread(Runnable) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.test.ProviderTestCase.html b/docs/html/sdk/api_diff/3/changes/android.test.ProviderTestCase.html new file mode 100644 index 000000000000..ffbee6091afe --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.test.ProviderTestCase.html @@ -0,0 +1,109 @@ + + + + + + + + + +android.test.ProviderTestCase + + + + + + + + + + +
    +
    +
    +

    +Class android.test.ProviderTestCase +

    +

    Now deprecated.
    + + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.test.TouchUtils.html b/docs/html/sdk/api_diff/3/changes/android.test.TouchUtils.html new file mode 100644 index 000000000000..75f9e5e03e2a --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.test.TouchUtils.html @@ -0,0 +1,362 @@ + + + + + + + + + +android.test.TouchUtils + + + + + + + + + + +
    +
    +
    +

    +Class android.test.TouchUtils +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + void drag(InstrumentationTestCase, float, float, float, float, int) +  
    + + void dragQuarterScreenDown(InstrumentationTestCase, Activity) +  
    + + void dragQuarterScreenUp(InstrumentationTestCase, Activity) +  
    + + int dragViewBy(InstrumentationTestCase, View, int, int, int) +  
    + + int dragViewTo(InstrumentationTestCase, View, int, int, int) +  
    + + void dragViewToBottom(ActivityInstrumentationTestCase, View, int) +  
    + + void dragViewToBottom(InstrumentationTestCase, Activity, View, int) +  
    + + void dragViewToTop(InstrumentationTestCase, View) +  
    + + void dragViewToTop(InstrumentationTestCase, View, int) +  
    + + int dragViewToX(InstrumentationTestCase, View, int, int) +  
    + + int dragViewToY(InstrumentationTestCase, View, int, int) +  
    + + void longClickView(InstrumentationTestCase, View) +  
    + + void scrollToBottom(InstrumentationTestCase, Activity, ViewGroup) +  
    + + void scrollToTop(InstrumentationTestCase, Activity, ViewGroup) +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Methods +
    + + void drag(ActivityInstrumentationTestCase, float, float, float, float, int) + +Now deprecated.
    +
     
    + + void dragQuarterScreenDown(ActivityInstrumentationTestCase) + +Now deprecated.
    +
     
    + + void dragQuarterScreenUp(ActivityInstrumentationTestCase) + +Now deprecated.
    +
     
    + + int dragViewBy(ActivityInstrumentationTestCase, View, int, int, int) + +Now deprecated.
    +
     
    + + int dragViewTo(ActivityInstrumentationTestCase, View, int, int, int) + +Now deprecated.
    +
     
    + + void dragViewToBottom(ActivityInstrumentationTestCase, View) + +Now deprecated.
    +
     
    + + void dragViewToBottom(InstrumentationTestCase, Activity, View) + +Change in signature from (ActivityInstrumentationTestCase, View, int) to (InstrumentationTestCase, Activity, View).
    +
     
    + + void dragViewToTop(ActivityInstrumentationTestCase, View) + +Now deprecated.
    +
     
    + + void dragViewToTop(ActivityInstrumentationTestCase, View, int) + +Now deprecated.
    +
     
    + + int dragViewToX(ActivityInstrumentationTestCase, View, int, int) + +Now deprecated.
    +
     
    + + int dragViewToY(ActivityInstrumentationTestCase, View, int, int) + +Now deprecated.
    +
     
    + + void longClickView(ActivityInstrumentationTestCase, View) + +Now deprecated.
    +
     
    + + void scrollToBottom(ActivityInstrumentationTestCase, ViewGroup) + +Now deprecated.
    +
     
    + + void scrollToTop(ActivityInstrumentationTestCase, ViewGroup) + +Now deprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.test.mock.MockPackageManager.html b/docs/html/sdk/api_diff/3/changes/android.test.mock.MockPackageManager.html new file mode 100644 index 000000000000..8e727f35f6b8 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.test.mock.MockPackageManager.html @@ -0,0 +1,137 @@ + + + + + + + + + +android.test.mock.MockPackageManager + + + + + + + + + + +
    +
    +
    +

    +Class android.test.mock.MockPackageManager +

    + + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + Intent getLaunchIntentForPackage(String) +  
    + + String[] getSystemSharedLibraryNames() +  
    + + boolean isSafeMode() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.test.suitebuilder.TestMethod.html b/docs/html/sdk/api_diff/3/changes/android.test.suitebuilder.TestMethod.html new file mode 100644 index 000000000000..52467f3fbb2f --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.test.suitebuilder.TestMethod.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.test.suitebuilder.TestMethod + + + + + + + + + + +
    +
    +
    +

    +Class android.test.suitebuilder.TestMethod +

    + +

    + + + + + + + + + + + + +
    Added Constructors +
    + + TestMethod(String, Class<TestCase>) +  
    + + TestMethod(TestCase) +  
    +  + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.test.suitebuilder.TestSuiteBuilder.html b/docs/html/sdk/api_diff/3/changes/android.test.suitebuilder.TestSuiteBuilder.html new file mode 100644 index 000000000000..548f473b72f5 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.test.suitebuilder.TestSuiteBuilder.html @@ -0,0 +1,126 @@ + + + + + + + + + +android.test.suitebuilder.TestSuiteBuilder + + + + + + + + + + +
    +
    +
    +

    +Class android.test.suitebuilder.TestSuiteBuilder +

    + + +

    + + + + + + + + + +
    Changed Methods +
    + + TestSuiteBuilder addRequirements(Predicate<TestMethod>) + +Change in signature from void to Predicate<TestMethod>.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.Annotation.html b/docs/html/sdk/api_diff/3/changes/android.text.Annotation.html new file mode 100644 index 000000000000..863f172ffa65 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.Annotation.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.Annotation + + + + + + + + + + +
    +
    +
    +

    +Class android.text.Annotation +

    +

    Added interface android.text.ParcelableSpan.
    + +

    + + + + + + + + +
    Added Constructors +
    + + Annotation(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.AutoText.html b/docs/html/sdk/api_diff/3/changes/android.text.AutoText.html new file mode 100644 index 000000000000..04ef46d33271 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.AutoText.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.text.AutoText + + + + + + + + + + +
    +
    +
    +

    +Class android.text.AutoText +

    + + +

    + + + + + + + + +
    Added Methods +
    + + int getSize(View) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.SpanWatcher.html b/docs/html/sdk/api_diff/3/changes/android.text.SpanWatcher.html new file mode 100644 index 000000000000..fd9943a56ff2 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.SpanWatcher.html @@ -0,0 +1,109 @@ + + + + + + + + + +android.text.SpanWatcher + + + + + + + + + + +
    +
    +
    +

    +Interface android.text.SpanWatcher +

    +

    Added interface android.text.NoCopySpan.
    + + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.Spanned.html b/docs/html/sdk/api_diff/3/changes/android.text.Spanned.html new file mode 100644 index 000000000000..1c861979d671 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.Spanned.html @@ -0,0 +1,137 @@ + + + + + + + + + +android.text.Spanned + + + + + + + + + + +
    +
    +
    +

    +Interface android.text.Spanned +

    + + + +

    + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int SPAN_COMPOSING +  
    + + int SPAN_INTERMEDIATE +  
    + + int SPAN_POINT_MARK_MASK +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.TextUtils.html b/docs/html/sdk/api_diff/3/changes/android.text.TextUtils.html new file mode 100644 index 000000000000..9fc8dae935ee --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.TextUtils.html @@ -0,0 +1,159 @@ + + + + + + + + + +android.text.TextUtils + + + + + + + + + + +
    +
    +
    +

    +Class android.text.TextUtils +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + void dumpSpans(CharSequence, Printer, String) +  
    + + int getCapsMode(CharSequence, int, int) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int CAP_MODE_CHARACTERS +  
    + + int CAP_MODE_SENTENCES +  
    + + int CAP_MODE_WORDS +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.TextWatcher.html b/docs/html/sdk/api_diff/3/changes/android.text.TextWatcher.html new file mode 100644 index 000000000000..a3856f851c10 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.TextWatcher.html @@ -0,0 +1,109 @@ + + + + + + + + + +android.text.TextWatcher + + + + + + + + + + +
    +
    +
    +

    +Interface android.text.TextWatcher +

    +

    Added interface android.text.NoCopySpan.
    + + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.ArrowKeyMovementMethod.html b/docs/html/sdk/api_diff/3/changes/android.text.method.ArrowKeyMovementMethod.html new file mode 100644 index 000000000000..6a1ce5eda080 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.ArrowKeyMovementMethod.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.text.method.ArrowKeyMovementMethod + + + + + + + + + + +
    +
    +
    +

    +Class android.text.method.ArrowKeyMovementMethod +

    + + +

    + + + + + + + + +
    Added Methods +
    + + boolean onKeyOther(TextView, Spannable, KeyEvent) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.BaseKeyListener.html b/docs/html/sdk/api_diff/3/changes/android.text.method.BaseKeyListener.html new file mode 100644 index 000000000000..b8dddc31cea3 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.BaseKeyListener.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.text.method.BaseKeyListener + + + + + + + + + + +
    +
    +
    +

    +Class android.text.method.BaseKeyListener +

    + + +

    + + + + + + + + +
    Added Methods +
    + + boolean onKeyOther(View, Editable, KeyEvent) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.DateKeyListener.html b/docs/html/sdk/api_diff/3/changes/android.text.method.DateKeyListener.html new file mode 100644 index 000000000000..d49752c259cf --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.DateKeyListener.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.text.method.DateKeyListener + + + + + + + + + + +
    +
    +
    +

    +Class android.text.method.DateKeyListener +

    + + +

    + + + + + + + + +
    Added Methods +
    + + int getInputType() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.DateTimeKeyListener.html b/docs/html/sdk/api_diff/3/changes/android.text.method.DateTimeKeyListener.html new file mode 100644 index 000000000000..82734d3833ef --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.DateTimeKeyListener.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.text.method.DateTimeKeyListener + + + + + + + + + + +
    +
    +
    +

    +Class android.text.method.DateTimeKeyListener +

    + + +

    + + + + + + + + +
    Added Methods +
    + + int getInputType() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.DialerKeyListener.html b/docs/html/sdk/api_diff/3/changes/android.text.method.DialerKeyListener.html new file mode 100644 index 000000000000..435e701ed689 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.DialerKeyListener.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.text.method.DialerKeyListener + + + + + + + + + + +
    +
    +
    +

    +Class android.text.method.DialerKeyListener +

    + + +

    + + + + + + + + +
    Added Methods +
    + + int getInputType() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.DigitsKeyListener.html b/docs/html/sdk/api_diff/3/changes/android.text.method.DigitsKeyListener.html new file mode 100644 index 000000000000..f33d5fe695bd --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.DigitsKeyListener.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.text.method.DigitsKeyListener + + + + + + + + + + +
    +
    +
    +

    +Class android.text.method.DigitsKeyListener +

    + + +

    + + + + + + + + +
    Added Methods +
    + + int getInputType() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.KeyListener.html b/docs/html/sdk/api_diff/3/changes/android.text.method.KeyListener.html new file mode 100644 index 000000000000..2b24f03c022d --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.KeyListener.html @@ -0,0 +1,137 @@ + + + + + + + + + +android.text.method.KeyListener + + + + + + + + + + +
    +
    +
    +

    +Interface android.text.method.KeyListener +

    + + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + void clearMetaKeyState(View, Editable, int) +  
    + + int getInputType() +  
    + + boolean onKeyOther(View, Editable, KeyEvent) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.MetaKeyKeyListener.html b/docs/html/sdk/api_diff/3/changes/android.text.method.MetaKeyKeyListener.html new file mode 100644 index 000000000000..ecdedc1edb85 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.MetaKeyKeyListener.html @@ -0,0 +1,186 @@ + + + + + + + + + +android.text.method.MetaKeyKeyListener + + + + + + + + + + +
    +
    +
    +

    +Class android.text.method.MetaKeyKeyListener +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + long adjustMetaAfterKeypress(long) +  
    + + long clearMetaKeyState(long, int) +  
    + + void clearMetaKeyState(View, Editable, int) +  
    + + void clearMetaKeyState(Editable, int) +  
    + + int getMetaState(long) +  
    + + int getMetaState(long, int) +  
    + + long handleKeyDown(long, int, KeyEvent) +  
    + + long handleKeyUp(long, int, KeyEvent) +  
    + + boolean isSelectingMetaTracker(CharSequence, Object) +  
    + + long resetLockedMeta(long) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.MovementMethod.html b/docs/html/sdk/api_diff/3/changes/android.text.method.MovementMethod.html new file mode 100644 index 000000000000..a86dff5fea56 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.MovementMethod.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.text.method.MovementMethod + + + + + + + + + + +
    +
    +
    +

    +Interface android.text.method.MovementMethod +

    + + +

    + + + + + + + + +
    Added Methods +
    + + boolean onKeyOther(TextView, Spannable, KeyEvent) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.MultiTapKeyListener.html b/docs/html/sdk/api_diff/3/changes/android.text.method.MultiTapKeyListener.html new file mode 100644 index 000000000000..b7c2f52694ec --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.MultiTapKeyListener.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.text.method.MultiTapKeyListener + + + + + + + + + + +
    +
    +
    +

    +Class android.text.method.MultiTapKeyListener +

    + + +

    + + + + + + + + +
    Added Methods +
    + + int getInputType() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.QwertyKeyListener.html b/docs/html/sdk/api_diff/3/changes/android.text.method.QwertyKeyListener.html new file mode 100644 index 000000000000..fff86c659b13 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.QwertyKeyListener.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.text.method.QwertyKeyListener + + + + + + + + + + +
    +
    +
    +

    +Class android.text.method.QwertyKeyListener +

    + + +

    + + + + + + + + +
    Added Methods +
    + + int getInputType() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.ScrollingMovementMethod.html b/docs/html/sdk/api_diff/3/changes/android.text.method.ScrollingMovementMethod.html new file mode 100644 index 000000000000..acf5dcd844aa --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.ScrollingMovementMethod.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.text.method.ScrollingMovementMethod + + + + + + + + + + +
    +
    +
    +

    +Class android.text.method.ScrollingMovementMethod +

    + + +

    + + + + + + + + +
    Added Methods +
    + + boolean onKeyOther(TextView, Spannable, KeyEvent) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.TextKeyListener.html b/docs/html/sdk/api_diff/3/changes/android.text.method.TextKeyListener.html new file mode 100644 index 000000000000..f905b3fe75f3 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.TextKeyListener.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.text.method.TextKeyListener + + + + + + + + + + +
    +
    +
    +

    +Class android.text.method.TextKeyListener +

    + + +

    + + + + + + + + +
    Added Methods +
    + + int getInputType() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.TimeKeyListener.html b/docs/html/sdk/api_diff/3/changes/android.text.method.TimeKeyListener.html new file mode 100644 index 000000000000..0545b2fb4266 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.TimeKeyListener.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.text.method.TimeKeyListener + + + + + + + + + + +
    +
    +
    +

    +Class android.text.method.TimeKeyListener +

    + + +

    + + + + + + + + +
    Added Methods +
    + + int getInputType() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.Touch.html b/docs/html/sdk/api_diff/3/changes/android.text.method.Touch.html new file mode 100644 index 000000000000..fd0f64a6a3c8 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.Touch.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.text.method.Touch + + + + + + + + + + +
    +
    +
    +

    +Class android.text.method.Touch +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + int getInitialScrollX(TextView, Spannable) +  
    + + int getInitialScrollY(TextView, Spannable) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.AbsoluteSizeSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.AbsoluteSizeSpan.html new file mode 100644 index 000000000000..32b1098ef891 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.AbsoluteSizeSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.AbsoluteSizeSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.AbsoluteSizeSpan +

    +

    Added interface android.text.ParcelableSpan.
    + +

    + + + + + + + + +
    Added Constructors +
    + + AbsoluteSizeSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.AlignmentSpan.Standard.html b/docs/html/sdk/api_diff/3/changes/android.text.style.AlignmentSpan.Standard.html new file mode 100644 index 000000000000..86b03d47bbfb --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.AlignmentSpan.Standard.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.AlignmentSpan.Standard + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.AlignmentSpan.Standard +

    +

    Added interface android.text.ParcelableSpan.
    + +

    + + + + + + + + +
    Added Constructors +
    + + AlignmentSpan.Standard(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.BackgroundColorSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.BackgroundColorSpan.html new file mode 100644 index 000000000000..b7705aaee5f1 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.BackgroundColorSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.BackgroundColorSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.BackgroundColorSpan +

    +

    Added interfaces android.text.ParcelableSpan, android.text.style.UpdateAppearance.
    + +

    + + + + + + + + +
    Added Constructors +
    + + BackgroundColorSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.BulletSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.BulletSpan.html new file mode 100644 index 000000000000..10f6d2aa0445 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.BulletSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.BulletSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.BulletSpan +

    +

    Added interface android.text.ParcelableSpan.
    + +

    + + + + + + + + +
    Added Constructors +
    + + BulletSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.ClickableSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.ClickableSpan.html new file mode 100644 index 000000000000..0d7fecb93a4d --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.ClickableSpan.html @@ -0,0 +1,109 @@ + + + + + + + + + +android.text.style.ClickableSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.ClickableSpan +

    +

    Added interface android.text.style.UpdateAppearance.
    + + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.DynamicDrawableSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.DynamicDrawableSpan.html new file mode 100644 index 000000000000..2bc83fa5da73 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.DynamicDrawableSpan.html @@ -0,0 +1,167 @@ + + + + + + + + + +android.text.style.DynamicDrawableSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.DynamicDrawableSpan +

    + +

    + + + + + + + + +
    Added Constructors +
    + + DynamicDrawableSpan(int) +  
    +  + +

    + + + + + + + + +
    Added Methods +
    + + int getVerticalAlignment() +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int ALIGN_BASELINE +  
    + + int ALIGN_BOTTOM +  
    + + int mVerticalAlignment +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.ForegroundColorSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.ForegroundColorSpan.html new file mode 100644 index 000000000000..fa483c002d9f --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.ForegroundColorSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.ForegroundColorSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.ForegroundColorSpan +

    +

    Added interfaces android.text.ParcelableSpan, android.text.style.UpdateAppearance.
    + +

    + + + + + + + + +
    Added Constructors +
    + + ForegroundColorSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.ImageSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.ImageSpan.html new file mode 100644 index 000000000000..459e2b7e510c --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.ImageSpan.html @@ -0,0 +1,151 @@ + + + + + + + + + +android.text.style.ImageSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.ImageSpan +

    + +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Constructors +
    + + ImageSpan(Context, Uri, int) +  
    + + ImageSpan(Context, int, int) +  
    + + ImageSpan(Bitmap, int) +  
    + + ImageSpan(Drawable, int) +  
    + + ImageSpan(Drawable, String, int) +  
    +  + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.LeadingMarginSpan.Standard.html b/docs/html/sdk/api_diff/3/changes/android.text.style.LeadingMarginSpan.Standard.html new file mode 100644 index 000000000000..922bcbc607bc --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.LeadingMarginSpan.Standard.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.LeadingMarginSpan.Standard + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.LeadingMarginSpan.Standard +

    +

    Added interface android.text.ParcelableSpan.
    + +

    + + + + + + + + +
    Added Constructors +
    + + LeadingMarginSpan.Standard(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.MaskFilterSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.MaskFilterSpan.html new file mode 100644 index 000000000000..fbd8db93560c --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.MaskFilterSpan.html @@ -0,0 +1,109 @@ + + + + + + + + + +android.text.style.MaskFilterSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.MaskFilterSpan +

    +

    Added interface android.text.style.UpdateAppearance.
    + + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.QuoteSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.QuoteSpan.html new file mode 100644 index 000000000000..334c2233552a --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.QuoteSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.QuoteSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.QuoteSpan +

    +

    Added interface android.text.ParcelableSpan.
    + +

    + + + + + + + + +
    Added Constructors +
    + + QuoteSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.RasterizerSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.RasterizerSpan.html new file mode 100644 index 000000000000..62fb6479f8f7 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.RasterizerSpan.html @@ -0,0 +1,109 @@ + + + + + + + + + +android.text.style.RasterizerSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.RasterizerSpan +

    +

    Added interface android.text.style.UpdateAppearance.
    + + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.RelativeSizeSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.RelativeSizeSpan.html new file mode 100644 index 000000000000..17d97fba524b --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.RelativeSizeSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.RelativeSizeSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.RelativeSizeSpan +

    +

    Added interface android.text.ParcelableSpan.
    + +

    + + + + + + + + +
    Added Constructors +
    + + RelativeSizeSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.ScaleXSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.ScaleXSpan.html new file mode 100644 index 000000000000..ee289f518ff2 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.ScaleXSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.ScaleXSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.ScaleXSpan +

    +

    Added interface android.text.ParcelableSpan.
    + +

    + + + + + + + + +
    Added Constructors +
    + + ScaleXSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.StrikethroughSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.StrikethroughSpan.html new file mode 100644 index 000000000000..f045b964395f --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.StrikethroughSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.StrikethroughSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.StrikethroughSpan +

    +

    Added interfaces android.text.ParcelableSpan, android.text.style.UpdateAppearance.
    + +

    + + + + + + + + +
    Added Constructors +
    + + StrikethroughSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.StyleSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.StyleSpan.html new file mode 100644 index 000000000000..fcc16080d017 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.StyleSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.StyleSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.StyleSpan +

    +

    Added interface android.text.ParcelableSpan.
    + +

    + + + + + + + + +
    Added Constructors +
    + + StyleSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.SubscriptSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.SubscriptSpan.html new file mode 100644 index 000000000000..ec3d56242b15 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.SubscriptSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.SubscriptSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.SubscriptSpan +

    +

    Added interface android.text.ParcelableSpan.
    + +

    + + + + + + + + +
    Added Constructors +
    + + SubscriptSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.SuperscriptSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.SuperscriptSpan.html new file mode 100644 index 000000000000..853be697af24 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.SuperscriptSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.SuperscriptSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.SuperscriptSpan +

    +

    Added interface android.text.ParcelableSpan.
    + +

    + + + + + + + + +
    Added Constructors +
    + + SuperscriptSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.TextAppearanceSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.TextAppearanceSpan.html new file mode 100644 index 000000000000..719e68f0ce14 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.TextAppearanceSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.TextAppearanceSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.TextAppearanceSpan +

    +

    Added interface android.text.ParcelableSpan.
    + +

    + + + + + + + + +
    Added Constructors +
    + + TextAppearanceSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.TypefaceSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.TypefaceSpan.html new file mode 100644 index 000000000000..01b74e73408e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.TypefaceSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.TypefaceSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.TypefaceSpan +

    +

    Added interface android.text.ParcelableSpan.
    + +

    + + + + + + + + +
    Added Constructors +
    + + TypefaceSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.URLSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.URLSpan.html new file mode 100644 index 000000000000..2a659a4e35c0 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.URLSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.URLSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.URLSpan +

    +

    Added interface android.text.ParcelableSpan.
    + +

    + + + + + + + + +
    Added Constructors +
    + + URLSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.UnderlineSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.UnderlineSpan.html new file mode 100644 index 000000000000..6c596a03da91 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.UnderlineSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.UnderlineSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.UnderlineSpan +

    +

    Added interfaces android.text.ParcelableSpan, android.text.style.UpdateAppearance.
    + +

    + + + + + + + + +
    Added Constructors +
    + + UnderlineSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.UpdateLayout.html b/docs/html/sdk/api_diff/3/changes/android.text.style.UpdateLayout.html new file mode 100644 index 000000000000..4cca7b433476 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.UpdateLayout.html @@ -0,0 +1,109 @@ + + + + + + + + + +android.text.style.UpdateLayout + + + + + + + + + + +
    +
    +
    +

    +Interface android.text.style.UpdateLayout +

    +

    Added interface android.text.style.UpdateAppearance.
    + + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.util.SparseIntArray.html b/docs/html/sdk/api_diff/3/changes/android.util.SparseIntArray.html new file mode 100644 index 000000000000..5657765133fd --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.util.SparseIntArray.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.util.SparseIntArray + + + + + + + + + + +
    +
    +
    +

    +Class android.util.SparseIntArray +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void removeAt(int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.util.TimeUtils.html b/docs/html/sdk/api_diff/3/changes/android.util.TimeUtils.html new file mode 100644 index 000000000000..3317fae27bb3 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.util.TimeUtils.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.util.TimeUtils + + + + + + + + + + +
    +
    +
    +

    +Class android.util.TimeUtils +

    + + +

    + + + + + + + + +
    Added Methods +
    + + String getTimeZoneDatabaseVersion() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.GestureDetector.SimpleOnGestureListener.html b/docs/html/sdk/api_diff/3/changes/android.view.GestureDetector.SimpleOnGestureListener.html new file mode 100644 index 000000000000..0e00c6047a5e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.GestureDetector.SimpleOnGestureListener.html @@ -0,0 +1,138 @@ + + + + + + + + + +android.view.GestureDetector.SimpleOnGestureListener + + + + + + + + + + +
    +
    +
    +

    +Class android.view.GestureDetector.SimpleOnGestureListener +

    +

    Added interface android.view.GestureDetector.OnDoubleTapListener.
    + + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + boolean onDoubleTap(MotionEvent) +  
    + + boolean onDoubleTapEvent(MotionEvent) +  
    + + boolean onSingleTapConfirmed(MotionEvent) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.GestureDetector.html b/docs/html/sdk/api_diff/3/changes/android.view.GestureDetector.html new file mode 100644 index 000000000000..dec5a4d9da9a --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.GestureDetector.html @@ -0,0 +1,173 @@ + + + + + + + + + +android.view.GestureDetector + + + + + + + + + + +
    +
    +
    +

    +Class android.view.GestureDetector +

    + +

    + + + + + + + + + + + + +
    Added Constructors +
    + + GestureDetector(Context, OnGestureListener) +  
    + + GestureDetector(Context, OnGestureListener, Handler) +  
    +  +

    + + + + + + + + + + + + + + +
    Changed Constructors +
    + + GestureDetector(OnGestureListener) + +Now deprecated.
    +
     
    + + GestureDetector(OnGestureListener, Handler) + +Now deprecated.
    +
     
    +  + +

    + + + + + + + + +
    Added Methods +
    + + void setOnDoubleTapListener(OnDoubleTapListener) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.Gravity.html b/docs/html/sdk/api_diff/3/changes/android.view.Gravity.html new file mode 100644 index 000000000000..1aa10d3682fb --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.Gravity.html @@ -0,0 +1,166 @@ + + + + + + + + + +android.view.Gravity + + + + + + + + + + +
    +
    +
    +

    +Class android.view.Gravity +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void applyDisplay(int, Rect, Rect) +  
    +  + +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int AXIS_CLIP +  
    + + int CLIP_HORIZONTAL +  
    + + int CLIP_VERTICAL +  
    + + int DISPLAY_CLIP_HORIZONTAL +  
    + + int DISPLAY_CLIP_VERTICAL +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.KeyCharacterMap.html b/docs/html/sdk/api_diff/3/changes/android.view.KeyCharacterMap.html new file mode 100644 index 000000000000..7a409cbe1308 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.KeyCharacterMap.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.view.KeyCharacterMap + + + + + + + + + + +
    +
    +
    +

    +Class android.view.KeyCharacterMap +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + boolean deviceHasKey(int) +  
    + + boolean[] deviceHasKeys(int[]) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.KeyEvent.html b/docs/html/sdk/api_diff/3/changes/android.view.KeyEvent.html new file mode 100644 index 000000000000..bf3ec6b22e01 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.KeyEvent.html @@ -0,0 +1,275 @@ + + + + + + + + + +android.view.KeyEvent + + + + + + + + + + +
    +
    +
    +

    +Class android.view.KeyEvent +

    + +

    + + + + + + + + + + + + +
    Added Constructors +
    + + KeyEvent(KeyEvent) +  
    + + KeyEvent(long, String, int, int) +  
    +  + +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + KeyEvent changeAction(KeyEvent, int) +  
    + + KeyEvent changeFlags(KeyEvent, int) +  
    + + KeyEvent changeTimeRepeat(KeyEvent, long, int) +  
    + + String getCharacters() +  
    + + int getMaxKeyCode() +  
    +  + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int FLAG_EDITOR_ACTION +  
    + + int FLAG_FROM_SYSTEM +  
    + + int FLAG_KEEP_TOUCH_MODE +  
    + + int FLAG_SOFT_KEYBOARD +  
    + + int KEYCODE_MEDIA_FAST_FORWARD +  
    + + int KEYCODE_MEDIA_NEXT +  
    + + int KEYCODE_MEDIA_PLAY_PAUSE +  
    + + int KEYCODE_MEDIA_PREVIOUS +  
    + + int KEYCODE_MEDIA_REWIND +  
    + + int KEYCODE_MEDIA_STOP +  
    + + int KEYCODE_MUTE +  
    +  +

    + + + + + + + + + +
    Changed Fields +
    + + int MAX_KEYCODE +Now deprecated.
    +
     
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.Menu.html b/docs/html/sdk/api_diff/3/changes/android.view.Menu.html new file mode 100644 index 000000000000..09b910a42688 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.Menu.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.view.Menu + + + + + + + + + + +
    +
    +
    +

    +Interface android.view.Menu +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + void close() +  
    + + MenuItem getItem(int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.MotionEvent.html b/docs/html/sdk/api_diff/3/changes/android.view.MotionEvent.html new file mode 100644 index 000000000000..5291df778213 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.MotionEvent.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.view.MotionEvent + + + + + + + + + + +
    +
    +
    +

    +Class android.view.MotionEvent +

    + + + +

    + + + + + + + + +
    Added Fields +
    + + int ACTION_OUTSIDE +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.OrientationListener.html b/docs/html/sdk/api_diff/3/changes/android.view.OrientationListener.html new file mode 100644 index 000000000000..ac58489da46a --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.OrientationListener.html @@ -0,0 +1,124 @@ + + + + + + + + + +android.view.OrientationListener + + + + + + + + + + +
    +
    +
    +

    +Class android.view.OrientationListener +

    +

    Now deprecated.
    + +

    + + + + + + + + +
    Added Constructors +
    + + OrientationListener(Context, int) +  
    +  + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.View.html b/docs/html/sdk/api_diff/3/changes/android.view.View.html new file mode 100644 index 000000000000..ccd58a9d2c8a --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.View.html @@ -0,0 +1,257 @@ + + + + + + + + + +android.view.View + + + + + + + + + + +
    +
    +
    +

    +Class android.view.View +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + boolean checkInputConnectionProxy(View) +  
    + + boolean dispatchKeyEventPreIme(KeyEvent) +  
    + + void getWindowVisibleDisplayFrame(Rect) +  
    + + boolean isHapticFeedbackEnabled() +  
    + + boolean isInEditMode() +  
    + + boolean onCheckIsTextEditor() +  
    + + InputConnection onCreateInputConnection(EditorInfo) +  
    + + void onFinishTemporaryDetach() +  
    + + boolean onKeyPreIme(int, KeyEvent) +  
    + + void onStartTemporaryDetach() +  
    + + boolean performHapticFeedback(int) +  
    + + boolean performHapticFeedback(int, int) +  
    + + void setHapticFeedbackEnabled(boolean) +  
    + + void setScrollContainer(boolean) +  
    +  +

    + + + + + + + + + + + + + + +
    Changed Methods +
    + + Handler getHandler() + +Change of visibility from protected to public.
    +
     
    + + void playSoundEffect(int) + +Change of visibility from protected to public.
    +
     
    +  + +

    + + + + + + + + +
    Added Fields +
    + + int HAPTIC_FEEDBACK_ENABLED +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.ViewConfiguration.html b/docs/html/sdk/api_diff/3/changes/android.view.ViewConfiguration.html new file mode 100644 index 000000000000..0bf487c289d7 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.ViewConfiguration.html @@ -0,0 +1,282 @@ + + + + + + + + + +android.view.ViewConfiguration + + + + + + + + + + +
    +
    +
    +

    +Class android.view.ViewConfiguration +

    + +

    + + + + + + + + + +
    Changed Constructors +
    + + ViewConfiguration() + +Now deprecated.
    +
     
    +  + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + ViewConfiguration get(Context) +  
    + + int getDoubleTapTimeout() +  
    + + int getScaledDoubleTapSlop() +  
    + + int getScaledEdgeSlop() +  
    + + int getScaledFadingEdgeLength() +  
    + + int getScaledMaximumDrawingCacheSize() +  
    + + int getScaledMinimumFlingVelocity() +  
    + + int getScaledScrollBarSize() +  
    + + int getScaledTouchSlop() +  
    + + int getScaledWindowTouchSlop() +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Methods +
    + + int getEdgeSlop() + +Now deprecated.
    +
     
    + + int getFadingEdgeLength() + +Now deprecated.
    +
     
    + + int getMaximumDrawingCacheSize() + +Now deprecated.
    +
     
    + + int getMinimumFlingVelocity() + +Now deprecated.
    +
     
    + + int getScrollBarSize() + +Now deprecated.
    +
     
    + + int getTouchSlop() + +Now deprecated.
    +
     
    + + int getWindowTouchSlop() + +Now deprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.ViewDebug.html b/docs/html/sdk/api_diff/3/changes/android.view.ViewDebug.html new file mode 100644 index 000000000000..17c0c8a34ebe --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.ViewDebug.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.view.ViewDebug + + + + + + + + + + +
    +
    +
    +

    +Class android.view.ViewDebug +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void dumpCapturedView(String, Object) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.ViewGroup.html b/docs/html/sdk/api_diff/3/changes/android.view.ViewGroup.html new file mode 100644 index 000000000000..589f266ff2cf --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.ViewGroup.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.view.ViewGroup + + + + + + + + + + +
    +
    +
    +

    +Class android.view.ViewGroup +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void setStaticTransformationsEnabled(boolean) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.ViewParent.html b/docs/html/sdk/api_diff/3/changes/android.view.ViewParent.html new file mode 100644 index 000000000000..536e7e95c4fd --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.ViewParent.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.view.ViewParent + + + + + + + + + + +
    +
    +
    +

    +Interface android.view.ViewParent +

    + + +

    + + + + + + + + +
    Added Methods +
    + + boolean requestChildRectangleOnScreen(View, Rect, boolean) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.ViewTreeObserver.html b/docs/html/sdk/api_diff/3/changes/android.view.ViewTreeObserver.html new file mode 100644 index 000000000000..41753a737d44 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.ViewTreeObserver.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.view.ViewTreeObserver + + + + + + + + + + +
    +
    +
    +

    +Class android.view.ViewTreeObserver +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + void addOnScrollChangedListener(OnScrollChangedListener) +  
    + + void removeOnScrollChangedListener(OnScrollChangedListener) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.Window.html b/docs/html/sdk/api_diff/3/changes/android.view.Window.html new file mode 100644 index 000000000000..d84eb2b11810 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.Window.html @@ -0,0 +1,137 @@ + + + + + + + + + +android.view.Window + + + + + + + + + + +
    +
    +
    +

    +Class android.view.Window +

    + + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + boolean hasSoftInputMode() +  
    + + void setSoftInputMode(int) +  
    + + void setWindowAnimations(int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.WindowManager.LayoutParams.html b/docs/html/sdk/api_diff/3/changes/android.view.WindowManager.LayoutParams.html new file mode 100644 index 000000000000..7304b0ea7876 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.WindowManager.LayoutParams.html @@ -0,0 +1,292 @@ + + + + + + + + + +android.view.WindowManager.LayoutParams + + + + + + + + + + +
    +
    +
    +

    +Class android.view.WindowManager.LayoutParams +

    + + +

    + + + + + + + + +
    Added Methods +
    + + boolean mayUseInputMethod(int) +  
    +  + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int FLAG_ALT_FOCUSABLE_IM +  
    + + int FLAG_WATCH_OUTSIDE_TOUCH +  
    + + int SCREEN_BRIGHTNESS_CHANGED +  
    + + int SCREEN_ORIENTATION_CHANGED +  
    + + int SOFT_INPUT_ADJUST_PAN +  
    + + int SOFT_INPUT_ADJUST_RESIZE +  
    + + int SOFT_INPUT_ADJUST_UNSPECIFIED +  
    + + int SOFT_INPUT_IS_FORWARD_NAVIGATION +  
    + + int SOFT_INPUT_MASK_ADJUST +  
    + + int SOFT_INPUT_MASK_STATE +  
    + + int SOFT_INPUT_MODE_CHANGED +  
    + + int SOFT_INPUT_STATE_ALWAYS_HIDDEN +  
    + + int SOFT_INPUT_STATE_ALWAYS_VISIBLE +  
    + + int SOFT_INPUT_STATE_HIDDEN +  
    + + int SOFT_INPUT_STATE_UNCHANGED +  
    + + int SOFT_INPUT_STATE_UNSPECIFIED +  
    + + int SOFT_INPUT_STATE_VISIBLE +  
    + + int TYPE_APPLICATION_ATTACHED_DIALOG +  
    + + int TYPE_INPUT_METHOD +  
    + + int TYPE_INPUT_METHOD_DIALOG +  
    + + float screenBrightness +  
    + + int screenOrientation +  
    + + int softInputMode +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.animation.Animation.html b/docs/html/sdk/api_diff/3/changes/android.view.animation.Animation.html new file mode 100644 index 000000000000..9cdf434cb74e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.animation.Animation.html @@ -0,0 +1,138 @@ + + + + + + + + + +android.view.animation.Animation + + + + + + + + + + +
    +
    +
    +

    +Class android.view.animation.Animation +

    +

    Added interface java.lang.Cloneable.
    + + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + long computeDurationHint() +  
    + + boolean isFillEnabled() +  
    + + void setFillEnabled(boolean) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.animation.Transformation.html b/docs/html/sdk/api_diff/3/changes/android.view.animation.Transformation.html new file mode 100644 index 000000000000..8c5cbf55cf32 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.animation.Transformation.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.view.animation.Transformation + + + + + + + + + + +
    +
    +
    +

    +Class android.view.animation.Transformation +

    + + +

    + + + + + + + + +
    Added Methods +
    + + String toShortString() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.webkit.URLUtil.html b/docs/html/sdk/api_diff/3/changes/android.webkit.URLUtil.html new file mode 100644 index 000000000000..cff874168f2d --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.webkit.URLUtil.html @@ -0,0 +1,126 @@ + + + + + + + + + +android.webkit.URLUtil + + + + + + + + + + +
    +
    +
    +

    +Class android.webkit.URLUtil +

    + + +

    + + + + + + + + + +
    Changed Methods +
    + + boolean isCookielessProxyUrl(String) + +Now deprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.webkit.UrlInterceptHandler.html b/docs/html/sdk/api_diff/3/changes/android.webkit.UrlInterceptHandler.html new file mode 100644 index 000000000000..8664bc6e18f7 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.webkit.UrlInterceptHandler.html @@ -0,0 +1,141 @@ + + + + + + + + + +android.webkit.UrlInterceptHandler + + + + + + + + + + +
    +
    +
    +

    +Interface android.webkit.UrlInterceptHandler +

    + + +

    + + + + + + + + +
    Added Methods +
    + + PluginData getPluginData(String, Map<String, String>) +  
    +  +

    + + + + + + + + + +
    Changed Methods +
    + + CacheResult service(String, Map<String, String>) + +Now deprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.webkit.UrlInterceptRegistry.html b/docs/html/sdk/api_diff/3/changes/android.webkit.UrlInterceptRegistry.html new file mode 100644 index 000000000000..09d11496ddf4 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.webkit.UrlInterceptRegistry.html @@ -0,0 +1,141 @@ + + + + + + + + + +android.webkit.UrlInterceptRegistry + + + + + + + + + + +
    +
    +
    +

    +Class android.webkit.UrlInterceptRegistry +

    + + +

    + + + + + + + + +
    Added Methods +
    + + PluginData getPluginData(String, Map<String, String>) +  
    +  +

    + + + + + + + + + +
    Changed Methods +
    + + CacheResult getSurrogate(String, Map<String, String>) + +Now deprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.webkit.WebHistoryItem.html b/docs/html/sdk/api_diff/3/changes/android.webkit.WebHistoryItem.html new file mode 100644 index 000000000000..10140196bb07 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.webkit.WebHistoryItem.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.webkit.WebHistoryItem + + + + + + + + + + +
    +
    +
    +

    +Class android.webkit.WebHistoryItem +

    + + +

    + + + + + + + + +
    Added Methods +
    + + String getOriginalUrl() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.webkit.WebSettings.html b/docs/html/sdk/api_diff/3/changes/android.webkit.WebSettings.html new file mode 100644 index 000000000000..eb421cf63ad7 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.webkit.WebSettings.html @@ -0,0 +1,186 @@ + + + + + + + + + +android.webkit.WebSettings + + + + + + + + + + +
    +
    +
    +

    +Class android.webkit.WebSettings +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + boolean getAllowFileAccess() +  
    + + boolean getBuiltInZoomControls() +  
    + + String getUserAgentString() +  
    + + void setAllowFileAccess(boolean) +  
    + + void setBuiltInZoomControls(boolean) +  
    + + void setUserAgentString(String) +  
    +  +

    + + + + + + + + + + + + + + +
    Changed Methods +
    + + int getUserAgent() + +Now deprecated.
    +
     
    + + void setUserAgent(int) + +Now deprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.webkit.WebView.html b/docs/html/sdk/api_diff/3/changes/android.webkit.WebView.html new file mode 100644 index 000000000000..cd721c8fdfff --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.webkit.WebView.html @@ -0,0 +1,193 @@ + + + + + + + + + +android.webkit.WebView + + + + + + + + + + +
    +
    +
    +

    +Class android.webkit.WebView +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + void clearMatches() +  
    + + int findAll(String) +  
    + + void findNext(boolean) +  
    + + String getOriginalUrl() +  
    + + boolean restorePicture(Bundle, File) +  
    + + boolean savePicture(Bundle, File) +  
    + + void setNetworkAvailable(boolean) +  
    +  +

    + + + + + + + + + + + + + + +
    Changed Methods +
    + + View getZoomControls() + +Now deprecated.
    +
     
    + + void onGlobalFocusChanged(View, View) + +Now deprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.AbsListView.html b/docs/html/sdk/api_diff/3/changes/android.widget.AbsListView.html new file mode 100644 index 000000000000..6d1ed3535a44 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.AbsListView.html @@ -0,0 +1,151 @@ + + + + + + + + + +android.widget.AbsListView + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.AbsListView +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + CharSequence getTextFilter() +  
    + + boolean isFastScrollEnabled() +  
    + + boolean isSmoothScrollbarEnabled() +  
    + + void setFastScrollEnabled(boolean) +  
    + + void setSmoothScrollbarEnabled(boolean) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.AbsSeekBar.html b/docs/html/sdk/api_diff/3/changes/android.widget.AbsSeekBar.html new file mode 100644 index 000000000000..128b31f182e9 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.AbsSeekBar.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.widget.AbsSeekBar + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.AbsSeekBar +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + int getKeyProgressIncrement() +  
    + + void setKeyProgressIncrement(int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.AbsoluteLayout.html b/docs/html/sdk/api_diff/3/changes/android.widget.AbsoluteLayout.html new file mode 100644 index 000000000000..77025f08c08e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.AbsoluteLayout.html @@ -0,0 +1,109 @@ + + + + + + + + + +android.widget.AbsoluteLayout + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.AbsoluteLayout +

    +

    Now deprecated.
    + + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.ArrayAdapter.html b/docs/html/sdk/api_diff/3/changes/android.widget.ArrayAdapter.html new file mode 100644 index 000000000000..0beed263f3fb --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.ArrayAdapter.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.widget.ArrayAdapter + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.ArrayAdapter +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void sort(Comparator<? super T>) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.AutoCompleteTextView.html b/docs/html/sdk/api_diff/3/changes/android.widget.AutoCompleteTextView.html new file mode 100644 index 000000000000..a6e89e41b564 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.AutoCompleteTextView.html @@ -0,0 +1,214 @@ + + + + + + + + + +android.widget.AutoCompleteTextView + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.AutoCompleteTextView +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + void clearListSelection() +  
    + + int getDropDownAnchor() +  
    + + int getDropDownWidth() +  
    + + int getListSelection() +  
    + + OnItemClickListener getOnItemClickListener() +  
    + + OnItemSelectedListener getOnItemSelectedListener() +  
    + + boolean isPerformingCompletion() +  
    + + void setDropDownAnchor(int) +  
    + + void setDropDownWidth(int) +  
    + + void setListSelection(int) +  
    +  +

    + + + + + + + + + + + + + + +
    Changed Methods +
    + + OnItemClickListener getItemClickListener() + +Now deprecated.
    +
     
    + + OnItemSelectedListener getItemSelectedListener() + +Now deprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.Chronometer.html b/docs/html/sdk/api_diff/3/changes/android.widget.Chronometer.html new file mode 100644 index 000000000000..2a82a201933a --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.Chronometer.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.widget.Chronometer + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.Chronometer +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + OnChronometerTickListener getOnChronometerTickListener() +  
    + + void setOnChronometerTickListener(OnChronometerTickListener) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.CursorAdapter.html b/docs/html/sdk/api_diff/3/changes/android.widget.CursorAdapter.html new file mode 100644 index 000000000000..0a890300efd1 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.CursorAdapter.html @@ -0,0 +1,161 @@ + + + + + + + + + +android.widget.CursorAdapter + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.CursorAdapter +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void onContentChanged() +  
    +  +

    + + + + + + + + + + + + + + + + + + + +
    Changed Methods +
    + + int getCount() + +Change from final to non-final.
    +
     
    + + Object getItem(int) + +Change from final to non-final.
    +
     
    + + long getItemId(int) + +Change from final to non-final.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.GridView.html b/docs/html/sdk/api_diff/3/changes/android.widget.GridView.html new file mode 100644 index 000000000000..86e019ba9ce0 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.GridView.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.widget.GridView + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.GridView +

    + + + +

    + + + + + + + + +
    Added Fields +
    + + int STRETCH_SPACING_UNIFORM +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.ListView.html b/docs/html/sdk/api_diff/3/changes/android.widget.ListView.html new file mode 100644 index 000000000000..ecaf3096e598 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.ListView.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.widget.ListView + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.ListView +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + void setFooterDividersEnabled(boolean) +  
    + + void setHeaderDividersEnabled(boolean) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.PopupWindow.OnDismissListener.html b/docs/html/sdk/api_diff/3/changes/android.widget.PopupWindow.OnDismissListener.html new file mode 100644 index 000000000000..2e08886708b9 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.PopupWindow.OnDismissListener.html @@ -0,0 +1,109 @@ + + + + + + + + + +android.widget.PopupWindow.OnDismissListener + + + + + + + + + + +
    +
    +
    +

    +Interface android.widget.PopupWindow.OnDismissListener +

    +

    Change of visibility from to public.
    + + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.PopupWindow.html b/docs/html/sdk/api_diff/3/changes/android.widget.PopupWindow.html new file mode 100644 index 000000000000..b3a33037a77e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.PopupWindow.html @@ -0,0 +1,243 @@ + + + + + + + + + +android.widget.PopupWindow + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.PopupWindow +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int getInputMethodMode() +  
    + + int getMaxAvailableHeight(View, int) +  
    + + boolean isAboveAnchor() +  
    + + boolean isClippingEnabled() +  
    + + boolean isOutsideTouchable() +  
    + + boolean isTouchable() +  
    + + void setClippingEnabled(boolean) +  
    + + void setInputMethodMode(int) +  
    + + void setOutsideTouchable(boolean) +  
    + + void setTouchInterceptor(OnTouchListener) +  
    + + void setTouchable(boolean) +  
    + + void setWindowLayoutMode(int, int) +  
    + + void update() +  
    + + void update(int, int, int, int, boolean) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int INPUT_METHOD_FROM_FOCUSABLE +  
    + + int INPUT_METHOD_NEEDED +  
    + + int INPUT_METHOD_NOT_NEEDED +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.ProgressBar.html b/docs/html/sdk/api_diff/3/changes/android.widget.ProgressBar.html new file mode 100644 index 000000000000..eea94f2b5e04 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.ProgressBar.html @@ -0,0 +1,136 @@ + + + + + + + + + +android.widget.ProgressBar + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.ProgressBar +

    + + +

    + + + + + + + + + + + + + + +
    Changed Methods +
    + + void onRestoreInstanceState(Parcelable) + +Method was inherited from android.view.View, but is now defined locally. Change of visibility from protected to public.
    +
     
    + + Parcelable onSaveInstanceState() + +Method was inherited from android.view.View, but is now defined locally. Change of visibility from protected to public.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.RemoteViews.ActionException.html b/docs/html/sdk/api_diff/3/changes/android.widget.RemoteViews.ActionException.html new file mode 100644 index 000000000000..c2f5c9623291 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.RemoteViews.ActionException.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.widget.RemoteViews.ActionException + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.RemoteViews.ActionException +

    + +

    + + + + + + + + +
    Added Constructors +
    + + RemoteViews.ActionException(Exception) +  
    +  + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.RemoteViews.html b/docs/html/sdk/api_diff/3/changes/android.widget.RemoteViews.html new file mode 100644 index 000000000000..ef8eb0826080 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.RemoteViews.html @@ -0,0 +1,221 @@ + + + + + + + + + +android.widget.RemoteViews + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.RemoteViews +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + void setBitmap(int, String, Bitmap) +  
    + + void setBoolean(int, String, boolean) +  
    + + void setByte(int, String, byte) +  
    + + void setChar(int, String, char) +  
    + + void setCharSequence(int, String, CharSequence) +  
    + + void setDouble(int, String, double) +  
    + + void setFloat(int, String, float) +  
    + + void setImageViewBitmap(int, Bitmap) +  
    + + void setInt(int, String, int) +  
    + + void setLong(int, String, long) +  
    + + void setOnClickPendingIntent(int, PendingIntent) +  
    + + void setShort(int, String, short) +  
    + + void setString(int, String, String) +  
    + + void setTextColor(int, int) +  
    + + void setUri(int, String, Uri) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.ResourceCursorAdapter.html b/docs/html/sdk/api_diff/3/changes/android.widget.ResourceCursorAdapter.html new file mode 100644 index 000000000000..cee8f59b3d29 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.ResourceCursorAdapter.html @@ -0,0 +1,138 @@ + + + + + + + + + +android.widget.ResourceCursorAdapter + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.ResourceCursorAdapter +

    + +

    + + + + + + + + +
    Added Constructors +
    + + ResourceCursorAdapter(Context, int, Cursor, boolean) +  
    +  + +

    + + + + + + + + +
    Added Methods +
    + + void setViewResource(int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.Scroller.html b/docs/html/sdk/api_diff/3/changes/android.widget.Scroller.html new file mode 100644 index 000000000000..e5b524df6658 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.Scroller.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.widget.Scroller + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.Scroller +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + int getStartX() +  
    + + int getStartY() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.SimpleCursorAdapter.html b/docs/html/sdk/api_diff/3/changes/android.widget.SimpleCursorAdapter.html new file mode 100644 index 000000000000..63b7b132902c --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.SimpleCursorAdapter.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.widget.SimpleCursorAdapter + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.SimpleCursorAdapter +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void changeCursorAndColumns(Cursor, String[], int[]) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.TextView.html b/docs/html/sdk/api_diff/3/changes/android.widget.TextView.html new file mode 100644 index 000000000000..42ecdc9f58fa --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.TextView.html @@ -0,0 +1,333 @@ + + + + + + + + + +android.widget.TextView + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.TextView +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + void beginBatchEdit() +  
    + + boolean bringPointIntoView(int) +  
    + + void clearComposingText() +  
    + + boolean didTouchFocusSelect() +  
    + + void endBatchEdit() +  
    + + boolean extractText(ExtractedTextRequest, ExtractedText) +  
    + + Editable getEditableText() +  
    + + int getImeActionId() +  
    + + CharSequence getImeActionLabel() +  
    + + int getImeOptions() +  
    + + Bundle getInputExtras(boolean) +  
    + + int getInputType() +  
    + + String getPrivateImeOptions() +  
    + + boolean isInputMethodTarget() +  
    + + boolean moveCursorToVisibleOffset() +  
    + + void onBeginBatchEdit() +  
    + + void onCommitCompletion(CompletionInfo) +  
    + + void onEditorAction(int) +  
    + + void onEndBatchEdit() +  
    + + boolean onPrivateIMECommand(String, Bundle) +  
    + + void onSelectionChanged(int, int) +  
    + + boolean onTextContextMenuItem(int) +  
    + + void setCompoundDrawablesWithIntrinsicBounds(int, int, int, int) +  
    + + void setExtractedText(ExtractedText) +  
    + + void setImeActionLabel(CharSequence, int) +  
    + + void setImeOptions(int) +  
    + + void setInputExtras(int) +  
    + + void setInputType(int) +  
    + + void setOnEditorActionListener(OnEditorActionListener) +  
    + + void setPrivateImeOptions(String) +  
    + + void setRawInputType(int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/changes-summary.html b/docs/html/sdk/api_diff/3/changes/changes-summary.html new file mode 100644 index 000000000000..bf52a9658076 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/changes-summary.html @@ -0,0 +1,451 @@ + + + + + + + + + +Android API Differences Report + + + + + + + + + + +
    +
    +
    +
    +

    Android API Differences Report

    +

    This report details the changes in the core Android framework API between two API Level +specifications. It shows additions, modifications, and removals for packages, classes, methods, and fields. +The report also includes general statistics that characterize the extent and type of the differences.

    +

    This report is based a comparison of the Android API specifications +whose API Level identifiers are given in the upper-right corner of this page. It compares a +newer "to" API to an older "from" API, noting all changes relative to the +older API. So, for example, API elements marked as removed are no longer present in the "to" +API specification.

    +

    To navigate the report, use the "Select a Diffs Index" and "Filter the Index" +controls on the left. The report uses text formatting to indicate interface names, +links to reference documentation, and links to change +description. The statistics are accessible from the "Statistics" link in the upper-right corner.

    +

    For more information about the Android framework API and SDK, +see the Android Developers site.

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Packages +
    + + android.appwidget +  
    + + android.inputmethodservice +  
    + + android.speech +  
    + + android.text.format +  
    + + android.view.inputmethod +  
    + + java.beans +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Packages +
    + + android +  
    + + android.app +  
    + + android.content +  
    + + android.content.pm +  
    + + android.content.res +  
    + + android.database +  
    + + android.database.sqlite +  
    + + android.graphics +  
    + + android.graphics.drawable +  
    + + android.graphics.drawable.shapes +  
    + + android.hardware +  
    + + android.location +  
    + + android.media +  
    + + android.net +  
    + + android.net.wifi +  
    + + android.opengl +  
    + + android.os +  
    + + android.preference +  
    + + android.provider +  
    + + android.telephony +  
    + + android.telephony.gsm +  
    + + android.test +  
    + + android.test.mock +  
    + + android.test.suitebuilder +  
    + + android.text +  
    + + android.text.method +  
    + + android.text.style +  
    + + android.util +  
    + + android.view +  
    + + android.view.animation +  
    + + android.webkit +  
    + + android.widget +  
    + + dalvik.system +  
    + + java.lang +  
    + + java.lang.reflect +  
    + + java.net +  
    + + java.util +  
    + + java.util.jar +  
    + + java.util.logging +  
    +  + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/classes_index_additions.html b/docs/html/sdk/api_diff/3/changes/classes_index_additions.html new file mode 100644 index 000000000000..32a68e3117fd --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/classes_index_additions.html @@ -0,0 +1,469 @@ + + + + + + + + + +Class Additions Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Classes +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + +
    A  +C +D +G +H +I +J +L +M +N +O +P +R +S +T +U +V + TOP +

    +ActivityInstrumentationTestCase2
    +ActivityManager.RunningAppProcessInfo
    +AlphabetIndexer
    +AssetFileDescriptor.AutoCloseInputStream
    +AssetFileDescriptor.AutoCloseOutputStream
    +AsyncTask
    +AsyncTask.Status
    +AudioFormat
    +AudioRecord
    +AudioRecord.OnRecordPositionUpdateListener
    +AudioTrack
    +AudioTrack.OnPlaybackPositionUpdateListener
    + +
    C  +A +D +G +H +I +J +L +M +N +O +P +R +S +T +U +V + TOP +

    +Chronometer.OnChronometerTickListener
    +ConfigurationInfo
    + +
    D  +A +C +G +H +I +J +L +M +N +O +P +R +S +T +U +V + TOP +

    +DexClassLoader
    + +
    G  +A +C +D +H +I +J +L +M +N +O +P +R +S +T +U +V + TOP +

    +GeomagneticField
    +GestureDetector.OnDoubleTapListener
    +GLSurfaceView
    +GLSurfaceView.EGLConfigChooser
    +GLSurfaceView.GLWrapper
    +GLSurfaceView.Renderer
    +GpsSatellite
    +GpsStatus
    +GpsStatus.Listener
    + +
    H  +A +C +D +G +I +J +L +M +N +O +P +R +S +T +U +V + TOP +

    +Handler.Callback
    +HapticFeedbackConstants
    +HorizontalScrollView
    + +
    I  +A +C +D +G +H +J +L +M +N +O +P +R +S +T +U +V + TOP +

    +InputType
    +IntentService
    + +
    J  +A +C +D +G +H +I +L +M +N +O +P +R +S +T +U +V + TOP +

    +JetPlayer
    +JetPlayer.OnJetEventListener
    + +
    L  +A +C +D +G +H +I +J +M +N +O +P +R +S +T +U +V + TOP +

    +LauncherActivity.IconResizer
    +LauncherActivity.ListItem
    +LiveFolders
    + +
    M  +A +C +D +G +H +I +J +L +N +O +P +R +S +T +U +V + TOP +

    +MediaPlayer.OnInfoListener
    +MediaPlayer.OnVideoSizeChangedListener
    +MediaRecorder.OnErrorListener
    +MediaRecorder.OnInfoListener
    +MediaRecorder.VideoEncoder
    +MediaRecorder.VideoSource
    + +
    N  +A +C +D +G +H +I +J +L +M +O +P +R +S +T +U +V + TOP +

    +NeighboringCellInfo
    +NoCopySpan
    +NoCopySpan.Concrete
    + +
    O  +A +C +D +G +H +I +J +L +M +N +P +R +S +T +U +V + TOP +

    +OrientationEventListener
    + +
    P  +A +C +D +G +H +I +J +L +M +N +O +R +S +T +U +V + TOP +

    +ParcelableSpan
    +PluginData
    +PrintStreamPrinter
    +ProviderTestCase2
    + +
    R  +A +C +D +G +H +I +J +L +M +N +O +P +S +T +U +V + TOP +

    +R.bool
    +R.integer
    +ResultReceiver
    + +
    S  +A +C +D +G +H +I +J +L +M +N +O +P +R +T +U +V + TOP +

    +SectionIndexer
    +Sensor
    +SensorEvent
    +SensorEventListener
    +Settings.Secure
    +SlidingDrawer
    +SlidingDrawer.OnDrawerCloseListener
    +SlidingDrawer.OnDrawerOpenListener
    +SlidingDrawer.OnDrawerScrollListener
    + +
    T  +A +C +D +G +H +I +J +L +M +N +O +P +R +S +U +V + TOP +

    +TextView.OnEditorActionListener
    + +
    U  +A +C +D +G +H +I +J +L +M +N +O +P +R +S +T +V + TOP +

    +UpdateAppearance
    +UserDictionary
    +UserDictionary.Words
    + +
    V  +A +C +D +G +H +I +J +L +M +N +O +P +R +S +T +U + TOP +

    +ViewDebug.CapturedViewProperty
    +ViewTreeObserver.OnScrollChangedListener
    +Visibility
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/classes_index_all.html b/docs/html/sdk/api_diff/3/changes/classes_index_all.html new file mode 100644 index 000000000000..5815c29ca5a5 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/classes_index_all.html @@ -0,0 +1,963 @@ + + + + + + + + + +Class Differences Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +Classes +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + +
    A  +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +AbsListView
    +AbsoluteLayout
    +AbsoluteSizeSpan
    +AbsSeekBar
    +Activity
    +ActivityInfo
    +ActivityInstrumentationTestCase
    +ActivityInstrumentationTestCase2
    +ActivityManager
    +ActivityManager.RunningAppProcessInfo
    +AlarmManager
    +AlertDialog
    +AlignmentSpan.Standard
    +AlphabetIndexer
    +Animation
    +Annotation
    +ArrayAdapter
    +ArrowKeyMovementMethod
    +AssetFileDescriptor
    +AssetFileDescriptor.AutoCloseInputStream
    +AssetFileDescriptor.AutoCloseOutputStream
    +AsyncTask
    +AsyncTask.Status
    +AudioFormat
    +AudioManager
    +AudioRecord
    +AudioRecord.OnRecordPositionUpdateListener
    +AudioTrack
    +AudioTrack.OnPlaybackPositionUpdateListener
    +AutoCompleteTextView
    +AutoText
    + +
    B  +A +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +BackgroundColorSpan
    +BaseKeyListener
    +Binder
    +Bitmap
    +BroadcastReceiver
    +Browser
    +Build
    +BulletSpan
    + +
    C  +A +B +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +Camera
    +Canvas
    +Character.UnicodeBlock
    +Chronometer
    +Chronometer.OnChronometerTickListener
    +Class
    +ClickableSpan
    +Configuration
    +ConfigurationInfo
    +ConnectivityManager
    +Contacts.Intents
    +Contacts.Intents.Insert
    +Contacts.PeopleColumns
    +ContentProvider
    +ContentResolver
    +Context
    +Cursor
    +CursorAdapter
    +CursorWrapper
    + +
    D  +A +B +C +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +DatabaseUtils
    +Date
    +DateKeyListener
    +DateTimeKeyListener
    +Debug
    +DexClassLoader
    +DexFile
    +DialerKeyListener
    +DialogInterface
    +DialogPreference
    +DigitsKeyListener
    +Drawable
    +DynamicDrawableSpan
    + +
    E  +A +B +C +D +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +Environment
    + +
    F  +A +B +C +D +E +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +ForegroundColorSpan
    + +
    G  +A +B +C +D +E +F +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +GeomagneticField
    +GestureDetector
    +GestureDetector.OnDoubleTapListener
    +GestureDetector.SimpleOnGestureListener
    +GLSurfaceView
    +GLSurfaceView.EGLConfigChooser
    +GLSurfaceView.GLWrapper
    +GLSurfaceView.Renderer
    +GpsSatellite
    +GpsStatus
    +GpsStatus.Listener
    +Gravity
    +GridView
    + +
    H  +A +B +C +D +E +F +G +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +Handler
    +Handler.Callback
    +HapticFeedbackConstants
    +HorizontalScrollView
    + +
    I  +A +B +C +D +E +F +G +H +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +IBinder
    +ImageSpan
    +InputType
    +Instrumentation
    +InstrumentationTestCase
    +Intent
    +IntentService
    + +
    J  +A +B +C +D +E +F +G +H +I +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +JetPlayer
    +JetPlayer.OnJetEventListener
    + +
    K  +A +B +C +D +E +F +G +H +I +J +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +KeyCharacterMap
    +KeyEvent
    +KeyListener
    + +
    L  +A +B +C +D +E +F +G +H +I +J +K +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +LauncherActivity
    +LauncherActivity.IconResizer
    +LauncherActivity.ListItem
    +LeadingMarginSpan.Standard
    +Level
    +ListView
    +LiveFolders
    +Location
    +LocationManager
    +LogManager
    +Looper
    + +
    M  +A +B +C +D +E +F +G +H +I +J +K +L +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +Manifest.permission
    +MaskFilterSpan
    +MediaPlayer
    +MediaPlayer.OnInfoListener
    +MediaPlayer.OnVideoSizeChangedListener
    +MediaRecorder
    +MediaRecorder.OnErrorListener
    +MediaRecorder.OnInfoListener
    +MediaRecorder.OutputFormat
    +MediaRecorder.VideoEncoder
    +MediaRecorder.VideoSource
    +MediaStore
    +MediaStore.Audio.AlbumColumns
    +MediaStore.Audio.Media
    +MediaStore.Images.Media
    +MediaStore.Video
    +MediaStore.Video.VideoColumns
    +Menu
    +MetaKeyKeyListener
    +MockPackageManager
    +MotionEvent
    +MovementMethod
    +MultiTapKeyListener
    + +
    N  +A +B +C +D +E +F +G +H +I +J +K +L +M +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +NeighboringCellInfo
    +NetworkInfo
    +NoCopySpan
    +NoCopySpan.Concrete
    + +
    O  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +P +Q +R +S +T +U +V +W +Z + TOP +

    +OrientationEventListener
    +OrientationListener
    + +
    P  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +Q +R +S +T +U +V +W +Z + TOP +

    +Pack200.Packer
    +Pack200.Unpacker
    +PackageInfo
    +PackageManager
    +Parcel
    +ParcelableSpan
    +ParcelFileDescriptor
    +PendingIntent
    +PhoneNumberUtils
    +PluginData
    +PopupWindow
    +PopupWindow.OnDismissListener
    +PrintStreamPrinter
    +ProgressBar
    +ProviderTestCase
    +ProviderTestCase2
    +Proxy
    + +
    Q  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +R +S +T +U +V +W +Z + TOP +

    +QuoteSpan
    +QwertyKeyListener
    + +
    R  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +S +T +U +V +W +Z + TOP +

    +R.attr
    +R.bool
    +R.drawable
    +R.id
    +R.integer
    +R.string
    +R.style
    +RasterizerSpan
    +Rect
    +RectF
    +RelativeSizeSpan
    +RemoteViews
    +RemoteViews.ActionException
    +ResourceCursorAdapter
    +Resources
    +ResultReceiver
    +RingtoneManager
    +RotateDrawable
    + +
    S  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +T +U +V +W +Z + TOP +

    +ScaleDrawable
    +ScaleXSpan
    +Scroller
    +ScrollingMovementMethod
    +SectionIndexer
    +Sensor
    +SensorEvent
    +SensorEventListener
    +SensorListener
    +SensorManager
    +Settings
    +Settings.Secure
    +Settings.System
    +Shape
    +SimpleCursorAdapter
    +SlidingDrawer
    +SlidingDrawer.OnDrawerCloseListener
    +SlidingDrawer.OnDrawerOpenListener
    +SlidingDrawer.OnDrawerScrollListener
    +SmsMessage
    +Socket
    +SoundPool
    +Spanned
    +SpanWatcher
    +SparseIntArray
    +SQLiteDatabase
    +StrikethroughSpan
    +String
    +StyleSpan
    +SubscriptSpan
    +SuperscriptSpan
    + +
    T  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +U +V +W +Z + TOP +

    +TelephonyManager
    +TestMethod
    +TestSuiteBuilder
    +TextAppearanceSpan
    +TextKeyListener
    +TextUtils
    +TextView
    +TextView.OnEditorActionListener
    +TextWatcher
    +TimeKeyListener
    +TimeUtils
    +Touch
    +TouchUtils
    +Transformation
    +TransitionDrawable
    +TypedArray
    +TypefaceSpan
    + +
    U  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +V +W +Z + TOP +

    +UnderlineSpan
    +UpdateAppearance
    +UpdateLayout
    +UrlInterceptHandler
    +UrlInterceptRegistry
    +URLSpan
    +URLUtil
    +UserDictionary
    +UserDictionary.Words
    + +
    V  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +W +Z + TOP +

    +View
    +ViewConfiguration
    +ViewDebug
    +ViewDebug.CapturedViewProperty
    +ViewGroup
    +ViewParent
    +ViewTreeObserver
    +ViewTreeObserver.OnScrollChangedListener
    +Visibility
    +VMDebug
    + +
    W  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +Z + TOP +

    +WebHistoryItem
    +WebSettings
    +WebView
    +WifiManager
    +Window
    +WindowManager.LayoutParams
    + +
    Z  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W + TOP +

    +Zygote
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/classes_index_changes.html b/docs/html/sdk/api_diff/3/changes/classes_index_changes.html new file mode 100644 index 000000000000..58d4edcbc8a7 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/classes_index_changes.html @@ -0,0 +1,846 @@ + + + + + + + + + +Class Changes Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Classes +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + +
    A  +B +C +D +E +F +G +H +I +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +AbsListView
    +AbsoluteLayout
    +AbsoluteSizeSpan
    +AbsSeekBar
    +Activity
    +ActivityInfo
    +ActivityInstrumentationTestCase
    +ActivityManager
    +AlarmManager
    +AlertDialog
    +AlignmentSpan.Standard
    +Animation
    +Annotation
    +ArrayAdapter
    +ArrowKeyMovementMethod
    +AssetFileDescriptor
    +AudioManager
    +AutoCompleteTextView
    +AutoText
    + +
    B  +A +C +D +E +F +G +H +I +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +BackgroundColorSpan
    +BaseKeyListener
    +Binder
    +Bitmap
    +BroadcastReceiver
    +Browser
    +Build
    +BulletSpan
    + +
    C  +A +B +D +E +F +G +H +I +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +Camera
    +Canvas
    +Character.UnicodeBlock
    +Chronometer
    +Class
    +ClickableSpan
    +Configuration
    +ConnectivityManager
    +Contacts.Intents
    +Contacts.Intents.Insert
    +Contacts.PeopleColumns
    +ContentProvider
    +ContentResolver
    +Context
    +Cursor
    +CursorAdapter
    +CursorWrapper
    + +
    D  +A +B +C +E +F +G +H +I +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +DatabaseUtils
    +Date
    +DateKeyListener
    +DateTimeKeyListener
    +Debug
    +DexFile
    +DialerKeyListener
    +DialogInterface
    +DialogPreference
    +DigitsKeyListener
    +Drawable
    +DynamicDrawableSpan
    + +
    E  +A +B +C +D +F +G +H +I +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +Environment
    + +
    F  +A +B +C +D +E +G +H +I +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +ForegroundColorSpan
    + +
    G  +A +B +C +D +E +F +H +I +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +GestureDetector
    +GestureDetector.SimpleOnGestureListener
    +Gravity
    +GridView
    + +
    H  +A +B +C +D +E +F +G +I +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +Handler
    + +
    I  +A +B +C +D +E +F +G +H +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +IBinder
    +ImageSpan
    +Instrumentation
    +InstrumentationTestCase
    +Intent
    + +
    K  +A +B +C +D +E +F +G +H +I +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +KeyCharacterMap
    +KeyEvent
    +KeyListener
    + +
    L  +A +B +C +D +E +F +G +H +I +K +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +LauncherActivity
    +LeadingMarginSpan.Standard
    +Level
    +ListView
    +Location
    +LocationManager
    +LogManager
    +Looper
    + +
    M  +A +B +C +D +E +F +G +H +I +K +L +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +Manifest.permission
    +MaskFilterSpan
    +MediaPlayer
    +MediaRecorder
    +MediaRecorder.OutputFormat
    +MediaStore
    +MediaStore.Audio.AlbumColumns
    +MediaStore.Audio.Media
    +MediaStore.Images.Media
    +MediaStore.Video
    +MediaStore.Video.VideoColumns
    +Menu
    +MetaKeyKeyListener
    +MockPackageManager
    +MotionEvent
    +MovementMethod
    +MultiTapKeyListener
    + +
    N  +A +B +C +D +E +F +G +H +I +K +L +M +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +NetworkInfo
    + +
    O  +A +B +C +D +E +F +G +H +I +K +L +M +N +P +Q +R +S +T +U +V +W +Z + TOP +

    +OrientationListener
    + +
    P  +A +B +C +D +E +F +G +H +I +K +L +M +N +O +Q +R +S +T +U +V +W +Z + TOP +

    +Pack200.Packer
    +Pack200.Unpacker
    +PackageInfo
    +PackageManager
    +Parcel
    +ParcelFileDescriptor
    +PendingIntent
    +PhoneNumberUtils
    +PopupWindow
    +PopupWindow.OnDismissListener
    +ProgressBar
    +ProviderTestCase
    +Proxy
    + +
    Q  +A +B +C +D +E +F +G +H +I +K +L +M +N +O +P +R +S +T +U +V +W +Z + TOP +

    +QuoteSpan
    +QwertyKeyListener
    + +
    R  +A +B +C +D +E +F +G +H +I +K +L +M +N +O +P +Q +S +T +U +V +W +Z + TOP +

    +R.attr
    +R.drawable
    +R.id
    +R.string
    +R.style
    +RasterizerSpan
    +Rect
    +RectF
    +RelativeSizeSpan
    +RemoteViews
    +RemoteViews.ActionException
    +ResourceCursorAdapter
    +Resources
    +RingtoneManager
    +RotateDrawable
    + +
    S  +A +B +C +D +E +F +G +H +I +K +L +M +N +O +P +Q +R +T +U +V +W +Z + TOP +

    +ScaleDrawable
    +ScaleXSpan
    +Scroller
    +ScrollingMovementMethod
    +SensorListener
    +SensorManager
    +Settings
    +Settings.System
    +Shape
    +SimpleCursorAdapter
    +SmsMessage
    +Socket
    +SoundPool
    +Spanned
    +SpanWatcher
    +SparseIntArray
    +SQLiteDatabase
    +StrikethroughSpan
    +String
    +StyleSpan
    +SubscriptSpan
    +SuperscriptSpan
    + +
    T  +A +B +C +D +E +F +G +H +I +K +L +M +N +O +P +Q +R +S +U +V +W +Z + TOP +

    +TelephonyManager
    +TestMethod
    +TestSuiteBuilder
    +TextAppearanceSpan
    +TextKeyListener
    +TextUtils
    +TextView
    +TextWatcher
    +TimeKeyListener
    +TimeUtils
    +Touch
    +TouchUtils
    +Transformation
    +TransitionDrawable
    +TypedArray
    +TypefaceSpan
    + +
    U  +A +B +C +D +E +F +G +H +I +K +L +M +N +O +P +Q +R +S +T +V +W +Z + TOP +

    +UnderlineSpan
    +UpdateLayout
    +UrlInterceptHandler
    +UrlInterceptRegistry
    +URLSpan
    +URLUtil
    + +
    V  +A +B +C +D +E +F +G +H +I +K +L +M +N +O +P +Q +R +S +T +U +W +Z + TOP +

    +View
    +ViewConfiguration
    +ViewDebug
    +ViewGroup
    +ViewParent
    +ViewTreeObserver
    +VMDebug
    + +
    W  +A +B +C +D +E +F +G +H +I +K +L +M +N +O +P +Q +R +S +T +U +V +Z + TOP +

    +WebHistoryItem
    +WebSettings
    +WebView
    +WifiManager
    +Window
    +WindowManager.LayoutParams
    + +
    Z  +A +B +C +D +E +F +G +H +I +K +L +M +N +O +P +Q +R +S +T +U +V +W + TOP +

    +Zygote
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/classes_index_removals.html b/docs/html/sdk/api_diff/3/changes/classes_index_removals.html new file mode 100644 index 000000000000..bc5e2e821957 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/classes_index_removals.html @@ -0,0 +1,62 @@ + + + + + + + + + +Class Removals Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Classes +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/constructors_index_additions.html b/docs/html/sdk/api_diff/3/changes/constructors_index_additions.html new file mode 100644 index 000000000000..0dff7fe55a96 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/constructors_index_additions.html @@ -0,0 +1,409 @@ + + + + + + + + + +Constructor Additions Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Constructors +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + +
    A  +B +D +F +G +H +I +K +L +O +Q +R +S +T +U + TOP +

    +AbsoluteSizeSpan +(Parcel) constructor
    +AlignmentSpan.Standard +(Parcel) constructor
    +Annotation +(Parcel) constructor
    + +
    B  +A +D +F +G +H +I +K +L +O +Q +R +S +T +U + TOP +

    +BackgroundColorSpan +(Parcel) constructor
    +BulletSpan +(Parcel) constructor
    + +
    D  +A +B +F +G +H +I +K +L +O +Q +R +S +T +U + TOP +

    +DynamicDrawableSpan +(int) constructor
    + +
    F  +A +B +D +G +H +I +K +L +O +Q +R +S +T +U + TOP +

    +ForegroundColorSpan +(Parcel) constructor
    + +
    G  +A +B +D +F +H +I +K +L +O +Q +R +S +T +U + TOP +

    +GestureDetector
    +  GestureDetector +(Context, OnGestureListener) constructor
    +  GestureDetector +(Context, OnGestureListener, Handler) constructor
    + +
    H  +A +B +D +F +G +I +K +L +O +Q +R +S +T +U + TOP +

    +Handler
    +  Handler +(Callback) constructor
    +  Handler +(Looper, Callback) constructor
    + +
    I  +A +B +D +F +G +H +K +L +O +Q +R +S +T +U + TOP +

    +ImageSpan
    +  ImageSpan +(Context, Uri, int) constructor
    +  ImageSpan +(Context, int, int) constructor
    +  ImageSpan +(Bitmap, int) constructor
    +  ImageSpan +(Drawable, int) constructor
    +  ImageSpan +(Drawable, String, int) constructor
    + +
    K  +A +B +D +F +G +H +I +L +O +Q +R +S +T +U + TOP +

    +KeyEvent
    +  KeyEvent +(KeyEvent) constructor
    +  KeyEvent +(long, String, int, int) constructor
    + +
    L  +A +B +D +F +G +H +I +K +O +Q +R +S +T +U + TOP +

    +LeadingMarginSpan.Standard +(Parcel) constructor
    + +
    O  +A +B +D +F +G +H +I +K +L +Q +R +S +T +U + TOP +

    +OrientationListener +(Context, int) constructor
    + +
    Q  +A +B +D +F +G +H +I +K +L +O +R +S +T +U + TOP +

    +QuoteSpan +(Parcel) constructor
    + +
    R  +A +B +D +F +G +H +I +K +L +O +Q +S +T +U + TOP +

    +RelativeSizeSpan +(Parcel) constructor
    +RemoteViews.ActionException +(Exception) constructor
    +ResourceCursorAdapter +(Context, int, Cursor, boolean) constructor
    + +
    S  +A +B +D +F +G +H +I +K +L +O +Q +R +T +U + TOP +

    +ScaleXSpan +(Parcel) constructor
    +StrikethroughSpan +(Parcel) constructor
    +StyleSpan +(Parcel) constructor
    +SubscriptSpan +(Parcel) constructor
    +SuperscriptSpan +(Parcel) constructor
    + +
    T  +A +B +D +F +G +H +I +K +L +O +Q +R +S +U + TOP +

    +TestMethod
    +  TestMethod +(String, Class<TestCase>) constructor
    +  TestMethod +(TestCase) constructor
    +TextAppearanceSpan +(Parcel) constructor
    +TransitionDrawable +(Drawable[]) constructor
    +TypefaceSpan +(Parcel) constructor
    + +
    U  +A +B +D +F +G +H +I +K +L +O +Q +R +S +T + TOP +

    +UnderlineSpan +(Parcel) constructor
    +URLSpan +(Parcel) constructor
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/constructors_index_all.html b/docs/html/sdk/api_diff/3/changes/constructors_index_all.html new file mode 100644 index 000000000000..49ad673c48aa --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/constructors_index_all.html @@ -0,0 +1,514 @@ + + + + + + + + + +Constructor Differences Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +Constructors +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + +
    A  +B +D +F +G +H +I +K +L +N +O +Q +R +S +T +U +V + TOP +

    +AbsoluteSizeSpan +(Parcel) constructor
    +AlignmentSpan.Standard +(Parcel) constructor
    +Annotation +(Parcel) constructor
    + +
    B  +A +D +F +G +H +I +K +L +N +O +Q +R +S +T +U +V + TOP +

    +BackgroundColorSpan +(Parcel) constructor
    +BulletSpan +(Parcel) constructor
    + +
    D  +A +B +F +G +H +I +K +L +N +O +Q +R +S +T +U +V + TOP +

    +Date
    +  Date +() constructor
    +  Date +(int, int, int, int, int, int) constructor
    +DynamicDrawableSpan +(int) constructor
    + +
    F  +A +B +D +G +H +I +K +L +N +O +Q +R +S +T +U +V + TOP +

    +ForegroundColorSpan +(Parcel) constructor
    + +
    G  +A +B +D +F +H +I +K +L +N +O +Q +R +S +T +U +V + TOP +

    +GestureDetector
    +  GestureDetector +(Context, OnGestureListener) constructor
    +  GestureDetector +(Context, OnGestureListener, Handler) constructor
    +  GestureDetector +(OnGestureListener) constructor
    +  GestureDetector +(OnGestureListener, Handler) constructor
    + +
    H  +A +B +D +F +G +I +K +L +N +O +Q +R +S +T +U +V + TOP +

    +Handler
    +  Handler +(Callback) constructor
    +  Handler +(Looper, Callback) constructor
    + +
    I  +A +B +D +F +G +H +K +L +N +O +Q +R +S +T +U +V + TOP +

    +ImageSpan
    +  ImageSpan +(Context, Uri, int) constructor
    +  ImageSpan +(Context, int, int) constructor
    +  ImageSpan +(Bitmap, int) constructor
    +  ImageSpan +(Drawable, int) constructor
    +  ImageSpan +(Drawable, String, int) constructor
    + +
    K  +A +B +D +F +G +H +I +L +N +O +Q +R +S +T +U +V + TOP +

    +KeyEvent
    +  KeyEvent +(KeyEvent) constructor
    +  KeyEvent +(long, String, int, int) constructor
    + +
    L  +A +B +D +F +G +H +I +K +N +O +Q +R +S +T +U +V + TOP +

    +LeadingMarginSpan.Standard +(Parcel) constructor
    + +
    N  +A +B +D +F +G +H +I +K +L +O +Q +R +S +T +U +V + TOP +

    +NetworkInfo +(int) constructor
    + +
    O  +A +B +D +F +G +H +I +K +L +N +Q +R +S +T +U +V + TOP +

    +OrientationListener +(Context, int) constructor
    + +
    Q  +A +B +D +F +G +H +I +K +L +N +O +R +S +T +U +V + TOP +

    +QuoteSpan +(Parcel) constructor
    + +
    R  +A +B +D +F +G +H +I +K +L +N +O +Q +S +T +U +V + TOP +

    +RelativeSizeSpan +(Parcel) constructor
    +RemoteViews.ActionException +(Exception) constructor
    +ResourceCursorAdapter +(Context, int, Cursor, boolean) constructor
    + +
    S  +A +B +D +F +G +H +I +K +L +N +O +Q +R +T +U +V + TOP +

    +ScaleXSpan +(Parcel) constructor
    +Socket
    +  Socket +() constructor
    +  Socket +(String, int) constructor
    +  Socket +(String, int, InetAddress, int) constructor
    +  Socket +(Proxy) constructor
    +  Socket +(SocketImpl) constructor
    +StrikethroughSpan +(Parcel) constructor
    +String
    +  String +() constructor
    +  String +(byte[]) constructor
    +  String +(byte[], int) constructor
    +  String +(byte[], int, int) constructor
    +  String +(byte[], int, int, int) constructor
    +StyleSpan +(Parcel) constructor
    +SubscriptSpan +(Parcel) constructor
    +SuperscriptSpan +(Parcel) constructor
    + +
    T  +A +B +D +F +G +H +I +K +L +N +O +Q +R +S +U +V + TOP +

    +TestMethod
    +  TestMethod +(String, Class<TestCase>) constructor
    +  TestMethod +(TestCase) constructor
    +TextAppearanceSpan +(Parcel) constructor
    +TransitionDrawable +(Drawable[]) constructor
    +TypefaceSpan +(Parcel) constructor
    + +
    U  +A +B +D +F +G +H +I +K +L +N +O +Q +R +S +T +V + TOP +

    +UnderlineSpan +(Parcel) constructor
    +URLSpan +(Parcel) constructor
    + +
    V  +A +B +D +F +G +H +I +K +L +N +O +Q +R +S +T +U + TOP +

    +ViewConfiguration +() constructor
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/constructors_index_changes.html b/docs/html/sdk/api_diff/3/changes/constructors_index_changes.html new file mode 100644 index 000000000000..8ea3eec7b034 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/constructors_index_changes.html @@ -0,0 +1,124 @@ + + + + + + + + + +Constructor Changes Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Constructors +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + +
    D  +G +S +V + TOP +

    +Date
    +  Date +() constructor
    +  Date +(int, int, int, int, int, int) constructor
    + +
    G  +D +S +V + TOP +

    +GestureDetector
    +  GestureDetector +(OnGestureListener) constructor
    +  GestureDetector +(OnGestureListener, Handler) constructor
    + +
    S  +D +G +V + TOP +

    +Socket
    +  Socket +() constructor
    +  Socket +(String, int) constructor
    +  Socket +(String, int, InetAddress, int) constructor
    +  Socket +(Proxy) constructor
    +  Socket +(SocketImpl) constructor
    +String
    +  String +() constructor
    +  String +(byte[]) constructor
    +  String +(byte[], int) constructor
    +  String +(byte[], int, int) constructor
    +  String +(byte[], int, int, int) constructor
    + +
    V  +D +G +S + TOP +

    +ViewConfiguration +() constructor
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/constructors_index_removals.html b/docs/html/sdk/api_diff/3/changes/constructors_index_removals.html new file mode 100644 index 000000000000..8e591c1e3fd5 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/constructors_index_removals.html @@ -0,0 +1,68 @@ + + + + + + + + + +Constructor Removals Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Constructors +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + +
    N  + TOP +

    +NetworkInfo +(int) constructor
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/dalvik.system.DexFile.html b/docs/html/sdk/api_diff/3/changes/dalvik.system.DexFile.html new file mode 100644 index 000000000000..ef3937c0a195 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/dalvik.system.DexFile.html @@ -0,0 +1,123 @@ + + + + + + + + + +dalvik.system.DexFile + + + + + + + + + + +
    +
    +
    +

    +Class dalvik.system.DexFile +

    + + +

    + + + + + + + + +
    Added Methods +
    + + DexFile loadDex(String, String, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/dalvik.system.VMDebug.html b/docs/html/sdk/api_diff/3/changes/dalvik.system.VMDebug.html new file mode 100644 index 000000000000..c7ee90942566 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/dalvik.system.VMDebug.html @@ -0,0 +1,130 @@ + + + + + + + + + +dalvik.system.VMDebug + + + + + + + + + + +
    +
    +
    +

    +Class dalvik.system.VMDebug +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + void dumpHprofData(String) +  
    + + boolean isDebuggingEnabled() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/dalvik.system.Zygote.html b/docs/html/sdk/api_diff/3/changes/dalvik.system.Zygote.html new file mode 100644 index 000000000000..d26e9e64abe2 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/dalvik.system.Zygote.html @@ -0,0 +1,187 @@ + + + + + + + + + +dalvik.system.Zygote + + + + + + + + + + +
    +
    +
    +

    +Class dalvik.system.Zygote +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + int forkAndSpecialize(int, int, int[], int, int[][]) +  
    + + int forkSystemServer(int, int, int[], int, int[][]) +  
    +  +

    + + + + + + + + + + + + + + +
    Changed Methods +
    + + int forkAndSpecialize(int, int, int[], boolean, int[][]) + +Now deprecated.
    +
     
    + + int forkSystemServer(int, int, int[], boolean, int[][]) + +Now deprecated.
    +
     
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int DEBUG_ENABLE_ASSERT +  
    + + int DEBUG_ENABLE_CHECKJNI +  
    + + int DEBUG_ENABLE_DEBUGGER +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/fields_index_additions.html b/docs/html/sdk/api_diff/3/changes/fields_index_additions.html new file mode 100644 index 000000000000..c2c3b494595c --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/fields_index_additions.html @@ -0,0 +1,1129 @@ + + + + + + + + + +Field Additions Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Fields +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + +
    A  +B +C +D +E +F +G +H +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +ACCELEROMETER_ROTATION +
    +ACTION_AIRPLANE_MODE_SETTINGS +
    +ACTION_APPLICATION_DEVELOPMENT_SETTINGS +
    +ACTION_AUDIO_BECOMING_NOISY +
    +ACTION_BACKGROUND_DATA_SETTING_CHANGED +
    +ACTION_DATA_ROAMING_SETTINGS +
    +ACTION_IMAGE_CAPTURE +
    +ACTION_INPUT_METHOD_CHANGED +
    +ACTION_INPUT_METHOD_SETTINGS +
    +ACTION_INTERNAL_STORAGE_SETTINGS +
    +ACTION_MANAGE_APPLICATIONS_SETTINGS +
    +ACTION_MEDIA_CHECKING +
    +ACTION_MEDIA_NOFS +
    +ACTION_MEMORY_CARD_SETTINGS +
    +ACTION_NETWORK_OPERATOR_SETTINGS +
    +ACTION_OUTSIDE +
    +ACTION_PACKAGE_DATA_CLEARED +
    +ACTION_PACKAGE_REPLACED +
    +ACTION_PHONE_STATE_CHANGED +
    +ACTION_QUICK_LAUNCH_SETTINGS +
    +ACTION_SEARCH_LONG_PRESS +
    +ACTION_SYNC_SETTINGS +
    +ACTION_SYSTEM_TUTORIAL +
    +ACTION_USER_DICTIONARY_SETTINGS +
    +ACTION_USER_PRESENT +
    +ACTION_VIDEO_CAPTURE +
    +ACTION_WIFI_IP_SETTINGS +
    +addToDictionary +
    +ALIGN_BASELINE +
    +ALIGN_BOTTOM +
    +allowSingleTap +
    +animateOnClick +
    +AXIS_CLIP +
    +AXIS_MINUS_X +
    +AXIS_MINUS_Y +
    +AXIS_MINUS_Z +
    +AXIS_X +
    +AXIS_Y +
    +AXIS_Z +
    + +
    B  +A +C +D +E +F +G +H +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +backgroundDimEnabled +
    +BIND_APPWIDGET +
    +BIND_INPUT_METHOD +
    +BOOKMARK +
    +bottomOffset +
    +BUCKET_DISPLAY_NAME +
    +BUCKET_ID +
    +BUTTON_NEGATIVE +
    +BUTTON_NEUTRAL +
    +BUTTON_POSITIVE +
    + +
    C  +A +B +D +E +F +G +H +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +candidatesArea +
    +candidatesTextStyleSpans +
    +CAP_MODE_CHARACTERS +
    +CAP_MODE_SENTENCES +
    +CAP_MODE_WORDS +
    +CATEGORY_INFO +
    +CLIP_HORIZONTAL +
    +CLIP_VERTICAL +
    +closeButton +
    +codes +
    +configPreferences +
    +configure +
    +content +
    +copy +
    +copyUrl +
    +CREATOR
    + in  +android.content.res.AssetFileDescriptor +
    + in  +android.graphics.RectF +
    +cut +
    + +
    D  +A +B +C +E +F +G +H +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +dark_header +
    +DEBUG_ENABLE_ASSERT +
    +DEBUG_ENABLE_CHECKJNI +
    +DEBUG_ENABLE_DEBUGGER +
    +dialog_alert_title +
    +DISPLAY +
    +DISPLAY_CLIP_HORIZONTAL +
    +DISPLAY_CLIP_VERTICAL +
    +dropDownAnchor +
    +dropDownWidth +
    + +
    E  +A +B +C +D +F +G +H +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +editorExtras +
    +EXTRA_APPLICATION_ID +
    +EXTRA_CREATE_DESCRIPTION +
    +EXTRA_DATA_REMOVED +
    +EXTRA_FINISH_ON_COMPLETION +
    +EXTRA_FORCE_CREATE +
    +EXTRA_INCOMING_NUMBER +
    +EXTRA_MAX_BYTES +
    +EXTRA_MEDIA_ALBUM +
    +EXTRA_MEDIA_ARTIST +
    +EXTRA_MEDIA_FOCUS +
    +EXTRA_MEDIA_TITLE +
    +EXTRA_OUTPUT +
    +EXTRA_REPLACING +
    +EXTRA_SCREEN_ORIENTATION +
    +EXTRA_STATE +
    +EXTRA_STATE_IDLE +
    +EXTRA_STATE_OFFHOOK +
    +EXTRA_STATE_RINGING +
    +EXTRA_VIDEO_QUALITY +
    +extractArea +
    + +
    F  +A +B +C +D +E +G +H +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +fastScrollEnabled +
    +fillEnabled +
    +FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET +
    +FLAG_ACTIVITY_NO_USER_ACTION +
    +FLAG_ACTIVITY_REORDER_TO_FRONT +
    +FLAG_ALT_FOCUSABLE_IM +
    +FLAG_EDITOR_ACTION +
    +FLAG_FROM_SYSTEM +
    +FLAG_KEEP_TOUCH_MODE +
    +FLAG_NO_HISTORY +
    +FLAG_SOFT_KEYBOARD +
    +FLAG_UPDATE_CURRENT +
    +FLAG_WATCH_OUTSIDE_TOUCH +
    +footerDividersEnabled +
    +FORMAT_JAPAN +
    +FX_KEYPRESS_DELETE +
    +FX_KEYPRESS_RETURN +
    +FX_KEYPRESS_SPACEBAR +
    +FX_KEYPRESS_STANDARD +
    + +
    G  +A +B +C +D +E +F +H +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +GET_CONFIGURATIONS +
    +GET_UNINSTALLED_PACKAGES +
    + +
    H  +A +B +C +D +E +F +G +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +handle +
    +HAPTIC_FEEDBACK_ENABLED
    + in  +android.provider.Settings.System +
    + in  +android.view.View +
    +hapticFeedbackEnabled +
    +hardKeyboardHidden +
    +HARDKEYBOARDHIDDEN_NO +
    +HARDKEYBOARDHIDDEN_UNDEFINED +
    +HARDKEYBOARDHIDDEN_YES +
    +headerDividersEnabled +
    +horizontalGap +
    + +
    I  +A +B +C +D +E +F +G +H +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +ic_btn_speak_now +
    +iconPreview +
    +imeActionId +
    +imeActionLabel +
    +imeExtractEnterAnimation +
    +imeExtractExitAnimation +
    +imeFullscreenBackground +
    +imeOptions +
    +initialLayout +
    +innerRadius +
    +INPUT_METHOD_FROM_FOCUSABLE +
    +INPUT_METHOD_NEEDED +
    +INPUT_METHOD_NOT_NEEDED +
    +INPUT_METHOD_SERVICE +
    +inputArea +
    +inputExtractEditText +
    +inputType +
    +INSTALL_FAILED_CONFLICTING_PROVIDER +
    +INTENT_ACTION_MEDIA_SEARCH +
    +INTENT_ACTION_STILL_IMAGE_CAMERA +
    +INTENT_ACTION_VIDEO_CAMERA +
    +INTERVAL_DAY +
    +INTERVAL_FIFTEEN_MINUTES +
    +INTERVAL_HALF_DAY +
    +INTERVAL_HALF_HOUR +
    +INTERVAL_HOUR +
    +isDefault +
    +isModifier +
    +isRepeatable +
    +isScrollContainer +
    +isSticky +
    + +
    K  +A +B +C +D +E +F +G +H +I +L +M +N +P +R +S +T +U +V +W + TOP +

    +KEY_LOCATION_CHANGED +
    +KEY_PROVIDER_ENABLED +
    +KEY_STATUS_CHANGED +
    +keyBackground +
    +keyboardMode +
    +keyboardView +
    +KEYCODE_MEDIA_FAST_FORWARD +
    +KEYCODE_MEDIA_NEXT +
    +KEYCODE_MEDIA_PLAY_PAUSE +
    +KEYCODE_MEDIA_PREVIOUS +
    +KEYCODE_MEDIA_REWIND +
    +KEYCODE_MEDIA_STOP +
    +KEYCODE_MUTE +
    +keyEdgeFlags +
    +keyHeight +
    +keyIcon +
    +keyLabel +
    +keyOutputText +
    +keyPreviewHeight +
    +keyPreviewLayout +
    +keyPreviewOffset +
    +keyTextColor +
    +keyTextSize +
    +keyWidth +
    + +
    L  +A +B +C +D +E +F +G +H +I +K +M +N +P +R +S +T +U +V +W + TOP +

    +labelTextSize +
    +LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED +
    + +
    M  +A +B +C +D +E +F +G +H +I +K +L +N +P +R +S +T +U +V +W + TOP +

    +MEDIA_CHECKING +
    +MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK +
    +MEDIA_INFO_BAD_INTERLEAVING +
    +MEDIA_INFO_NOT_SEEKABLE +
    +MEDIA_INFO_UNKNOWN +
    +MEDIA_INFO_VIDEO_TRACK_LAGGING +
    +MEDIA_NOFS +
    +MEDIA_RECORDER_ERROR_UNKNOWN +
    +MEDIA_RECORDER_INFO_MAX_DURATION_REACHED +
    +MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED +
    +MEDIA_RECORDER_INFO_UNKNOWN +
    +MODE_APPEND +
    +MOUNT_FORMAT_FILESYSTEMS +
    +mVerticalAlignment +
    + +
    N  +A +B +C +D +E +F +G +H +I +K +L +M +P +R +S +T +U +V +W + TOP +

    +noHistory +
    +NUMBER_OF_SONGS_FOR_ARTIST +
    + +
    P  +A +B +C +D +E +F +G +H +I +K +L +M +N +R +S +T +U +V +W + TOP +

    +paste +
    +PHONETIC_NAME
    + in  +android.provider.Contacts.Intents.Insert +
    + in  +android.provider.Contacts.PeopleColumns +
    +popupCharacters +
    +popupKeyboard +
    +popupLayout +
    +privateImeOptions +
    + +
    R  +A +B +C +D +E +F +G +H +I +K +L +M +N +P +S +T +U +V +W + TOP +

    +RAW_AMR +
    +reqFiveWayNav +
    +reqHardKeyboard +
    +reqKeyboardType +
    +reqNavigation +
    +reqTouchScreen +
    +ROUTE_BLUETOOTH_A2DP +
    +ROUTE_BLUETOOTH_SCO +
    +rowEdgeFlags +
    + +
    S  +A +B +C +D +E +F +G +H +I +K +L +M +N +P +R +T +U +V +W + TOP +

    +SCREEN_BRIGHTNESS_CHANGED +
    +SCREEN_ORIENTATION_CHANGED +
    +screenBrightness +
    +screenOrientation +
    +SECONDARY_EMAIL +
    +SECONDARY_EMAIL_TYPE +
    +SECONDARY_PHONE +
    +SECONDARY_PHONE_TYPE +
    +selectAll +
    +settingsActivity +
    +sharedUserId +
    +sharedUserLabel
    + in  +android.R.attr +
    + in  +android.content.pm.PackageInfo +
    +SHOW_OR_CREATE_CONTACT +
    +smoothScrollbar +
    +SOFT_INPUT_ADJUST_PAN +
    +SOFT_INPUT_ADJUST_RESIZE +
    +SOFT_INPUT_ADJUST_UNSPECIFIED +
    +SOFT_INPUT_IS_FORWARD_NAVIGATION +
    +SOFT_INPUT_MASK_ADJUST +
    +SOFT_INPUT_MASK_STATE +
    +SOFT_INPUT_MODE_CHANGED +
    +SOFT_INPUT_STATE_ALWAYS_HIDDEN +
    +SOFT_INPUT_STATE_ALWAYS_VISIBLE +
    +SOFT_INPUT_STATE_HIDDEN +
    +SOFT_INPUT_STATE_UNCHANGED +
    +SOFT_INPUT_STATE_UNSPECIFIED +
    +SOFT_INPUT_STATE_VISIBLE +
    +softInputMode
    + in  +android.content.pm.ActivityInfo +
    + in  +android.view.WindowManager.LayoutParams +
    +SPAN_COMPOSING +
    +SPAN_INTERMEDIATE +
    +SPAN_POINT_MARK_MASK +
    +startSelectingText +
    +state_long_pressable +
    +stopSelectingText +
    +STREAM_NOTIFICATION +
    +STRETCH_SPACING_UNIFORM +
    +switchInputMethod +
    + +
    T  +A +B +C +D +E +F +G +H +I +K +L +M +N +P +R +S +U +V +W + TOP +

    +TERTIARY_EMAIL +
    +TERTIARY_EMAIL_TYPE +
    +TERTIARY_PHONE +
    +TERTIARY_PHONE_TYPE +
    +Theme_InputMethod +
    +Theme_Light_Panel +
    +Theme_NoDisplay +
    +Theme_Panel +
    +thickness +
    +title_bar_tall +
    +topOffset +
    +TYPE_APPLICATION_ATTACHED_DIALOG +
    +TYPE_INPUT_METHOD +
    +TYPE_INPUT_METHOD_DIALOG +
    + +
    U  +A +B +C +D +E +F +G +H +I +K +L +M +N +P +R +S +T +V +W + TOP +

    +UNKNOWN_LENGTH +
    +UPDATE_DEVICE_STATS +
    +updatePeriodMillis +
    + +
    V  +A +B +C +D +E +F +G +H +I +K +L +M +N +P +R +S +T +U +W + TOP +

    +verticalCorrection +
    +verticalGap +
    +VideoView_error_text_invalid_progressive_playback +
    +voiceLanguage +
    +voiceLanguageModel +
    +voiceMaxResults +
    +voicePromptText +
    +voiceSearchMode +
    +VOLUME_NOTIFICATION +
    + +
    W  +A +B +C +D +E +F +G +H +I +K +L +M +N +P +R +S +T +U +V + TOP +

    +Widget_KeyboardView +
    +WIFI_MAX_DHCP_RETRY_COUNT +
    +WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS +
    +WIFI_MODE_FULL +
    +WIFI_MODE_SCAN_ONLY +
    +WIFI_SLEEP_POLICY +
    +WIFI_SLEEP_POLICY_DEFAULT +
    +WIFI_SLEEP_POLICY_NEVER +
    +WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED +
    +windowDisablePreview +
    +windowNoDisplay +
    +windowSoftInputMode +
    +WRITE_SECURE_SETTINGS +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/fields_index_all.html b/docs/html/sdk/api_diff/3/changes/fields_index_all.html new file mode 100644 index 000000000000..786a36005452 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/fields_index_all.html @@ -0,0 +1,1270 @@ + + + + + + + + + +Field Differences Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +Fields +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + +
    A  +B +C +D +E +F +G +H +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +ACCELEROMETER_ROTATION +
    +ACTION_AIRPLANE_MODE_SETTINGS +
    +ACTION_APPLICATION_DEVELOPMENT_SETTINGS +
    +ACTION_AUDIO_BECOMING_NOISY +
    +ACTION_BACKGROUND_DATA_SETTING_CHANGED +
    +ACTION_DATA_ROAMING_SETTINGS +
    +ACTION_IMAGE_CAPTURE +
    +ACTION_INPUT_METHOD_CHANGED +
    +ACTION_INPUT_METHOD_SETTINGS +
    +ACTION_INTERNAL_STORAGE_SETTINGS +
    +ACTION_MANAGE_APPLICATIONS_SETTINGS +
    +ACTION_MEDIA_CHECKING +
    +ACTION_MEDIA_NOFS +
    +ACTION_MEMORY_CARD_SETTINGS +
    +ACTION_NETWORK_OPERATOR_SETTINGS +
    +ACTION_OUTSIDE +
    +ACTION_PACKAGE_DATA_CLEARED +
    +ACTION_PACKAGE_REPLACED +
    +ACTION_PHONE_STATE_CHANGED +
    +ACTION_QUICK_LAUNCH_SETTINGS +
    +ACTION_SEARCH_LONG_PRESS +
    +ACTION_SYNC_SETTINGS +
    +ACTION_SYSTEM_TUTORIAL +
    +ACTION_USER_DICTIONARY_SETTINGS +
    +ACTION_USER_PRESENT +
    +ACTION_VIDEO_CAPTURE +
    +ACTION_WIFI_IP_SETTINGS +
    +ADB_ENABLED +
    +addToDictionary +
    +ALIGN_BASELINE +
    +ALIGN_BOTTOM +
    +allowSingleTap +
    +ANDROID_ID +
    +animateOnClick +
    +autoText +
    +AXIS_CLIP +
    +AXIS_MINUS_X +
    +AXIS_MINUS_Y +
    +AXIS_MINUS_Z +
    +AXIS_X +
    +AXIS_Y +
    +AXIS_Z +
    + +
    B  +A +C +D +E +F +G +H +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +backgroundDimEnabled +
    +BIND_APPWIDGET +
    +BIND_INPUT_METHOD +
    +BLUETOOTH_ON +
    +BOOKMARK +
    +bottomOffset +
    +BUCKET_DISPLAY_NAME +
    +BUCKET_ID +
    +BUTTON1 +
    +BUTTON2 +
    +BUTTON3 +
    +BUTTON_NEGATIVE +
    +BUTTON_NEUTRAL +
    +BUTTON_POSITIVE +
    + +
    C  +A +B +D +E +F +G +H +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +candidatesArea +
    +candidatesTextStyleSpans +
    +CAP_MODE_CHARACTERS +
    +CAP_MODE_SENTENCES +
    +CAP_MODE_WORDS +
    +capitalize +
    +CATEGORY_GADGET +
    +CATEGORY_INFO +
    +CLIP_HORIZONTAL +
    +CLIP_VERTICAL +
    +closeButton +
    +codes +
    +configPreferences +
    +configure +
    +content +
    +copy +
    +copyUrl +
    +CREATOR
    + in  +android.content.res.AssetFileDescriptor +
    + in  +android.graphics.RectF +
    +cut +
    + +
    D  +A +B +C +E +F +G +H +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +dark_header +
    +DATA_ROAMING +
    +DATA_X +
    +DATA_Y +
    +DATA_Z +
    +DEBUG_ENABLE_ASSERT +
    +DEBUG_ENABLE_CHECKJNI +
    +DEBUG_ENABLE_DEBUGGER +
    +DEFAULT_SORT_ORDER
    + in  +android.provider.MediaStore.Images.Media +
    + in  +android.provider.MediaStore.Video +
    +DEVICE_PROVISIONED +
    +dialog_alert_title +
    +DISPLAY +
    +DISPLAY_CLIP_HORIZONTAL +
    +DISPLAY_CLIP_VERTICAL +
    +dropDownAnchor +
    +dropDownWidth +
    + +
    E  +A +B +C +D +F +G +H +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +editable +
    +editorExtras +
    +enabled +
    +EXTRA_APPLICATION_ID +
    +EXTRA_CREATE_DESCRIPTION +
    +EXTRA_DATA_REMOVED +
    +EXTRA_FINISH_ON_COMPLETION +
    +EXTRA_FORCE_CREATE +
    +EXTRA_INCOMING_NUMBER +
    +EXTRA_MAX_BYTES +
    +EXTRA_MEDIA_ALBUM +
    +EXTRA_MEDIA_ARTIST +
    +EXTRA_MEDIA_FOCUS +
    +EXTRA_MEDIA_TITLE +
    +EXTRA_OUTPUT +
    +EXTRA_REPLACING +
    +EXTRA_SCREEN_ORIENTATION +
    +EXTRA_STATE +
    +EXTRA_STATE_IDLE +
    +EXTRA_STATE_OFFHOOK +
    +EXTRA_STATE_RINGING +
    +EXTRA_VIDEO_QUALITY +
    +extractArea +
    + +
    F  +A +B +C +D +E +G +H +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +fastScrollEnabled +
    +fillEnabled +
    +FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET +
    +FLAG_ACTIVITY_NO_USER_ACTION +
    +FLAG_ACTIVITY_REORDER_TO_FRONT +
    +FLAG_ALT_FOCUSABLE_IM +
    +FLAG_EDITOR_ACTION +
    +FLAG_FROM_SYSTEM +
    +FLAG_KEEP_TOUCH_MODE +
    +FLAG_NO_HISTORY +
    +FLAG_SOFT_KEYBOARD +
    +FLAG_UPDATE_CURRENT +
    +FLAG_WATCH_OUTSIDE_TOUCH +
    +footerDividersEnabled +
    +FORMAT_JAPAN +
    +FX_KEYPRESS_DELETE +
    +FX_KEYPRESS_RETURN +
    +FX_KEYPRESS_SPACEBAR +
    +FX_KEYPRESS_STANDARD +
    + +
    G  +A +B +C +D +E +F +H +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +GET_CONFIGURATIONS +
    +GET_UNINSTALLED_PACKAGES +
    + +
    H  +A +B +C +D +E +F +G +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +handle +
    +HAPTIC_FEEDBACK_ENABLED
    + in  +android.provider.Settings.System +
    + in  +android.view.View +
    +hapticFeedbackEnabled +
    +hardKeyboardHidden +
    +HARDKEYBOARDHIDDEN_NO +
    +HARDKEYBOARDHIDDEN_UNDEFINED +
    +HARDKEYBOARDHIDDEN_YES +
    +headerDividersEnabled +
    +horizontalGap +
    +HTTP_PROXY +
    + +
    I  +A +B +C +D +E +F +G +H +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +ic_btn_speak_now +
    +iconPreview +
    +imeActionId +
    +imeActionLabel +
    +imeExtractEnterAnimation +
    +imeExtractExitAnimation +
    +imeFullscreenBackground +
    +imeOptions +
    +initialLayout +
    +innerRadius +
    +INPUT_METHOD_FROM_FOCUSABLE +
    +INPUT_METHOD_NEEDED +
    +INPUT_METHOD_NOT_NEEDED +
    +INPUT_METHOD_SERVICE +
    +inputArea +
    +inputExtractEditText +
    +inputMethod +
    +inputType +
    +INSTALL_FAILED_CONFLICTING_PROVIDER +
    +INSTALL_NON_MARKET_APPS +
    +INTENT_ACTION_MEDIA_SEARCH +
    +INTENT_ACTION_STILL_IMAGE_CAMERA +
    +INTENT_ACTION_VIDEO_CAMERA +
    +INTERVAL_DAY +
    +INTERVAL_FIFTEEN_MINUTES +
    +INTERVAL_HALF_DAY +
    +INTERVAL_HALF_HOUR +
    +INTERVAL_HOUR +
    +isDefault +
    +isModifier +
    +isRepeatable +
    +isScrollContainer +
    +isSticky +
    + +
    K  +A +B +C +D +E +F +G +H +I +L +M +N +P +R +S +T +U +V +W + TOP +

    +KEY_LOCATION_CHANGED +
    +KEY_PROVIDER_ENABLED +
    +KEY_STATUS_CHANGED +
    +keyBackground +
    +keyboardMode +
    +keyboardView +
    +KEYCODE_MEDIA_FAST_FORWARD +
    +KEYCODE_MEDIA_NEXT +
    +KEYCODE_MEDIA_PLAY_PAUSE +
    +KEYCODE_MEDIA_PREVIOUS +
    +KEYCODE_MEDIA_REWIND +
    +KEYCODE_MEDIA_STOP +
    +KEYCODE_MUTE +
    +keyEdgeFlags +
    +keyHeight +
    +keyIcon +
    +keyLabel +
    +keyOutputText +
    +keyPreviewHeight +
    +keyPreviewLayout +
    +keyPreviewOffset +
    +keyTextColor +
    +keyTextSize +
    +keyWidth +
    + +
    L  +A +B +C +D +E +F +G +H +I +K +M +N +P +R +S +T +U +V +W + TOP +

    +labelTextSize +
    +LIGHT_NO_MOON +
    +LOCATION_PROVIDERS_ALLOWED +
    +LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED +
    +LOGGING_ID +
    + +
    M  +A +B +C +D +E +F +G +H +I +K +L +N +P +R +S +T +U +V +W + TOP +

    +MAX_KEYCODE +
    +MEDIA_CHECKING +
    +MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK +
    +MEDIA_INFO_BAD_INTERLEAVING +
    +MEDIA_INFO_NOT_SEEKABLE +
    +MEDIA_INFO_UNKNOWN +
    +MEDIA_INFO_VIDEO_TRACK_LAGGING +
    +MEDIA_NOFS +
    +MEDIA_RECORDER_ERROR_UNKNOWN +
    +MEDIA_RECORDER_INFO_MAX_DURATION_REACHED +
    +MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED +
    +MEDIA_RECORDER_INFO_UNKNOWN +
    +MODE_APPEND +
    +MOUNT_FORMAT_FILESYSTEMS +
    +mVerticalAlignment +
    + +
    N  +A +B +C +D +E +F +G +H +I +K +L +M +P +R +S +T +U +V +W + TOP +

    +NETWORK_PREFERENCE +
    +noHistory +
    +NUM_STREAMS +
    +NUMBER_OF_SONGS_FOR_ARTIST +
    +numeric +
    + +
    P  +A +B +C +D +E +F +G +H +I +K +L +M +N +R +S +T +U +V +W + TOP +

    +PARENTAL_CONTROL_ENABLED +
    +PARENTAL_CONTROL_LAST_UPDATE +
    +PARENTAL_CONTROL_REDIRECT_URL +
    +password +
    +paste +
    +phoneNumber +
    +PHONETIC_NAME
    + in  +android.provider.Contacts.Intents.Insert +
    + in  +android.provider.Contacts.PeopleColumns +
    +popupCharacters +
    +popupKeyboard +
    +popupLayout +
    +privateImeOptions +
    + +
    R  +A +B +C +D +E +F +G +H +I +K +L +M +N +P +S +T +U +V +W + TOP +

    +RAW_AMR +
    +RAW_DATA_INDEX +
    +RAW_DATA_X +
    +RAW_DATA_Y +
    +RAW_DATA_Z +
    +reqFiveWayNav +
    +reqHardKeyboard +
    +reqKeyboardType +
    +reqNavigation +
    +reqTouchScreen +
    +ROUTE_BLUETOOTH +
    +ROUTE_BLUETOOTH_A2DP +
    +ROUTE_BLUETOOTH_SCO +
    +rowEdgeFlags +
    + +
    S  +A +B +C +D +E +F +G +H +I +K +L +M +N +P +R +T +U +V +W + TOP +

    +SCREEN_BRIGHTNESS_CHANGED +
    +SCREEN_ORIENTATION_CHANGED +
    +screenBrightness +
    +screenOrientation +
    +searchButtonText +
    +SECONDARY_EMAIL +
    +SECONDARY_EMAIL_TYPE +
    +SECONDARY_PHONE +
    +SECONDARY_PHONE_TYPE +
    +selectAll +
    +SENSOR_ACCELEROMETER +
    +SENSOR_ALL +
    +SENSOR_LIGHT +
    +SENSOR_MAGNETIC_FIELD +
    +SENSOR_MAX +
    +SENSOR_MIN +
    +SENSOR_ORIENTATION +
    +SENSOR_ORIENTATION_RAW +
    +SENSOR_PROXIMITY +
    +SENSOR_TEMPERATURE +
    +SENSOR_TRICORDER +
    +SETTINGS_CLASSNAME +
    +settingsActivity +
    +sharedUserId +
    +sharedUserLabel
    + in  +android.R.attr +
    + in  +android.content.pm.PackageInfo +
    +SHOW_OR_CREATE_CONTACT +
    +singleLine +
    +smoothScrollbar +
    +SOFT_INPUT_ADJUST_PAN +
    +SOFT_INPUT_ADJUST_RESIZE +
    +SOFT_INPUT_ADJUST_UNSPECIFIED +
    +SOFT_INPUT_IS_FORWARD_NAVIGATION +
    +SOFT_INPUT_MASK_ADJUST +
    +SOFT_INPUT_MASK_STATE +
    +SOFT_INPUT_MODE_CHANGED +
    +SOFT_INPUT_STATE_ALWAYS_HIDDEN +
    +SOFT_INPUT_STATE_ALWAYS_VISIBLE +
    +SOFT_INPUT_STATE_HIDDEN +
    +SOFT_INPUT_STATE_UNCHANGED +
    +SOFT_INPUT_STATE_UNSPECIFIED +
    +SOFT_INPUT_STATE_VISIBLE +
    +softInputMode
    + in  +android.content.pm.ActivityInfo +
    + in  +android.view.WindowManager.LayoutParams +
    +SPAN_COMPOSING +
    +SPAN_INTERMEDIATE +
    +SPAN_POINT_MARK_MASK +
    +startSelectingText +
    +state_long_pressable +
    +stopSelectingText +
    +STREAM_NOTIFICATION +
    +STRETCH_SPACING_UNIFORM +
    +switchInputMethod +
    + +
    T  +A +B +C +D +E +F +G +H +I +K +L +M +N +P +R +S +U +V +W + TOP +

    +TERTIARY_EMAIL +
    +TERTIARY_EMAIL_TYPE +
    +TERTIARY_PHONE +
    +TERTIARY_PHONE_TYPE +
    +Theme_InputMethod +
    +Theme_Light_Panel +
    +Theme_NoDisplay +
    +Theme_Panel +
    +thickness +
    +title_bar_tall +
    +topOffset +
    +TYPE_APPLICATION_ATTACHED_DIALOG +
    +TYPE_INPUT_METHOD +
    +TYPE_INPUT_METHOD_DIALOG +
    + +
    U  +A +B +C +D +E +F +G +H +I +K +L +M +N +P +R +S +T +V +W + TOP +

    +UNKNOWN_LENGTH +
    +UPDATE_DEVICE_STATS +
    +updatePeriodMillis +
    +USB_MASS_STORAGE_ENABLED +
    +USE_GOOGLE_MAIL +
    + +
    V  +A +B +C +D +E +F +G +H +I +K +L +M +N +P +R +S +T +U +W + TOP +

    +verticalCorrection +
    +verticalGap +
    +VideoView_error_text_invalid_progressive_playback +
    +voiceLanguage +
    +voiceLanguageModel +
    +voiceMaxResults +
    +voicePromptText +
    +voiceSearchMode +
    +VOLUME_NOTIFICATION +
    + +
    W  +A +B +C +D +E +F +G +H +I +K +L +M +N +P +R +S +T +U +V + TOP +

    +Widget_KeyboardView +
    +WIFI_MAX_DHCP_RETRY_COUNT +
    +WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS +
    +WIFI_MODE_FULL +
    +WIFI_MODE_SCAN_ONLY +
    +WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON +
    +WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY +
    +WIFI_NUM_OPEN_NETWORKS_KEPT +
    +WIFI_ON +
    +WIFI_SLEEP_POLICY +
    +WIFI_SLEEP_POLICY_DEFAULT +
    +WIFI_SLEEP_POLICY_NEVER +
    +WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED +
    +WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE +
    +WIFI_WATCHDOG_AP_COUNT +
    +WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS +
    +WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED +
    +WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS +
    +WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT +
    +WIFI_WATCHDOG_MAX_AP_CHECKS +
    +WIFI_WATCHDOG_ON +
    +WIFI_WATCHDOG_PING_COUNT +
    +WIFI_WATCHDOG_PING_DELAY_MS +
    +WIFI_WATCHDOG_PING_TIMEOUT_MS +
    +windowDisablePreview +
    +windowNoDisplay +
    +windowSoftInputMode +
    +WRITE_SECURE_SETTINGS +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/fields_index_changes.html b/docs/html/sdk/api_diff/3/changes/fields_index_changes.html new file mode 100644 index 000000000000..3f5dd5a9b775 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/fields_index_changes.html @@ -0,0 +1,471 @@ + + + + + + + + + +Field Changes Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Fields +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + +
    A  +B +C +D +E +H +I +L +M +N +P +R +S +U +W + TOP +

    +ADB_ENABLED +
    +ANDROID_ID +
    +autoText +
    + +
    B  +A +C +D +E +H +I +L +M +N +P +R +S +U +W + TOP +

    +BLUETOOTH_ON +
    +BUTTON1 +
    +BUTTON2 +
    +BUTTON3 +
    + +
    C  +A +B +D +E +H +I +L +M +N +P +R +S +U +W + TOP +

    +capitalize +
    + +
    D  +A +B +C +E +H +I +L +M +N +P +R +S +U +W + TOP +

    +DATA_ROAMING +
    +DATA_X +
    +DATA_Y +
    +DATA_Z +
    +DEFAULT_SORT_ORDER
    + in  +android.provider.MediaStore.Images.Media +
    + in  +android.provider.MediaStore.Video +
    +DEVICE_PROVISIONED +
    + +
    E  +A +B +C +D +H +I +L +M +N +P +R +S +U +W + TOP +

    +editable +
    +enabled +
    + +
    H  +A +B +C +D +E +I +L +M +N +P +R +S +U +W + TOP +

    +HTTP_PROXY +
    + +
    I  +A +B +C +D +E +H +L +M +N +P +R +S +U +W + TOP +

    +inputMethod +
    +INSTALL_NON_MARKET_APPS +
    + +
    L  +A +B +C +D +E +H +I +M +N +P +R +S +U +W + TOP +

    +LIGHT_NO_MOON +
    +LOCATION_PROVIDERS_ALLOWED +
    +LOGGING_ID +
    + +
    M  +A +B +C +D +E +H +I +L +N +P +R +S +U +W + TOP +

    +MAX_KEYCODE +
    + +
    N  +A +B +C +D +E +H +I +L +M +P +R +S +U +W + TOP +

    +NETWORK_PREFERENCE +
    +NUM_STREAMS +
    +numeric +
    + +
    P  +A +B +C +D +E +H +I +L +M +N +R +S +U +W + TOP +

    +PARENTAL_CONTROL_ENABLED +
    +PARENTAL_CONTROL_LAST_UPDATE +
    +PARENTAL_CONTROL_REDIRECT_URL +
    +password +
    +phoneNumber +
    + +
    R  +A +B +C +D +E +H +I +L +M +N +P +S +U +W + TOP +

    +RAW_DATA_INDEX +
    +RAW_DATA_X +
    +RAW_DATA_Y +
    +RAW_DATA_Z +
    +ROUTE_BLUETOOTH +
    + +
    S  +A +B +C +D +E +H +I +L +M +N +P +R +U +W + TOP +

    +searchButtonText +
    +SENSOR_ACCELEROMETER +
    +SENSOR_ALL +
    +SENSOR_LIGHT +
    +SENSOR_MAGNETIC_FIELD +
    +SENSOR_MAX +
    +SENSOR_MIN +
    +SENSOR_ORIENTATION +
    +SENSOR_ORIENTATION_RAW +
    +SENSOR_PROXIMITY +
    +SENSOR_TEMPERATURE +
    +SENSOR_TRICORDER +
    +SETTINGS_CLASSNAME +
    +singleLine +
    + +
    U  +A +B +C +D +E +H +I +L +M +N +P +R +S +W + TOP +

    +USB_MASS_STORAGE_ENABLED +
    +USE_GOOGLE_MAIL +
    + +
    W  +A +B +C +D +E +H +I +L +M +N +P +R +S +U + TOP +

    +WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON +
    +WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY +
    +WIFI_NUM_OPEN_NETWORKS_KEPT +
    +WIFI_ON +
    +WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE +
    +WIFI_WATCHDOG_AP_COUNT +
    +WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS +
    +WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED +
    +WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS +
    +WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT +
    +WIFI_WATCHDOG_MAX_AP_CHECKS +
    +WIFI_WATCHDOG_ON +
    +WIFI_WATCHDOG_PING_COUNT +
    +WIFI_WATCHDOG_PING_DELAY_MS +
    +WIFI_WATCHDOG_PING_TIMEOUT_MS +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/fields_index_removals.html b/docs/html/sdk/api_diff/3/changes/fields_index_removals.html new file mode 100644 index 000000000000..58ad6557e1eb --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/fields_index_removals.html @@ -0,0 +1,68 @@ + + + + + + + + + +Field Removals Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Fields +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + +
    C  + TOP +

    +CATEGORY_GADGET +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/java.lang.Character.UnicodeBlock.html b/docs/html/sdk/api_diff/3/changes/java.lang.Character.UnicodeBlock.html new file mode 100644 index 000000000000..f7c9d8f64068 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/java.lang.Character.UnicodeBlock.html @@ -0,0 +1,126 @@ + + + + + + + + + +java.lang.Character.UnicodeBlock + + + + + + + + + + +
    +
    +
    +

    +Class java.lang.Character.UnicodeBlock +

    + + +

    + + + + + + + + + +
    Changed Methods +
    + + UnicodeBlock forName(String) + +Change from non-final to final.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/java.lang.Class.html b/docs/html/sdk/api_diff/3/changes/java.lang.Class.html new file mode 100644 index 000000000000..fa0b05639952 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/java.lang.Class.html @@ -0,0 +1,166 @@ + + + + + + + + + +java.lang.Class + + + + + + + + + + +
    +
    +
    +

    +Class java.lang.Class +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Methods +
    + + Class[] getClasses() + +Change in return type from Class<?> to Class[].
    +
     
    + + Constructor[] getConstructors() + +Change in return type from Constructor<T> to Constructor[].
    +
     
    + + Class[] getDeclaredClasses() + +Change in return type from Class<?> to Class[].
    +
     
    + + Constructor[] getDeclaredConstructors() + +Change in return type from Constructor<T> to Constructor[].
    +
     
    + + Class[] getInterfaces() + +Change in return type from Class<?> to Class[].
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/java.lang.String.html b/docs/html/sdk/api_diff/3/changes/java.lang.String.html new file mode 100644 index 000000000000..5c41b8cc893e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/java.lang.String.html @@ -0,0 +1,161 @@ + + + + + + + + + +java.lang.String + + + + + + + + + + +
    +
    +
    +

    +Class java.lang.String +

    + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Constructors +
    + + String() + +  
    + + String(byte[]) + +  
    + + String(byte[], int) + +  
    + + String(byte[], int, int) + +  
    + + String(byte[], int, int, int) + +  
    +  + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/java.lang.reflect.Proxy.html b/docs/html/sdk/api_diff/3/changes/java.lang.reflect.Proxy.html new file mode 100644 index 000000000000..f593c0ee8e73 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/java.lang.reflect.Proxy.html @@ -0,0 +1,126 @@ + + + + + + + + + +java.lang.reflect.Proxy + + + + + + + + + + +
    +
    +
    +

    +Class java.lang.reflect.Proxy +

    + + +

    + + + + + + + + + +
    Changed Methods +
    + + Class<?> getProxyClass(ClassLoader, Class<?>) + +Change in signature from (ClassLoader, ) to (ClassLoader, Class<?>).
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/java.net.Socket.html b/docs/html/sdk/api_diff/3/changes/java.net.Socket.html new file mode 100644 index 000000000000..6027217d619c --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/java.net.Socket.html @@ -0,0 +1,161 @@ + + + + + + + + + +java.net.Socket + + + + + + + + + + +
    +
    +
    +

    +Class java.net.Socket +

    + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Constructors +
    + + Socket() + +  
    + + Socket(String, int) + +  
    + + Socket(String, int, InetAddress, int) + +  
    + + Socket(Proxy) + +  
    + + Socket(SocketImpl) + +  
    +  + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/java.util.Date.html b/docs/html/sdk/api_diff/3/changes/java.util.Date.html new file mode 100644 index 000000000000..6a8dd2685635 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/java.util.Date.html @@ -0,0 +1,134 @@ + + + + + + + + + +java.util.Date + + + + + + + + + + +
    +
    +
    +

    +Class java.util.Date +

    + +

    + + + + + + + + + + + + + + +
    Changed Constructors +
    + + Date() + +  
    + + Date(int, int, int, int, int, int) + +  
    +  + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/java.util.jar.Pack200.Packer.html b/docs/html/sdk/api_diff/3/changes/java.util.jar.Pack200.Packer.html new file mode 100644 index 000000000000..75b4cbc4a8f8 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/java.util.jar.Pack200.Packer.html @@ -0,0 +1,130 @@ + + + + + + + + + +java.util.jar.Pack200.Packer + + + + + + + + + + +
    +
    +
    +

    +Interface java.util.jar.Pack200.Packer +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + void addPropertyChangeListener(PropertyChangeListener) +  
    + + void removePropertyChangeListener(PropertyChangeListener) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/java.util.jar.Pack200.Unpacker.html b/docs/html/sdk/api_diff/3/changes/java.util.jar.Pack200.Unpacker.html new file mode 100644 index 000000000000..382fdea8428e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/java.util.jar.Pack200.Unpacker.html @@ -0,0 +1,130 @@ + + + + + + + + + +java.util.jar.Pack200.Unpacker + + + + + + + + + + +
    +
    +
    +

    +Interface java.util.jar.Pack200.Unpacker +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + void addPropertyChangeListener(PropertyChangeListener) +  
    + + void removePropertyChangeListener(PropertyChangeListener) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/java.util.logging.Level.html b/docs/html/sdk/api_diff/3/changes/java.util.logging.Level.html new file mode 100644 index 000000000000..7f5fd19782c8 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/java.util.logging.Level.html @@ -0,0 +1,127 @@ + + + + + + + + + +java.util.logging.Level + + + + + + + + + + +
    +
    +
    +

    +Class java.util.logging.Level +

    + + +

    + + + + + + + + + +
    Changed Methods +
    + + Level parse(String) + +Change in exceptions thrown from no exceptions to java.lang.IllegalArgumentException.
    + Change from final to non-final.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/java.util.logging.LogManager.html b/docs/html/sdk/api_diff/3/changes/java.util.logging.LogManager.html new file mode 100644 index 000000000000..d259077f26d9 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/java.util.logging.LogManager.html @@ -0,0 +1,137 @@ + + + + + + + + + +java.util.logging.LogManager + + + + + + + + + + +
    +
    +
    +

    +Class java.util.logging.LogManager +

    + + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + void addPropertyChangeListener(PropertyChangeListener) +  
    + + LoggingMXBean getLoggingMXBean() +  
    + + void removePropertyChangeListener(PropertyChangeListener) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/jdiff_help.html b/docs/html/sdk/api_diff/3/changes/jdiff_help.html new file mode 100644 index 000000000000..21a59f92d526 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/jdiff_help.html @@ -0,0 +1,135 @@ + + + + + + + + + +JDiff Help + + + + + + + + + + + + + + + + + +
    Generated by
    JDiff
    +
    + +
    +

    JDiff Documentation

    +
    +
    +JDiff is a Javadoc doclet which generates a report of the API differences between two versions of a product. It does not report changes in Javadoc comments, or changes in what a class or method does. +This help page describes the different parts of the output from JDiff. +
    +
    + See the reference page in the source for JDiff for information about how to generate a report like this one. +
    +
    +The indexes shown in the top-left frame help show each type of change in more detail. The index "All Differences" contains all the differences between the APIs, in alphabetical order. +These indexes all use the same format: +
      +
    • Removed packages, classes, constructors, methods and fields are struck through.
    • +
    • Added packages, classes, constructors, methods and fields appear in bold.
    • +
    • Changed packages, classes, constructors, methods and fields appear in normal text.
    • +
    +
    +
    +You can always tell when you are reading a JDiff page, rather than a Javadoc page, by the color of the index bar and the color of the background. +Links which take you to a Javadoc page are always in a typewriter font. +Just like Javadoc, all interface names are in italic, and class names are not italicized. Where there are multiple entries in an index with the same name, the heading for them is also in italics, but is not a link. +
    +
    +

    Javadoc

    +This is a link to the top-level Javadoc page for the new version of the product. +
    +
    +

    Overview

    +The overview is the top-level summary of what was removed, added and changed between versions. +
    +
    +

    Package

    +This is a link to the package containing the current changed class or interface. +
    +
    +

    Class

    +This is highlighted when you are looking at the changed class or interface. +
    +
    +

    Text Changes

    +This is a link to the top-level index of all documentation changes for the current package or class. +If it is not present, then there are no documentation changes for the current package or class. +This link can be removed entirely by not using the -docchanges option. +
    +
    +

    Statistics

    +This is a link to a page which shows statistics about the changes between the two APIs. +This link can be removed entirely by not using the -stats option. +
    +
    +

    Help

    +A link to this Help page for JDiff. +
    +
    +

    Prev/Next

    +These links take you to the previous and next changed package or class. +
    +
    +

    Frames/No Frames

    +These links show and hide the HTML frames. All pages are available with or without frames. +
    +
    +

    Complex Changes

    +There are some complex changes which can occur between versions, for example, when two or more methods with the same name change simultaneously, or when a method or field is moved into or from a superclass. +In these cases, the change will be seen as a removal and an addition, rather than as a change. Unexpected removals or additions are often part of one of these type of changes. +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/jdiff_statistics.html b/docs/html/sdk/api_diff/3/changes/jdiff_statistics.html new file mode 100644 index 000000000000..6faea52ee8f0 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/jdiff_statistics.html @@ -0,0 +1,1284 @@ + + + + + + + + + +API Change Statistics + + + + + + + + + + +
    +
    +
    +

    API Change Statistics

    +

    +The percent change statistic reported for all elements in the "to" API Level specification is defined recursively as follows:

    +
    +Percentage difference = 100 * (added + removed + 2*changed)
    +                        -----------------------------------
    +                        sum of public elements in BOTH APIs
    +
    +

    where added is the number of packages added, removed is the number of packages removed, and changed is the number of packages changed. +This definition is applied recursively for the classes and their program elements, so the value for a changed package will be less than 1, unless every class in that package has changed. +The definition ensures that if all packages are removed and all new packages are +added, the change will be 100%. Values are rounded here, so a value of 0% indicates a percentage difference of less than 0.5%.

    +

    The overall difference between the two APIs is approximately 4%. +

    +

    Contents

    +
    Changed Packages
    Sorted by percentage difference
    +
    Changed Classes and Interfaces
    Sorted by percentage difference
    +
    Total of Differences
    Listed by number and type
    +
    + +

    Changed Packages, Sorted by Percentage Difference

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Percentage DifferencePackage
    33android.opengl
    27android.media
    24android.text.style
    22android.hardware
    22android.location
    13android.content.res
    12dalvik.system
    9android.telephony
    9android.text.method
    8android.app
    8android.test
    8android.test.suitebuilder
    7android
    7android.text
    6android.provider
    6android.view
    5android.widget
    5android.os
    4android.webkit
    3android.content.pm
    2android.util
    1android.content
    1java.util.jar
    1android.graphics.drawable.shapes
    <1android.net
    <1android.graphics.drawable
    <1java.util.logging
    <1android.test.mock
    <1java.lang.reflect
    <1android.view.animation
    <1android.net.wifi
    <1android.telephony.gsm
    <1java.net
    <1android.database
    <1android.graphics
    <1java.lang
    <1android.database.sqlite
    <1android.preference
    <1java.util
    +
    + +

    Changed Classes and Interfaces, Sorted by Percentage Difference

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Percentage
    Difference
    Class or Interface
    84 +android.test.TouchUtils
    81 +dalvik.system.Zygote
    66 +android.webkit.UrlInterceptHandler
    61 +android.provider.MediaStore
    53 +android.view.GestureDetector
    50 +android.app.LauncherActivity
    50 +android.text.style.AlignmentSpan.Standard
    50 +android.text.style.StrikethroughSpan
    50 +android.text.style.UnderlineSpan
    50 +android.widget.PopupWindow.OnDismissListener
    48 +android.app.AlertDialog
    46 +android.content.DialogInterface
    45 +android.view.ViewConfiguration
    42 +android.text.method.KeyListener
    40 +android.text.Annotation
    40 +android.text.style.BackgroundColorSpan
    40 +android.text.style.ForegroundColorSpan
    40 +android.text.style.SubscriptSpan
    40 +android.text.style.SuperscriptSpan
    40 +android.text.style.URLSpan
    39 +android.media.MediaRecorder
    38 +android.text.style.DynamicDrawableSpan
    36 +android.content.res.AssetFileDescriptor
    36 +android.location.LocationManager
    34 +android.hardware.SensorManager
    33 +android.text.AutoText
    33 +android.text.method.Touch
    33 +android.text.style.AbsoluteSizeSpan
    33 +android.text.style.LeadingMarginSpan.Standard
    33 +android.text.style.RelativeSizeSpan
    33 +android.text.style.ScaleXSpan
    33 +android.text.style.StyleSpan
    33 +android.text.style.TypefaceSpan
    33 +android.widget.RemoteViews.ActionException
    31 +android.widget.RemoteViews
    30 +android.provider.Settings
    28 +android.text.style.QuoteSpan
    27 +android.app.AlarmManager
    26 +android.text.style.ImageSpan
    25 +android.hardware.SensorListener
    25 +android.text.method.MetaKeyKeyListener
    25 +android.text.style.BulletSpan
    25 +android.widget.ResourceCursorAdapter
    23 +android.provider.Contacts.Intents
    21 +android.widget.PopupWindow
    20 +android.R.id
    20 +android.provider.Settings.System
    20 +android.app.ActivityManager
    20 +android.text.method.BaseKeyListener
    20 +android.util.TimeUtils
    20 +android.widget.AutoCompleteTextView
    19 +android.provider.Contacts.Intents.Insert
    17 +android.view.GestureDetector.SimpleOnGestureListener
    16 +android.provider.MediaStore.Video
    16 +android.text.SpanWatcher
    16 +android.text.TextWatcher
    16 +android.text.style.ClickableSpan
    16 +android.text.style.MaskFilterSpan
    16 +android.text.style.RasterizerSpan
    16 +android.text.style.TextAppearanceSpan
    15 +android.webkit.UrlInterceptRegistry
    14 +android.media.MediaRecorder.OutputFormat
    14 +android.net.NetworkInfo
    14 +android.test.suitebuilder.TestMethod
    14 +android.text.method.QwertyKeyListener
    14 +android.widget.AbsSeekBar
    12 +android.view.WindowManager.LayoutParams
    12 +android.test.ActivityInstrumentationTestCase
    12 +android.test.InstrumentationTestCase
    12 +android.widget.AbsoluteLayout
    12 +java.util.logging.LogManager
    11 +android.view.Gravity
    11 +android.widget.CursorAdapter
    11 +android.widget.TextView
    11 +android.text.method.DateKeyListener
    11 +android.text.method.DateTimeKeyListener
    11 +android.text.method.DialerKeyListener
    11 +android.text.method.TimeKeyListener
    11 +android.webkit.WebHistoryItem
    11 +java.util.jar.Pack200.Unpacker
    10 +android.media.MediaPlayer
    10 +android.provider.MediaStore.Video.VideoColumns
    10 +android.test.ProviderTestCase
    10 +android.test.suitebuilder.TestSuiteBuilder
    10 +android.widget.Chronometer
    10 +java.net.Socket
    9 +android.graphics.drawable.TransitionDrawable
    9 +android.text.method.MultiTapKeyListener
    8 +android.media.AudioManager
    8 +android.view.ViewTreeObserver
    8 +java.lang.reflect.Proxy
    8 +android.content.pm.PackageInfo
    7 +android.text.Spanned
    7 +android.text.method.DigitsKeyListener
    7 +android.hardware.Camera
    7 +android.R.attr
    7 +android.telephony.TelephonyManager
    7 +android.media.SoundPool
    7 +android.os.Environment
    6 +android.view.KeyEvent
    6 +java.lang.String
    6 +android.graphics.drawable.shapes.Shape
    6 +android.text.method.MovementMethod
    6 +android.view.OrientationListener
    6 +dalvik.system.DexFile
    6 +java.util.Date
    6 +android.text.TextUtils
    6 +android.os.ParcelFileDescriptor
    5 +android.webkit.WebView
    5 +android.graphics.drawable.RotateDrawable
    5 +android.graphics.drawable.ScaleDrawable
    5 +android.provider.MediaStore.Audio.AlbumColumns
    5 +android.provider.MediaStore.Audio.Media
    5 +android.webkit.WebSettings
    5 +android.content.res.Resources
    5 +android.graphics.RectF
    5 +android.os.Looper
    5 +android.provider.Contacts.PeopleColumns
    5 +android.text.method.ArrowKeyMovementMethod
    5 +android.text.method.TextKeyListener
    5 +android.view.ViewDebug
    5 +android.widget.Scroller
    5 +android.widget.AbsListView
    5 +android.net.ConnectivityManager
    5 +android.view.KeyCharacterMap
    4 +android.content.res.Configuration
    4 +android.widget.ProgressBar
    4 +android.widget.SimpleCursorAdapter
    4 +android.R.string
    4 +java.lang.Class
    4 +java.util.jar.Pack200.Packer
    4 +android.provider.MediaStore.Images.Media
    3 +android.os.Build
    3 +android.os.IBinder
    3 +android.text.method.ScrollingMovementMethod
    3 +android.util.SparseIntArray
    3 +android.content.Intent
    3 +android.content.ContentResolver
    3 +android.net.wifi.WifiManager
    3 +android.content.BroadcastReceiver
    3 +android.os.Handler
    3 +android.view.Menu
    3 +android.view.animation.Animation
    3 +android.view.animation.Transformation
    2 +android.webkit.URLUtil
    2 +java.util.logging.Level
    2 +android.R.style
    2 +android.os.Binder
    2 +android.view.ViewParent
    2 +android.widget.GridView
    2 +android.test.mock.MockPackageManager
    2 +android.view.View
    2 +android.widget.ListView
    2 +android.app.PendingIntent
    2 +android.content.pm.PackageManager
    2 +android.telephony.PhoneNumberUtils
    2 +android.content.ContentProvider
    2 +android.Manifest.permission
    2 +android.widget.ArrayAdapter
    2 +android.content.pm.ActivityInfo
    2 +dalvik.system.VMDebug
    1 +android.database.sqlite.SQLiteDatabase
    1 +android.content.res.TypedArray
    1 +android.app.Activity
    1 +android.preference.DialogPreference
    1 +android.view.Window
    1 +android.graphics.Bitmap
    1 +android.os.Debug
    1 +android.provider.Browser
    1 +android.os.Parcel
    1 +android.database.DatabaseUtils
    1 +android.media.RingtoneManager
    1 +android.graphics.Rect
    1 +android.telephony.gsm.SmsMessage
    1 +android.database.Cursor
    1 +android.database.CursorWrapper
    1 +android.view.MotionEvent
    1 +android.location.Location
    1 +android.graphics.drawable.Drawable
    <1 +android.R.drawable
    <1 +android.app.Instrumentation
    <1 +android.graphics.Canvas
    <1 +android.content.Context
    <1 +android.view.ViewGroup
    <1 +java.lang.Character.UnicodeBlock
    <1 +android.text.style.UpdateLayout
    +
    + +

    Total of Differences, by Number and Type

    +

    +The table below lists the numbers of program elements (packages, classes, constructors, methods, and fields) that were removed, added or changed. The table includes only the highest-level program elements — that is, if a class with two methods was added, the number of methods added does not include those two methods, but the number of classes added does include that class. +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Number of Differences
      + RemovalsAdditionsChangesTotal
    Packages063945
    Classes and Interfaces067186253
    Constructors1361552
    Methods038171452
    Fields129668365
    Total27863791167
    +
    + +
    +
    + + + diff --git a/docs/html/sdk/api_diff/3/changes/jdiff_topleftframe.html b/docs/html/sdk/api_diff/3/changes/jdiff_topleftframe.html new file mode 100644 index 000000000000..666c9dd3ca8d --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/jdiff_topleftframe.html @@ -0,0 +1,64 @@ + + + + + + + + + +Android API Version Differences + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Select a Diffs Index:
    All Differences
    By Package
    By Class
    By Constructor
    By Method
    By Field
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/methods_index_additions.html b/docs/html/sdk/api_diff/3/changes/methods_index_additions.html new file mode 100644 index 000000000000..1fa2bdb6c706 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/methods_index_additions.html @@ -0,0 +1,1397 @@ + + + + + + + + + +Method Additions Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Methods +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + +
    A  +B +C +D +E +F +G +H +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +addGpsStatusListener +(Listener)
    +addOnScrollChangedListener +(OnScrollChangedListener)
    +addPropertyChangeListener
    +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Packer +
    +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Unpacker +
    +  type  +(PropertyChangeListener) in java.util.logging.LogManager +
    +addTestProvider +(String, boolean, boolean, boolean, boolean, boolean, boolean, boolean, int, int)
    +adjustMetaAfterKeypress +(long)
    +applyDisplay +(int, Rect, Rect)
    + +
    B  +A +C +D +E +F +G +H +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +beginBatchEdit +()
    +bringPointIntoView +(int)
    + +
    C  +A +B +D +E +F +G +H +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +calculateLength +(CharSequence, boolean)
    +callActivityOnUserLeaving +(Activity)
    +changeAction +(KeyEvent, int)
    +changeCursorAndColumns +(Cursor, String[], int[])
    +changeFlags +(KeyEvent, int)
    +changeTimeRepeat +(KeyEvent, long, int)
    +checkInputConnectionProxy +(View)
    +clearComposingText +()
    +clearListSelection +()
    +clearMatches +()
    +clearMetaKeyState
    +  type  +(View, Editable, int) in android.text.method.KeyListener +
    +  type  +(long, int) in android.text.method.MetaKeyKeyListener +
    +  type  +(View, Editable, int) in android.text.method.MetaKeyKeyListener +
    +  type  +(Editable, int) in android.text.method.MetaKeyKeyListener +
    +clearTestProviderEnabled +(String)
    +clearTestProviderLocation +(String)
    +clearTestProviderStatus +(String)
    +close +()
    +closeContextMenu +()
    +computeDurationHint +()
    +copyPixelsFromBuffer +(Buffer)
    +createInputStream +()
    +createOutputStream +()
    +createWifiLock +(int, String)
    + +
    D  +A +B +C +E +F +G +H +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +describeContents
    +  type  +() in android.content.res.AssetFileDescriptor +
    +  type  +() in android.graphics.RectF +
    +  type  +() in android.text.Annotation +
    +  type  +() in android.text.style.AbsoluteSizeSpan +
    +  type  +() in android.text.style.AlignmentSpan.Standard +
    +  type  +() in android.text.style.BackgroundColorSpan +
    +  type  +() in android.text.style.BulletSpan +
    +  type  +() in android.text.style.ForegroundColorSpan +
    +  type  +() in android.text.style.LeadingMarginSpan.Standard +
    +  type  +() in android.text.style.QuoteSpan +
    +  type  +() in android.text.style.RelativeSizeSpan +
    +  type  +() in android.text.style.ScaleXSpan +
    +  type  +() in android.text.style.StrikethroughSpan +
    +  type  +() in android.text.style.StyleSpan +
    +  type  +() in android.text.style.SubscriptSpan +
    +  type  +() in android.text.style.SuperscriptSpan +
    +  type  +() in android.text.style.TextAppearanceSpan +
    +  type  +() in android.text.style.TypefaceSpan +
    +  type  +() in android.text.style.URLSpan +
    +  type  +() in android.text.style.UnderlineSpan +
    +deviceHasKey +(int)
    +deviceHasKeys +(int[])
    +didTouchFocusSelect +()
    +dispatchKeyEventPreIme +(KeyEvent)
    +drag +(InstrumentationTestCase, float, float, float, float, int)
    +dragQuarterScreenDown +(InstrumentationTestCase, Activity)
    +dragQuarterScreenUp +(InstrumentationTestCase, Activity)
    +dragViewBy +(InstrumentationTestCase, View, int, int, int)
    +dragViewTo +(InstrumentationTestCase, View, int, int, int)
    +dragViewToBottom
    +  type  +(ActivityInstrumentationTestCase, View, int) in android.test.TouchUtils +
    +  type  +(InstrumentationTestCase, Activity, View, int) in android.test.TouchUtils +
    +dragViewToTop
    +  type  +(InstrumentationTestCase, View) in android.test.TouchUtils +
    +  type  +(InstrumentationTestCase, View, int) in android.test.TouchUtils +
    +dragViewToX +(InstrumentationTestCase, View, int, int)
    +dragViewToY +(InstrumentationTestCase, View, int, int)
    +drawBitmap +(int[], int, int, float, float, int, int, boolean, Paint)
    +dump
    +  type  +(Printer, String) in android.location.Location +
    +  type  +(FileDescriptor, String[]) in android.os.Binder +
    +  type  +(FileDescriptor, String[]) in android.os.IBinder +
    +dumpCapturedView +(String, Object)
    +dumpHprofData
    +  type  +(String) in android.os.Debug +
    +  type  +(String) in dalvik.system.VMDebug +
    +dumpSpans +(CharSequence, Printer, String)
    + +
    E  +A +B +C +D +F +G +H +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +endBatchEdit +()
    +extractText +(ExtractedTextRequest, ExtractedText)
    + +
    F  +A +B +C +D +E +G +H +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +findAll +(String)
    +findNext +(boolean)
    +forkAndSpecialize +(int, int, int[], int, int[][])
    +forkSystemServer +(int, int, int[], int, int[][])
    +formatJapaneseNumber +(Editable)
    + +
    G  +A +B +C +D +E +F +H +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +get +(Context)
    +getAllowFileAccess +()
    +getBackgroundDataSetting +()
    +getBoolean +(int)
    +getBuiltInZoomControls +()
    +getButton +(int)
    +getCapsMode +(CharSequence, int, int)
    +getCharacters +()
    +getDeclaredLength +()
    +getDefaultSensor +(int)
    +getDeviceConfigurationInfo +()
    +getDialog +()
    +getDoubleTapTimeout +()
    +getDrawable
    +  type  +() in android.graphics.drawable.RotateDrawable +
    +  type  +() in android.graphics.drawable.ScaleDrawable +
    +getDropDownAnchor +()
    +getDropDownWidth +()
    +getEditableText +()
    +getFraction +(int, int, int)
    +getGpsStatus +(GpsStatus)
    +getImeActionId +()
    +getImeActionLabel +()
    +getImeOptions +()
    +getInclination +(float[])
    +getInitialScrollX +(TextView, Spannable)
    +getInitialScrollY +(TextView, Spannable)
    +getInputExtras +(boolean)
    +getInputMethodMode +()
    +getInputType
    +  type  +() in android.text.method.DateKeyListener +
    +  type  +() in android.text.method.DateTimeKeyListener +
    +  type  +() in android.text.method.DialerKeyListener +
    +  type  +() in android.text.method.DigitsKeyListener +
    +  type  +() in android.text.method.KeyListener +
    +  type  +() in android.text.method.MultiTapKeyListener +
    +  type  +() in android.text.method.QwertyKeyListener +
    +  type  +() in android.text.method.TextKeyListener +
    +  type  +() in android.text.method.TimeKeyListener +
    +  type  +() in android.widget.TextView +
    +getItem +(int)
    +getKeyProgressIncrement +()
    +getLaunchIntentForPackage
    +  type  +(String) in android.content.pm.PackageManager +
    +  type  +(String) in android.test.mock.MockPackageManager +
    +getLayoutDimension +(int, int)
    +getListSelection +()
    +getListView +()
    +getLoggingMXBean +()
    +getLong
    +  type  +(ContentResolver, String) in android.provider.Settings.System +
    +  type  +(ContentResolver, String, long) in android.provider.Settings.System +
    +getMaxAvailableHeight +(View, int)
    +getMaxKeyCode +()
    +getMetaState
    +  type  +(long) in android.text.method.MetaKeyKeyListener +
    +  type  +(long, int) in android.text.method.MetaKeyKeyListener +
    +getNeighboringCellInfo +()
    +getOnChronometerTickListener +()
    +getOnItemClickListener +()
    +getOnItemSelectedListener +()
    +getOrientation +(float[], float[])
    +getOriginalUrl
    +  type  +() in android.webkit.WebHistoryItem +
    +  type  +() in android.webkit.WebView +
    +getPluginData
    +  type  +(String, Map<String, String>) in android.webkit.UrlInterceptHandler +
    +  type  +(String, Map<String, String>) in android.webkit.UrlInterceptRegistry +
    +getPrivateImeOptions +()
    +getRotationMatrix +(float[], float[], float[], float[])
    +getRunningAppProcesses +()
    +getScaledDoubleTapSlop +()
    +getScaledEdgeSlop +()
    +getScaledFadingEdgeLength +()
    +getScaledMaximumDrawingCacheSize +()
    +getScaledMinimumFlingVelocity +()
    +getScaledScrollBarSize +()
    +getScaledTouchSlop +()
    +getScaledWindowTouchSlop +()
    +getSensorList +(int)
    +getSize +(View)
    +getSpanTypeId
    +  type  +() in android.text.Annotation +
    +  type  +() in android.text.style.AbsoluteSizeSpan +
    +  type  +() in android.text.style.AlignmentSpan.Standard +
    +  type  +() in android.text.style.BackgroundColorSpan +
    +  type  +() in android.text.style.BulletSpan +
    +  type  +() in android.text.style.ForegroundColorSpan +
    +  type  +() in android.text.style.LeadingMarginSpan.Standard +
    +  type  +() in android.text.style.QuoteSpan +
    +  type  +() in android.text.style.RelativeSizeSpan +
    +  type  +() in android.text.style.ScaleXSpan +
    +  type  +() in android.text.style.StrikethroughSpan +
    +  type  +() in android.text.style.StyleSpan +
    +  type  +() in android.text.style.SubscriptSpan +
    +  type  +() in android.text.style.SuperscriptSpan +
    +  type  +() in android.text.style.TextAppearanceSpan +
    +  type  +() in android.text.style.TypefaceSpan +
    +  type  +() in android.text.style.URLSpan +
    +  type  +() in android.text.style.UnderlineSpan +
    +getStartX +()
    +getStartY +()
    +getStatSize +()
    +getSubtype +()
    +getSubtypeName +()
    +getSystemSharedLibraryNames
    +  type  +() in android.content.pm.PackageManager +
    +  type  +() in android.test.mock.MockPackageManager +
    +getTextFilter +()
    +getThread +()
    +getTimeZoneDatabaseVersion +()
    +getUserAgentString +()
    +getVerticalAlignment +()
    +getWindowVisibleDisplayFrame +(Rect)
    + +
    H  +A +B +C +D +E +F +G +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +handleKeyDown +(long, int, KeyEvent)
    +handleKeyUp +(long, int, KeyEvent)
    +hasSoftInputMode +()
    +hasWindowFocus +()
    + +
    I  +A +B +C +D +E +F +G +H +L +M +O +P +R +S +T +U +W +Y + TOP +

    +inferStreamType +()
    +intentForPosition +(int)
    +isAboveAnchor +()
    +isBluetoothA2dpOn +()
    +isClippingEnabled +()
    +isDebuggingEnabled +()
    +isFastScrollEnabled +()
    +isFillEnabled +()
    +isHapticFeedbackEnabled +()
    +isInEditMode +()
    +isInputMethodTarget +()
    +isLooping +()
    +isOutsideTouchable +()
    +isPerformingCompletion +()
    +isRoaming +()
    +isSafeMode
    +  type  +() in android.content.pm.PackageManager +
    +  type  +() in android.test.mock.MockPackageManager +
    +isSelectingMetaTracker +(CharSequence, Object)
    +isSmoothScrollbarEnabled +()
    +isTouchable +()
    + +
    L  +A +B +C +D +E +F +G +H +I +M +O +P +R +S +T +U +W +Y + TOP +

    +launchActivityWithIntent +(String, Class<T>, Intent)
    +load
    +  type  +(AssetFileDescriptor, int) in android.media.SoundPool +
    +  type  +(FileDescriptor, long, long, int) in android.media.SoundPool +
    +loadDex +(String, String, int)
    +longClickView +(InstrumentationTestCase, View)
    + +
    M  +A +B +C +D +E +F +G +H +I +L +O +P +R +S +T +U +W +Y + TOP +

    +makeListItems +()
    +mayUseInputMethod +(int)
    +moveCursorToVisibleOffset +()
    +mutate +()
    + +
    O  +A +B +C +D +E +F +G +H +I +L +M +P +R +S +T +U +W +Y + TOP +

    +onBeginBatchEdit +()
    +onCheckIsTextEditor +()
    +onCommitCompletion +(CompletionInfo)
    +onContentChanged +()
    +onCreateInputConnection +(EditorInfo)
    +onDoubleTap +(MotionEvent)
    +onDoubleTapEvent +(MotionEvent)
    +onEditorAction +(int)
    +onEndBatchEdit +()
    +onFinishTemporaryDetach +()
    +onKeyOther
    +  type  +(TextView, Spannable, KeyEvent) in android.text.method.ArrowKeyMovementMethod +
    +  type  +(View, Editable, KeyEvent) in android.text.method.BaseKeyListener +
    +  type  +(View, Editable, KeyEvent) in android.text.method.KeyListener +
    +  type  +(TextView, Spannable, KeyEvent) in android.text.method.MovementMethod +
    +  type  +(TextView, Spannable, KeyEvent) in android.text.method.ScrollingMovementMethod +
    +onKeyPreIme +(int, KeyEvent)
    +onPrivateIMECommand +(String, Bundle)
    +onSelectionChanged +(int, int)
    +onSingleTapConfirmed +(MotionEvent)
    +onStartTemporaryDetach +()
    +onTextContextMenuItem +(int)
    +onUserInteraction +()
    +onUserLeaveHint +()
    +openAssetFile +(Uri, String)
    +openAssetFileDescriptor +(Uri, String)
    +openOutputStream +(Uri, String)
    +openRawResource +(int, TypedValue)
    + +
    P  +A +B +C +D +E +F +G +H +I +L +M +O +R +S +T +U +W +Y + TOP +

    +parseBundleExtra +(String, AttributeSet, Bundle)
    +parseBundleExtras +(XmlResourceParser, Bundle)
    +peekService +(Context, Intent)
    +performHapticFeedback
    +  type  +(int) in android.view.View +
    +  type  +(int, int) in android.view.View +
    +playSoundEffect +(int, float)
    +putLong +(ContentResolver, String, long)
    + +
    R  +A +B +C +D +E +F +G +H +I +L +M +O +P +S +T +U +W +Y + TOP +

    +readFromParcel +(Parcel)
    +registerListener
    +  type  +(SensorEventListener, Sensor, int) in android.hardware.SensorManager +
    +  type  +(SensorEventListener, Sensor, int, Handler) in android.hardware.SensorManager +
    +remapCoordinateSystem +(float[], int, int, float[])
    +removeAt +(int)
    +removeGpsStatusListener +(Listener)
    +removeOnScrollChangedListener +(OnScrollChangedListener)
    +removePropertyChangeListener
    +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Packer +
    +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Unpacker +
    +  type  +(PropertyChangeListener) in java.util.logging.LogManager +
    +removeTestProvider +(String)
    +removeUpdates +(PendingIntent)
    +replaceExtras
    +  type  +(Intent) in android.content.Intent +
    +  type  +(Bundle) in android.content.Intent +
    +requestChildRectangleOnScreen +(View, Rect, boolean)
    +requestLocationUpdates +(String, long, float, PendingIntent)
    +resetLockedMeta +(long)
    +restartPackage +(String)
    +restorePicture +(Bundle, File)
    +runTestOnUiThread +(Runnable)
    + +
    S  +A +B +C +D +E +F +G +H +I +L +M +O +P +R +T +U +W +Y + TOP +

    +savePicture +(Bundle, File)
    +scrollToBottom +(InstrumentationTestCase, Activity, ViewGroup)
    +scrollToTop +(InstrumentationTestCase, Activity, ViewGroup)
    +sendExtraCommand +(String, String, Bundle)
    +setAllowFileAccess +(boolean)
    +setBitmap +(int, String, Bitmap)
    +setBluetoothA2dpOn +(boolean)
    +setBoolean +(int, String, boolean)
    +setBuiltInZoomControls +(boolean)
    +setButton
    +  type  +(CharSequence, OnClickListener) in android.app.AlertDialog +
    +  type  +(CharSequence, Message) in android.app.AlertDialog +
    +setByte +(int, String, byte)
    +setCamera +(Camera)
    +setChar +(int, String, char)
    +setCharSequence +(int, String, CharSequence)
    +setClippingEnabled +(boolean)
    +setCompoundDrawablesWithIntrinsicBounds +(int, int, int, int)
    +setDouble +(int, String, double)
    +setDropDownAnchor +(int)
    +setDropDownWidth +(int)
    +setExtractedText +(ExtractedText)
    +setFastScrollEnabled +(boolean)
    +setFillEnabled +(boolean)
    +setFloat +(int, String, float)
    +setFooterDividersEnabled +(boolean)
    +setHapticFeedbackEnabled +(boolean)
    +setHeaderDividersEnabled +(boolean)
    +setImageViewBitmap +(int, Bitmap)
    +setImeActionLabel +(CharSequence, int)
    +setImeOptions +(int)
    +setInexactRepeating +(int, long, long, PendingIntent)
    +setInputExtras +(int)
    +setInputMethodMode +(int)
    +setInputType +(int)
    +setInt +(int, String, int)
    +setKeyProgressIncrement +(int)
    +setListSelection +(int)
    +setLong +(int, String, long)
    +setMaxDuration +(int)
    +setMaxFileSize +(long)
    +setNetworkAvailable +(boolean)
    +setOnChronometerTickListener +(OnChronometerTickListener)
    +setOnClickPendingIntent +(int, PendingIntent)
    +setOnDoubleTapListener +(OnDoubleTapListener)
    +setOnEditorActionListener +(OnEditorActionListener)
    +setOnErrorListener +(OnErrorListener)
    +setOneShotPreviewCallback +(PreviewCallback)
    +setOnInfoListener
    +  type  +(OnInfoListener) in android.media.MediaPlayer +
    +  type  +(OnInfoListener) in android.media.MediaRecorder +
    +setOnVideoSizeChangedListener +(OnVideoSizeChangedListener)
    +setOutputFile +(FileDescriptor)
    +setOutsideTouchable +(boolean)
    +setPrivateImeOptions +(String)
    +setRawInputType +(int)
    +setScrollContainer +(boolean)
    +setShort +(int, String, short)
    +setSmoothScrollbarEnabled +(boolean)
    +setSoftInputMode +(int)
    +setStaticTransformationsEnabled +(boolean)
    +setString +(int, String, String)
    +setTestProviderEnabled +(String, boolean)
    +setTestProviderLocation +(String, Location)
    +setTestProviderStatus +(String, int, Bundle, long)
    +setTextColor +(int, int)
    +setTouchable +(boolean)
    +setTouchInterceptor +(OnTouchListener)
    +setUri +(int, String, Uri)
    +setUserAgentString +(String)
    +setVideoEncoder +(int)
    +setVideoFrameRate +(int)
    +setVideoSize +(int, int)
    +setVideoSource +(int)
    +setView +(View, int, int, int, int)
    +setViewResource +(int)
    +setVisible +(boolean)
    +setWindowAnimations +(int)
    +setWindowLayoutMode +(int, int)
    +sort +(Comparator<? super T>)
    + +
    T  +A +B +C +D +E +F +G +H +I +L +M +O +P +R +S +U +W +Y + TOP +

    +toShortString
    +  type  +() in android.graphics.Rect +
    +  type  +() in android.view.animation.Transformation +
    + +
    U  +A +B +C +D +E +F +G +H +I +L +M +O +P +R +S +T +W +Y + TOP +

    +unregisterListener
    +  type  +(SensorEventListener) in android.hardware.SensorManager +
    +  type  +(SensorEventListener, Sensor) in android.hardware.SensorManager +
    +update
    +  type  +() in android.widget.PopupWindow +
    +  type  +(int, int, int, int, boolean) in android.widget.PopupWindow +
    + +
    W  +A +B +C +D +E +F +G +H +I +L +M +O +P +R +S +T +U +Y + TOP +

    +writeToParcel
    +  type  +(Parcel, int) in android.content.res.AssetFileDescriptor +
    +  type  +(Parcel, int) in android.graphics.RectF +
    +  type  +(Parcel, int) in android.text.Annotation +
    +  type  +(Parcel, int) in android.text.style.AbsoluteSizeSpan +
    +  type  +(Parcel, int) in android.text.style.AlignmentSpan.Standard +
    +  type  +(Parcel, int) in android.text.style.BackgroundColorSpan +
    +  type  +(Parcel, int) in android.text.style.BulletSpan +
    +  type  +(Parcel, int) in android.text.style.ForegroundColorSpan +
    +  type  +(Parcel, int) in android.text.style.LeadingMarginSpan.Standard +
    +  type  +(Parcel, int) in android.text.style.QuoteSpan +
    +  type  +(Parcel, int) in android.text.style.RelativeSizeSpan +
    +  type  +(Parcel, int) in android.text.style.ScaleXSpan +
    +  type  +(Parcel, int) in android.text.style.StrikethroughSpan +
    +  type  +(Parcel, int) in android.text.style.StyleSpan +
    +  type  +(Parcel, int) in android.text.style.SubscriptSpan +
    +  type  +(Parcel, int) in android.text.style.SuperscriptSpan +
    +  type  +(Parcel, int) in android.text.style.TextAppearanceSpan +
    +  type  +(Parcel, int) in android.text.style.TypefaceSpan +
    +  type  +(Parcel, int) in android.text.style.URLSpan +
    +  type  +(Parcel, int) in android.text.style.UnderlineSpan +
    + +
    Y  +A +B +C +D +E +F +G +H +I +L +M +O +P +R +S +T +U +W + TOP +

    +yieldIfContendedSafely +()
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/methods_index_all.html b/docs/html/sdk/api_diff/3/changes/methods_index_all.html new file mode 100644 index 000000000000..22492a352290 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/methods_index_all.html @@ -0,0 +1,1600 @@ + + + + + + + + + +Method Differences Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +Methods +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + +
    A  +B +C +D +E +F +G +H +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +addGpsStatusListener +(Listener)
    +addOnScrollChangedListener +(OnScrollChangedListener)
    +addPropertyChangeListener
    +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Packer +
    +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Unpacker +
    +  type  +(PropertyChangeListener) in java.util.logging.LogManager +
    +addRequirements +(Predicate<TestMethod>)
    +addTestProvider +(String, boolean, boolean, boolean, boolean, boolean, boolean, boolean, int, int)
    +adjustMetaAfterKeypress +(long)
    +appendEscapedSQLString +(StringBuilder, String)
    +applyDisplay +(int, Rect, Rect)
    + +
    B  +A +C +D +E +F +G +H +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +beginBatchEdit +()
    +bringPointIntoView +(int)
    + +
    C  +A +B +D +E +F +G +H +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +calculateLength +(CharSequence, boolean)
    +callActivityOnUserLeaving +(Activity)
    +changeAction +(KeyEvent, int)
    +changeCursorAndColumns +(Cursor, String[], int[])
    +changeDebugPort +(int)
    +changeFlags +(KeyEvent, int)
    +changeTimeRepeat +(KeyEvent, long, int)
    +checkInputConnectionProxy +(View)
    +clearComposingText +()
    +clearListSelection +()
    +clearMatches +()
    +clearMetaKeyState
    +  type  +(View, Editable, int) in android.text.method.KeyListener +
    +  type  +(long, int) in android.text.method.MetaKeyKeyListener +
    +  type  +(View, Editable, int) in android.text.method.MetaKeyKeyListener +
    +  type  +(Editable, int) in android.text.method.MetaKeyKeyListener +
    +clearTestProviderEnabled +(String)
    +clearTestProviderLocation +(String)
    +clearTestProviderStatus +(String)
    +clone +()
    +close +()
    +closeContextMenu +()
    +computeDurationHint +()
    +copyPixelsFromBuffer +(Buffer)
    +createInputStream +()
    +createOutputStream +()
    +createWifiLock +(int, String)
    + +
    D  +A +B +C +E +F +G +H +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +describeContents
    +  type  +() in android.content.res.AssetFileDescriptor +
    +  type  +() in android.graphics.RectF +
    +  type  +() in android.text.Annotation +
    +  type  +() in android.text.style.AbsoluteSizeSpan +
    +  type  +() in android.text.style.AlignmentSpan.Standard +
    +  type  +() in android.text.style.BackgroundColorSpan +
    +  type  +() in android.text.style.BulletSpan +
    +  type  +() in android.text.style.ForegroundColorSpan +
    +  type  +() in android.text.style.LeadingMarginSpan.Standard +
    +  type  +() in android.text.style.QuoteSpan +
    +  type  +() in android.text.style.RelativeSizeSpan +
    +  type  +() in android.text.style.ScaleXSpan +
    +  type  +() in android.text.style.StrikethroughSpan +
    +  type  +() in android.text.style.StyleSpan +
    +  type  +() in android.text.style.SubscriptSpan +
    +  type  +() in android.text.style.SuperscriptSpan +
    +  type  +() in android.text.style.TextAppearanceSpan +
    +  type  +() in android.text.style.TypefaceSpan +
    +  type  +() in android.text.style.URLSpan +
    +  type  +() in android.text.style.UnderlineSpan +
    +deviceHasKey +(int)
    +deviceHasKeys +(int[])
    +didTouchFocusSelect +()
    +dispatchKeyEventPreIme +(KeyEvent)
    +drag
    +  type  +(InstrumentationTestCase, float, float, float, float, int) in android.test.TouchUtils +
    +  type  +(ActivityInstrumentationTestCase, float, float, float, float, int) in android.test.TouchUtils +
    +dragQuarterScreenDown
    +  type  +(InstrumentationTestCase, Activity) in android.test.TouchUtils +
    +  type  +(ActivityInstrumentationTestCase) in android.test.TouchUtils +
    +dragQuarterScreenUp
    +  type  +(InstrumentationTestCase, Activity) in android.test.TouchUtils +
    +  type  +(ActivityInstrumentationTestCase) in android.test.TouchUtils +
    +dragViewBy
    +  type  +(InstrumentationTestCase, View, int, int, int) in android.test.TouchUtils +
    +  type  +(ActivityInstrumentationTestCase, View, int, int, int) in android.test.TouchUtils +
    +dragViewTo
    +  type  +(InstrumentationTestCase, View, int, int, int) in android.test.TouchUtils +
    +  type  +(ActivityInstrumentationTestCase, View, int, int, int) in android.test.TouchUtils +
    +dragViewToBottom
    +  type  +(ActivityInstrumentationTestCase, View, int) in android.test.TouchUtils +
    +  type  +(InstrumentationTestCase, Activity, View, int) in android.test.TouchUtils +
    +  type  +(ActivityInstrumentationTestCase, View) in android.test.TouchUtils +
    +  type  +(InstrumentationTestCase, Activity, View) in android.test.TouchUtils +
    +dragViewToTop
    +  type  +(InstrumentationTestCase, View) in android.test.TouchUtils +
    +  type  +(InstrumentationTestCase, View, int) in android.test.TouchUtils +
    +  type  +(ActivityInstrumentationTestCase, View) in android.test.TouchUtils +
    +  type  +(ActivityInstrumentationTestCase, View, int) in android.test.TouchUtils +
    +dragViewToX
    +  type  +(InstrumentationTestCase, View, int, int) in android.test.TouchUtils +
    +  type  +(ActivityInstrumentationTestCase, View, int, int) in android.test.TouchUtils +
    +dragViewToY
    +  type  +(InstrumentationTestCase, View, int, int) in android.test.TouchUtils +
    +  type  +(ActivityInstrumentationTestCase, View, int, int) in android.test.TouchUtils +
    +drawBitmap +(int[], int, int, float, float, int, int, boolean, Paint)
    +dump
    +  type  +(Printer, String) in android.location.Location +
    +  type  +(FileDescriptor, String[]) in android.os.Binder +
    +  type  +(FileDescriptor, String[]) in android.os.IBinder +
    +dumpCapturedView +(String, Object)
    +dumpHprofData
    +  type  +(String) in android.os.Debug +
    +  type  +(String) in dalvik.system.VMDebug +
    +dumpSpans +(CharSequence, Printer, String)
    + +
    E  +A +B +C +D +F +G +H +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +endBatchEdit +()
    +extractText +(ExtractedTextRequest, ExtractedText)
    + +
    F  +A +B +C +D +E +G +H +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +findAll +(String)
    +findNext +(boolean)
    +forkAndSpecialize
    +  type  +(int, int, int[], int, int[][]) in dalvik.system.Zygote +
    +  type  +(int, int, int[], boolean, int[][]) in dalvik.system.Zygote +
    +forkSystemServer
    +  type  +(int, int, int[], int, int[][]) in dalvik.system.Zygote +
    +  type  +(int, int, int[], boolean, int[][]) in dalvik.system.Zygote +
    +formatJapaneseNumber +(Editable)
    +forName +(String)
    + +
    G  +A +B +C +D +E +F +H +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +get +(Context)
    +getAllowFileAccess +()
    +getBackgroundDataSetting +()
    +getBoolean +(int)
    +getBuiltInZoomControls +()
    +getButton +(int)
    +getCapsMode +(CharSequence, int, int)
    +getCharacters +()
    +getClasses +()
    +getColumnIndex
    +  type  +(String) in android.database.Cursor +
    +  type  +(String) in android.database.CursorWrapper +
    +getConstructors +()
    +getCount +()
    +getDeclaredClasses +()
    +getDeclaredConstructors +()
    +getDeclaredLength +()
    +getDefaultSensor +(int)
    +getDeviceConfigurationInfo +()
    +getDialog +()
    +getDoubleTapTimeout +()
    +getDrawable
    +  type  +() in android.graphics.drawable.RotateDrawable +
    +  type  +() in android.graphics.drawable.ScaleDrawable +
    +getDropDownAnchor +()
    +getDropDownWidth +()
    +getEdgeSlop +()
    +getEditableText +()
    +getFadingEdgeLength +()
    +getFraction +(int, int, int)
    +getGpsStatus +(GpsStatus)
    +getHandler +()
    +getImeActionId +()
    +getImeActionLabel +()
    +getImeOptions +()
    +getInclination +(float[])
    +getInitialScrollX +(TextView, Spannable)
    +getInitialScrollY +(TextView, Spannable)
    +getInputExtras +(boolean)
    +getInputMethodMode +()
    +getInputType
    +  type  +() in android.text.method.DateKeyListener +
    +  type  +() in android.text.method.DateTimeKeyListener +
    +  type  +() in android.text.method.DialerKeyListener +
    +  type  +() in android.text.method.DigitsKeyListener +
    +  type  +() in android.text.method.KeyListener +
    +  type  +() in android.text.method.MultiTapKeyListener +
    +  type  +() in android.text.method.QwertyKeyListener +
    +  type  +() in android.text.method.TextKeyListener +
    +  type  +() in android.text.method.TimeKeyListener +
    +  type  +() in android.widget.TextView +
    +getInterfaces +()
    +getItem
    +  type  +(int) in android.view.Menu +
    +  type  +(int) in android.widget.CursorAdapter +
    +getItemClickListener +()
    +getItemId +(int)
    +getItemSelectedListener +()
    +getKeyProgressIncrement +()
    +getLaunchIntentForPackage
    +  type  +(String) in android.content.pm.PackageManager +
    +  type  +(String) in android.test.mock.MockPackageManager +
    +getLayoutDimension +(int, int)
    +getListSelection +()
    +getListView +()
    +getLoggingMXBean +()
    +getLong
    +  type  +(ContentResolver, String) in android.provider.Settings.System +
    +  type  +(ContentResolver, String, long) in android.provider.Settings.System +
    +getMaxAvailableHeight +(View, int)
    +getMaximumDrawingCacheSize +()
    +getMaxKeyCode +()
    +getMetaState
    +  type  +(long) in android.text.method.MetaKeyKeyListener +
    +  type  +(long, int) in android.text.method.MetaKeyKeyListener +
    +getMinimumFlingVelocity +()
    +getNeighboringCellInfo +()
    +getOnChronometerTickListener +()
    +getOnItemClickListener +()
    +getOnItemSelectedListener +()
    +getOrientation +(float[], float[])
    +getOriginalUrl
    +  type  +() in android.webkit.WebHistoryItem +
    +  type  +() in android.webkit.WebView +
    +getPluginData
    +  type  +(String, Map<String, String>) in android.webkit.UrlInterceptHandler +
    +  type  +(String, Map<String, String>) in android.webkit.UrlInterceptRegistry +
    +getPrivateImeOptions +()
    +getProxyClass +(ClassLoader, Class<?>)
    +getRotationMatrix +(float[], float[], float[], float[])
    +getRunningAppProcesses +()
    +getScaledDoubleTapSlop +()
    +getScaledEdgeSlop +()
    +getScaledFadingEdgeLength +()
    +getScaledMaximumDrawingCacheSize +()
    +getScaledMinimumFlingVelocity +()
    +getScaledScrollBarSize +()
    +getScaledTouchSlop +()
    +getScaledWindowTouchSlop +()
    +getScrollBarSize +()
    +getSensorList +(int)
    +getSensors +()
    +getSize +(View)
    +getSpanTypeId
    +  type  +() in android.text.Annotation +
    +  type  +() in android.text.style.AbsoluteSizeSpan +
    +  type  +() in android.text.style.AlignmentSpan.Standard +
    +  type  +() in android.text.style.BackgroundColorSpan +
    +  type  +() in android.text.style.BulletSpan +
    +  type  +() in android.text.style.ForegroundColorSpan +
    +  type  +() in android.text.style.LeadingMarginSpan.Standard +
    +  type  +() in android.text.style.QuoteSpan +
    +  type  +() in android.text.style.RelativeSizeSpan +
    +  type  +() in android.text.style.ScaleXSpan +
    +  type  +() in android.text.style.StrikethroughSpan +
    +  type  +() in android.text.style.StyleSpan +
    +  type  +() in android.text.style.SubscriptSpan +
    +  type  +() in android.text.style.SuperscriptSpan +
    +  type  +() in android.text.style.TextAppearanceSpan +
    +  type  +() in android.text.style.TypefaceSpan +
    +  type  +() in android.text.style.URLSpan +
    +  type  +() in android.text.style.UnderlineSpan +
    +getStartX +()
    +getStartY +()
    +getStatSize +()
    +getSubtype +()
    +getSubtypeName +()
    +getSurrogate +(String, Map<String, String>)
    +getSystemSharedLibraryNames
    +  type  +() in android.content.pm.PackageManager +
    +  type  +() in android.test.mock.MockPackageManager +
    +getTargetIntent +()
    +getTextFilter +()
    +getThread +()
    +getTimeZoneDatabaseVersion +()
    +getTouchSlop +()
    +getUserAgent +()
    +getUserAgentString +()
    +getVerticalAlignment +()
    +getWindowTouchSlop +()
    +getWindowVisibleDisplayFrame +(Rect)
    +getZoomControls +()
    + +
    H  +A +B +C +D +E +F +G +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +handleKeyDown +(long, int, KeyEvent)
    +handleKeyUp +(long, int, KeyEvent)
    +hasSoftInputMode +()
    +hasWindowFocus +()
    + +
    I  +A +B +C +D +E +F +G +H +L +M +O +P +R +S +T +U +W +Y + TOP +

    +inferStreamType +()
    +intentForPosition +(int)
    +isAboveAnchor +()
    +isBluetoothA2dpOn +()
    +isClippingEnabled +()
    +isCookielessProxyUrl +(String)
    +isDebuggingEnabled +()
    +isFastScrollEnabled +()
    +isFillEnabled +()
    +isHapticFeedbackEnabled +()
    +isInEditMode +()
    +isInputMethodTarget +()
    +isLooping +()
    +isOutsideTouchable +()
    +isPerformingCompletion +()
    +isRoaming +()
    +isSafeMode
    +  type  +() in android.content.pm.PackageManager +
    +  type  +() in android.test.mock.MockPackageManager +
    +isSelectingMetaTracker +(CharSequence, Object)
    +isSmoothScrollbarEnabled +()
    +isTouchable +()
    + +
    L  +A +B +C +D +E +F +G +H +I +M +O +P +R +S +T +U +W +Y + TOP +

    +launchActivityWithIntent +(String, Class<T>, Intent)
    +load
    +  type  +(AssetFileDescriptor, int) in android.media.SoundPool +
    +  type  +(FileDescriptor, long, long, int) in android.media.SoundPool +
    +loadDex +(String, String, int)
    +longClickView
    +  type  +(InstrumentationTestCase, View) in android.test.TouchUtils +
    +  type  +(ActivityInstrumentationTestCase, View) in android.test.TouchUtils +
    + +
    M  +A +B +C +D +E +F +G +H +I +L +O +P +R +S +T +U +W +Y + TOP +

    +makeListItems +()
    +mayUseInputMethod +(int)
    +moveCursorToVisibleOffset +()
    +mutate +()
    + +
    O  +A +B +C +D +E +F +G +H +I +L +M +P +R +S +T +U +W +Y + TOP +

    +onBeginBatchEdit +()
    +onCheckIsTextEditor +()
    +onCommitCompletion +(CompletionInfo)
    +onContentChanged +()
    +onCreateInputConnection +(EditorInfo)
    +onDoubleTap +(MotionEvent)
    +onDoubleTapEvent +(MotionEvent)
    +onEditorAction +(int)
    +onEndBatchEdit +()
    +onFinishTemporaryDetach +()
    +onGlobalFocusChanged +(View, View)
    +onKeyOther
    +  type  +(TextView, Spannable, KeyEvent) in android.text.method.ArrowKeyMovementMethod +
    +  type  +(View, Editable, KeyEvent) in android.text.method.BaseKeyListener +
    +  type  +(View, Editable, KeyEvent) in android.text.method.KeyListener +
    +  type  +(TextView, Spannable, KeyEvent) in android.text.method.MovementMethod +
    +  type  +(TextView, Spannable, KeyEvent) in android.text.method.ScrollingMovementMethod +
    +onKeyPreIme +(int, KeyEvent)
    +onPrivateIMECommand +(String, Bundle)
    +onRestoreInstanceState +(Parcelable)
    +onSaveInstanceState +()
    +onSelectionChanged +(int, int)
    +onSingleTapConfirmed +(MotionEvent)
    +onStartTemporaryDetach +()
    +onTextContextMenuItem +(int)
    +onUserInteraction +()
    +onUserLeaveHint +()
    +openAssetFile +(Uri, String)
    +openAssetFileDescriptor +(Uri, String)
    +openOutputStream +(Uri, String)
    +openRawResource +(int, TypedValue)
    + +
    P  +A +B +C +D +E +F +G +H +I +L +M +O +R +S +T +U +W +Y + TOP +

    +parse +(String)
    +parseBundleExtra +(String, AttributeSet, Bundle)
    +parseBundleExtras +(XmlResourceParser, Bundle)
    +peekService +(Context, Intent)
    +performHapticFeedback
    +  type  +(int) in android.view.View +
    +  type  +(int, int) in android.view.View +
    +playSoundEffect
    +  type  +(int, float) in android.media.AudioManager +
    +  type  +(int) in android.view.View +
    +prepare +()
    +putLong +(ContentResolver, String, long)
    + +
    R  +A +B +C +D +E +F +G +H +I +L +M +O +P +S +T +U +W +Y + TOP +

    +readFromParcel +(Parcel)
    +readHashMap +(ClassLoader)
    +readMap +(Map, ClassLoader)
    +registerListener
    +  type  +(SensorEventListener, Sensor, int) in android.hardware.SensorManager +
    +  type  +(SensorEventListener, Sensor, int, Handler) in android.hardware.SensorManager +
    +  type  +(SensorListener, int) in android.hardware.SensorManager +
    +  type  +(SensorListener, int, int) in android.hardware.SensorManager +
    +remapCoordinateSystem +(float[], int, int, float[])
    +removeAt +(int)
    +removeGpsStatusListener +(Listener)
    +removeOnScrollChangedListener +(OnScrollChangedListener)
    +removePropertyChangeListener
    +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Packer +
    +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Unpacker +
    +  type  +(PropertyChangeListener) in java.util.logging.LogManager +
    +removeTestProvider +(String)
    +removeUpdates +(PendingIntent)
    +replaceExtras
    +  type  +(Intent) in android.content.Intent +
    +  type  +(Bundle) in android.content.Intent +
    +requestChildRectangleOnScreen +(View, Rect, boolean)
    +requestLocationUpdates +(String, long, float, PendingIntent)
    +resetLockedMeta +(long)
    +restartPackage +(String)
    +restorePicture +(Bundle, File)
    +runTestOnUiThread +(Runnable)
    + +
    S  +A +B +C +D +E +F +G +H +I +L +M +O +P +R +T +U +W +Y + TOP +

    +savePicture +(Bundle, File)
    +scrollToBottom
    +  type  +(InstrumentationTestCase, Activity, ViewGroup) in android.test.TouchUtils +
    +  type  +(ActivityInstrumentationTestCase, ViewGroup) in android.test.TouchUtils +
    +scrollToTop
    +  type  +(InstrumentationTestCase, Activity, ViewGroup) in android.test.TouchUtils +
    +  type  +(ActivityInstrumentationTestCase, ViewGroup) in android.test.TouchUtils +
    +sendExtraCommand +(String, String, Bundle)
    +service +(String, Map<String, String>)
    +setAllowFileAccess +(boolean)
    +setBitmap +(int, String, Bitmap)
    +setBluetoothA2dpOn +(boolean)
    +setBoolean +(int, String, boolean)
    +setBuiltInZoomControls +(boolean)
    +setButton
    +  type  +(CharSequence, OnClickListener) in android.app.AlertDialog +
    +  type  +(CharSequence, Message) in android.app.AlertDialog +
    +  type  +(int, CharSequence, OnClickListener) in android.app.AlertDialog +
    +  type  +(int, CharSequence, Message) in android.app.AlertDialog +
    +setButton2
    +  type  +(CharSequence, OnClickListener) in android.app.AlertDialog +
    +  type  +(CharSequence, Message) in android.app.AlertDialog +
    +setButton3
    +  type  +(CharSequence, OnClickListener) in android.app.AlertDialog +
    +  type  +(CharSequence, Message) in android.app.AlertDialog +
    +setByte +(int, String, byte)
    +setCamera +(Camera)
    +setChar +(int, String, char)
    +setCharSequence +(int, String, CharSequence)
    +setClippingEnabled +(boolean)
    +setCompoundDrawablesWithIntrinsicBounds +(int, int, int, int)
    +setDouble +(int, String, double)
    +setDropDownAnchor +(int)
    +setDropDownWidth +(int)
    +setExtractedText +(ExtractedText)
    +setFastScrollEnabled +(boolean)
    +setFillEnabled +(boolean)
    +setFloat +(int, String, float)
    +setFooterDividersEnabled +(boolean)
    +setHapticFeedbackEnabled +(boolean)
    +setHeaderDividersEnabled +(boolean)
    +setImageViewBitmap +(int, Bitmap)
    +setImeActionLabel +(CharSequence, int)
    +setImeOptions +(int)
    +setInexactRepeating +(int, long, long, PendingIntent)
    +setInputExtras +(int)
    +setInputMethodMode +(int)
    +setInputType +(int)
    +setInt +(int, String, int)
    +setKeyProgressIncrement +(int)
    +setListSelection +(int)
    +setLong +(int, String, long)
    +setMaxDuration +(int)
    +setMaxFileSize +(long)
    +setNetworkAvailable +(boolean)
    +setOnChronometerTickListener +(OnChronometerTickListener)
    +setOnClickPendingIntent +(int, PendingIntent)
    +setOnDoubleTapListener +(OnDoubleTapListener)
    +setOnEditorActionListener +(OnEditorActionListener)
    +setOnErrorListener +(OnErrorListener)
    +setOneShotPreviewCallback +(PreviewCallback)
    +setOnInfoListener
    +  type  +(OnInfoListener) in android.media.MediaPlayer +
    +  type  +(OnInfoListener) in android.media.MediaRecorder +
    +setOnVideoSizeChangedListener +(OnVideoSizeChangedListener)
    +setOutputFile +(FileDescriptor)
    +setOutsideTouchable +(boolean)
    +setPreviewDisplay +(SurfaceHolder)
    +setPrivateImeOptions +(String)
    +setRawInputType +(int)
    +setScrollContainer +(boolean)
    +setShort +(int, String, short)
    +setSmoothScrollbarEnabled +(boolean)
    +setSoftInputMode +(int)
    +setStaticTransformationsEnabled +(boolean)
    +setString +(int, String, String)
    +setTestProviderEnabled +(String, boolean)
    +setTestProviderLocation +(String, Location)
    +setTestProviderStatus +(String, int, Bundle, long)
    +setTextColor +(int, int)
    +setTouchable +(boolean)
    +setTouchInterceptor +(OnTouchListener)
    +setUri +(int, String, Uri)
    +setUserAgent +(int)
    +setUserAgentString +(String)
    +setVideoEncoder +(int)
    +setVideoFrameRate +(int)
    +setVideoSize +(int, int)
    +setVideoSource +(int)
    +setView +(View, int, int, int, int)
    +setViewResource +(int)
    +setVisible +(boolean)
    +setWindowAnimations +(int)
    +setWindowLayoutMode +(int, int)
    +sort +(Comparator<? super T>)
    + +
    T  +A +B +C +D +E +F +G +H +I +L +M +O +P +R +S +U +W +Y + TOP +

    +toShortString
    +  type  +() in android.graphics.Rect +
    +  type  +() in android.view.animation.Transformation +
    + +
    U  +A +B +C +D +E +F +G +H +I +L +M +O +P +R +S +T +W +Y + TOP +

    +unregisterListener
    +  type  +(SensorEventListener) in android.hardware.SensorManager +
    +  type  +(SensorEventListener, Sensor) in android.hardware.SensorManager +
    +  type  +(SensorListener) in android.hardware.SensorManager +
    +  type  +(SensorListener, int) in android.hardware.SensorManager +
    +update
    +  type  +() in android.widget.PopupWindow +
    +  type  +(int, int, int, int, boolean) in android.widget.PopupWindow +
    + +
    W  +A +B +C +D +E +F +G +H +I +L +M +O +P +R +S +T +U +Y + TOP +

    +writeMap +(Map)
    +writeToParcel
    +  type  +(Parcel, int) in android.content.res.AssetFileDescriptor +
    +  type  +(Parcel, int) in android.graphics.RectF +
    +  type  +(Parcel, int) in android.text.Annotation +
    +  type  +(Parcel, int) in android.text.style.AbsoluteSizeSpan +
    +  type  +(Parcel, int) in android.text.style.AlignmentSpan.Standard +
    +  type  +(Parcel, int) in android.text.style.BackgroundColorSpan +
    +  type  +(Parcel, int) in android.text.style.BulletSpan +
    +  type  +(Parcel, int) in android.text.style.ForegroundColorSpan +
    +  type  +(Parcel, int) in android.text.style.LeadingMarginSpan.Standard +
    +  type  +(Parcel, int) in android.text.style.QuoteSpan +
    +  type  +(Parcel, int) in android.text.style.RelativeSizeSpan +
    +  type  +(Parcel, int) in android.text.style.ScaleXSpan +
    +  type  +(Parcel, int) in android.text.style.StrikethroughSpan +
    +  type  +(Parcel, int) in android.text.style.StyleSpan +
    +  type  +(Parcel, int) in android.text.style.SubscriptSpan +
    +  type  +(Parcel, int) in android.text.style.SuperscriptSpan +
    +  type  +(Parcel, int) in android.text.style.TextAppearanceSpan +
    +  type  +(Parcel, int) in android.text.style.TypefaceSpan +
    +  type  +(Parcel, int) in android.text.style.URLSpan +
    +  type  +(Parcel, int) in android.text.style.UnderlineSpan +
    + +
    Y  +A +B +C +D +E +F +G +H +I +L +M +O +P +R +S +T +U +W + TOP +

    +yieldIfContended +()
    +yieldIfContendedSafely +()
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/methods_index_changes.html b/docs/html/sdk/api_diff/3/changes/methods_index_changes.html new file mode 100644 index 000000000000..1b1b305b9a44 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/methods_index_changes.html @@ -0,0 +1,466 @@ + + + + + + + + + +Method Changes Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Methods +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + +
    A  +C +D +F +G +I +L +O +P +R +S +U +W +Y + TOP +

    +addRequirements +(Predicate<TestMethod>)
    +appendEscapedSQLString +(StringBuilder, String)
    + +
    C  +A +D +F +G +I +L +O +P +R +S +U +W +Y + TOP +

    +changeDebugPort +(int)
    +clone +()
    + +
    D  +A +C +F +G +I +L +O +P +R +S +U +W +Y + TOP +

    +drag +(ActivityInstrumentationTestCase, float, float, float, float, int)
    +dragQuarterScreenDown +(ActivityInstrumentationTestCase)
    +dragQuarterScreenUp +(ActivityInstrumentationTestCase)
    +dragViewBy +(ActivityInstrumentationTestCase, View, int, int, int)
    +dragViewTo +(ActivityInstrumentationTestCase, View, int, int, int)
    +dragViewToBottom
    +  type  +(ActivityInstrumentationTestCase, View) in android.test.TouchUtils +
    +  type  +(InstrumentationTestCase, Activity, View) in android.test.TouchUtils +
    +dragViewToTop
    +  type  +(ActivityInstrumentationTestCase, View) in android.test.TouchUtils +
    +  type  +(ActivityInstrumentationTestCase, View, int) in android.test.TouchUtils +
    +dragViewToX +(ActivityInstrumentationTestCase, View, int, int)
    +dragViewToY +(ActivityInstrumentationTestCase, View, int, int)
    + +
    F  +A +C +D +G +I +L +O +P +R +S +U +W +Y + TOP +

    +forkAndSpecialize +(int, int, int[], boolean, int[][])
    +forkSystemServer +(int, int, int[], boolean, int[][])
    +forName +(String)
    + +
    G  +A +C +D +F +I +L +O +P +R +S +U +W +Y + TOP +

    +getClasses +()
    +getColumnIndex
    +  type  +(String) in android.database.Cursor +
    +  type  +(String) in android.database.CursorWrapper +
    +getConstructors +()
    +getCount +()
    +getDeclaredClasses +()
    +getDeclaredConstructors +()
    +getEdgeSlop +()
    +getFadingEdgeLength +()
    +getHandler +()
    +getInterfaces +()
    +getItem +(int)
    +getItemClickListener +()
    +getItemId +(int)
    +getItemSelectedListener +()
    +getMaximumDrawingCacheSize +()
    +getMinimumFlingVelocity +()
    +getProxyClass +(ClassLoader, Class<?>)
    +getScrollBarSize +()
    +getSensors +()
    +getSurrogate +(String, Map<String, String>)
    +getTargetIntent +()
    +getTouchSlop +()
    +getUserAgent +()
    +getWindowTouchSlop +()
    +getZoomControls +()
    + +
    I  +A +C +D +F +G +L +O +P +R +S +U +W +Y + TOP +

    +isCookielessProxyUrl +(String)
    + +
    L  +A +C +D +F +G +I +O +P +R +S +U +W +Y + TOP +

    +longClickView +(ActivityInstrumentationTestCase, View)
    + +
    O  +A +C +D +F +G +I +L +P +R +S +U +W +Y + TOP +

    +onGlobalFocusChanged +(View, View)
    +onRestoreInstanceState +(Parcelable)
    +onSaveInstanceState +()
    + +
    P  +A +C +D +F +G +I +L +O +R +S +U +W +Y + TOP +

    +parse +(String)
    +playSoundEffect +(int)
    +prepare +()
    + +
    R  +A +C +D +F +G +I +L +O +P +S +U +W +Y + TOP +

    +readHashMap +(ClassLoader)
    +readMap +(Map, ClassLoader)
    +registerListener
    +  type  +(SensorListener, int) in android.hardware.SensorManager +
    +  type  +(SensorListener, int, int) in android.hardware.SensorManager +
    + +
    S  +A +C +D +F +G +I +L +O +P +R +U +W +Y + TOP +

    +scrollToBottom +(ActivityInstrumentationTestCase, ViewGroup)
    +scrollToTop +(ActivityInstrumentationTestCase, ViewGroup)
    +service +(String, Map<String, String>)
    +setButton
    +  type  +(int, CharSequence, OnClickListener) in android.app.AlertDialog +
    +  type  +(int, CharSequence, Message) in android.app.AlertDialog +
    +setButton2
    +  type  +(CharSequence, OnClickListener) in android.app.AlertDialog +
    +  type  +(CharSequence, Message) in android.app.AlertDialog +
    +setButton3
    +  type  +(CharSequence, OnClickListener) in android.app.AlertDialog +
    +  type  +(CharSequence, Message) in android.app.AlertDialog +
    +setPreviewDisplay +(SurfaceHolder)
    +setUserAgent +(int)
    + +
    U  +A +C +D +F +G +I +L +O +P +R +S +W +Y + TOP +

    +unregisterListener
    +  type  +(SensorListener) in android.hardware.SensorManager +
    +  type  +(SensorListener, int) in android.hardware.SensorManager +
    + +
    W  +A +C +D +F +G +I +L +O +P +R +S +U +Y + TOP +

    +writeMap +(Map)
    + +
    Y  +A +C +D +F +G +I +L +O +P +R +S +U +W + TOP +

    +yieldIfContended +()
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/methods_index_removals.html b/docs/html/sdk/api_diff/3/changes/methods_index_removals.html new file mode 100644 index 000000000000..bbce14487297 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/methods_index_removals.html @@ -0,0 +1,62 @@ + + + + + + + + + +Method Removals Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Methods +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/packages_index_additions.html b/docs/html/sdk/api_diff/3/changes/packages_index_additions.html new file mode 100644 index 000000000000..ccd54fdc5c76 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/packages_index_additions.html @@ -0,0 +1,72 @@ + + + + + + + + + +Package Additions Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Packages +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    +
    +
    + +android.appwidget
    +android.inputmethodservice
    +android.speech
    +android.text.format
    +android.view.inputmethod
    + +java.beans
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/packages_index_all.html b/docs/html/sdk/api_diff/3/changes/packages_index_all.html new file mode 100644 index 000000000000..5876fe92fca9 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/packages_index_all.html @@ -0,0 +1,112 @@ + + + + + + + + + +Package Differences Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +Packages +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    +
    +
    + +android
    +android.app
    +android.appwidget
    +android.content
    +android.content.pm
    +android.content.res
    +android.database
    +android.database.sqlite
    +android.graphics
    +android.graphics.drawable
    +android.graphics.drawable.shapes
    +android.hardware
    +android.inputmethodservice
    +android.location
    +android.media
    +android.net
    +android.net.wifi
    +android.opengl
    +android.os
    +android.preference
    +android.provider
    +android.speech
    +android.telephony
    +android.telephony.gsm
    +android.test
    +android.test.mock
    +android.test.suitebuilder
    +android.text
    +android.text.format
    +android.text.method
    +android.text.style
    +android.util
    +android.view
    +android.view.animation
    +android.view.inputmethod
    +android.webkit
    +android.widget
    + +dalvik.system
    + +java.beans
    +java.lang
    +java.lang.reflect
    +java.net
    +java.util
    +java.util.jar
    +java.util.logging
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/packages_index_changes.html b/docs/html/sdk/api_diff/3/changes/packages_index_changes.html new file mode 100644 index 000000000000..3665a918f31f --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/packages_index_changes.html @@ -0,0 +1,106 @@ + + + + + + + + + +Package Changes Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Packages +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    +
    +
    + +android
    +android.app
    +android.content
    +android.content.pm
    +android.content.res
    +android.database
    +android.database.sqlite
    +android.graphics
    +android.graphics.drawable
    +android.graphics.drawable.shapes
    +android.hardware
    +android.location
    +android.media
    +android.net
    +android.net.wifi
    +android.opengl
    +android.os
    +android.preference
    +android.provider
    +android.telephony
    +android.telephony.gsm
    +android.test
    +android.test.mock
    +android.test.suitebuilder
    +android.text
    +android.text.method
    +android.text.style
    +android.util
    +android.view
    +android.view.animation
    +android.webkit
    +android.widget
    + +dalvik.system
    + +java.lang
    +java.lang.reflect
    +java.net
    +java.util
    +java.util.jar
    +java.util.logging
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/packages_index_removals.html b/docs/html/sdk/api_diff/3/changes/packages_index_removals.html new file mode 100644 index 000000000000..17a90d9989ca --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/packages_index_removals.html @@ -0,0 +1,64 @@ + + + + + + + + + +Package Removals Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Packages +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.app.html b/docs/html/sdk/api_diff/3/changes/pkg_android.app.html new file mode 100644 index 000000000000..c1602d80f1a3 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.app.html @@ -0,0 +1,198 @@ + + + + + + + + + +android.app + + + + + + + + + + +
    +
    +
    +

    +Package android.app +

    +

    + + + + + + + + + + + + + + + + + + + + +
    Added Classes +
    + + ActivityManager.RunningAppProcessInfo +  
    + + IntentService +  
    + + LauncherActivity.IconResizer +  
    + + LauncherActivity.ListItem +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Classes +
    + + Activity +  
    + + ActivityManager +  
    + + AlarmManager +  
    + + AlertDialog +  
    + + Instrumentation +  
    + + LauncherActivity +  
    + + PendingIntent +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.content.html b/docs/html/sdk/api_diff/3/changes/pkg_android.content.html new file mode 100644 index 000000000000..8a9f4af0a243 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.content.html @@ -0,0 +1,155 @@ + + + + + + + + + +android.content + + + + + + + + + + +
    +
    +
    +

    +Package android.content +

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Classes and Interfaces +
    + + BroadcastReceiver +  
    + + ContentProvider +  
    + + ContentResolver +  
    + + Context +  
    + + DialogInterface +  
    + + Intent +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.content.pm.html b/docs/html/sdk/api_diff/3/changes/pkg_android.content.pm.html new file mode 100644 index 000000000000..d3bddd4badc3 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.content.pm.html @@ -0,0 +1,149 @@ + + + + + + + + + +android.content.pm + + + + + + + + + + +
    +
    +
    +

    +Package android.content.pm +

    +

    + + + + + + + + +
    Added Classes +
    + + ConfigurationInfo +  
    +  +

    + + + + + + + + + + + + + + + + +
    Changed Classes +
    + + ActivityInfo +  
    + + PackageInfo +  
    + + PackageManager +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.content.res.html b/docs/html/sdk/api_diff/3/changes/pkg_android.content.res.html new file mode 100644 index 000000000000..81d234d2263c --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.content.res.html @@ -0,0 +1,163 @@ + + + + + + + + + +android.content.res + + + + + + + + + + +
    +
    +
    +

    +Package android.content.res +

    +

    + + + + + + + + + + + + +
    Added Classes +
    + + AssetFileDescriptor.AutoCloseInputStream +  
    + + AssetFileDescriptor.AutoCloseOutputStream +  
    +  +

    + + + + + + + + + + + + + + + + + + + + +
    Changed Classes +
    + + AssetFileDescriptor +  
    + + Configuration +  
    + + Resources +  
    + + TypedArray +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.database.html b/docs/html/sdk/api_diff/3/changes/pkg_android.database.html new file mode 100644 index 000000000000..70b964445d55 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.database.html @@ -0,0 +1,134 @@ + + + + + + + + + +android.database + + + + + + + + + + +
    +
    +
    +

    +Package android.database +

    +

    + + + + + + + + + + + + + + + + +
    Changed Classes and Interfaces +
    + + Cursor +  
    + + CursorWrapper +  
    + + DatabaseUtils +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.database.sqlite.html b/docs/html/sdk/api_diff/3/changes/pkg_android.database.sqlite.html new file mode 100644 index 000000000000..db2017bbdc9b --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.database.sqlite.html @@ -0,0 +1,120 @@ + + + + + + + + + +android.database.sqlite + + + + + + + + + + +
    +
    +
    +

    +Package android.database.sqlite +

    +

    + + + + + + + + +
    Changed Classes +
    + + SQLiteDatabase +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.graphics.drawable.html b/docs/html/sdk/api_diff/3/changes/pkg_android.graphics.drawable.html new file mode 100644 index 000000000000..6025b71b03d8 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.graphics.drawable.html @@ -0,0 +1,141 @@ + + + + + + + + + +android.graphics.drawable + + + + + + + + + + +
    +
    +
    +

    +Package android.graphics.drawable +

    +

    + + + + + + + + + + + + + + + + + + + + +
    Changed Classes +
    + + Drawable +  
    + + RotateDrawable +  
    + + ScaleDrawable +  
    + + TransitionDrawable +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.graphics.drawable.shapes.html b/docs/html/sdk/api_diff/3/changes/pkg_android.graphics.drawable.shapes.html new file mode 100644 index 000000000000..affdaabc6321 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.graphics.drawable.shapes.html @@ -0,0 +1,120 @@ + + + + + + + + + +android.graphics.drawable.shapes + + + + + + + + + + +
    +
    +
    +

    +Package android.graphics.drawable.shapes +

    +

    + + + + + + + + +
    Changed Classes +
    + + Shape +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.graphics.html b/docs/html/sdk/api_diff/3/changes/pkg_android.graphics.html new file mode 100644 index 000000000000..c7644d5860bd --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.graphics.html @@ -0,0 +1,141 @@ + + + + + + + + + +android.graphics + + + + + + + + + + +
    +
    +
    +

    +Package android.graphics +

    +

    + + + + + + + + + + + + + + + + + + + + +
    Changed Classes +
    + + Bitmap +  
    + + Canvas +  
    + + Rect +  
    + + RectF +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.hardware.html b/docs/html/sdk/api_diff/3/changes/pkg_android.hardware.html new file mode 100644 index 000000000000..63ebbdc19f69 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.hardware.html @@ -0,0 +1,170 @@ + + + + + + + + + +android.hardware + + + + + + + + + + +
    +
    +
    +

    +Package android.hardware +

    +

    + + + + + + + + + + + + + + + + + + + + +
    Added Classes and Interfaces +
    + + GeomagneticField +  
    + + Sensor +  
    + + SensorEvent +  
    + + SensorEventListener +  
    +  +

    + + + + + + + + + + + + + + + + +
    Changed Classes and Interfaces +
    + + Camera +  
    + + SensorListener +  
    + + SensorManager +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.html b/docs/html/sdk/api_diff/3/changes/pkg_android.html new file mode 100644 index 000000000000..0cedd98cb86e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.html @@ -0,0 +1,177 @@ + + + + + + + + + +android + + + + + + + + + + +
    +
    +
    +

    +Package android +

    +

    + + + + + + + + + + + + +
    Added Classes +
    + + R.bool +  
    + + R.integer +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Classes +
    + + Manifest.permission +  
    + + R.attr +  
    + + R.drawable +  
    + + R.id +  
    + + R.string +  
    + + R.style +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.location.html b/docs/html/sdk/api_diff/3/changes/pkg_android.location.html new file mode 100644 index 000000000000..2f8af381b95d --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.location.html @@ -0,0 +1,156 @@ + + + + + + + + + +android.location + + + + + + + + + + +
    +
    +
    +

    +Package android.location +

    +

    + + + + + + + + + + + + + + + + +
    Added Classes and Interfaces +
    + + GpsSatellite +  
    + + GpsStatus +  
    + + GpsStatus.Listener +  
    +  +

    + + + + + + + + + + + + +
    Changed Classes +
    + + Location +  
    + + LocationManager +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.media.html b/docs/html/sdk/api_diff/3/changes/pkg_android.media.html new file mode 100644 index 000000000000..c531240beb8d --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.media.html @@ -0,0 +1,254 @@ + + + + + + + + + +android.media + + + + + + + + + + +
    +
    +
    +

    +Package android.media +

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Classes and Interfaces +
    + + AudioFormat +  
    + + AudioRecord +  
    + + AudioRecord.OnRecordPositionUpdateListener +  
    + + AudioTrack +  
    + + AudioTrack.OnPlaybackPositionUpdateListener +  
    + + JetPlayer +  
    + + JetPlayer.OnJetEventListener +  
    + + MediaPlayer.OnInfoListener +  
    + + MediaPlayer.OnVideoSizeChangedListener +  
    + + MediaRecorder.OnErrorListener +  
    + + MediaRecorder.OnInfoListener +  
    + + MediaRecorder.VideoEncoder +  
    + + MediaRecorder.VideoSource +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Classes +
    + + AudioManager +  
    + + MediaPlayer +  
    + + MediaRecorder +  
    + + MediaRecorder.OutputFormat +  
    + + RingtoneManager +  
    + + SoundPool +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.net.html b/docs/html/sdk/api_diff/3/changes/pkg_android.net.html new file mode 100644 index 000000000000..cf2f916cede7 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.net.html @@ -0,0 +1,127 @@ + + + + + + + + + +android.net + + + + + + + + + + +
    +
    +
    +

    +Package android.net +

    +

    + + + + + + + + + + + + +
    Changed Classes +
    + + ConnectivityManager +  
    + + NetworkInfo +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.net.wifi.html b/docs/html/sdk/api_diff/3/changes/pkg_android.net.wifi.html new file mode 100644 index 000000000000..99f2951d1f78 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.net.wifi.html @@ -0,0 +1,120 @@ + + + + + + + + + +android.net.wifi + + + + + + + + + + +
    +
    +
    +

    +Package android.net.wifi +

    +

    + + + + + + + + +
    Changed Classes +
    + + WifiManager +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.opengl.html b/docs/html/sdk/api_diff/3/changes/pkg_android.opengl.html new file mode 100644 index 000000000000..622d8612fb97 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.opengl.html @@ -0,0 +1,148 @@ + + + + + + + + + +android.opengl + + + + + + + + + + +
    +
    +
    +

    +Package android.opengl +

    +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Classes and Interfaces +
    + + GLSurfaceView +  
    + + GLSurfaceView.EGLConfigChooser +  
    + + GLSurfaceView.GLWrapper +  
    + + GLSurfaceView.Renderer +  
    + + Visibility +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.os.html b/docs/html/sdk/api_diff/3/changes/pkg_android.os.html new file mode 100644 index 000000000000..098864ef879d --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.os.html @@ -0,0 +1,212 @@ + + + + + + + + + +android.os + + + + + + + + + + +
    +
    +
    +

    +Package android.os +

    +

    + + + + + + + + + + + + + + + + + + + + +
    Added Classes and Interfaces +
    + + AsyncTask +  
    + + AsyncTask.Status +  
    + + Handler.Callback +  
    + + ResultReceiver +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Classes and Interfaces +
    + + Binder +  
    + + Build +  
    + + Debug +  
    + + Environment +  
    + + Handler +  
    + + IBinder +  
    + + Looper +  
    + + Parcel +  
    + + ParcelFileDescriptor +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.preference.html b/docs/html/sdk/api_diff/3/changes/pkg_android.preference.html new file mode 100644 index 000000000000..5ffe3cb61f34 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.preference.html @@ -0,0 +1,120 @@ + + + + + + + + + +android.preference + + + + + + + + + + +
    +
    +
    +

    +Package android.preference +

    +

    + + + + + + + + +
    Changed Classes +
    + + DialogPreference +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.provider.html b/docs/html/sdk/api_diff/3/changes/pkg_android.provider.html new file mode 100644 index 000000000000..f16e4fd19767 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.provider.html @@ -0,0 +1,233 @@ + + + + + + + + + +android.provider + + + + + + + + + + +
    +
    +
    +

    +Package android.provider +

    +

    + + + + + + + + + + + + + + + + + + + + +
    Added Classes +
    + + LiveFolders +  
    + + Settings.Secure +  
    + + UserDictionary +  
    + + UserDictionary.Words +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Classes and Interfaces +
    + + Browser +  
    + + Contacts.Intents +  
    + + Contacts.Intents.Insert +  
    + + Contacts.PeopleColumns +  
    + + MediaStore +  
    + + MediaStore.Audio.AlbumColumns +  
    + + MediaStore.Audio.Media +  
    + + MediaStore.Images.Media +  
    + + MediaStore.Video +  
    + + MediaStore.Video.VideoColumns +  
    + + Settings +  
    + + Settings.System +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.telephony.gsm.html b/docs/html/sdk/api_diff/3/changes/pkg_android.telephony.gsm.html new file mode 100644 index 000000000000..d17223483e02 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.telephony.gsm.html @@ -0,0 +1,120 @@ + + + + + + + + + +android.telephony.gsm + + + + + + + + + + +
    +
    +
    +

    +Package android.telephony.gsm +

    +

    + + + + + + + + +
    Changed Classes +
    + + SmsMessage +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.telephony.html b/docs/html/sdk/api_diff/3/changes/pkg_android.telephony.html new file mode 100644 index 000000000000..8131269eab82 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.telephony.html @@ -0,0 +1,142 @@ + + + + + + + + + +android.telephony + + + + + + + + + + +
    +
    +
    +

    +Package android.telephony +

    +

    + + + + + + + + +
    Added Classes +
    + + NeighboringCellInfo +  
    +  +

    + + + + + + + + + + + + +
    Changed Classes +
    + + PhoneNumberUtils +  
    + + TelephonyManager +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.test.html b/docs/html/sdk/api_diff/3/changes/pkg_android.test.html new file mode 100644 index 000000000000..3b5edd42df00 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.test.html @@ -0,0 +1,163 @@ + + + + + + + + + +android.test + + + + + + + + + + +
    +
    +
    +

    +Package android.test +

    +

    + + + + + + + + + + + + +
    Added Classes +
    + + ActivityInstrumentationTestCase2 +  
    + + ProviderTestCase2 +  
    +  +

    + + + + + + + + + + + + + + + + + + + + +
    Changed Classes +
    + + ActivityInstrumentationTestCase +  
    + + InstrumentationTestCase +  
    + + ProviderTestCase +  
    + + TouchUtils +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.test.mock.html b/docs/html/sdk/api_diff/3/changes/pkg_android.test.mock.html new file mode 100644 index 000000000000..87a371cd22b1 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.test.mock.html @@ -0,0 +1,120 @@ + + + + + + + + + +android.test.mock + + + + + + + + + + +
    +
    +
    +

    +Package android.test.mock +

    +

    + + + + + + + + +
    Changed Classes +
    + + MockPackageManager +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.test.suitebuilder.html b/docs/html/sdk/api_diff/3/changes/pkg_android.test.suitebuilder.html new file mode 100644 index 000000000000..469db289da92 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.test.suitebuilder.html @@ -0,0 +1,127 @@ + + + + + + + + + +android.test.suitebuilder + + + + + + + + + + +
    +
    +
    +

    +Package android.test.suitebuilder +

    +

    + + + + + + + + + + + + +
    Changed Classes +
    + + TestMethod +  
    + + TestSuiteBuilder +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.text.html b/docs/html/sdk/api_diff/3/changes/pkg_android.text.html new file mode 100644 index 000000000000..ffc696676f16 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.text.html @@ -0,0 +1,191 @@ + + + + + + + + + +android.text + + + + + + + + + + +
    +
    +
    +

    +Package android.text +

    +

    + + + + + + + + + + + + + + + + + + + + +
    Added Classes and Interfaces +
    + + InputType +  
    + + NoCopySpan +  
    + + NoCopySpan.Concrete +  
    + + ParcelableSpan +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Classes and Interfaces +
    + + Annotation +  
    + + AutoText +  
    + + SpanWatcher +  
    + + Spanned +  
    + + TextUtils +  
    + + TextWatcher +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.text.method.html b/docs/html/sdk/api_diff/3/changes/pkg_android.text.method.html new file mode 100644 index 000000000000..89b94ad3125b --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.text.method.html @@ -0,0 +1,218 @@ + + + + + + + + + +android.text.method + + + + + + + + + + +
    +
    +
    +

    +Package android.text.method +

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Classes and Interfaces +
    + + ArrowKeyMovementMethod +  
    + + BaseKeyListener +  
    + + DateKeyListener +  
    + + DateTimeKeyListener +  
    + + DialerKeyListener +  
    + + DigitsKeyListener +  
    + + KeyListener +  
    + + MetaKeyKeyListener +  
    + + MovementMethod +  
    + + MultiTapKeyListener +  
    + + QwertyKeyListener +  
    + + ScrollingMovementMethod +  
    + + TextKeyListener +  
    + + TimeKeyListener +  
    + + Touch +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.text.style.html b/docs/html/sdk/api_diff/3/changes/pkg_android.text.style.html new file mode 100644 index 000000000000..e1e1fec0b4e9 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.text.style.html @@ -0,0 +1,289 @@ + + + + + + + + + +android.text.style + + + + + + + + + + +
    +
    +
    +

    +Package android.text.style +

    +

    + + + + + + + + +
    Added Interfaces +
    + + UpdateAppearance +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Classes and Interfaces +
    + + AbsoluteSizeSpan +  
    + + AlignmentSpan.Standard +  
    + + BackgroundColorSpan +  
    + + BulletSpan +  
    + + ClickableSpan +  
    + + DynamicDrawableSpan +  
    + + ForegroundColorSpan +  
    + + ImageSpan +  
    + + LeadingMarginSpan.Standard +  
    + + MaskFilterSpan +  
    + + QuoteSpan +  
    + + RasterizerSpan +  
    + + RelativeSizeSpan +  
    + + ScaleXSpan +  
    + + StrikethroughSpan +  
    + + StyleSpan +  
    + + SubscriptSpan +  
    + + SuperscriptSpan +  
    + + TextAppearanceSpan +  
    + + TypefaceSpan +  
    + + URLSpan +  
    + + UnderlineSpan +  
    + + UpdateLayout +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.util.html b/docs/html/sdk/api_diff/3/changes/pkg_android.util.html new file mode 100644 index 000000000000..7403be48c31e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.util.html @@ -0,0 +1,142 @@ + + + + + + + + + +android.util + + + + + + + + + + +
    +
    +
    +

    +Package android.util +

    +

    + + + + + + + + +
    Added Classes +
    + + PrintStreamPrinter +  
    +  +

    + + + + + + + + + + + + +
    Changed Classes +
    + + SparseIntArray +  
    + + TimeUtils +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.view.animation.html b/docs/html/sdk/api_diff/3/changes/pkg_android.view.animation.html new file mode 100644 index 000000000000..30c1badc27d7 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.view.animation.html @@ -0,0 +1,127 @@ + + + + + + + + + +android.view.animation + + + + + + + + + + +
    +
    +
    +

    +Package android.view.animation +

    +

    + + + + + + + + + + + + +
    Changed Classes +
    + + Animation +  
    + + Transformation +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.view.html b/docs/html/sdk/api_diff/3/changes/pkg_android.view.html new file mode 100644 index 000000000000..9b4a0427dacd --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.view.html @@ -0,0 +1,268 @@ + + + + + + + + + +android.view + + + + + + + + + + +
    +
    +
    +

    +Package android.view +

    +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Classes and Interfaces +
    + + GestureDetector.OnDoubleTapListener +  
    + + HapticFeedbackConstants +  
    + + OrientationEventListener +  
    + + ViewDebug.CapturedViewProperty +  
    + + ViewTreeObserver.OnScrollChangedListener +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Classes and Interfaces +
    + + GestureDetector +  
    + + GestureDetector.SimpleOnGestureListener +  
    + + Gravity +  
    + + KeyCharacterMap +  
    + + KeyEvent +  
    + + Menu +  
    + + MotionEvent +  
    + + OrientationListener +  
    + + View +  
    + + ViewConfiguration +  
    + + ViewDebug +  
    + + ViewGroup +  
    + + ViewParent +  
    + + ViewTreeObserver +  
    + + Window +  
    + + WindowManager.LayoutParams +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.webkit.html b/docs/html/sdk/api_diff/3/changes/pkg_android.webkit.html new file mode 100644 index 000000000000..339b9ab3b479 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.webkit.html @@ -0,0 +1,170 @@ + + + + + + + + + +android.webkit + + + + + + + + + + +
    +
    +
    +

    +Package android.webkit +

    +

    + + + + + + + + +
    Added Classes +
    + + PluginData +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Classes and Interfaces +
    + + URLUtil +  
    + + UrlInterceptHandler +  
    + + UrlInterceptRegistry +  
    + + WebHistoryItem +  
    + + WebSettings +  
    + + WebView +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.widget.html b/docs/html/sdk/api_diff/3/changes/pkg_android.widget.html new file mode 100644 index 000000000000..fc6e9015391a --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.widget.html @@ -0,0 +1,310 @@ + + + + + + + + + +android.widget + + + + + + + + + + +
    +
    +
    +

    +Package android.widget +

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Classes and Interfaces +
    + + AlphabetIndexer +  
    + + Chronometer.OnChronometerTickListener +  
    + + HorizontalScrollView +  
    + + SectionIndexer +  
    + + SlidingDrawer +  
    + + SlidingDrawer.OnDrawerCloseListener +  
    + + SlidingDrawer.OnDrawerOpenListener +  
    + + SlidingDrawer.OnDrawerScrollListener +  
    + + TextView.OnEditorActionListener +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Classes and Interfaces +
    + + AbsListView +  
    + + AbsSeekBar +  
    + + AbsoluteLayout +  
    + + ArrayAdapter +  
    + + AutoCompleteTextView +  
    + + Chronometer +  
    + + CursorAdapter +  
    + + GridView +  
    + + ListView +  
    + + PopupWindow +  
    + + PopupWindow.OnDismissListener +  
    + + ProgressBar +  
    + + RemoteViews +  
    + + RemoteViews.ActionException +  
    + + ResourceCursorAdapter +  
    + + Scroller +  
    + + SimpleCursorAdapter +  
    + + TextView +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_dalvik.system.html b/docs/html/sdk/api_diff/3/changes/pkg_dalvik.system.html new file mode 100644 index 000000000000..654be0fb246e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_dalvik.system.html @@ -0,0 +1,149 @@ + + + + + + + + + +dalvik.system + + + + + + + + + + +
    +
    +
    +

    +Package dalvik.system +

    +

    + + + + + + + + +
    Added Classes +
    + + DexClassLoader +  
    +  +

    + + + + + + + + + + + + + + + + +
    Changed Classes +
    + + DexFile +  
    + + VMDebug +  
    + + Zygote +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_java.lang.html b/docs/html/sdk/api_diff/3/changes/pkg_java.lang.html new file mode 100644 index 000000000000..d7699273d263 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_java.lang.html @@ -0,0 +1,134 @@ + + + + + + + + + +java.lang + + + + + + + + + + +
    +
    +
    +

    +Package java.lang +

    +

    + + + + + + + + + + + + + + + + +
    Changed Classes +
    + + Character.UnicodeBlock +  
    + + Class +  
    + + String +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_java.lang.reflect.html b/docs/html/sdk/api_diff/3/changes/pkg_java.lang.reflect.html new file mode 100644 index 000000000000..ccc643dd8c99 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_java.lang.reflect.html @@ -0,0 +1,120 @@ + + + + + + + + + +java.lang.reflect + + + + + + + + + + +
    +
    +
    +

    +Package java.lang.reflect +

    +

    + + + + + + + + +
    Changed Classes +
    + + Proxy +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_java.net.html b/docs/html/sdk/api_diff/3/changes/pkg_java.net.html new file mode 100644 index 000000000000..98cc83d2cd89 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_java.net.html @@ -0,0 +1,120 @@ + + + + + + + + + +java.net + + + + + + + + + + +
    +
    +
    +

    +Package java.net +

    +

    + + + + + + + + +
    Changed Classes +
    + + Socket +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_java.util.html b/docs/html/sdk/api_diff/3/changes/pkg_java.util.html new file mode 100644 index 000000000000..462c73b083b6 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_java.util.html @@ -0,0 +1,120 @@ + + + + + + + + + +java.util + + + + + + + + + + +
    +
    +
    +

    +Package java.util +

    +

    + + + + + + + + +
    Changed Classes +
    + + Date +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_java.util.jar.html b/docs/html/sdk/api_diff/3/changes/pkg_java.util.jar.html new file mode 100644 index 000000000000..f1ac6e5d7f7d --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_java.util.jar.html @@ -0,0 +1,127 @@ + + + + + + + + + +java.util.jar + + + + + + + + + + +
    +
    +
    +

    +Package java.util.jar +

    +

    + + + + + + + + + + + + +
    Changed Interfaces +
    + + Pack200.Packer +  
    + + Pack200.Unpacker +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_java.util.logging.html b/docs/html/sdk/api_diff/3/changes/pkg_java.util.logging.html new file mode 100644 index 000000000000..f2cc23d8472e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_java.util.logging.html @@ -0,0 +1,127 @@ + + + + + + + + + +java.util.logging + + + + + + + + + + +
    +
    +
    +

    +Package java.util.logging +

    +

    + + + + + + + + + + + + +
    Changed Classes +
    + + Level +  
    + + LogManager +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/stylesheet-jdiff.css b/docs/html/sdk/api_diff/3/stylesheet-jdiff.css new file mode 100644 index 000000000000..b3c1b9af86b9 --- /dev/null +++ b/docs/html/sdk/api_diff/3/stylesheet-jdiff.css @@ -0,0 +1,37 @@ + +/* (http://www.jdiff.org) */ + +div.and-diff-id {border: 1px solid #eee;position:relative;float:right;clear:both;padding:0px;} +table.diffspectable {border:1px;padding:0px;margin:0px;} +.diffspechead {background-color:#eee;} +.diffspectable tr {border:0px;padding:0px;} +.diffspectable td {background-color:eee;border:0px;font-size:90%;font-weight:normal;padding:0px;padding-left:1px;padding-right:1px;text-align:center;color:777;} +td.diffvalueold {color:orange;background-color:white;border:0px;font-size:80%;font-style:normal;text-align:left;padding:0px;padding-left:1px;padding-right:1px;line-height:.95em;} +td.diffvaluenew {color:green;background-color:white;border:0px;font-size:80%;font-weight:normal;text-align:left;padding:0px;padding-left:1px;padding-right:1px;line-height:.95em;} +td.diffvalue {color:444;background-color:white;border:0px;font-size:80%;font-weight:normal;text-align:left;padding:0px;padding-left:1px;padding-right:1px;line-height:.95em;} +td.diffspec {background-color:white;border:0px;font-size:80%;font-weight:normal;padding:1px;color:444;text-align:right;padding-right:.5em;line-height:.95em;} +tt {font-size:11pt;font-family:monospace;} +.indexHeader { + font-size:96%; + line-height:.8em;} +.jdiffIndex td { + font-size:96%; + xline-height:.8em; + padding:2px; + padding-left:1em;} +.indexText { + font-size:100%; + padding-left:1em;} +#indexTableCaption { + font-size:96%; + margin-top:.25em; + margin-bottom:0; + } +.hiddenlink { + font-size:96%; + line-height:.8em; + text-decoration:none;} +a { + text-decoration:none;} +a:hover { + text-decoration:underline;} -- cgit v1.2.3-59-g8ed1b From 901305d0a11d86eec516bd085a39d7eafde46047 Mon Sep 17 00:00:00 2001 From: Dirk Dougherty <> Date: Tue, 21 Apr 2009 14:56:21 -0700 Subject: AI 147236: am: CL 147230 am: CL 147228 Add API diff report to SDK docs (API Level 2 to 3) Original author: ddougherty Merged from: //branches/cupcake/... Original author: android-build Automated import of CL 147236 --- docs/html/sdk/api_diff/3/changes.html | 49 + .../3/changes/alldiffs_index_additions.html | 3144 +++++++++++++++ .../sdk/api_diff/3/changes/alldiffs_index_all.html | 4178 ++++++++++++++++++++ .../api_diff/3/changes/alldiffs_index_changes.html | 1652 ++++++++ .../3/changes/alldiffs_index_removals.html | 78 + .../3/changes/android.Manifest.permission.html | 151 + .../sdk/api_diff/3/changes/android.R.attr.html | 739 ++++ .../sdk/api_diff/3/changes/android.R.drawable.html | 137 + docs/html/sdk/api_diff/3/changes/android.R.id.html | 221 ++ .../sdk/api_diff/3/changes/android.R.string.html | 130 + .../sdk/api_diff/3/changes/android.R.style.html | 151 + .../api_diff/3/changes/android.app.Activity.html | 151 + .../3/changes/android.app.ActivityManager.html | 137 + .../3/changes/android.app.AlarmManager.html | 166 + .../3/changes/android.app.AlertDialog.html | 219 + .../3/changes/android.app.Instrumentation.html | 123 + .../3/changes/android.app.LauncherActivity.html | 148 + .../3/changes/android.app.PendingIntent.html | 123 + .../changes/android.content.BroadcastReceiver.html | 123 + .../3/changes/android.content.ContentProvider.html | 123 + .../3/changes/android.content.ContentResolver.html | 130 + .../3/changes/android.content.Context.html | 123 + .../3/changes/android.content.DialogInterface.html | 172 + .../api_diff/3/changes/android.content.Intent.html | 251 ++ .../3/changes/android.content.pm.ActivityInfo.html | 130 + .../3/changes/android.content.pm.PackageInfo.html | 137 + .../changes/android.content.pm.PackageManager.html | 166 + .../android.content.res.AssetFileDescriptor.html | 174 + .../changes/android.content.res.Configuration.html | 144 + .../3/changes/android.content.res.Resources.html | 151 + .../3/changes/android.content.res.TypedArray.html | 123 + .../3/changes/android.database.Cursor.html | 126 + .../3/changes/android.database.CursorWrapper.html | 126 + .../3/changes/android.database.DatabaseUtils.html | 126 + .../android.database.sqlite.SQLiteDatabase.html | 141 + .../3/changes/android.graphics.Bitmap.html | 123 + .../3/changes/android.graphics.Canvas.html | 123 + .../api_diff/3/changes/android.graphics.Rect.html | 123 + .../api_diff/3/changes/android.graphics.RectF.html | 153 + .../android.graphics.drawable.Drawable.html | 123 + .../android.graphics.drawable.RotateDrawable.html | 123 + .../android.graphics.drawable.ScaleDrawable.html | 123 + ...droid.graphics.drawable.TransitionDrawable.html | 123 + .../android.graphics.drawable.shapes.Shape.html | 128 + .../3/changes/android.hardware.Camera.html | 141 + .../3/changes/android.hardware.SensorListener.html | 109 + .../3/changes/android.hardware.SensorManager.html | 473 +++ .../3/changes/android.location.Location.html | 123 + .../changes/android.location.LocationManager.html | 243 ++ .../3/changes/android.media.AudioManager.html | 227 ++ .../3/changes/android.media.MediaPlayer.html | 180 + .../android.media.MediaRecorder.OutputFormat.html | 123 + .../3/changes/android.media.MediaRecorder.html | 240 ++ .../3/changes/android.media.RingtoneManager.html | 123 + .../3/changes/android.media.SoundPool.html | 130 + .../3/changes/android.net.ConnectivityManager.html | 138 + .../3/changes/android.net.NetworkInfo.html | 152 + .../3/changes/android.net.wifi.WifiManager.html | 145 + .../sdk/api_diff/3/changes/android.os.Binder.html | 123 + .../sdk/api_diff/3/changes/android.os.Build.html | 123 + .../sdk/api_diff/3/changes/android.os.Debug.html | 141 + .../api_diff/3/changes/android.os.Environment.html | 130 + .../sdk/api_diff/3/changes/android.os.Handler.html | 130 + .../sdk/api_diff/3/changes/android.os.IBinder.html | 123 + .../sdk/api_diff/3/changes/android.os.Looper.html | 123 + .../sdk/api_diff/3/changes/android.os.Parcel.html | 146 + .../3/changes/android.os.ParcelFileDescriptor.html | 138 + .../android.preference.DialogPreference.html | 123 + .../3/changes/android.provider.Browser.html | 123 + .../android.provider.Contacts.Intents.Insert.html | 179 + .../changes/android.provider.Contacts.Intents.html | 137 + .../android.provider.Contacts.PeopleColumns.html | 123 + ...oid.provider.MediaStore.Audio.AlbumColumns.html | 123 + .../android.provider.MediaStore.Audio.Media.html | 123 + .../android.provider.MediaStore.Images.Media.html | 125 + ...oid.provider.MediaStore.Video.VideoColumns.html | 137 + .../changes/android.provider.MediaStore.Video.html | 125 + .../3/changes/android.provider.MediaStore.html | 207 + .../changes/android.provider.Settings.System.html | 502 +++ .../3/changes/android.provider.Settings.html | 200 + .../android.telephony.PhoneNumberUtils.html | 138 + .../android.telephony.TelephonyManager.html | 173 + .../changes/android.telephony.gsm.SmsMessage.html | 123 + ...droid.test.ActivityInstrumentationTestCase.html | 109 + .../android.test.InstrumentationTestCase.html | 130 + .../3/changes/android.test.ProviderTestCase.html | 109 + .../3/changes/android.test.TouchUtils.html | 362 ++ .../android.test.mock.MockPackageManager.html | 137 + .../android.test.suitebuilder.TestMethod.html | 130 + ...android.test.suitebuilder.TestSuiteBuilder.html | 126 + .../3/changes/android.text.Annotation.html | 153 + .../api_diff/3/changes/android.text.AutoText.html | 123 + .../3/changes/android.text.SpanWatcher.html | 109 + .../api_diff/3/changes/android.text.Spanned.html | 137 + .../api_diff/3/changes/android.text.TextUtils.html | 159 + .../3/changes/android.text.TextWatcher.html | 109 + ...android.text.method.ArrowKeyMovementMethod.html | 123 + .../android.text.method.BaseKeyListener.html | 123 + .../android.text.method.DateKeyListener.html | 123 + .../android.text.method.DateTimeKeyListener.html | 123 + .../android.text.method.DialerKeyListener.html | 123 + .../android.text.method.DigitsKeyListener.html | 123 + .../3/changes/android.text.method.KeyListener.html | 137 + .../android.text.method.MetaKeyKeyListener.html | 186 + .../android.text.method.MovementMethod.html | 123 + .../android.text.method.MultiTapKeyListener.html | 123 + .../android.text.method.QwertyKeyListener.html | 123 + ...ndroid.text.method.ScrollingMovementMethod.html | 123 + .../android.text.method.TextKeyListener.html | 123 + .../android.text.method.TimeKeyListener.html | 123 + .../3/changes/android.text.method.Touch.html | 130 + .../android.text.style.AbsoluteSizeSpan.html | 153 + .../android.text.style.AlignmentSpan.Standard.html | 153 + .../android.text.style.BackgroundColorSpan.html | 153 + .../3/changes/android.text.style.BulletSpan.html | 153 + .../changes/android.text.style.ClickableSpan.html | 109 + .../android.text.style.DynamicDrawableSpan.html | 167 + .../android.text.style.ForegroundColorSpan.html | 153 + .../3/changes/android.text.style.ImageSpan.html | 151 + ...roid.text.style.LeadingMarginSpan.Standard.html | 153 + .../changes/android.text.style.MaskFilterSpan.html | 109 + .../3/changes/android.text.style.QuoteSpan.html | 153 + .../changes/android.text.style.RasterizerSpan.html | 109 + .../android.text.style.RelativeSizeSpan.html | 153 + .../3/changes/android.text.style.ScaleXSpan.html | 153 + .../android.text.style.StrikethroughSpan.html | 153 + .../3/changes/android.text.style.StyleSpan.html | 153 + .../changes/android.text.style.SubscriptSpan.html | 153 + .../android.text.style.SuperscriptSpan.html | 153 + .../android.text.style.TextAppearanceSpan.html | 153 + .../3/changes/android.text.style.TypefaceSpan.html | 153 + .../3/changes/android.text.style.URLSpan.html | 153 + .../changes/android.text.style.UnderlineSpan.html | 153 + .../3/changes/android.text.style.UpdateLayout.html | 109 + .../3/changes/android.util.SparseIntArray.html | 123 + .../api_diff/3/changes/android.util.TimeUtils.html | 123 + ...ew.GestureDetector.SimpleOnGestureListener.html | 138 + .../3/changes/android.view.GestureDetector.html | 173 + .../api_diff/3/changes/android.view.Gravity.html | 166 + .../3/changes/android.view.KeyCharacterMap.html | 130 + .../api_diff/3/changes/android.view.KeyEvent.html | 275 ++ .../sdk/api_diff/3/changes/android.view.Menu.html | 130 + .../3/changes/android.view.MotionEvent.html | 123 + .../changes/android.view.OrientationListener.html | 124 + .../sdk/api_diff/3/changes/android.view.View.html | 257 ++ .../3/changes/android.view.ViewConfiguration.html | 282 ++ .../api_diff/3/changes/android.view.ViewDebug.html | 123 + .../api_diff/3/changes/android.view.ViewGroup.html | 123 + .../3/changes/android.view.ViewParent.html | 123 + .../3/changes/android.view.ViewTreeObserver.html | 130 + .../api_diff/3/changes/android.view.Window.html | 137 + .../android.view.WindowManager.LayoutParams.html | 292 ++ .../changes/android.view.animation.Animation.html | 138 + .../android.view.animation.Transformation.html | 123 + .../api_diff/3/changes/android.webkit.URLUtil.html | 126 + .../android.webkit.UrlInterceptHandler.html | 141 + .../android.webkit.UrlInterceptRegistry.html | 141 + .../3/changes/android.webkit.WebHistoryItem.html | 123 + .../3/changes/android.webkit.WebSettings.html | 186 + .../api_diff/3/changes/android.webkit.WebView.html | 193 + .../3/changes/android.widget.AbsListView.html | 151 + .../3/changes/android.widget.AbsSeekBar.html | 130 + .../3/changes/android.widget.AbsoluteLayout.html | 109 + .../3/changes/android.widget.ArrayAdapter.html | 123 + .../android.widget.AutoCompleteTextView.html | 214 + .../3/changes/android.widget.Chronometer.html | 130 + .../3/changes/android.widget.CursorAdapter.html | 161 + .../3/changes/android.widget.GridView.html | 123 + .../3/changes/android.widget.ListView.html | 130 + ...droid.widget.PopupWindow.OnDismissListener.html | 109 + .../3/changes/android.widget.PopupWindow.html | 243 ++ .../3/changes/android.widget.ProgressBar.html | 136 + ...android.widget.RemoteViews.ActionException.html | 123 + .../3/changes/android.widget.RemoteViews.html | 221 ++ .../android.widget.ResourceCursorAdapter.html | 138 + .../3/changes/android.widget.Scroller.html | 130 + .../android.widget.SimpleCursorAdapter.html | 123 + .../3/changes/android.widget.TextView.html | 333 ++ .../sdk/api_diff/3/changes/changes-summary.html | 451 +++ .../3/changes/classes_index_additions.html | 469 +++ .../sdk/api_diff/3/changes/classes_index_all.html | 963 +++++ .../api_diff/3/changes/classes_index_changes.html | 846 ++++ .../api_diff/3/changes/classes_index_removals.html | 62 + .../3/changes/constructors_index_additions.html | 409 ++ .../api_diff/3/changes/constructors_index_all.html | 514 +++ .../3/changes/constructors_index_changes.html | 124 + .../3/changes/constructors_index_removals.html | 68 + .../api_diff/3/changes/dalvik.system.DexFile.html | 123 + .../api_diff/3/changes/dalvik.system.VMDebug.html | 130 + .../api_diff/3/changes/dalvik.system.Zygote.html | 187 + .../api_diff/3/changes/fields_index_additions.html | 1129 ++++++ .../sdk/api_diff/3/changes/fields_index_all.html | 1270 ++++++ .../api_diff/3/changes/fields_index_changes.html | 471 +++ .../api_diff/3/changes/fields_index_removals.html | 68 + .../changes/java.lang.Character.UnicodeBlock.html | 126 + .../sdk/api_diff/3/changes/java.lang.Class.html | 166 + .../sdk/api_diff/3/changes/java.lang.String.html | 161 + .../3/changes/java.lang.reflect.Proxy.html | 126 + .../sdk/api_diff/3/changes/java.net.Socket.html | 161 + .../sdk/api_diff/3/changes/java.util.Date.html | 134 + .../3/changes/java.util.jar.Pack200.Packer.html | 130 + .../3/changes/java.util.jar.Pack200.Unpacker.html | 130 + .../3/changes/java.util.logging.Level.html | 127 + .../3/changes/java.util.logging.LogManager.html | 137 + docs/html/sdk/api_diff/3/changes/jdiff_help.html | 135 + .../sdk/api_diff/3/changes/jdiff_statistics.html | 1284 ++++++ .../sdk/api_diff/3/changes/jdiff_topleftframe.html | 64 + .../3/changes/methods_index_additions.html | 1397 +++++++ .../sdk/api_diff/3/changes/methods_index_all.html | 1600 ++++++++ .../api_diff/3/changes/methods_index_changes.html | 466 +++ .../api_diff/3/changes/methods_index_removals.html | 62 + .../3/changes/packages_index_additions.html | 72 + .../sdk/api_diff/3/changes/packages_index_all.html | 112 + .../api_diff/3/changes/packages_index_changes.html | 106 + .../3/changes/packages_index_removals.html | 64 + .../sdk/api_diff/3/changes/pkg_android.app.html | 198 + .../api_diff/3/changes/pkg_android.content.html | 155 + .../api_diff/3/changes/pkg_android.content.pm.html | 149 + .../3/changes/pkg_android.content.res.html | 163 + .../api_diff/3/changes/pkg_android.database.html | 134 + .../3/changes/pkg_android.database.sqlite.html | 120 + .../3/changes/pkg_android.graphics.drawable.html | 141 + .../pkg_android.graphics.drawable.shapes.html | 120 + .../api_diff/3/changes/pkg_android.graphics.html | 141 + .../api_diff/3/changes/pkg_android.hardware.html | 170 + docs/html/sdk/api_diff/3/changes/pkg_android.html | 177 + .../api_diff/3/changes/pkg_android.location.html | 156 + .../sdk/api_diff/3/changes/pkg_android.media.html | 254 ++ .../sdk/api_diff/3/changes/pkg_android.net.html | 127 + .../api_diff/3/changes/pkg_android.net.wifi.html | 120 + .../sdk/api_diff/3/changes/pkg_android.opengl.html | 148 + .../sdk/api_diff/3/changes/pkg_android.os.html | 212 + .../api_diff/3/changes/pkg_android.preference.html | 120 + .../api_diff/3/changes/pkg_android.provider.html | 233 ++ .../3/changes/pkg_android.telephony.gsm.html | 120 + .../api_diff/3/changes/pkg_android.telephony.html | 142 + .../sdk/api_diff/3/changes/pkg_android.test.html | 163 + .../api_diff/3/changes/pkg_android.test.mock.html | 120 + .../3/changes/pkg_android.test.suitebuilder.html | 127 + .../sdk/api_diff/3/changes/pkg_android.text.html | 191 + .../3/changes/pkg_android.text.method.html | 218 + .../api_diff/3/changes/pkg_android.text.style.html | 289 ++ .../sdk/api_diff/3/changes/pkg_android.util.html | 142 + .../3/changes/pkg_android.view.animation.html | 127 + .../sdk/api_diff/3/changes/pkg_android.view.html | 268 ++ .../sdk/api_diff/3/changes/pkg_android.webkit.html | 170 + .../sdk/api_diff/3/changes/pkg_android.widget.html | 310 ++ .../sdk/api_diff/3/changes/pkg_dalvik.system.html | 149 + .../html/sdk/api_diff/3/changes/pkg_java.lang.html | 134 + .../api_diff/3/changes/pkg_java.lang.reflect.html | 120 + docs/html/sdk/api_diff/3/changes/pkg_java.net.html | 120 + .../html/sdk/api_diff/3/changes/pkg_java.util.html | 120 + .../sdk/api_diff/3/changes/pkg_java.util.jar.html | 127 + .../api_diff/3/changes/pkg_java.util.logging.html | 127 + docs/html/sdk/api_diff/3/stylesheet-jdiff.css | 37 + 255 files changed, 56240 insertions(+) create mode 100644 docs/html/sdk/api_diff/3/changes.html create mode 100644 docs/html/sdk/api_diff/3/changes/alldiffs_index_additions.html create mode 100644 docs/html/sdk/api_diff/3/changes/alldiffs_index_all.html create mode 100644 docs/html/sdk/api_diff/3/changes/alldiffs_index_changes.html create mode 100644 docs/html/sdk/api_diff/3/changes/alldiffs_index_removals.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.Manifest.permission.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.R.attr.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.R.drawable.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.R.id.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.R.string.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.R.style.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.app.Activity.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.app.ActivityManager.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.app.AlarmManager.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.app.AlertDialog.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.app.Instrumentation.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.app.LauncherActivity.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.app.PendingIntent.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.content.BroadcastReceiver.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.content.ContentProvider.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.content.ContentResolver.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.content.Context.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.content.DialogInterface.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.content.Intent.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.content.pm.ActivityInfo.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.content.pm.PackageInfo.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.content.pm.PackageManager.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.content.res.AssetFileDescriptor.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.content.res.Configuration.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.content.res.Resources.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.content.res.TypedArray.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.database.Cursor.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.database.CursorWrapper.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.database.DatabaseUtils.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.database.sqlite.SQLiteDatabase.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.graphics.Bitmap.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.graphics.Canvas.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.graphics.Rect.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.graphics.RectF.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.graphics.drawable.Drawable.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.graphics.drawable.RotateDrawable.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.graphics.drawable.ScaleDrawable.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.graphics.drawable.TransitionDrawable.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.graphics.drawable.shapes.Shape.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.hardware.Camera.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.hardware.SensorListener.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.hardware.SensorManager.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.location.Location.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.location.LocationManager.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.media.AudioManager.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.media.MediaPlayer.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.media.MediaRecorder.OutputFormat.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.media.MediaRecorder.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.media.RingtoneManager.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.media.SoundPool.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.net.ConnectivityManager.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.net.NetworkInfo.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.net.wifi.WifiManager.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.os.Binder.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.os.Build.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.os.Debug.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.os.Environment.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.os.Handler.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.os.IBinder.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.os.Looper.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.os.Parcel.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.os.ParcelFileDescriptor.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.preference.DialogPreference.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.provider.Browser.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.provider.Contacts.Intents.Insert.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.provider.Contacts.Intents.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.provider.Contacts.PeopleColumns.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Audio.AlbumColumns.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Audio.Media.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Images.Media.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Video.VideoColumns.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Video.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.provider.Settings.System.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.provider.Settings.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.telephony.PhoneNumberUtils.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.telephony.TelephonyManager.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.telephony.gsm.SmsMessage.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.test.ActivityInstrumentationTestCase.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.test.InstrumentationTestCase.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.test.ProviderTestCase.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.test.TouchUtils.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.test.mock.MockPackageManager.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.test.suitebuilder.TestMethod.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.test.suitebuilder.TestSuiteBuilder.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.Annotation.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.AutoText.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.SpanWatcher.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.Spanned.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.TextUtils.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.TextWatcher.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.method.ArrowKeyMovementMethod.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.method.BaseKeyListener.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.method.DateKeyListener.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.method.DateTimeKeyListener.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.method.DialerKeyListener.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.method.DigitsKeyListener.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.method.KeyListener.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.method.MetaKeyKeyListener.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.method.MovementMethod.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.method.MultiTapKeyListener.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.method.QwertyKeyListener.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.method.ScrollingMovementMethod.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.method.TextKeyListener.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.method.TimeKeyListener.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.method.Touch.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.style.AbsoluteSizeSpan.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.style.AlignmentSpan.Standard.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.style.BackgroundColorSpan.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.style.BulletSpan.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.style.ClickableSpan.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.style.DynamicDrawableSpan.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.style.ForegroundColorSpan.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.style.ImageSpan.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.style.LeadingMarginSpan.Standard.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.style.MaskFilterSpan.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.style.QuoteSpan.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.style.RasterizerSpan.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.style.RelativeSizeSpan.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.style.ScaleXSpan.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.style.StrikethroughSpan.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.style.StyleSpan.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.style.SubscriptSpan.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.style.SuperscriptSpan.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.style.TextAppearanceSpan.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.style.TypefaceSpan.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.style.URLSpan.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.style.UnderlineSpan.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.text.style.UpdateLayout.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.util.SparseIntArray.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.util.TimeUtils.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.view.GestureDetector.SimpleOnGestureListener.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.view.GestureDetector.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.view.Gravity.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.view.KeyCharacterMap.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.view.KeyEvent.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.view.Menu.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.view.MotionEvent.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.view.OrientationListener.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.view.View.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.view.ViewConfiguration.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.view.ViewDebug.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.view.ViewGroup.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.view.ViewParent.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.view.ViewTreeObserver.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.view.Window.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.view.WindowManager.LayoutParams.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.view.animation.Animation.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.view.animation.Transformation.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.webkit.URLUtil.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.webkit.UrlInterceptHandler.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.webkit.UrlInterceptRegistry.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.webkit.WebHistoryItem.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.webkit.WebSettings.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.webkit.WebView.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.widget.AbsListView.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.widget.AbsSeekBar.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.widget.AbsoluteLayout.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.widget.ArrayAdapter.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.widget.AutoCompleteTextView.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.widget.Chronometer.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.widget.CursorAdapter.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.widget.GridView.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.widget.ListView.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.widget.PopupWindow.OnDismissListener.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.widget.PopupWindow.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.widget.ProgressBar.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.widget.RemoteViews.ActionException.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.widget.RemoteViews.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.widget.ResourceCursorAdapter.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.widget.Scroller.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.widget.SimpleCursorAdapter.html create mode 100644 docs/html/sdk/api_diff/3/changes/android.widget.TextView.html create mode 100644 docs/html/sdk/api_diff/3/changes/changes-summary.html create mode 100644 docs/html/sdk/api_diff/3/changes/classes_index_additions.html create mode 100644 docs/html/sdk/api_diff/3/changes/classes_index_all.html create mode 100644 docs/html/sdk/api_diff/3/changes/classes_index_changes.html create mode 100644 docs/html/sdk/api_diff/3/changes/classes_index_removals.html create mode 100644 docs/html/sdk/api_diff/3/changes/constructors_index_additions.html create mode 100644 docs/html/sdk/api_diff/3/changes/constructors_index_all.html create mode 100644 docs/html/sdk/api_diff/3/changes/constructors_index_changes.html create mode 100644 docs/html/sdk/api_diff/3/changes/constructors_index_removals.html create mode 100644 docs/html/sdk/api_diff/3/changes/dalvik.system.DexFile.html create mode 100644 docs/html/sdk/api_diff/3/changes/dalvik.system.VMDebug.html create mode 100644 docs/html/sdk/api_diff/3/changes/dalvik.system.Zygote.html create mode 100644 docs/html/sdk/api_diff/3/changes/fields_index_additions.html create mode 100644 docs/html/sdk/api_diff/3/changes/fields_index_all.html create mode 100644 docs/html/sdk/api_diff/3/changes/fields_index_changes.html create mode 100644 docs/html/sdk/api_diff/3/changes/fields_index_removals.html create mode 100644 docs/html/sdk/api_diff/3/changes/java.lang.Character.UnicodeBlock.html create mode 100644 docs/html/sdk/api_diff/3/changes/java.lang.Class.html create mode 100644 docs/html/sdk/api_diff/3/changes/java.lang.String.html create mode 100644 docs/html/sdk/api_diff/3/changes/java.lang.reflect.Proxy.html create mode 100644 docs/html/sdk/api_diff/3/changes/java.net.Socket.html create mode 100644 docs/html/sdk/api_diff/3/changes/java.util.Date.html create mode 100644 docs/html/sdk/api_diff/3/changes/java.util.jar.Pack200.Packer.html create mode 100644 docs/html/sdk/api_diff/3/changes/java.util.jar.Pack200.Unpacker.html create mode 100644 docs/html/sdk/api_diff/3/changes/java.util.logging.Level.html create mode 100644 docs/html/sdk/api_diff/3/changes/java.util.logging.LogManager.html create mode 100644 docs/html/sdk/api_diff/3/changes/jdiff_help.html create mode 100644 docs/html/sdk/api_diff/3/changes/jdiff_statistics.html create mode 100644 docs/html/sdk/api_diff/3/changes/jdiff_topleftframe.html create mode 100644 docs/html/sdk/api_diff/3/changes/methods_index_additions.html create mode 100644 docs/html/sdk/api_diff/3/changes/methods_index_all.html create mode 100644 docs/html/sdk/api_diff/3/changes/methods_index_changes.html create mode 100644 docs/html/sdk/api_diff/3/changes/methods_index_removals.html create mode 100644 docs/html/sdk/api_diff/3/changes/packages_index_additions.html create mode 100644 docs/html/sdk/api_diff/3/changes/packages_index_all.html create mode 100644 docs/html/sdk/api_diff/3/changes/packages_index_changes.html create mode 100644 docs/html/sdk/api_diff/3/changes/packages_index_removals.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.app.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.content.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.content.pm.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.content.res.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.database.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.database.sqlite.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.graphics.drawable.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.graphics.drawable.shapes.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.graphics.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.hardware.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.location.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.media.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.net.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.net.wifi.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.opengl.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.os.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.preference.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.provider.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.telephony.gsm.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.telephony.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.test.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.test.mock.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.test.suitebuilder.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.text.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.text.method.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.text.style.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.util.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.view.animation.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.view.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.webkit.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_android.widget.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_dalvik.system.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_java.lang.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_java.lang.reflect.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_java.net.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_java.util.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_java.util.jar.html create mode 100644 docs/html/sdk/api_diff/3/changes/pkg_java.util.logging.html create mode 100644 docs/html/sdk/api_diff/3/stylesheet-jdiff.css diff --git a/docs/html/sdk/api_diff/3/changes.html b/docs/html/sdk/api_diff/3/changes.html new file mode 100644 index 000000000000..2ff5de822254 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes.html @@ -0,0 +1,49 @@ + + + + + + + + + + +API Differences between 2 and 3 + + + + + + + + + + + + + + +<H2> +Frame Alert +</H2> + +<P> +This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. +<BR> +Link to <A HREF="changes/changes-summary.html" target="_top">Non-frame version.</A> + + diff --git a/docs/html/sdk/api_diff/3/changes/alldiffs_index_additions.html b/docs/html/sdk/api_diff/3/changes/alldiffs_index_additions.html new file mode 100644 index 000000000000..41f78ab79d97 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/alldiffs_index_additions.html @@ -0,0 +1,3144 @@ + + + + + + + + + +All Additions Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Differences +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + + +
    A  +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +AbsoluteSizeSpan +(Parcel) constructor
    + +ACCELEROMETER_ROTATION +
    + +ACTION_AIRPLANE_MODE_SETTINGS +
    + +ACTION_APPLICATION_DEVELOPMENT_SETTINGS +
    + +ACTION_AUDIO_BECOMING_NOISY +
    + +ACTION_BACKGROUND_DATA_SETTING_CHANGED +
    + +ACTION_DATA_ROAMING_SETTINGS +
    + +ACTION_IMAGE_CAPTURE +
    + +ACTION_INPUT_METHOD_CHANGED +
    + +ACTION_INPUT_METHOD_SETTINGS +
    + +ACTION_INTERNAL_STORAGE_SETTINGS +
    + +ACTION_MANAGE_APPLICATIONS_SETTINGS +
    + +ACTION_MEDIA_CHECKING +
    + +ACTION_MEDIA_NOFS +
    + +ACTION_MEMORY_CARD_SETTINGS +
    + +ACTION_NETWORK_OPERATOR_SETTINGS +
    + +ACTION_OUTSIDE +
    + +ACTION_PACKAGE_DATA_CLEARED +
    + +ACTION_PACKAGE_REPLACED +
    + +ACTION_PHONE_STATE_CHANGED +
    + +ACTION_QUICK_LAUNCH_SETTINGS +
    + +ACTION_SEARCH_LONG_PRESS +
    + +ACTION_SYNC_SETTINGS +
    + +ACTION_SYSTEM_TUTORIAL +
    + +ACTION_USER_DICTIONARY_SETTINGS +
    + +ACTION_USER_PRESENT +
    + +ACTION_VIDEO_CAPTURE +
    + +ACTION_WIFI_IP_SETTINGS +
    + +ActivityInstrumentationTestCase2
    + +ActivityManager.RunningAppProcessInfo
    + +addGpsStatusListener +(Listener)
    + +addOnScrollChangedListener +(OnScrollChangedListener)
    + +addPropertyChangeListener
    +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Packer +
    + +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Unpacker +
    + +  type  +(PropertyChangeListener) in java.util.logging.LogManager +
    + +addTestProvider +(String, boolean, boolean, boolean, boolean, boolean, boolean, boolean, int, int)
    + +addToDictionary +
    + +adjustMetaAfterKeypress +(long)
    + +ALIGN_BASELINE +
    + +ALIGN_BOTTOM +
    + +AlignmentSpan.Standard +(Parcel) constructor
    + +allowSingleTap +
    + +AlphabetIndexer
    + +android.appwidget
    + +android.inputmethodservice
    + +android.speech
    + +android.text.format
    + +android.view.inputmethod
    + +animateOnClick +
    + +Annotation +(Parcel) constructor
    + +applyDisplay +(int, Rect, Rect)
    + +AssetFileDescriptor.AutoCloseInputStream
    + +AssetFileDescriptor.AutoCloseOutputStream
    + +AsyncTask
    + +AsyncTask.Status
    + +AudioFormat
    + +AudioRecord
    + +AudioRecord.OnRecordPositionUpdateListener
    + +AudioTrack
    + +AudioTrack.OnPlaybackPositionUpdateListener
    + +AXIS_CLIP +
    + +AXIS_MINUS_X +
    + +AXIS_MINUS_Y +
    + +AXIS_MINUS_Z +
    + +AXIS_X +
    + +AXIS_Y +
    + +AXIS_Z +
    + + +
    B  +A +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +BackgroundColorSpan +(Parcel) constructor
    + +backgroundDimEnabled +
    + +beginBatchEdit +()
    + +BIND_APPWIDGET +
    + +BIND_INPUT_METHOD +
    + +BOOKMARK +
    + +bottomOffset +
    + +bringPointIntoView +(int)
    + +BUCKET_DISPLAY_NAME +
    + +BUCKET_ID +
    + +BulletSpan +(Parcel) constructor
    + +BUTTON_NEGATIVE +
    + +BUTTON_NEUTRAL +
    + +BUTTON_POSITIVE +
    + + +
    C  +A +B +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +calculateLength +(CharSequence, boolean)
    + +callActivityOnUserLeaving +(Activity)
    + +candidatesArea +
    + +candidatesTextStyleSpans +
    + +CAP_MODE_CHARACTERS +
    + +CAP_MODE_SENTENCES +
    + +CAP_MODE_WORDS +
    + +CATEGORY_INFO +
    + +changeAction +(KeyEvent, int)
    + +changeCursorAndColumns +(Cursor, String[], int[])
    + +changeFlags +(KeyEvent, int)
    + +changeTimeRepeat +(KeyEvent, long, int)
    + +checkInputConnectionProxy +(View)
    + +Chronometer.OnChronometerTickListener
    + +clearComposingText +()
    + +clearListSelection +()
    + +clearMatches +()
    + +clearMetaKeyState
    +  type  +(View, Editable, int) in android.text.method.KeyListener +
    + +  type  +(long, int) in android.text.method.MetaKeyKeyListener +
    + +  type  +(View, Editable, int) in android.text.method.MetaKeyKeyListener +
    + +  type  +(Editable, int) in android.text.method.MetaKeyKeyListener +
    + +clearTestProviderEnabled +(String)
    + +clearTestProviderLocation +(String)
    + +clearTestProviderStatus +(String)
    + +CLIP_HORIZONTAL +
    + +CLIP_VERTICAL +
    + +close +()
    + +closeButton +
    + +closeContextMenu +()
    + +codes +
    + +computeDurationHint +()
    + +configPreferences +
    + +ConfigurationInfo
    + +configure +
    + +content +
    + +copy +
    + +copyPixelsFromBuffer +(Buffer)
    + +copyUrl +
    + +createInputStream +()
    + +createOutputStream +()
    + +createWifiLock +(int, String)
    + +CREATOR
    + in  +android.content.res.AssetFileDescriptor +
    + + in  +android.graphics.RectF +
    + +cut +
    + + +
    D  +A +B +C +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +dark_header +
    + +DEBUG_ENABLE_ASSERT +
    + +DEBUG_ENABLE_CHECKJNI +
    + +DEBUG_ENABLE_DEBUGGER +
    + +describeContents
    +  type  +() in android.content.res.AssetFileDescriptor +
    + +  type  +() in android.graphics.RectF +
    + +  type  +() in android.text.Annotation +
    + +  type  +() in android.text.style.AbsoluteSizeSpan +
    + +  type  +() in android.text.style.AlignmentSpan.Standard +
    + +  type  +() in android.text.style.BackgroundColorSpan +
    + +  type  +() in android.text.style.BulletSpan +
    + +  type  +() in android.text.style.ForegroundColorSpan +
    + +  type  +() in android.text.style.LeadingMarginSpan.Standard +
    + +  type  +() in android.text.style.QuoteSpan +
    + +  type  +() in android.text.style.RelativeSizeSpan +
    + +  type  +() in android.text.style.ScaleXSpan +
    + +  type  +() in android.text.style.StrikethroughSpan +
    + +  type  +() in android.text.style.StyleSpan +
    + +  type  +() in android.text.style.SubscriptSpan +
    + +  type  +() in android.text.style.SuperscriptSpan +
    + +  type  +() in android.text.style.TextAppearanceSpan +
    + +  type  +() in android.text.style.TypefaceSpan +
    + +  type  +() in android.text.style.URLSpan +
    + +  type  +() in android.text.style.UnderlineSpan +
    + +deviceHasKey +(int)
    + +deviceHasKeys +(int[])
    + +DexClassLoader
    + +dialog_alert_title +
    + +didTouchFocusSelect +()
    + +dispatchKeyEventPreIme +(KeyEvent)
    + +DISPLAY +
    + +DISPLAY_CLIP_HORIZONTAL +
    + +DISPLAY_CLIP_VERTICAL +
    + +drag +(InstrumentationTestCase, float, float, float, float, int)
    + +dragQuarterScreenDown +(InstrumentationTestCase, Activity)
    + +dragQuarterScreenUp +(InstrumentationTestCase, Activity)
    + +dragViewBy +(InstrumentationTestCase, View, int, int, int)
    + +dragViewTo +(InstrumentationTestCase, View, int, int, int)
    + +dragViewToBottom
    +  type  +(ActivityInstrumentationTestCase, View, int) in android.test.TouchUtils +
    + +  type  +(InstrumentationTestCase, Activity, View, int) in android.test.TouchUtils +
    + +dragViewToTop
    +  type  +(InstrumentationTestCase, View) in android.test.TouchUtils +
    + +  type  +(InstrumentationTestCase, View, int) in android.test.TouchUtils +
    + +dragViewToX +(InstrumentationTestCase, View, int, int)
    + +dragViewToY +(InstrumentationTestCase, View, int, int)
    + +drawBitmap +(int[], int, int, float, float, int, int, boolean, Paint)
    + +dropDownAnchor +
    + +dropDownWidth +
    + +dump
    +  type  +(Printer, String) in android.location.Location +
    + +  type  +(FileDescriptor, String[]) in android.os.Binder +
    + +  type  +(FileDescriptor, String[]) in android.os.IBinder +
    + +dumpCapturedView +(String, Object)
    + +dumpHprofData
    +  type  +(String) in android.os.Debug +
    + +  type  +(String) in dalvik.system.VMDebug +
    + +dumpSpans +(CharSequence, Printer, String)
    + +DynamicDrawableSpan +(int) constructor
    + + +
    E  +A +B +C +D +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +editorExtras +
    + +endBatchEdit +()
    + +EXTRA_APPLICATION_ID +
    + +EXTRA_CREATE_DESCRIPTION +
    + +EXTRA_DATA_REMOVED +
    + +EXTRA_FINISH_ON_COMPLETION +
    + +EXTRA_FORCE_CREATE +
    + +EXTRA_INCOMING_NUMBER +
    + +EXTRA_MAX_BYTES +
    + +EXTRA_MEDIA_ALBUM +
    + +EXTRA_MEDIA_ARTIST +
    + +EXTRA_MEDIA_FOCUS +
    + +EXTRA_MEDIA_TITLE +
    + +EXTRA_OUTPUT +
    + +EXTRA_REPLACING +
    + +EXTRA_SCREEN_ORIENTATION +
    + +EXTRA_STATE +
    + +EXTRA_STATE_IDLE +
    + +EXTRA_STATE_OFFHOOK +
    + +EXTRA_STATE_RINGING +
    + +EXTRA_VIDEO_QUALITY +
    + +extractArea +
    + +extractText +(ExtractedTextRequest, ExtractedText)
    + + +
    F  +A +B +C +D +E +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +fastScrollEnabled +
    + +fillEnabled +
    + +findAll +(String)
    + +findNext +(boolean)
    + +FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET +
    + +FLAG_ACTIVITY_NO_USER_ACTION +
    + +FLAG_ACTIVITY_REORDER_TO_FRONT +
    + +FLAG_ALT_FOCUSABLE_IM +
    + +FLAG_EDITOR_ACTION +
    + +FLAG_FROM_SYSTEM +
    + +FLAG_KEEP_TOUCH_MODE +
    + +FLAG_NO_HISTORY +
    + +FLAG_SOFT_KEYBOARD +
    + +FLAG_UPDATE_CURRENT +
    + +FLAG_WATCH_OUTSIDE_TOUCH +
    + +footerDividersEnabled +
    + +ForegroundColorSpan +(Parcel) constructor
    + +forkAndSpecialize +(int, int, int[], int, int[][])
    + +forkSystemServer +(int, int, int[], int, int[][])
    + +FORMAT_JAPAN +
    + +formatJapaneseNumber +(Editable)
    + +FX_KEYPRESS_DELETE +
    + +FX_KEYPRESS_RETURN +
    + +FX_KEYPRESS_SPACEBAR +
    + +FX_KEYPRESS_STANDARD +
    + + +
    G  +A +B +C +D +E +F +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +GeomagneticField
    + +GestureDetector
    +  GestureDetector +(Context, OnGestureListener) constructor
    + +  GestureDetector +(Context, OnGestureListener, Handler) constructor
    + +GestureDetector.OnDoubleTapListener
    + +get +(Context)
    + +GET_CONFIGURATIONS +
    + +GET_UNINSTALLED_PACKAGES +
    + +getAllowFileAccess +()
    + +getBackgroundDataSetting +()
    + +getBoolean +(int)
    + +getBuiltInZoomControls +()
    + +getButton +(int)
    + +getCapsMode +(CharSequence, int, int)
    + +getCharacters +()
    + +getDeclaredLength +()
    + +getDefaultSensor +(int)
    + +getDeviceConfigurationInfo +()
    + +getDialog +()
    + +getDoubleTapTimeout +()
    + +getDrawable
    +  type  +() in android.graphics.drawable.RotateDrawable +
    + +  type  +() in android.graphics.drawable.ScaleDrawable +
    + +getDropDownAnchor +()
    + +getDropDownWidth +()
    + +getEditableText +()
    + +getFraction +(int, int, int)
    + +getGpsStatus +(GpsStatus)
    + +getImeActionId +()
    + +getImeActionLabel +()
    + +getImeOptions +()
    + +getInclination +(float[])
    + +getInitialScrollX +(TextView, Spannable)
    + +getInitialScrollY +(TextView, Spannable)
    + +getInputExtras +(boolean)
    + +getInputMethodMode +()
    + +getInputType
    +  type  +() in android.text.method.DateKeyListener +
    + +  type  +() in android.text.method.DateTimeKeyListener +
    + +  type  +() in android.text.method.DialerKeyListener +
    + +  type  +() in android.text.method.DigitsKeyListener +
    + +  type  +() in android.text.method.KeyListener +
    + +  type  +() in android.text.method.MultiTapKeyListener +
    + +  type  +() in android.text.method.QwertyKeyListener +
    + +  type  +() in android.text.method.TextKeyListener +
    + +  type  +() in android.text.method.TimeKeyListener +
    + +  type  +() in android.widget.TextView +
    + +getItem +(int)
    + +getKeyProgressIncrement +()
    + +getLaunchIntentForPackage
    +  type  +(String) in android.content.pm.PackageManager +
    + +  type  +(String) in android.test.mock.MockPackageManager +
    + +getLayoutDimension +(int, int)
    + +getListSelection +()
    + +getListView +()
    + +getLoggingMXBean +()
    + +getLong
    +  type  +(ContentResolver, String) in android.provider.Settings.System +
    + +  type  +(ContentResolver, String, long) in android.provider.Settings.System +
    + +getMaxAvailableHeight +(View, int)
    + +getMaxKeyCode +()
    + +getMetaState
    +  type  +(long) in android.text.method.MetaKeyKeyListener +
    + +  type  +(long, int) in android.text.method.MetaKeyKeyListener +
    + +getNeighboringCellInfo +()
    + +getOnChronometerTickListener +()
    + +getOnItemClickListener +()
    + +getOnItemSelectedListener +()
    + +getOrientation +(float[], float[])
    + +getOriginalUrl
    +  type  +() in android.webkit.WebHistoryItem +
    + +  type  +() in android.webkit.WebView +
    + +getPluginData
    +  type  +(String, Map<String, String>) in android.webkit.UrlInterceptHandler +
    + +  type  +(String, Map<String, String>) in android.webkit.UrlInterceptRegistry +
    + +getPrivateImeOptions +()
    + +getRotationMatrix +(float[], float[], float[], float[])
    + +getRunningAppProcesses +()
    + +getScaledDoubleTapSlop +()
    + +getScaledEdgeSlop +()
    + +getScaledFadingEdgeLength +()
    + +getScaledMaximumDrawingCacheSize +()
    + +getScaledMinimumFlingVelocity +()
    + +getScaledScrollBarSize +()
    + +getScaledTouchSlop +()
    + +getScaledWindowTouchSlop +()
    + +getSensorList +(int)
    + +getSize +(View)
    + +getSpanTypeId
    +  type  +() in android.text.Annotation +
    + +  type  +() in android.text.style.AbsoluteSizeSpan +
    + +  type  +() in android.text.style.AlignmentSpan.Standard +
    + +  type  +() in android.text.style.BackgroundColorSpan +
    + +  type  +() in android.text.style.BulletSpan +
    + +  type  +() in android.text.style.ForegroundColorSpan +
    + +  type  +() in android.text.style.LeadingMarginSpan.Standard +
    + +  type  +() in android.text.style.QuoteSpan +
    + +  type  +() in android.text.style.RelativeSizeSpan +
    + +  type  +() in android.text.style.ScaleXSpan +
    + +  type  +() in android.text.style.StrikethroughSpan +
    + +  type  +() in android.text.style.StyleSpan +
    + +  type  +() in android.text.style.SubscriptSpan +
    + +  type  +() in android.text.style.SuperscriptSpan +
    + +  type  +() in android.text.style.TextAppearanceSpan +
    + +  type  +() in android.text.style.TypefaceSpan +
    + +  type  +() in android.text.style.URLSpan +
    + +  type  +() in android.text.style.UnderlineSpan +
    + +getStartX +()
    + +getStartY +()
    + +getStatSize +()
    + +getSubtype +()
    + +getSubtypeName +()
    + +getSystemSharedLibraryNames
    +  type  +() in android.content.pm.PackageManager +
    + +  type  +() in android.test.mock.MockPackageManager +
    + +getTextFilter +()
    + +getThread +()
    + +getTimeZoneDatabaseVersion +()
    + +getUserAgentString +()
    + +getVerticalAlignment +()
    + +getWindowVisibleDisplayFrame +(Rect)
    + +GLSurfaceView
    + +GLSurfaceView.EGLConfigChooser
    + +GLSurfaceView.GLWrapper
    + +GLSurfaceView.Renderer
    + +GpsSatellite
    + +GpsStatus
    + +GpsStatus.Listener
    + + +
    H  +A +B +C +D +E +F +G +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +handle +
    + +handleKeyDown +(long, int, KeyEvent)
    + +handleKeyUp +(long, int, KeyEvent)
    + +Handler
    +  Handler +(Callback) constructor
    + +  Handler +(Looper, Callback) constructor
    + +Handler.Callback
    + +HAPTIC_FEEDBACK_ENABLED
    + in  +android.provider.Settings.System +
    + + in  +android.view.View +
    + +HapticFeedbackConstants
    + +hapticFeedbackEnabled +
    + +hardKeyboardHidden +
    + +HARDKEYBOARDHIDDEN_NO +
    + +HARDKEYBOARDHIDDEN_UNDEFINED +
    + +HARDKEYBOARDHIDDEN_YES +
    + +hasSoftInputMode +()
    + +hasWindowFocus +()
    + +headerDividersEnabled +
    + +horizontalGap +
    + +HorizontalScrollView
    + + +
    I  +A +B +C +D +E +F +G +H +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +ic_btn_speak_now +
    + +iconPreview +
    + +ImageSpan
    +  ImageSpan +(Context, Uri, int) constructor
    + +  ImageSpan +(Context, int, int) constructor
    + +  ImageSpan +(Bitmap, int) constructor
    + +  ImageSpan +(Drawable, int) constructor
    + +  ImageSpan +(Drawable, String, int) constructor
    + +imeActionId +
    + +imeActionLabel +
    + +imeExtractEnterAnimation +
    + +imeExtractExitAnimation +
    + +imeFullscreenBackground +
    + +imeOptions +
    + +inferStreamType +()
    + +initialLayout +
    + +innerRadius +
    + +INPUT_METHOD_FROM_FOCUSABLE +
    + +INPUT_METHOD_NEEDED +
    + +INPUT_METHOD_NOT_NEEDED +
    + +INPUT_METHOD_SERVICE +
    + +inputArea +
    + +inputExtractEditText +
    + +InputType
    + +inputType +
    + +INSTALL_FAILED_CONFLICTING_PROVIDER +
    + +INTENT_ACTION_MEDIA_SEARCH +
    + +INTENT_ACTION_STILL_IMAGE_CAMERA +
    + +INTENT_ACTION_VIDEO_CAMERA +
    + +intentForPosition +(int)
    + +IntentService
    + +INTERVAL_DAY +
    + +INTERVAL_FIFTEEN_MINUTES +
    + +INTERVAL_HALF_DAY +
    + +INTERVAL_HALF_HOUR +
    + +INTERVAL_HOUR +
    + +isAboveAnchor +()
    + +isBluetoothA2dpOn +()
    + +isClippingEnabled +()
    + +isDebuggingEnabled +()
    + +isDefault +
    + +isFastScrollEnabled +()
    + +isFillEnabled +()
    + +isHapticFeedbackEnabled +()
    + +isInEditMode +()
    + +isInputMethodTarget +()
    + +isLooping +()
    + +isModifier +
    + +isOutsideTouchable +()
    + +isPerformingCompletion +()
    + +isRepeatable +
    + +isRoaming +()
    + +isSafeMode
    +  type  +() in android.content.pm.PackageManager +
    + +  type  +() in android.test.mock.MockPackageManager +
    + +isScrollContainer +
    + +isSelectingMetaTracker +(CharSequence, Object)
    + +isSmoothScrollbarEnabled +()
    + +isSticky +
    + +isTouchable +()
    + + +java.beans
    + +JetPlayer
    + +JetPlayer.OnJetEventListener
    + + +
    K  +A +B +C +D +E +F +G +H +I +J +L +M +N +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +KEY_LOCATION_CHANGED +
    + +KEY_PROVIDER_ENABLED +
    + +KEY_STATUS_CHANGED +
    + +keyBackground +
    + +keyboardMode +
    + +keyboardView +
    + +KEYCODE_MEDIA_FAST_FORWARD +
    + +KEYCODE_MEDIA_NEXT +
    + +KEYCODE_MEDIA_PLAY_PAUSE +
    + +KEYCODE_MEDIA_PREVIOUS +
    + +KEYCODE_MEDIA_REWIND +
    + +KEYCODE_MEDIA_STOP +
    + +KEYCODE_MUTE +
    + +keyEdgeFlags +
    + +KeyEvent
    +  KeyEvent +(KeyEvent) constructor
    + +  KeyEvent +(long, String, int, int) constructor
    + +keyHeight +
    + +keyIcon +
    + +keyLabel +
    + +keyOutputText +
    + +keyPreviewHeight +
    + +keyPreviewLayout +
    + +keyPreviewOffset +
    + +keyTextColor +
    + +keyTextSize +
    + +keyWidth +
    + + +
    L  +A +B +C +D +E +F +G +H +I +J +K +M +N +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +labelTextSize +
    + +launchActivityWithIntent +(String, Class<T>, Intent)
    + +LauncherActivity.IconResizer
    + +LauncherActivity.ListItem
    + +LeadingMarginSpan.Standard +(Parcel) constructor
    + +LiveFolders
    + +load
    +  type  +(AssetFileDescriptor, int) in android.media.SoundPool +
    + +  type  +(FileDescriptor, long, long, int) in android.media.SoundPool +
    + +loadDex +(String, String, int)
    + +LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED +
    + +longClickView +(InstrumentationTestCase, View)
    + + +
    M  +A +B +C +D +E +F +G +H +I +J +K +L +N +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +makeListItems +()
    + +mayUseInputMethod +(int)
    + +MEDIA_CHECKING +
    + +MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK +
    + +MEDIA_INFO_BAD_INTERLEAVING +
    + +MEDIA_INFO_NOT_SEEKABLE +
    + +MEDIA_INFO_UNKNOWN +
    + +MEDIA_INFO_VIDEO_TRACK_LAGGING +
    + +MEDIA_NOFS +
    + +MEDIA_RECORDER_ERROR_UNKNOWN +
    + +MEDIA_RECORDER_INFO_MAX_DURATION_REACHED +
    + +MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED +
    + +MEDIA_RECORDER_INFO_UNKNOWN +
    + +MediaPlayer.OnInfoListener
    + +MediaPlayer.OnVideoSizeChangedListener
    + +MediaRecorder.OnErrorListener
    + +MediaRecorder.OnInfoListener
    + +MediaRecorder.VideoEncoder
    + +MediaRecorder.VideoSource
    + +MODE_APPEND +
    + +MOUNT_FORMAT_FILESYSTEMS +
    + +moveCursorToVisibleOffset +()
    + +mutate +()
    + +mVerticalAlignment +
    + + +
    N  +A +B +C +D +E +F +G +H +I +J +K +L +M +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +NeighboringCellInfo
    + +NoCopySpan
    + +NoCopySpan.Concrete
    + +noHistory +
    + +NUMBER_OF_SONGS_FOR_ARTIST +
    + + +
    O  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +P +Q +R +S +T +U +V +W +Y + TOP +

    +onBeginBatchEdit +()
    + +onCheckIsTextEditor +()
    + +onCommitCompletion +(CompletionInfo)
    + +onContentChanged +()
    + +onCreateInputConnection +(EditorInfo)
    + +onDoubleTap +(MotionEvent)
    + +onDoubleTapEvent +(MotionEvent)
    + +onEditorAction +(int)
    + +onEndBatchEdit +()
    + +onFinishTemporaryDetach +()
    + +onKeyOther
    +  type  +(TextView, Spannable, KeyEvent) in android.text.method.ArrowKeyMovementMethod +
    + +  type  +(View, Editable, KeyEvent) in android.text.method.BaseKeyListener +
    + +  type  +(View, Editable, KeyEvent) in android.text.method.KeyListener +
    + +  type  +(TextView, Spannable, KeyEvent) in android.text.method.MovementMethod +
    + +  type  +(TextView, Spannable, KeyEvent) in android.text.method.ScrollingMovementMethod +
    + +onKeyPreIme +(int, KeyEvent)
    + +onPrivateIMECommand +(String, Bundle)
    + +onSelectionChanged +(int, int)
    + +onSingleTapConfirmed +(MotionEvent)
    + +onStartTemporaryDetach +()
    + +onTextContextMenuItem +(int)
    + +onUserInteraction +()
    + +onUserLeaveHint +()
    + +openAssetFile +(Uri, String)
    + +openAssetFileDescriptor +(Uri, String)
    + +openOutputStream +(Uri, String)
    + +openRawResource +(int, TypedValue)
    + +OrientationEventListener
    + +OrientationListener +(Context, int) constructor
    + + +
    P  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +Q +R +S +T +U +V +W +Y + TOP +

    +ParcelableSpan
    + +parseBundleExtra +(String, AttributeSet, Bundle)
    + +parseBundleExtras +(XmlResourceParser, Bundle)
    + +paste +
    + +peekService +(Context, Intent)
    + +performHapticFeedback
    +  type  +(int) in android.view.View +
    + +  type  +(int, int) in android.view.View +
    + +PHONETIC_NAME
    + in  +android.provider.Contacts.Intents.Insert +
    + + in  +android.provider.Contacts.PeopleColumns +
    + +playSoundEffect +(int, float)
    + +PluginData
    + +popupCharacters +
    + +popupKeyboard +
    + +popupLayout +
    + +PrintStreamPrinter
    + +privateImeOptions +
    + +ProviderTestCase2
    + +putLong +(ContentResolver, String, long)
    + + +
    Q  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +R +S +T +U +V +W +Y + TOP +

    +QuoteSpan +(Parcel) constructor
    + + +
    R  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +S +T +U +V +W +Y + TOP +

    +R.bool
    + +R.integer
    + +RAW_AMR +
    + +readFromParcel +(Parcel)
    + +registerListener
    +  type  +(SensorEventListener, Sensor, int) in android.hardware.SensorManager +
    + +  type  +(SensorEventListener, Sensor, int, Handler) in android.hardware.SensorManager +
    + +RelativeSizeSpan +(Parcel) constructor
    + +remapCoordinateSystem +(float[], int, int, float[])
    + +RemoteViews.ActionException +(Exception) constructor
    + +removeAt +(int)
    + +removeGpsStatusListener +(Listener)
    + +removeOnScrollChangedListener +(OnScrollChangedListener)
    + +removePropertyChangeListener
    +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Packer +
    + +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Unpacker +
    + +  type  +(PropertyChangeListener) in java.util.logging.LogManager +
    + +removeTestProvider +(String)
    + +removeUpdates +(PendingIntent)
    + +replaceExtras
    +  type  +(Intent) in android.content.Intent +
    + +  type  +(Bundle) in android.content.Intent +
    + +reqFiveWayNav +
    + +reqHardKeyboard +
    + +reqKeyboardType +
    + +reqNavigation +
    + +reqTouchScreen +
    + +requestChildRectangleOnScreen +(View, Rect, boolean)
    + +requestLocationUpdates +(String, long, float, PendingIntent)
    + +resetLockedMeta +(long)
    + +ResourceCursorAdapter +(Context, int, Cursor, boolean) constructor
    + +restartPackage +(String)
    + +restorePicture +(Bundle, File)
    + +ResultReceiver
    + +ROUTE_BLUETOOTH_A2DP +
    + +ROUTE_BLUETOOTH_SCO +
    + +rowEdgeFlags +
    + +runTestOnUiThread +(Runnable)
    + + +
    S  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +T +U +V +W +Y + TOP +

    +savePicture +(Bundle, File)
    + +ScaleXSpan +(Parcel) constructor
    + +SCREEN_BRIGHTNESS_CHANGED +
    + +SCREEN_ORIENTATION_CHANGED +
    + +screenBrightness +
    + +screenOrientation +
    + +scrollToBottom +(InstrumentationTestCase, Activity, ViewGroup)
    + +scrollToTop +(InstrumentationTestCase, Activity, ViewGroup)
    + +SECONDARY_EMAIL +
    + +SECONDARY_EMAIL_TYPE +
    + +SECONDARY_PHONE +
    + +SECONDARY_PHONE_TYPE +
    + +SectionIndexer
    + +selectAll +
    + +sendExtraCommand +(String, String, Bundle)
    + +Sensor
    + +SensorEvent
    + +SensorEventListener
    + +setAllowFileAccess +(boolean)
    + +setBitmap +(int, String, Bitmap)
    + +setBluetoothA2dpOn +(boolean)
    + +setBoolean +(int, String, boolean)
    + +setBuiltInZoomControls +(boolean)
    + +setButton
    +  type  +(CharSequence, OnClickListener) in android.app.AlertDialog +
    + +  type  +(CharSequence, Message) in android.app.AlertDialog +
    + +setByte +(int, String, byte)
    + +setCamera +(Camera)
    + +setChar +(int, String, char)
    + +setCharSequence +(int, String, CharSequence)
    + +setClippingEnabled +(boolean)
    + +setCompoundDrawablesWithIntrinsicBounds +(int, int, int, int)
    + +setDouble +(int, String, double)
    + +setDropDownAnchor +(int)
    + +setDropDownWidth +(int)
    + +setExtractedText +(ExtractedText)
    + +setFastScrollEnabled +(boolean)
    + +setFillEnabled +(boolean)
    + +setFloat +(int, String, float)
    + +setFooterDividersEnabled +(boolean)
    + +setHapticFeedbackEnabled +(boolean)
    + +setHeaderDividersEnabled +(boolean)
    + +setImageViewBitmap +(int, Bitmap)
    + +setImeActionLabel +(CharSequence, int)
    + +setImeOptions +(int)
    + +setInexactRepeating +(int, long, long, PendingIntent)
    + +setInputExtras +(int)
    + +setInputMethodMode +(int)
    + +setInputType +(int)
    + +setInt +(int, String, int)
    + +setKeyProgressIncrement +(int)
    + +setListSelection +(int)
    + +setLong +(int, String, long)
    + +setMaxDuration +(int)
    + +setMaxFileSize +(long)
    + +setNetworkAvailable +(boolean)
    + +setOnChronometerTickListener +(OnChronometerTickListener)
    + +setOnClickPendingIntent +(int, PendingIntent)
    + +setOnDoubleTapListener +(OnDoubleTapListener)
    + +setOnEditorActionListener +(OnEditorActionListener)
    + +setOnErrorListener +(OnErrorListener)
    + +setOneShotPreviewCallback +(PreviewCallback)
    + +setOnInfoListener
    +  type  +(OnInfoListener) in android.media.MediaPlayer +
    + +  type  +(OnInfoListener) in android.media.MediaRecorder +
    + +setOnVideoSizeChangedListener +(OnVideoSizeChangedListener)
    + +setOutputFile +(FileDescriptor)
    + +setOutsideTouchable +(boolean)
    + +setPrivateImeOptions +(String)
    + +setRawInputType +(int)
    + +setScrollContainer +(boolean)
    + +setShort +(int, String, short)
    + +setSmoothScrollbarEnabled +(boolean)
    + +setSoftInputMode +(int)
    + +setStaticTransformationsEnabled +(boolean)
    + +setString +(int, String, String)
    + +setTestProviderEnabled +(String, boolean)
    + +setTestProviderLocation +(String, Location)
    + +setTestProviderStatus +(String, int, Bundle, long)
    + +setTextColor +(int, int)
    + +Settings.Secure
    + +settingsActivity +
    + +setTouchable +(boolean)
    + +setTouchInterceptor +(OnTouchListener)
    + +setUri +(int, String, Uri)
    + +setUserAgentString +(String)
    + +setVideoEncoder +(int)
    + +setVideoFrameRate +(int)
    + +setVideoSize +(int, int)
    + +setVideoSource +(int)
    + +setView +(View, int, int, int, int)
    + +setViewResource +(int)
    + +setVisible +(boolean)
    + +setWindowAnimations +(int)
    + +setWindowLayoutMode +(int, int)
    + +sharedUserId +
    + +sharedUserLabel
    + in  +android.R.attr +
    + + in  +android.content.pm.PackageInfo +
    + +SHOW_OR_CREATE_CONTACT +
    + +SlidingDrawer
    + +SlidingDrawer.OnDrawerCloseListener
    + +SlidingDrawer.OnDrawerOpenListener
    + +SlidingDrawer.OnDrawerScrollListener
    + +smoothScrollbar +
    + +SOFT_INPUT_ADJUST_PAN +
    + +SOFT_INPUT_ADJUST_RESIZE +
    + +SOFT_INPUT_ADJUST_UNSPECIFIED +
    + +SOFT_INPUT_IS_FORWARD_NAVIGATION +
    + +SOFT_INPUT_MASK_ADJUST +
    + +SOFT_INPUT_MASK_STATE +
    + +SOFT_INPUT_MODE_CHANGED +
    + +SOFT_INPUT_STATE_ALWAYS_HIDDEN +
    + +SOFT_INPUT_STATE_ALWAYS_VISIBLE +
    + +SOFT_INPUT_STATE_HIDDEN +
    + +SOFT_INPUT_STATE_UNCHANGED +
    + +SOFT_INPUT_STATE_UNSPECIFIED +
    + +SOFT_INPUT_STATE_VISIBLE +
    + +softInputMode
    + in  +android.content.pm.ActivityInfo +
    + + in  +android.view.WindowManager.LayoutParams +
    + +sort +(Comparator<? super T>)
    + +SPAN_COMPOSING +
    + +SPAN_INTERMEDIATE +
    + +SPAN_POINT_MARK_MASK +
    + +startSelectingText +
    + +state_long_pressable +
    + +stopSelectingText +
    + +STREAM_NOTIFICATION +
    + +STRETCH_SPACING_UNIFORM +
    + +StrikethroughSpan +(Parcel) constructor
    + +StyleSpan +(Parcel) constructor
    + +SubscriptSpan +(Parcel) constructor
    + +SuperscriptSpan +(Parcel) constructor
    + +switchInputMethod +
    + + +
    T  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +U +V +W +Y + TOP +

    +TERTIARY_EMAIL +
    + +TERTIARY_EMAIL_TYPE +
    + +TERTIARY_PHONE +
    + +TERTIARY_PHONE_TYPE +
    + +TestMethod
    +  TestMethod +(String, Class<TestCase>) constructor
    + +  TestMethod +(TestCase) constructor
    + +TextAppearanceSpan +(Parcel) constructor
    + +TextView.OnEditorActionListener
    + +Theme_InputMethod +
    + +Theme_Light_Panel +
    + +Theme_NoDisplay +
    + +Theme_Panel +
    + +thickness +
    + +title_bar_tall +
    + +topOffset +
    + +toShortString
    +  type  +() in android.graphics.Rect +
    + +  type  +() in android.view.animation.Transformation +
    + +TransitionDrawable +(Drawable[]) constructor
    + +TYPE_APPLICATION_ATTACHED_DIALOG +
    + +TYPE_INPUT_METHOD +
    + +TYPE_INPUT_METHOD_DIALOG +
    + +TypefaceSpan +(Parcel) constructor
    + + +
    U  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +V +W +Y + TOP +

    +UnderlineSpan +(Parcel) constructor
    + +UNKNOWN_LENGTH +
    + +unregisterListener
    +  type  +(SensorEventListener) in android.hardware.SensorManager +
    + +  type  +(SensorEventListener, Sensor) in android.hardware.SensorManager +
    + +update
    +  type  +() in android.widget.PopupWindow +
    + +  type  +(int, int, int, int, boolean) in android.widget.PopupWindow +
    + +UPDATE_DEVICE_STATS +
    + +UpdateAppearance
    + +updatePeriodMillis +
    + +URLSpan +(Parcel) constructor
    + +UserDictionary
    + +UserDictionary.Words
    + + +
    V  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +W +Y + TOP +

    +verticalCorrection +
    + +verticalGap +
    + +VideoView_error_text_invalid_progressive_playback +
    + +ViewDebug.CapturedViewProperty
    + +ViewTreeObserver.OnScrollChangedListener
    + +Visibility
    + +voiceLanguage +
    + +voiceLanguageModel +
    + +voiceMaxResults +
    + +voicePromptText +
    + +voiceSearchMode +
    + +VOLUME_NOTIFICATION +
    + + +
    W  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +Y + TOP +

    +Widget_KeyboardView +
    + +WIFI_MAX_DHCP_RETRY_COUNT +
    + +WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS +
    + +WIFI_MODE_FULL +
    + +WIFI_MODE_SCAN_ONLY +
    + +WIFI_SLEEP_POLICY +
    + +WIFI_SLEEP_POLICY_DEFAULT +
    + +WIFI_SLEEP_POLICY_NEVER +
    + +WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED +
    + +windowDisablePreview +
    + +windowNoDisplay +
    + +windowSoftInputMode +
    + +WRITE_SECURE_SETTINGS +
    + +writeToParcel
    +  type  +(Parcel, int) in android.content.res.AssetFileDescriptor +
    + +  type  +(Parcel, int) in android.graphics.RectF +
    + +  type  +(Parcel, int) in android.text.Annotation +
    + +  type  +(Parcel, int) in android.text.style.AbsoluteSizeSpan +
    + +  type  +(Parcel, int) in android.text.style.AlignmentSpan.Standard +
    + +  type  +(Parcel, int) in android.text.style.BackgroundColorSpan +
    + +  type  +(Parcel, int) in android.text.style.BulletSpan +
    + +  type  +(Parcel, int) in android.text.style.ForegroundColorSpan +
    + +  type  +(Parcel, int) in android.text.style.LeadingMarginSpan.Standard +
    + +  type  +(Parcel, int) in android.text.style.QuoteSpan +
    + +  type  +(Parcel, int) in android.text.style.RelativeSizeSpan +
    + +  type  +(Parcel, int) in android.text.style.ScaleXSpan +
    + +  type  +(Parcel, int) in android.text.style.StrikethroughSpan +
    + +  type  +(Parcel, int) in android.text.style.StyleSpan +
    + +  type  +(Parcel, int) in android.text.style.SubscriptSpan +
    + +  type  +(Parcel, int) in android.text.style.SuperscriptSpan +
    + +  type  +(Parcel, int) in android.text.style.TextAppearanceSpan +
    + +  type  +(Parcel, int) in android.text.style.TypefaceSpan +
    + +  type  +(Parcel, int) in android.text.style.URLSpan +
    + +  type  +(Parcel, int) in android.text.style.UnderlineSpan +
    + + +
    Y  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W + TOP +

    +yieldIfContendedSafely +()
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/alldiffs_index_all.html b/docs/html/sdk/api_diff/3/changes/alldiffs_index_all.html new file mode 100644 index 000000000000..48da98bb8776 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/alldiffs_index_all.html @@ -0,0 +1,4178 @@ + + + + + + + + + +All Differences Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Differences +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + + +
    A  +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +AbsListView
    + +AbsoluteLayout
    + +AbsoluteSizeSpan
    +  android.text.style
    + +  AbsoluteSizeSpan +(Parcel) constructor
    + +AbsSeekBar
    + +ACCELEROMETER_ROTATION +
    + +ACTION_AIRPLANE_MODE_SETTINGS +
    + +ACTION_APPLICATION_DEVELOPMENT_SETTINGS +
    + +ACTION_AUDIO_BECOMING_NOISY +
    + +ACTION_BACKGROUND_DATA_SETTING_CHANGED +
    + +ACTION_DATA_ROAMING_SETTINGS +
    + +ACTION_IMAGE_CAPTURE +
    + +ACTION_INPUT_METHOD_CHANGED +
    + +ACTION_INPUT_METHOD_SETTINGS +
    + +ACTION_INTERNAL_STORAGE_SETTINGS +
    + +ACTION_MANAGE_APPLICATIONS_SETTINGS +
    + +ACTION_MEDIA_CHECKING +
    + +ACTION_MEDIA_NOFS +
    + +ACTION_MEMORY_CARD_SETTINGS +
    + +ACTION_NETWORK_OPERATOR_SETTINGS +
    + +ACTION_OUTSIDE +
    + +ACTION_PACKAGE_DATA_CLEARED +
    + +ACTION_PACKAGE_REPLACED +
    + +ACTION_PHONE_STATE_CHANGED +
    + +ACTION_QUICK_LAUNCH_SETTINGS +
    + +ACTION_SEARCH_LONG_PRESS +
    + +ACTION_SYNC_SETTINGS +
    + +ACTION_SYSTEM_TUTORIAL +
    + +ACTION_USER_DICTIONARY_SETTINGS +
    + +ACTION_USER_PRESENT +
    + +ACTION_VIDEO_CAPTURE +
    + +ACTION_WIFI_IP_SETTINGS +
    + +Activity
    + +ActivityInfo
    + +ActivityInstrumentationTestCase
    + +ActivityInstrumentationTestCase2
    + +ActivityManager
    + +ActivityManager.RunningAppProcessInfo
    + +ADB_ENABLED +
    + +addGpsStatusListener +(Listener)
    + +addOnScrollChangedListener +(OnScrollChangedListener)
    + +addPropertyChangeListener
    +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Packer +
    + +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Unpacker +
    + +  type  +(PropertyChangeListener) in java.util.logging.LogManager +
    + +addRequirements +(Predicate<TestMethod>)
    + +addTestProvider +(String, boolean, boolean, boolean, boolean, boolean, boolean, boolean, int, int)
    + +addToDictionary +
    + +adjustMetaAfterKeypress +(long)
    + +AlarmManager
    + +AlertDialog
    + +ALIGN_BASELINE +
    + +ALIGN_BOTTOM +
    + +AlignmentSpan.Standard
    +  android.text.style
    + +  AlignmentSpan.Standard +(Parcel) constructor
    + +allowSingleTap +
    + +AlphabetIndexer
    + +android
    + +android.app
    + +android.appwidget
    + +android.content
    + +android.content.pm
    + +android.content.res
    + +android.database
    + +android.database.sqlite
    + +android.graphics
    + +android.graphics.drawable
    + +android.graphics.drawable.shapes
    + +android.hardware
    + +android.inputmethodservice
    + +android.location
    + +android.media
    + +android.net
    + +android.net.wifi
    + +android.opengl
    + +android.os
    + +android.preference
    + +android.provider
    + +android.speech
    + +android.telephony
    + +android.telephony.gsm
    + +android.test
    + +android.test.mock
    + +android.test.suitebuilder
    + +android.text
    + +android.text.format
    + +android.text.method
    + +android.text.style
    + +android.util
    + +android.view
    + +android.view.animation
    + +android.view.inputmethod
    + +android.webkit
    + +android.widget
    + +ANDROID_ID +
    + +animateOnClick +
    + +Animation
    + +Annotation
    +  android.text
    + +  Annotation +(Parcel) constructor
    + +appendEscapedSQLString +(StringBuilder, String)
    + +applyDisplay +(int, Rect, Rect)
    + +ArrayAdapter
    + +ArrowKeyMovementMethod
    + +AssetFileDescriptor
    + +AssetFileDescriptor.AutoCloseInputStream
    + +AssetFileDescriptor.AutoCloseOutputStream
    + +AsyncTask
    + +AsyncTask.Status
    + +AudioFormat
    + +AudioManager
    + +AudioRecord
    + +AudioRecord.OnRecordPositionUpdateListener
    + +AudioTrack
    + +AudioTrack.OnPlaybackPositionUpdateListener
    + +AutoCompleteTextView
    + +AutoText
    + +autoText +
    + +AXIS_CLIP +
    + +AXIS_MINUS_X +
    + +AXIS_MINUS_Y +
    + +AXIS_MINUS_Z +
    + +AXIS_X +
    + +AXIS_Y +
    + +AXIS_Z +
    + + +
    B  +A +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +BackgroundColorSpan
    +  android.text.style
    + +  BackgroundColorSpan +(Parcel) constructor
    + +backgroundDimEnabled +
    + +BaseKeyListener
    + +beginBatchEdit +()
    + +BIND_APPWIDGET +
    + +BIND_INPUT_METHOD +
    + +Binder
    + +Bitmap
    + +BLUETOOTH_ON +
    + +BOOKMARK +
    + +bottomOffset +
    + +bringPointIntoView +(int)
    + +BroadcastReceiver
    + +Browser
    + +BUCKET_DISPLAY_NAME +
    + +BUCKET_ID +
    + +Build
    + +BulletSpan
    +  android.text.style
    + +  BulletSpan +(Parcel) constructor
    + +BUTTON1 +
    + +BUTTON2 +
    + +BUTTON3 +
    + +BUTTON_NEGATIVE +
    + +BUTTON_NEUTRAL +
    + +BUTTON_POSITIVE +
    + + +
    C  +A +B +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +calculateLength +(CharSequence, boolean)
    + +callActivityOnUserLeaving +(Activity)
    + +Camera
    + +candidatesArea +
    + +candidatesTextStyleSpans +
    + +Canvas
    + +CAP_MODE_CHARACTERS +
    + +CAP_MODE_SENTENCES +
    + +CAP_MODE_WORDS +
    + +capitalize +
    + +CATEGORY_GADGET +
    + +CATEGORY_INFO +
    + +changeAction +(KeyEvent, int)
    + +changeCursorAndColumns +(Cursor, String[], int[])
    + +changeDebugPort +(int)
    + +changeFlags +(KeyEvent, int)
    + +changeTimeRepeat +(KeyEvent, long, int)
    + +Character.UnicodeBlock
    + +checkInputConnectionProxy +(View)
    + +Chronometer
    + +Chronometer.OnChronometerTickListener
    + +Class
    + +clearComposingText +()
    + +clearListSelection +()
    + +clearMatches +()
    + +clearMetaKeyState
    +  type  +(View, Editable, int) in android.text.method.KeyListener +
    + +  type  +(long, int) in android.text.method.MetaKeyKeyListener +
    + +  type  +(View, Editable, int) in android.text.method.MetaKeyKeyListener +
    + +  type  +(Editable, int) in android.text.method.MetaKeyKeyListener +
    + +clearTestProviderEnabled +(String)
    + +clearTestProviderLocation +(String)
    + +clearTestProviderStatus +(String)
    + +ClickableSpan
    + +CLIP_HORIZONTAL +
    + +CLIP_VERTICAL +
    + +clone +()
    + +close +()
    + +closeButton +
    + +closeContextMenu +()
    + +codes +
    + +computeDurationHint +()
    + +configPreferences +
    + +Configuration
    + +ConfigurationInfo
    + +configure +
    + +ConnectivityManager
    + +Contacts.Intents
    + +Contacts.Intents.Insert
    + +Contacts.PeopleColumns
    + +content +
    + +ContentProvider
    + +ContentResolver
    + +Context
    + +copy +
    + +copyPixelsFromBuffer +(Buffer)
    + +copyUrl +
    + +createInputStream +()
    + +createOutputStream +()
    + +createWifiLock +(int, String)
    + +CREATOR
    + in  +android.content.res.AssetFileDescriptor +
    + + in  +android.graphics.RectF +
    + +Cursor
    + +CursorAdapter
    + +CursorWrapper
    + +cut +
    + + +dalvik.system
    + +dark_header +
    + +DATA_ROAMING +
    + +DATA_X +
    + +DATA_Y +
    + +DATA_Z +
    + +DatabaseUtils
    + +Date
    +  java.util
    + +  Date +() constructor
    + +  Date +(int, int, int, int, int, int) constructor
    + +DateKeyListener
    + +DateTimeKeyListener
    + +Debug
    + +DEBUG_ENABLE_ASSERT +
    + +DEBUG_ENABLE_CHECKJNI +
    + +DEBUG_ENABLE_DEBUGGER +
    + +DEFAULT_SORT_ORDER
    + in  +android.provider.MediaStore.Images.Media +
    + + in  +android.provider.MediaStore.Video +
    + +describeContents
    +  type  +() in android.content.res.AssetFileDescriptor +
    + +  type  +() in android.graphics.RectF +
    + +  type  +() in android.text.Annotation +
    + +  type  +() in android.text.style.AbsoluteSizeSpan +
    + +  type  +() in android.text.style.AlignmentSpan.Standard +
    + +  type  +() in android.text.style.BackgroundColorSpan +
    + +  type  +() in android.text.style.BulletSpan +
    + +  type  +() in android.text.style.ForegroundColorSpan +
    + +  type  +() in android.text.style.LeadingMarginSpan.Standard +
    + +  type  +() in android.text.style.QuoteSpan +
    + +  type  +() in android.text.style.RelativeSizeSpan +
    + +  type  +() in android.text.style.ScaleXSpan +
    + +  type  +() in android.text.style.StrikethroughSpan +
    + +  type  +() in android.text.style.StyleSpan +
    + +  type  +() in android.text.style.SubscriptSpan +
    + +  type  +() in android.text.style.SuperscriptSpan +
    + +  type  +() in android.text.style.TextAppearanceSpan +
    + +  type  +() in android.text.style.TypefaceSpan +
    + +  type  +() in android.text.style.URLSpan +
    + +  type  +() in android.text.style.UnderlineSpan +
    + +DEVICE_PROVISIONED +
    + +deviceHasKey +(int)
    + +deviceHasKeys +(int[])
    + +DexClassLoader
    + +DexFile
    + +DialerKeyListener
    + +dialog_alert_title +
    + +DialogInterface
    + +DialogPreference
    + +didTouchFocusSelect +()
    + +DigitsKeyListener
    + +dispatchKeyEventPreIme +(KeyEvent)
    + +DISPLAY +
    + +DISPLAY_CLIP_HORIZONTAL +
    + +DISPLAY_CLIP_VERTICAL +
    + +drag
    +  type  +(InstrumentationTestCase, float, float, float, float, int) in android.test.TouchUtils +
    + +  type  +(ActivityInstrumentationTestCase, float, float, float, float, int) in android.test.TouchUtils +
    + +dragQuarterScreenDown
    +  type  +(InstrumentationTestCase, Activity) in android.test.TouchUtils +
    + +  type  +(ActivityInstrumentationTestCase) in android.test.TouchUtils +
    + +dragQuarterScreenUp
    +  type  +(InstrumentationTestCase, Activity) in android.test.TouchUtils +
    + +  type  +(ActivityInstrumentationTestCase) in android.test.TouchUtils +
    + +dragViewBy
    +  type  +(InstrumentationTestCase, View, int, int, int) in android.test.TouchUtils +
    + +  type  +(ActivityInstrumentationTestCase, View, int, int, int) in android.test.TouchUtils +
    + +dragViewTo
    +  type  +(InstrumentationTestCase, View, int, int, int) in android.test.TouchUtils +
    + +  type  +(ActivityInstrumentationTestCase, View, int, int, int) in android.test.TouchUtils +
    + +dragViewToBottom
    +  type  +(ActivityInstrumentationTestCase, View, int) in android.test.TouchUtils +
    + +  type  +(InstrumentationTestCase, Activity, View, int) in android.test.TouchUtils +
    + +  type  +(ActivityInstrumentationTestCase, View) in android.test.TouchUtils +
    + +  type  +(InstrumentationTestCase, Activity, View) in android.test.TouchUtils +
    + +dragViewToTop
    +  type  +(InstrumentationTestCase, View) in android.test.TouchUtils +
    + +  type  +(InstrumentationTestCase, View, int) in android.test.TouchUtils +
    + +  type  +(ActivityInstrumentationTestCase, View) in android.test.TouchUtils +
    + +  type  +(ActivityInstrumentationTestCase, View, int) in android.test.TouchUtils +
    + +dragViewToX
    +  type  +(InstrumentationTestCase, View, int, int) in android.test.TouchUtils +
    + +  type  +(ActivityInstrumentationTestCase, View, int, int) in android.test.TouchUtils +
    + +dragViewToY
    +  type  +(InstrumentationTestCase, View, int, int) in android.test.TouchUtils +
    + +  type  +(ActivityInstrumentationTestCase, View, int, int) in android.test.TouchUtils +
    + +Drawable
    + +drawBitmap +(int[], int, int, float, float, int, int, boolean, Paint)
    + +dropDownAnchor +
    + +dropDownWidth +
    + +dump
    +  type  +(Printer, String) in android.location.Location +
    + +  type  +(FileDescriptor, String[]) in android.os.Binder +
    + +  type  +(FileDescriptor, String[]) in android.os.IBinder +
    + +dumpCapturedView +(String, Object)
    + +dumpHprofData
    +  type  +(String) in android.os.Debug +
    + +  type  +(String) in dalvik.system.VMDebug +
    + +dumpSpans +(CharSequence, Printer, String)
    + +DynamicDrawableSpan
    +  android.text.style
    + +  DynamicDrawableSpan +(int) constructor
    + + +
    E  +A +B +C +D +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +editable +
    + +editorExtras +
    + +enabled +
    + +endBatchEdit +()
    + +Environment
    + +EXTRA_APPLICATION_ID +
    + +EXTRA_CREATE_DESCRIPTION +
    + +EXTRA_DATA_REMOVED +
    + +EXTRA_FINISH_ON_COMPLETION +
    + +EXTRA_FORCE_CREATE +
    + +EXTRA_INCOMING_NUMBER +
    + +EXTRA_MAX_BYTES +
    + +EXTRA_MEDIA_ALBUM +
    + +EXTRA_MEDIA_ARTIST +
    + +EXTRA_MEDIA_FOCUS +
    + +EXTRA_MEDIA_TITLE +
    + +EXTRA_OUTPUT +
    + +EXTRA_REPLACING +
    + +EXTRA_SCREEN_ORIENTATION +
    + +EXTRA_STATE +
    + +EXTRA_STATE_IDLE +
    + +EXTRA_STATE_OFFHOOK +
    + +EXTRA_STATE_RINGING +
    + +EXTRA_VIDEO_QUALITY +
    + +extractArea +
    + +extractText +(ExtractedTextRequest, ExtractedText)
    + + +
    F  +A +B +C +D +E +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +fastScrollEnabled +
    + +fillEnabled +
    + +findAll +(String)
    + +findNext +(boolean)
    + +FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET +
    + +FLAG_ACTIVITY_NO_USER_ACTION +
    + +FLAG_ACTIVITY_REORDER_TO_FRONT +
    + +FLAG_ALT_FOCUSABLE_IM +
    + +FLAG_EDITOR_ACTION +
    + +FLAG_FROM_SYSTEM +
    + +FLAG_KEEP_TOUCH_MODE +
    + +FLAG_NO_HISTORY +
    + +FLAG_SOFT_KEYBOARD +
    + +FLAG_UPDATE_CURRENT +
    + +FLAG_WATCH_OUTSIDE_TOUCH +
    + +footerDividersEnabled +
    + +ForegroundColorSpan
    +  android.text.style
    + +  ForegroundColorSpan +(Parcel) constructor
    + +forkAndSpecialize
    +  type  +(int, int, int[], int, int[][]) in dalvik.system.Zygote +
    + +  type  +(int, int, int[], boolean, int[][]) in dalvik.system.Zygote +
    + +forkSystemServer
    +  type  +(int, int, int[], int, int[][]) in dalvik.system.Zygote +
    + +  type  +(int, int, int[], boolean, int[][]) in dalvik.system.Zygote +
    + +FORMAT_JAPAN +
    + +formatJapaneseNumber +(Editable)
    + +forName +(String)
    + +FX_KEYPRESS_DELETE +
    + +FX_KEYPRESS_RETURN +
    + +FX_KEYPRESS_SPACEBAR +
    + +FX_KEYPRESS_STANDARD +
    + + +
    G  +A +B +C +D +E +F +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +GeomagneticField
    + +GestureDetector
    +  android.view
    + +  GestureDetector +(Context, OnGestureListener) constructor
    + +  GestureDetector +(Context, OnGestureListener, Handler) constructor
    + +  GestureDetector +(OnGestureListener) constructor
    + +  GestureDetector +(OnGestureListener, Handler) constructor
    + +GestureDetector.OnDoubleTapListener
    + +GestureDetector.SimpleOnGestureListener
    + +get +(Context)
    + +GET_CONFIGURATIONS +
    + +GET_UNINSTALLED_PACKAGES +
    + +getAllowFileAccess +()
    + +getBackgroundDataSetting +()
    + +getBoolean +(int)
    + +getBuiltInZoomControls +()
    + +getButton +(int)
    + +getCapsMode +(CharSequence, int, int)
    + +getCharacters +()
    + +getClasses +()
    + +getColumnIndex
    +  type  +(String) in android.database.Cursor +
    + +  type  +(String) in android.database.CursorWrapper +
    + +getConstructors +()
    + +getCount +()
    + +getDeclaredClasses +()
    + +getDeclaredConstructors +()
    + +getDeclaredLength +()
    + +getDefaultSensor +(int)
    + +getDeviceConfigurationInfo +()
    + +getDialog +()
    + +getDoubleTapTimeout +()
    + +getDrawable
    +  type  +() in android.graphics.drawable.RotateDrawable +
    + +  type  +() in android.graphics.drawable.ScaleDrawable +
    + +getDropDownAnchor +()
    + +getDropDownWidth +()
    + +getEdgeSlop +()
    + +getEditableText +()
    + +getFadingEdgeLength +()
    + +getFraction +(int, int, int)
    + +getGpsStatus +(GpsStatus)
    + +getHandler +()
    + +getImeActionId +()
    + +getImeActionLabel +()
    + +getImeOptions +()
    + +getInclination +(float[])
    + +getInitialScrollX +(TextView, Spannable)
    + +getInitialScrollY +(TextView, Spannable)
    + +getInputExtras +(boolean)
    + +getInputMethodMode +()
    + +getInputType
    +  type  +() in android.text.method.DateKeyListener +
    + +  type  +() in android.text.method.DateTimeKeyListener +
    + +  type  +() in android.text.method.DialerKeyListener +
    + +  type  +() in android.text.method.DigitsKeyListener +
    + +  type  +() in android.text.method.KeyListener +
    + +  type  +() in android.text.method.MultiTapKeyListener +
    + +  type  +() in android.text.method.QwertyKeyListener +
    + +  type  +() in android.text.method.TextKeyListener +
    + +  type  +() in android.text.method.TimeKeyListener +
    + +  type  +() in android.widget.TextView +
    + +getInterfaces +()
    + +getItem
    +  type  +(int) in android.view.Menu +
    + +  type  +(int) in android.widget.CursorAdapter +
    + +getItemClickListener +()
    + +getItemId +(int)
    + +getItemSelectedListener +()
    + +getKeyProgressIncrement +()
    + +getLaunchIntentForPackage
    +  type  +(String) in android.content.pm.PackageManager +
    + +  type  +(String) in android.test.mock.MockPackageManager +
    + +getLayoutDimension +(int, int)
    + +getListSelection +()
    + +getListView +()
    + +getLoggingMXBean +()
    + +getLong
    +  type  +(ContentResolver, String) in android.provider.Settings.System +
    + +  type  +(ContentResolver, String, long) in android.provider.Settings.System +
    + +getMaxAvailableHeight +(View, int)
    + +getMaximumDrawingCacheSize +()
    + +getMaxKeyCode +()
    + +getMetaState
    +  type  +(long) in android.text.method.MetaKeyKeyListener +
    + +  type  +(long, int) in android.text.method.MetaKeyKeyListener +
    + +getMinimumFlingVelocity +()
    + +getNeighboringCellInfo +()
    + +getOnChronometerTickListener +()
    + +getOnItemClickListener +()
    + +getOnItemSelectedListener +()
    + +getOrientation +(float[], float[])
    + +getOriginalUrl
    +  type  +() in android.webkit.WebHistoryItem +
    + +  type  +() in android.webkit.WebView +
    + +getPluginData
    +  type  +(String, Map<String, String>) in android.webkit.UrlInterceptHandler +
    + +  type  +(String, Map<String, String>) in android.webkit.UrlInterceptRegistry +
    + +getPrivateImeOptions +()
    + +getProxyClass +(ClassLoader, Class<?>)
    + +getRotationMatrix +(float[], float[], float[], float[])
    + +getRunningAppProcesses +()
    + +getScaledDoubleTapSlop +()
    + +getScaledEdgeSlop +()
    + +getScaledFadingEdgeLength +()
    + +getScaledMaximumDrawingCacheSize +()
    + +getScaledMinimumFlingVelocity +()
    + +getScaledScrollBarSize +()
    + +getScaledTouchSlop +()
    + +getScaledWindowTouchSlop +()
    + +getScrollBarSize +()
    + +getSensorList +(int)
    + +getSensors +()
    + +getSize +(View)
    + +getSpanTypeId
    +  type  +() in android.text.Annotation +
    + +  type  +() in android.text.style.AbsoluteSizeSpan +
    + +  type  +() in android.text.style.AlignmentSpan.Standard +
    + +  type  +() in android.text.style.BackgroundColorSpan +
    + +  type  +() in android.text.style.BulletSpan +
    + +  type  +() in android.text.style.ForegroundColorSpan +
    + +  type  +() in android.text.style.LeadingMarginSpan.Standard +
    + +  type  +() in android.text.style.QuoteSpan +
    + +  type  +() in android.text.style.RelativeSizeSpan +
    + +  type  +() in android.text.style.ScaleXSpan +
    + +  type  +() in android.text.style.StrikethroughSpan +
    + +  type  +() in android.text.style.StyleSpan +
    + +  type  +() in android.text.style.SubscriptSpan +
    + +  type  +() in android.text.style.SuperscriptSpan +
    + +  type  +() in android.text.style.TextAppearanceSpan +
    + +  type  +() in android.text.style.TypefaceSpan +
    + +  type  +() in android.text.style.URLSpan +
    + +  type  +() in android.text.style.UnderlineSpan +
    + +getStartX +()
    + +getStartY +()
    + +getStatSize +()
    + +getSubtype +()
    + +getSubtypeName +()
    + +getSurrogate +(String, Map<String, String>)
    + +getSystemSharedLibraryNames
    +  type  +() in android.content.pm.PackageManager +
    + +  type  +() in android.test.mock.MockPackageManager +
    + +getTargetIntent +()
    + +getTextFilter +()
    + +getThread +()
    + +getTimeZoneDatabaseVersion +()
    + +getTouchSlop +()
    + +getUserAgent +()
    + +getUserAgentString +()
    + +getVerticalAlignment +()
    + +getWindowTouchSlop +()
    + +getWindowVisibleDisplayFrame +(Rect)
    + +getZoomControls +()
    + +GLSurfaceView
    + +GLSurfaceView.EGLConfigChooser
    + +GLSurfaceView.GLWrapper
    + +GLSurfaceView.Renderer
    + +GpsSatellite
    + +GpsStatus
    + +GpsStatus.Listener
    + +Gravity
    + +GridView
    + + +
    H  +A +B +C +D +E +F +G +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +handle +
    + +handleKeyDown +(long, int, KeyEvent)
    + +handleKeyUp +(long, int, KeyEvent)
    + +Handler
    +  android.os
    + +  Handler +(Callback) constructor
    + +  Handler +(Looper, Callback) constructor
    + +Handler.Callback
    + +HAPTIC_FEEDBACK_ENABLED
    + in  +android.provider.Settings.System +
    + + in  +android.view.View +
    + +HapticFeedbackConstants
    + +hapticFeedbackEnabled +
    + +hardKeyboardHidden +
    + +HARDKEYBOARDHIDDEN_NO +
    + +HARDKEYBOARDHIDDEN_UNDEFINED +
    + +HARDKEYBOARDHIDDEN_YES +
    + +hasSoftInputMode +()
    + +hasWindowFocus +()
    + +headerDividersEnabled +
    + +horizontalGap +
    + +HorizontalScrollView
    + +HTTP_PROXY +
    + + +
    I  +A +B +C +D +E +F +G +H +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +IBinder
    + +ic_btn_speak_now +
    + +iconPreview +
    + +ImageSpan
    +  android.text.style
    + +  ImageSpan +(Context, Uri, int) constructor
    + +  ImageSpan +(Context, int, int) constructor
    + +  ImageSpan +(Bitmap, int) constructor
    + +  ImageSpan +(Drawable, int) constructor
    + +  ImageSpan +(Drawable, String, int) constructor
    + +imeActionId +
    + +imeActionLabel +
    + +imeExtractEnterAnimation +
    + +imeExtractExitAnimation +
    + +imeFullscreenBackground +
    + +imeOptions +
    + +inferStreamType +()
    + +initialLayout +
    + +innerRadius +
    + +INPUT_METHOD_FROM_FOCUSABLE +
    + +INPUT_METHOD_NEEDED +
    + +INPUT_METHOD_NOT_NEEDED +
    + +INPUT_METHOD_SERVICE +
    + +inputArea +
    + +inputExtractEditText +
    + +inputMethod +
    + +InputType
    + +inputType +
    + +INSTALL_FAILED_CONFLICTING_PROVIDER +
    + +INSTALL_NON_MARKET_APPS +
    + +Instrumentation
    + +InstrumentationTestCase
    + +Intent
    + +INTENT_ACTION_MEDIA_SEARCH +
    + +INTENT_ACTION_STILL_IMAGE_CAMERA +
    + +INTENT_ACTION_VIDEO_CAMERA +
    + +intentForPosition +(int)
    + +IntentService
    + +INTERVAL_DAY +
    + +INTERVAL_FIFTEEN_MINUTES +
    + +INTERVAL_HALF_DAY +
    + +INTERVAL_HALF_HOUR +
    + +INTERVAL_HOUR +
    + +isAboveAnchor +()
    + +isBluetoothA2dpOn +()
    + +isClippingEnabled +()
    + +isCookielessProxyUrl +(String)
    + +isDebuggingEnabled +()
    + +isDefault +
    + +isFastScrollEnabled +()
    + +isFillEnabled +()
    + +isHapticFeedbackEnabled +()
    + +isInEditMode +()
    + +isInputMethodTarget +()
    + +isLooping +()
    + +isModifier +
    + +isOutsideTouchable +()
    + +isPerformingCompletion +()
    + +isRepeatable +
    + +isRoaming +()
    + +isSafeMode
    +  type  +() in android.content.pm.PackageManager +
    + +  type  +() in android.test.mock.MockPackageManager +
    + +isScrollContainer +
    + +isSelectingMetaTracker +(CharSequence, Object)
    + +isSmoothScrollbarEnabled +()
    + +isSticky +
    + +isTouchable +()
    + + +java.beans
    + +java.lang
    + +java.lang.reflect
    + +java.net
    + +java.util
    + +java.util.jar
    + +java.util.logging
    + +JetPlayer
    + +JetPlayer.OnJetEventListener
    + + +
    K  +A +B +C +D +E +F +G +H +I +J +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +KEY_LOCATION_CHANGED +
    + +KEY_PROVIDER_ENABLED +
    + +KEY_STATUS_CHANGED +
    + +keyBackground +
    + +keyboardMode +
    + +keyboardView +
    + +KeyCharacterMap
    + +KEYCODE_MEDIA_FAST_FORWARD +
    + +KEYCODE_MEDIA_NEXT +
    + +KEYCODE_MEDIA_PLAY_PAUSE +
    + +KEYCODE_MEDIA_PREVIOUS +
    + +KEYCODE_MEDIA_REWIND +
    + +KEYCODE_MEDIA_STOP +
    + +KEYCODE_MUTE +
    + +keyEdgeFlags +
    + +KeyEvent
    +  android.view
    + +  KeyEvent +(KeyEvent) constructor
    + +  KeyEvent +(long, String, int, int) constructor
    + +keyHeight +
    + +keyIcon +
    + +keyLabel +
    + +KeyListener
    + +keyOutputText +
    + +keyPreviewHeight +
    + +keyPreviewLayout +
    + +keyPreviewOffset +
    + +keyTextColor +
    + +keyTextSize +
    + +keyWidth +
    + + +
    L  +A +B +C +D +E +F +G +H +I +J +K +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +labelTextSize +
    + +launchActivityWithIntent +(String, Class<T>, Intent)
    + +LauncherActivity
    + +LauncherActivity.IconResizer
    + +LauncherActivity.ListItem
    + +LeadingMarginSpan.Standard
    +  android.text.style
    + +  LeadingMarginSpan.Standard +(Parcel) constructor
    + +Level
    + +LIGHT_NO_MOON +
    + +ListView
    + +LiveFolders
    + +load
    +  type  +(AssetFileDescriptor, int) in android.media.SoundPool +
    + +  type  +(FileDescriptor, long, long, int) in android.media.SoundPool +
    + +loadDex +(String, String, int)
    + +Location
    + +LOCATION_PROVIDERS_ALLOWED +
    + +LocationManager
    + +LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED +
    + +LOGGING_ID +
    + +LogManager
    + +longClickView
    +  type  +(InstrumentationTestCase, View) in android.test.TouchUtils +
    + +  type  +(ActivityInstrumentationTestCase, View) in android.test.TouchUtils +
    + +Looper
    + + +
    M  +A +B +C +D +E +F +G +H +I +J +K +L +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +makeListItems +()
    + +Manifest.permission
    + +MaskFilterSpan
    + +MAX_KEYCODE +
    + +mayUseInputMethod +(int)
    + +MEDIA_CHECKING +
    + +MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK +
    + +MEDIA_INFO_BAD_INTERLEAVING +
    + +MEDIA_INFO_NOT_SEEKABLE +
    + +MEDIA_INFO_UNKNOWN +
    + +MEDIA_INFO_VIDEO_TRACK_LAGGING +
    + +MEDIA_NOFS +
    + +MEDIA_RECORDER_ERROR_UNKNOWN +
    + +MEDIA_RECORDER_INFO_MAX_DURATION_REACHED +
    + +MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED +
    + +MEDIA_RECORDER_INFO_UNKNOWN +
    + +MediaPlayer
    + +MediaPlayer.OnInfoListener
    + +MediaPlayer.OnVideoSizeChangedListener
    + +MediaRecorder
    + +MediaRecorder.OnErrorListener
    + +MediaRecorder.OnInfoListener
    + +MediaRecorder.OutputFormat
    + +MediaRecorder.VideoEncoder
    + +MediaRecorder.VideoSource
    + +MediaStore
    + +MediaStore.Audio.AlbumColumns
    + +MediaStore.Audio.Media
    + +MediaStore.Images.Media
    + +MediaStore.Video
    + +MediaStore.Video.VideoColumns
    + +Menu
    + +MetaKeyKeyListener
    + +MockPackageManager
    + +MODE_APPEND +
    + +MotionEvent
    + +MOUNT_FORMAT_FILESYSTEMS +
    + +moveCursorToVisibleOffset +()
    + +MovementMethod
    + +MultiTapKeyListener
    + +mutate +()
    + +mVerticalAlignment +
    + + +
    N  +A +B +C +D +E +F +G +H +I +J +K +L +M +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +NeighboringCellInfo
    + +NETWORK_PREFERENCE +
    + +NetworkInfo
    +  android.net
    + +  NetworkInfo +(int) constructor
    + +NoCopySpan
    + +NoCopySpan.Concrete
    + +noHistory +
    + +NUM_STREAMS +
    + +NUMBER_OF_SONGS_FOR_ARTIST +
    + +numeric +
    + + +
    O  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +onBeginBatchEdit +()
    + +onCheckIsTextEditor +()
    + +onCommitCompletion +(CompletionInfo)
    + +onContentChanged +()
    + +onCreateInputConnection +(EditorInfo)
    + +onDoubleTap +(MotionEvent)
    + +onDoubleTapEvent +(MotionEvent)
    + +onEditorAction +(int)
    + +onEndBatchEdit +()
    + +onFinishTemporaryDetach +()
    + +onGlobalFocusChanged +(View, View)
    + +onKeyOther
    +  type  +(TextView, Spannable, KeyEvent) in android.text.method.ArrowKeyMovementMethod +
    + +  type  +(View, Editable, KeyEvent) in android.text.method.BaseKeyListener +
    + +  type  +(View, Editable, KeyEvent) in android.text.method.KeyListener +
    + +  type  +(TextView, Spannable, KeyEvent) in android.text.method.MovementMethod +
    + +  type  +(TextView, Spannable, KeyEvent) in android.text.method.ScrollingMovementMethod +
    + +onKeyPreIme +(int, KeyEvent)
    + +onPrivateIMECommand +(String, Bundle)
    + +onRestoreInstanceState +(Parcelable)
    + +onSaveInstanceState +()
    + +onSelectionChanged +(int, int)
    + +onSingleTapConfirmed +(MotionEvent)
    + +onStartTemporaryDetach +()
    + +onTextContextMenuItem +(int)
    + +onUserInteraction +()
    + +onUserLeaveHint +()
    + +openAssetFile +(Uri, String)
    + +openAssetFileDescriptor +(Uri, String)
    + +openOutputStream +(Uri, String)
    + +openRawResource +(int, TypedValue)
    + +OrientationEventListener
    + +OrientationListener
    +  android.view
    + +  OrientationListener +(Context, int) constructor
    + + +
    P  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +Q +R +S +T +U +V +W +Y +Z + TOP +

    +Pack200.Packer
    + +Pack200.Unpacker
    + +PackageInfo
    + +PackageManager
    + +Parcel
    + +ParcelableSpan
    + +ParcelFileDescriptor
    + +PARENTAL_CONTROL_ENABLED +
    + +PARENTAL_CONTROL_LAST_UPDATE +
    + +PARENTAL_CONTROL_REDIRECT_URL +
    + +parse +(String)
    + +parseBundleExtra +(String, AttributeSet, Bundle)
    + +parseBundleExtras +(XmlResourceParser, Bundle)
    + +password +
    + +paste +
    + +peekService +(Context, Intent)
    + +PendingIntent
    + +performHapticFeedback
    +  type  +(int) in android.view.View +
    + +  type  +(int, int) in android.view.View +
    + +phoneNumber +
    + +PhoneNumberUtils
    + +PHONETIC_NAME
    + in  +android.provider.Contacts.Intents.Insert +
    + + in  +android.provider.Contacts.PeopleColumns +
    + +playSoundEffect
    +  type  +(int, float) in android.media.AudioManager +
    + +  type  +(int) in android.view.View +
    + +PluginData
    + +popupCharacters +
    + +popupKeyboard +
    + +popupLayout +
    + +PopupWindow
    + +PopupWindow.OnDismissListener
    + +prepare +()
    + +PrintStreamPrinter
    + +privateImeOptions +
    + +ProgressBar
    + +ProviderTestCase
    + +ProviderTestCase2
    + +Proxy
    + +putLong +(ContentResolver, String, long)
    + + +
    Q  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +R +S +T +U +V +W +Y +Z + TOP +

    +QuoteSpan
    +  android.text.style
    + +  QuoteSpan +(Parcel) constructor
    + +QwertyKeyListener
    + + +
    R  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +S +T +U +V +W +Y +Z + TOP +

    +R.attr
    + +R.bool
    + +R.drawable
    + +R.id
    + +R.integer
    + +R.string
    + +R.style
    + +RasterizerSpan
    + +RAW_AMR +
    + +RAW_DATA_INDEX +
    + +RAW_DATA_X +
    + +RAW_DATA_Y +
    + +RAW_DATA_Z +
    + +readFromParcel +(Parcel)
    + +readHashMap +(ClassLoader)
    + +readMap +(Map, ClassLoader)
    + +Rect
    + +RectF
    + +registerListener
    +  type  +(SensorEventListener, Sensor, int) in android.hardware.SensorManager +
    + +  type  +(SensorEventListener, Sensor, int, Handler) in android.hardware.SensorManager +
    + +  type  +(SensorListener, int) in android.hardware.SensorManager +
    + +  type  +(SensorListener, int, int) in android.hardware.SensorManager +
    + +RelativeSizeSpan
    +  android.text.style
    + +  RelativeSizeSpan +(Parcel) constructor
    + +remapCoordinateSystem +(float[], int, int, float[])
    + +RemoteViews
    + +RemoteViews.ActionException
    +  android.widget
    + +  RemoteViews.ActionException +(Exception) constructor
    + +removeAt +(int)
    + +removeGpsStatusListener +(Listener)
    + +removeOnScrollChangedListener +(OnScrollChangedListener)
    + +removePropertyChangeListener
    +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Packer +
    + +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Unpacker +
    + +  type  +(PropertyChangeListener) in java.util.logging.LogManager +
    + +removeTestProvider +(String)
    + +removeUpdates +(PendingIntent)
    + +replaceExtras
    +  type  +(Intent) in android.content.Intent +
    + +  type  +(Bundle) in android.content.Intent +
    + +reqFiveWayNav +
    + +reqHardKeyboard +
    + +reqKeyboardType +
    + +reqNavigation +
    + +reqTouchScreen +
    + +requestChildRectangleOnScreen +(View, Rect, boolean)
    + +requestLocationUpdates +(String, long, float, PendingIntent)
    + +resetLockedMeta +(long)
    + +ResourceCursorAdapter
    +  android.widget
    + +  ResourceCursorAdapter +(Context, int, Cursor, boolean) constructor
    + +Resources
    + +restartPackage +(String)
    + +restorePicture +(Bundle, File)
    + +ResultReceiver
    + +RingtoneManager
    + +RotateDrawable
    + +ROUTE_BLUETOOTH +
    + +ROUTE_BLUETOOTH_A2DP +
    + +ROUTE_BLUETOOTH_SCO +
    + +rowEdgeFlags +
    + +runTestOnUiThread +(Runnable)
    + + +
    S  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +T +U +V +W +Y +Z + TOP +

    +savePicture +(Bundle, File)
    + +ScaleDrawable
    + +ScaleXSpan
    +  android.text.style
    + +  ScaleXSpan +(Parcel) constructor
    + +SCREEN_BRIGHTNESS_CHANGED +
    + +SCREEN_ORIENTATION_CHANGED +
    + +screenBrightness +
    + +screenOrientation +
    + +Scroller
    + +ScrollingMovementMethod
    + +scrollToBottom
    +  type  +(InstrumentationTestCase, Activity, ViewGroup) in android.test.TouchUtils +
    + +  type  +(ActivityInstrumentationTestCase, ViewGroup) in android.test.TouchUtils +
    + +scrollToTop
    +  type  +(InstrumentationTestCase, Activity, ViewGroup) in android.test.TouchUtils +
    + +  type  +(ActivityInstrumentationTestCase, ViewGroup) in android.test.TouchUtils +
    + +searchButtonText +
    + +SECONDARY_EMAIL +
    + +SECONDARY_EMAIL_TYPE +
    + +SECONDARY_PHONE +
    + +SECONDARY_PHONE_TYPE +
    + +SectionIndexer
    + +selectAll +
    + +sendExtraCommand +(String, String, Bundle)
    + +Sensor
    + +SENSOR_ACCELEROMETER +
    + +SENSOR_ALL +
    + +SENSOR_LIGHT +
    + +SENSOR_MAGNETIC_FIELD +
    + +SENSOR_MAX +
    + +SENSOR_MIN +
    + +SENSOR_ORIENTATION +
    + +SENSOR_ORIENTATION_RAW +
    + +SENSOR_PROXIMITY +
    + +SENSOR_TEMPERATURE +
    + +SENSOR_TRICORDER +
    + +SensorEvent
    + +SensorEventListener
    + +SensorListener
    + +SensorManager
    + +service +(String, Map<String, String>)
    + +setAllowFileAccess +(boolean)
    + +setBitmap +(int, String, Bitmap)
    + +setBluetoothA2dpOn +(boolean)
    + +setBoolean +(int, String, boolean)
    + +setBuiltInZoomControls +(boolean)
    + +setButton
    +  type  +(CharSequence, OnClickListener) in android.app.AlertDialog +
    + +  type  +(CharSequence, Message) in android.app.AlertDialog +
    + +  type  +(int, CharSequence, OnClickListener) in android.app.AlertDialog +
    + +  type  +(int, CharSequence, Message) in android.app.AlertDialog +
    + +setButton2
    +  type  +(CharSequence, OnClickListener) in android.app.AlertDialog +
    + +  type  +(CharSequence, Message) in android.app.AlertDialog +
    + +setButton3
    +  type  +(CharSequence, OnClickListener) in android.app.AlertDialog +
    + +  type  +(CharSequence, Message) in android.app.AlertDialog +
    + +setByte +(int, String, byte)
    + +setCamera +(Camera)
    + +setChar +(int, String, char)
    + +setCharSequence +(int, String, CharSequence)
    + +setClippingEnabled +(boolean)
    + +setCompoundDrawablesWithIntrinsicBounds +(int, int, int, int)
    + +setDouble +(int, String, double)
    + +setDropDownAnchor +(int)
    + +setDropDownWidth +(int)
    + +setExtractedText +(ExtractedText)
    + +setFastScrollEnabled +(boolean)
    + +setFillEnabled +(boolean)
    + +setFloat +(int, String, float)
    + +setFooterDividersEnabled +(boolean)
    + +setHapticFeedbackEnabled +(boolean)
    + +setHeaderDividersEnabled +(boolean)
    + +setImageViewBitmap +(int, Bitmap)
    + +setImeActionLabel +(CharSequence, int)
    + +setImeOptions +(int)
    + +setInexactRepeating +(int, long, long, PendingIntent)
    + +setInputExtras +(int)
    + +setInputMethodMode +(int)
    + +setInputType +(int)
    + +setInt +(int, String, int)
    + +setKeyProgressIncrement +(int)
    + +setListSelection +(int)
    + +setLong +(int, String, long)
    + +setMaxDuration +(int)
    + +setMaxFileSize +(long)
    + +setNetworkAvailable +(boolean)
    + +setOnChronometerTickListener +(OnChronometerTickListener)
    + +setOnClickPendingIntent +(int, PendingIntent)
    + +setOnDoubleTapListener +(OnDoubleTapListener)
    + +setOnEditorActionListener +(OnEditorActionListener)
    + +setOnErrorListener +(OnErrorListener)
    + +setOneShotPreviewCallback +(PreviewCallback)
    + +setOnInfoListener
    +  type  +(OnInfoListener) in android.media.MediaPlayer +
    + +  type  +(OnInfoListener) in android.media.MediaRecorder +
    + +setOnVideoSizeChangedListener +(OnVideoSizeChangedListener)
    + +setOutputFile +(FileDescriptor)
    + +setOutsideTouchable +(boolean)
    + +setPreviewDisplay +(SurfaceHolder)
    + +setPrivateImeOptions +(String)
    + +setRawInputType +(int)
    + +setScrollContainer +(boolean)
    + +setShort +(int, String, short)
    + +setSmoothScrollbarEnabled +(boolean)
    + +setSoftInputMode +(int)
    + +setStaticTransformationsEnabled +(boolean)
    + +setString +(int, String, String)
    + +setTestProviderEnabled +(String, boolean)
    + +setTestProviderLocation +(String, Location)
    + +setTestProviderStatus +(String, int, Bundle, long)
    + +setTextColor +(int, int)
    + +Settings
    + +Settings.Secure
    + +Settings.System
    + +SETTINGS_CLASSNAME +
    + +settingsActivity +
    + +setTouchable +(boolean)
    + +setTouchInterceptor +(OnTouchListener)
    + +setUri +(int, String, Uri)
    + +setUserAgent +(int)
    + +setUserAgentString +(String)
    + +setVideoEncoder +(int)
    + +setVideoFrameRate +(int)
    + +setVideoSize +(int, int)
    + +setVideoSource +(int)
    + +setView +(View, int, int, int, int)
    + +setViewResource +(int)
    + +setVisible +(boolean)
    + +setWindowAnimations +(int)
    + +setWindowLayoutMode +(int, int)
    + +Shape
    + +sharedUserId +
    + +sharedUserLabel
    + in  +android.R.attr +
    + + in  +android.content.pm.PackageInfo +
    + +SHOW_OR_CREATE_CONTACT +
    + +SimpleCursorAdapter
    + +singleLine +
    + +SlidingDrawer
    + +SlidingDrawer.OnDrawerCloseListener
    + +SlidingDrawer.OnDrawerOpenListener
    + +SlidingDrawer.OnDrawerScrollListener
    + +smoothScrollbar +
    + +SmsMessage
    + +Socket
    +  java.net
    + +  Socket +() constructor
    + +  Socket +(String, int) constructor
    + +  Socket +(String, int, InetAddress, int) constructor
    + +  Socket +(Proxy) constructor
    + +  Socket +(SocketImpl) constructor
    + +SOFT_INPUT_ADJUST_PAN +
    + +SOFT_INPUT_ADJUST_RESIZE +
    + +SOFT_INPUT_ADJUST_UNSPECIFIED +
    + +SOFT_INPUT_IS_FORWARD_NAVIGATION +
    + +SOFT_INPUT_MASK_ADJUST +
    + +SOFT_INPUT_MASK_STATE +
    + +SOFT_INPUT_MODE_CHANGED +
    + +SOFT_INPUT_STATE_ALWAYS_HIDDEN +
    + +SOFT_INPUT_STATE_ALWAYS_VISIBLE +
    + +SOFT_INPUT_STATE_HIDDEN +
    + +SOFT_INPUT_STATE_UNCHANGED +
    + +SOFT_INPUT_STATE_UNSPECIFIED +
    + +SOFT_INPUT_STATE_VISIBLE +
    + +softInputMode
    + in  +android.content.pm.ActivityInfo +
    + + in  +android.view.WindowManager.LayoutParams +
    + +sort +(Comparator<? super T>)
    + +SoundPool
    + +SPAN_COMPOSING +
    + +SPAN_INTERMEDIATE +
    + +SPAN_POINT_MARK_MASK +
    + +Spanned
    + +SpanWatcher
    + +SparseIntArray
    + +SQLiteDatabase
    + +startSelectingText +
    + +state_long_pressable +
    + +stopSelectingText +
    + +STREAM_NOTIFICATION +
    + +STRETCH_SPACING_UNIFORM +
    + +StrikethroughSpan
    +  android.text.style
    + +  StrikethroughSpan +(Parcel) constructor
    + +String
    +  java.lang
    + +  String +() constructor
    + +  String +(byte[]) constructor
    + +  String +(byte[], int) constructor
    + +  String +(byte[], int, int) constructor
    + +  String +(byte[], int, int, int) constructor
    + +StyleSpan
    +  android.text.style
    + +  StyleSpan +(Parcel) constructor
    + +SubscriptSpan
    +  android.text.style
    + +  SubscriptSpan +(Parcel) constructor
    + +SuperscriptSpan
    +  android.text.style
    + +  SuperscriptSpan +(Parcel) constructor
    + +switchInputMethod +
    + + +
    T  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +U +V +W +Y +Z + TOP +

    +TelephonyManager
    + +TERTIARY_EMAIL +
    + +TERTIARY_EMAIL_TYPE +
    + +TERTIARY_PHONE +
    + +TERTIARY_PHONE_TYPE +
    + +TestMethod
    +  android.test.suitebuilder
    + +  TestMethod +(String, Class<TestCase>) constructor
    + +  TestMethod +(TestCase) constructor
    + +TestSuiteBuilder
    + +TextAppearanceSpan
    +  android.text.style
    + +  TextAppearanceSpan +(Parcel) constructor
    + +TextKeyListener
    + +TextUtils
    + +TextView
    + +TextView.OnEditorActionListener
    + +TextWatcher
    + +Theme_InputMethod +
    + +Theme_Light_Panel +
    + +Theme_NoDisplay +
    + +Theme_Panel +
    + +thickness +
    + +TimeKeyListener
    + +TimeUtils
    + +title_bar_tall +
    + +topOffset +
    + +toShortString
    +  type  +() in android.graphics.Rect +
    + +  type  +() in android.view.animation.Transformation +
    + +Touch
    + +TouchUtils
    + +Transformation
    + +TransitionDrawable
    +  android.graphics.drawable
    + +  TransitionDrawable +(Drawable[]) constructor
    + +TYPE_APPLICATION_ATTACHED_DIALOG +
    + +TYPE_INPUT_METHOD +
    + +TYPE_INPUT_METHOD_DIALOG +
    + +TypedArray
    + +TypefaceSpan
    +  android.text.style
    + +  TypefaceSpan +(Parcel) constructor
    + + +
    U  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +V +W +Y +Z + TOP +

    +UnderlineSpan
    +  android.text.style
    + +  UnderlineSpan +(Parcel) constructor
    + +UNKNOWN_LENGTH +
    + +unregisterListener
    +  type  +(SensorEventListener) in android.hardware.SensorManager +
    + +  type  +(SensorEventListener, Sensor) in android.hardware.SensorManager +
    + +  type  +(SensorListener) in android.hardware.SensorManager +
    + +  type  +(SensorListener, int) in android.hardware.SensorManager +
    + +update
    +  type  +() in android.widget.PopupWindow +
    + +  type  +(int, int, int, int, boolean) in android.widget.PopupWindow +
    + +UPDATE_DEVICE_STATS +
    + +UpdateAppearance
    + +UpdateLayout
    + +updatePeriodMillis +
    + +UrlInterceptHandler
    + +UrlInterceptRegistry
    + +URLSpan
    +  android.text.style
    + +  URLSpan +(Parcel) constructor
    + +URLUtil
    + +USB_MASS_STORAGE_ENABLED +
    + +USE_GOOGLE_MAIL +
    + +UserDictionary
    + +UserDictionary.Words
    + + +
    V  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +W +Y +Z + TOP +

    +verticalCorrection +
    + +verticalGap +
    + +VideoView_error_text_invalid_progressive_playback +
    + +View
    + +ViewConfiguration
    +  android.view
    + +  ViewConfiguration +() constructor
    + +ViewDebug
    + +ViewDebug.CapturedViewProperty
    + +ViewGroup
    + +ViewParent
    + +ViewTreeObserver
    + +ViewTreeObserver.OnScrollChangedListener
    + +Visibility
    + +VMDebug
    + +voiceLanguage +
    + +voiceLanguageModel +
    + +voiceMaxResults +
    + +voicePromptText +
    + +voiceSearchMode +
    + +VOLUME_NOTIFICATION +
    + + +
    W  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +Y +Z + TOP +

    +WebHistoryItem
    + +WebSettings
    + +WebView
    + +Widget_KeyboardView +
    + +WIFI_MAX_DHCP_RETRY_COUNT +
    + +WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS +
    + +WIFI_MODE_FULL +
    + +WIFI_MODE_SCAN_ONLY +
    + +WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON +
    + +WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY +
    + +WIFI_NUM_OPEN_NETWORKS_KEPT +
    + +WIFI_ON +
    + +WIFI_SLEEP_POLICY +
    + +WIFI_SLEEP_POLICY_DEFAULT +
    + +WIFI_SLEEP_POLICY_NEVER +
    + +WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED +
    + +WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE +
    + +WIFI_WATCHDOG_AP_COUNT +
    + +WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS +
    + +WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED +
    + +WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS +
    + +WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT +
    + +WIFI_WATCHDOG_MAX_AP_CHECKS +
    + +WIFI_WATCHDOG_ON +
    + +WIFI_WATCHDOG_PING_COUNT +
    + +WIFI_WATCHDOG_PING_DELAY_MS +
    + +WIFI_WATCHDOG_PING_TIMEOUT_MS +
    + +WifiManager
    + +Window
    + +windowDisablePreview +
    + +WindowManager.LayoutParams
    + +windowNoDisplay +
    + +windowSoftInputMode +
    + +WRITE_SECURE_SETTINGS +
    + +writeMap +(Map)
    + +writeToParcel
    +  type  +(Parcel, int) in android.content.res.AssetFileDescriptor +
    + +  type  +(Parcel, int) in android.graphics.RectF +
    + +  type  +(Parcel, int) in android.text.Annotation +
    + +  type  +(Parcel, int) in android.text.style.AbsoluteSizeSpan +
    + +  type  +(Parcel, int) in android.text.style.AlignmentSpan.Standard +
    + +  type  +(Parcel, int) in android.text.style.BackgroundColorSpan +
    + +  type  +(Parcel, int) in android.text.style.BulletSpan +
    + +  type  +(Parcel, int) in android.text.style.ForegroundColorSpan +
    + +  type  +(Parcel, int) in android.text.style.LeadingMarginSpan.Standard +
    + +  type  +(Parcel, int) in android.text.style.QuoteSpan +
    + +  type  +(Parcel, int) in android.text.style.RelativeSizeSpan +
    + +  type  +(Parcel, int) in android.text.style.ScaleXSpan +
    + +  type  +(Parcel, int) in android.text.style.StrikethroughSpan +
    + +  type  +(Parcel, int) in android.text.style.StyleSpan +
    + +  type  +(Parcel, int) in android.text.style.SubscriptSpan +
    + +  type  +(Parcel, int) in android.text.style.SuperscriptSpan +
    + +  type  +(Parcel, int) in android.text.style.TextAppearanceSpan +
    + +  type  +(Parcel, int) in android.text.style.TypefaceSpan +
    + +  type  +(Parcel, int) in android.text.style.URLSpan +
    + +  type  +(Parcel, int) in android.text.style.UnderlineSpan +
    + + +
    Y  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +yieldIfContended +()
    + +yieldIfContendedSafely +()
    + + +
    Z  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +Zygote
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/alldiffs_index_changes.html b/docs/html/sdk/api_diff/3/changes/alldiffs_index_changes.html new file mode 100644 index 000000000000..b35bdb35ce4b --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/alldiffs_index_changes.html @@ -0,0 +1,1652 @@ + + + + + + + + + +All Changes Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Differences +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + + +
    A  +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +AbsListView
    + +AbsoluteLayout
    + +AbsoluteSizeSpan
    + +AbsSeekBar
    + +Activity
    + +ActivityInfo
    + +ActivityInstrumentationTestCase
    + +ActivityManager
    + +ADB_ENABLED +
    + +addRequirements +(Predicate<TestMethod>)
    + +AlarmManager
    + +AlertDialog
    + +AlignmentSpan.Standard
    + +android
    + +android.app
    + +android.content
    + +android.content.pm
    + +android.content.res
    + +android.database
    + +android.database.sqlite
    + +android.graphics
    + +android.graphics.drawable
    + +android.graphics.drawable.shapes
    + +android.hardware
    + +android.location
    + +android.media
    + +android.net
    + +android.net.wifi
    + +android.opengl
    + +android.os
    + +android.preference
    + +android.provider
    + +android.telephony
    + +android.telephony.gsm
    + +android.test
    + +android.test.mock
    + +android.test.suitebuilder
    + +android.text
    + +android.text.method
    + +android.text.style
    + +android.util
    + +android.view
    + +android.view.animation
    + +android.webkit
    + +android.widget
    + +ANDROID_ID +
    + +Animation
    + +Annotation
    + +appendEscapedSQLString +(StringBuilder, String)
    + +ArrayAdapter
    + +ArrowKeyMovementMethod
    + +AssetFileDescriptor
    + +AudioManager
    + +AutoCompleteTextView
    + +AutoText
    + +autoText +
    + + +
    B  +A +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +BackgroundColorSpan
    + +BaseKeyListener
    + +Binder
    + +Bitmap
    + +BLUETOOTH_ON +
    + +BroadcastReceiver
    + +Browser
    + +Build
    + +BulletSpan
    + +BUTTON1 +
    + +BUTTON2 +
    + +BUTTON3 +
    + + +
    C  +A +B +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +Camera
    + +Canvas
    + +capitalize +
    + +changeDebugPort +(int)
    + +Character.UnicodeBlock
    + +Chronometer
    + +Class
    + +ClickableSpan
    + +clone +()
    + +Configuration
    + +ConnectivityManager
    + +Contacts.Intents
    + +Contacts.Intents.Insert
    + +Contacts.PeopleColumns
    + +ContentProvider
    + +ContentResolver
    + +Context
    + +Cursor
    + +CursorAdapter
    + +CursorWrapper
    + + +dalvik.system
    + +DATA_ROAMING +
    + +DATA_X +
    + +DATA_Y +
    + +DATA_Z +
    + +DatabaseUtils
    + +Date
    +  java.util
    + +  Date +() constructor
    + +  Date +(int, int, int, int, int, int) constructor
    + +DateKeyListener
    + +DateTimeKeyListener
    + +Debug
    + +DEFAULT_SORT_ORDER
    + in  +android.provider.MediaStore.Images.Media +
    + + in  +android.provider.MediaStore.Video +
    + +DEVICE_PROVISIONED +
    + +DexFile
    + +DialerKeyListener
    + +DialogInterface
    + +DialogPreference
    + +DigitsKeyListener
    + +drag +(ActivityInstrumentationTestCase, float, float, float, float, int)
    + +dragQuarterScreenDown +(ActivityInstrumentationTestCase)
    + +dragQuarterScreenUp +(ActivityInstrumentationTestCase)
    + +dragViewBy +(ActivityInstrumentationTestCase, View, int, int, int)
    + +dragViewTo +(ActivityInstrumentationTestCase, View, int, int, int)
    + +dragViewToBottom
    +  type  +(ActivityInstrumentationTestCase, View) in android.test.TouchUtils +
    + +  type  +(InstrumentationTestCase, Activity, View) in android.test.TouchUtils +
    + +dragViewToTop
    +  type  +(ActivityInstrumentationTestCase, View) in android.test.TouchUtils +
    + +  type  +(ActivityInstrumentationTestCase, View, int) in android.test.TouchUtils +
    + +dragViewToX +(ActivityInstrumentationTestCase, View, int, int)
    + +dragViewToY +(ActivityInstrumentationTestCase, View, int, int)
    + +Drawable
    + +DynamicDrawableSpan
    + + +
    E  +A +B +C +D +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +editable +
    + +enabled +
    + +Environment
    + + +
    F  +A +B +C +D +E +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +ForegroundColorSpan
    + +forkAndSpecialize +(int, int, int[], boolean, int[][])
    + +forkSystemServer +(int, int, int[], boolean, int[][])
    + +forName +(String)
    + + +
    G  +A +B +C +D +E +F +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +GestureDetector
    +  android.view
    + +  GestureDetector +(OnGestureListener) constructor
    + +  GestureDetector +(OnGestureListener, Handler) constructor
    + +GestureDetector.SimpleOnGestureListener
    + +getClasses +()
    + +getColumnIndex
    +  type  +(String) in android.database.Cursor +
    + +  type  +(String) in android.database.CursorWrapper +
    + +getConstructors +()
    + +getCount +()
    + +getDeclaredClasses +()
    + +getDeclaredConstructors +()
    + +getEdgeSlop +()
    + +getFadingEdgeLength +()
    + +getHandler +()
    + +getInterfaces +()
    + +getItem +(int)
    + +getItemClickListener +()
    + +getItemId +(int)
    + +getItemSelectedListener +()
    + +getMaximumDrawingCacheSize +()
    + +getMinimumFlingVelocity +()
    + +getProxyClass +(ClassLoader, Class<?>)
    + +getScrollBarSize +()
    + +getSensors +()
    + +getSurrogate +(String, Map<String, String>)
    + +getTargetIntent +()
    + +getTouchSlop +()
    + +getUserAgent +()
    + +getWindowTouchSlop +()
    + +getZoomControls +()
    + +Gravity
    + +GridView
    + + +
    H  +A +B +C +D +E +F +G +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +Handler
    + +HTTP_PROXY +
    + + +
    I  +A +B +C +D +E +F +G +H +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +IBinder
    + +ImageSpan
    + +inputMethod +
    + +INSTALL_NON_MARKET_APPS +
    + +Instrumentation
    + +InstrumentationTestCase
    + +Intent
    + +isCookielessProxyUrl +(String)
    + + +java.lang
    + +java.lang.reflect
    + +java.net
    + +java.util
    + +java.util.jar
    + +java.util.logging
    + + +
    K  +A +B +C +D +E +F +G +H +I +J +L +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +KeyCharacterMap
    + +KeyEvent
    + +KeyListener
    + + +
    L  +A +B +C +D +E +F +G +H +I +J +K +M +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +LauncherActivity
    + +LeadingMarginSpan.Standard
    + +Level
    + +LIGHT_NO_MOON +
    + +ListView
    + +Location
    + +LOCATION_PROVIDERS_ALLOWED +
    + +LocationManager
    + +LOGGING_ID +
    + +LogManager
    + +longClickView +(ActivityInstrumentationTestCase, View)
    + +Looper
    + + +
    M  +A +B +C +D +E +F +G +H +I +J +K +L +N +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +Manifest.permission
    + +MaskFilterSpan
    + +MAX_KEYCODE +
    + +MediaPlayer
    + +MediaRecorder
    + +MediaRecorder.OutputFormat
    + +MediaStore
    + +MediaStore.Audio.AlbumColumns
    + +MediaStore.Audio.Media
    + +MediaStore.Images.Media
    + +MediaStore.Video
    + +MediaStore.Video.VideoColumns
    + +Menu
    + +MetaKeyKeyListener
    + +MockPackageManager
    + +MotionEvent
    + +MovementMethod
    + +MultiTapKeyListener
    + + +
    N  +A +B +C +D +E +F +G +H +I +J +K +L +M +O +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +NETWORK_PREFERENCE +
    + +NetworkInfo
    + +NUM_STREAMS +
    + +numeric +
    + + +
    O  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +P +Q +R +S +T +U +V +W +Y +Z + TOP +

    +onGlobalFocusChanged +(View, View)
    + +onRestoreInstanceState +(Parcelable)
    + +onSaveInstanceState +()
    + +OrientationListener
    + + +
    P  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +Q +R +S +T +U +V +W +Y +Z + TOP +

    +Pack200.Packer
    + +Pack200.Unpacker
    + +PackageInfo
    + +PackageManager
    + +Parcel
    + +ParcelFileDescriptor
    + +PARENTAL_CONTROL_ENABLED +
    + +PARENTAL_CONTROL_LAST_UPDATE +
    + +PARENTAL_CONTROL_REDIRECT_URL +
    + +parse +(String)
    + +password +
    + +PendingIntent
    + +phoneNumber +
    + +PhoneNumberUtils
    + +playSoundEffect +(int)
    + +PopupWindow
    + +PopupWindow.OnDismissListener
    + +prepare +()
    + +ProgressBar
    + +ProviderTestCase
    + +Proxy
    + + +
    Q  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +R +S +T +U +V +W +Y +Z + TOP +

    +QuoteSpan
    + +QwertyKeyListener
    + + +
    R  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +S +T +U +V +W +Y +Z + TOP +

    +R.attr
    + +R.drawable
    + +R.id
    + +R.string
    + +R.style
    + +RasterizerSpan
    + +RAW_DATA_INDEX +
    + +RAW_DATA_X +
    + +RAW_DATA_Y +
    + +RAW_DATA_Z +
    + +readHashMap +(ClassLoader)
    + +readMap +(Map, ClassLoader)
    + +Rect
    + +RectF
    + +registerListener
    +  type  +(SensorListener, int) in android.hardware.SensorManager +
    + +  type  +(SensorListener, int, int) in android.hardware.SensorManager +
    + +RelativeSizeSpan
    + +RemoteViews
    + +RemoteViews.ActionException
    + +ResourceCursorAdapter
    + +Resources
    + +RingtoneManager
    + +RotateDrawable
    + +ROUTE_BLUETOOTH +
    + + +
    S  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +T +U +V +W +Y +Z + TOP +

    +ScaleDrawable
    + +ScaleXSpan
    + +Scroller
    + +ScrollingMovementMethod
    + +scrollToBottom +(ActivityInstrumentationTestCase, ViewGroup)
    + +scrollToTop +(ActivityInstrumentationTestCase, ViewGroup)
    + +searchButtonText +
    + +SENSOR_ACCELEROMETER +
    + +SENSOR_ALL +
    + +SENSOR_LIGHT +
    + +SENSOR_MAGNETIC_FIELD +
    + +SENSOR_MAX +
    + +SENSOR_MIN +
    + +SENSOR_ORIENTATION +
    + +SENSOR_ORIENTATION_RAW +
    + +SENSOR_PROXIMITY +
    + +SENSOR_TEMPERATURE +
    + +SENSOR_TRICORDER +
    + +SensorListener
    + +SensorManager
    + +service +(String, Map<String, String>)
    + +setButton
    +  type  +(int, CharSequence, OnClickListener) in android.app.AlertDialog +
    + +  type  +(int, CharSequence, Message) in android.app.AlertDialog +
    + +setButton2
    +  type  +(CharSequence, OnClickListener) in android.app.AlertDialog +
    + +  type  +(CharSequence, Message) in android.app.AlertDialog +
    + +setButton3
    +  type  +(CharSequence, OnClickListener) in android.app.AlertDialog +
    + +  type  +(CharSequence, Message) in android.app.AlertDialog +
    + +setPreviewDisplay +(SurfaceHolder)
    + +Settings
    + +Settings.System
    + +SETTINGS_CLASSNAME +
    + +setUserAgent +(int)
    + +Shape
    + +SimpleCursorAdapter
    + +singleLine +
    + +SmsMessage
    + +Socket
    +  java.net
    + +  Socket +() constructor
    + +  Socket +(String, int) constructor
    + +  Socket +(String, int, InetAddress, int) constructor
    + +  Socket +(Proxy) constructor
    + +  Socket +(SocketImpl) constructor
    + +SoundPool
    + +Spanned
    + +SpanWatcher
    + +SparseIntArray
    + +SQLiteDatabase
    + +StrikethroughSpan
    + +String
    +  java.lang
    + +  String +() constructor
    + +  String +(byte[]) constructor
    + +  String +(byte[], int) constructor
    + +  String +(byte[], int, int) constructor
    + +  String +(byte[], int, int, int) constructor
    + +StyleSpan
    + +SubscriptSpan
    + +SuperscriptSpan
    + + +
    T  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +U +V +W +Y +Z + TOP +

    +TelephonyManager
    + +TestMethod
    + +TestSuiteBuilder
    + +TextAppearanceSpan
    + +TextKeyListener
    + +TextUtils
    + +TextView
    + +TextWatcher
    + +TimeKeyListener
    + +TimeUtils
    + +Touch
    + +TouchUtils
    + +Transformation
    + +TransitionDrawable
    + +TypedArray
    + +TypefaceSpan
    + + +
    U  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +V +W +Y +Z + TOP +

    +UnderlineSpan
    + +unregisterListener
    +  type  +(SensorListener) in android.hardware.SensorManager +
    + +  type  +(SensorListener, int) in android.hardware.SensorManager +
    + +UpdateLayout
    + +UrlInterceptHandler
    + +UrlInterceptRegistry
    + +URLSpan
    + +URLUtil
    + +USB_MASS_STORAGE_ENABLED +
    + +USE_GOOGLE_MAIL +
    + + +
    V  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +W +Y +Z + TOP +

    +View
    + +ViewConfiguration
    +  android.view
    + +  ViewConfiguration +() constructor
    + +ViewDebug
    + +ViewGroup
    + +ViewParent
    + +ViewTreeObserver
    + +VMDebug
    + + +
    W  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +Y +Z + TOP +

    +WebHistoryItem
    + +WebSettings
    + +WebView
    + +WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON +
    + +WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY +
    + +WIFI_NUM_OPEN_NETWORKS_KEPT +
    + +WIFI_ON +
    + +WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE +
    + +WIFI_WATCHDOG_AP_COUNT +
    + +WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS +
    + +WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED +
    + +WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS +
    + +WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT +
    + +WIFI_WATCHDOG_MAX_AP_CHECKS +
    + +WIFI_WATCHDOG_ON +
    + +WIFI_WATCHDOG_PING_COUNT +
    + +WIFI_WATCHDOG_PING_DELAY_MS +
    + +WIFI_WATCHDOG_PING_TIMEOUT_MS +
    + +WifiManager
    + +Window
    + +WindowManager.LayoutParams
    + +writeMap +(Map)
    + + +
    Y  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +yieldIfContended +()
    + + +
    Z  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Y + TOP +

    +Zygote
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/alldiffs_index_removals.html b/docs/html/sdk/api_diff/3/changes/alldiffs_index_removals.html new file mode 100644 index 000000000000..662b26690d2e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/alldiffs_index_removals.html @@ -0,0 +1,78 @@ + + + + + + + + + +All Removals Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Differences +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + + +
    C  +N + TOP +

    +CATEGORY_GADGET +
    + + +
    N  +C + TOP +

    +NetworkInfo +(int) constructor
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.Manifest.permission.html b/docs/html/sdk/api_diff/3/changes/android.Manifest.permission.html new file mode 100644 index 000000000000..76591022179e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.Manifest.permission.html @@ -0,0 +1,151 @@ + + + + + + + + + +android.Manifest.permission + + + + + + + + + + +
    +
    +
    +

    +Class android.Manifest.permission +

    + + + +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + String BIND_APPWIDGET +  
    + + String BIND_INPUT_METHOD +  
    + + String MOUNT_FORMAT_FILESYSTEMS +  
    + + String UPDATE_DEVICE_STATS +  
    + + String WRITE_SECURE_SETTINGS +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.R.attr.html b/docs/html/sdk/api_diff/3/changes/android.R.attr.html new file mode 100644 index 000000000000..7df16a121329 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.R.attr.html @@ -0,0 +1,739 @@ + + + + + + + + + +android.R.attr + + + + + + + + + + +
    +
    +
    +

    +Class android.R.attr +

    + + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int allowSingleTap +  
    + + int animateOnClick +  
    + + int backgroundDimEnabled +  
    + + int bottomOffset +  
    + + int candidatesTextStyleSpans +  
    + + int codes +  
    + + int configure +  
    + + int content +  
    + + int dropDownAnchor +  
    + + int dropDownWidth +  
    + + int editorExtras +  
    + + int fastScrollEnabled +  
    + + int fillEnabled +  
    + + int footerDividersEnabled +  
    + + int handle +  
    + + int hapticFeedbackEnabled +  
    + + int headerDividersEnabled +  
    + + int horizontalGap +  
    + + int iconPreview +  
    + + int imeActionId +  
    + + int imeActionLabel +  
    + + int imeExtractEnterAnimation +  
    + + int imeExtractExitAnimation +  
    + + int imeFullscreenBackground +  
    + + int imeOptions +  
    + + int initialLayout +  
    + + int innerRadius +  
    + + int inputType +  
    + + int isDefault +  
    + + int isModifier +  
    + + int isRepeatable +  
    + + int isScrollContainer +  
    + + int isSticky +  
    + + int keyBackground +  
    + + int keyEdgeFlags +  
    + + int keyHeight +  
    + + int keyIcon +  
    + + int keyLabel +  
    + + int keyOutputText +  
    + + int keyPreviewHeight +  
    + + int keyPreviewLayout +  
    + + int keyPreviewOffset +  
    + + int keyTextColor +  
    + + int keyTextSize +  
    + + int keyWidth +  
    + + int keyboardMode +  
    + + int labelTextSize +  
    + + int noHistory +  
    + + int popupCharacters +  
    + + int popupKeyboard +  
    + + int popupLayout +  
    + + int privateImeOptions +  
    + + int reqFiveWayNav +  
    + + int reqHardKeyboard +  
    + + int reqKeyboardType +  
    + + int reqNavigation +  
    + + int reqTouchScreen +  
    + + int rowEdgeFlags +  
    + + int settingsActivity +  
    + + int sharedUserLabel +  
    + + int smoothScrollbar +  
    + + int state_long_pressable +  
    + + int thickness +  
    + + int topOffset +  
    + + int updatePeriodMillis +  
    + + int verticalCorrection +  
    + + int verticalGap +  
    + + int voiceLanguage +  
    + + int voiceLanguageModel +  
    + + int voiceMaxResults +  
    + + int voicePromptText +  
    + + int voiceSearchMode +  
    + + int windowDisablePreview +  
    + + int windowNoDisplay +  
    + + int windowSoftInputMode +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Fields +
    + + int autoText +Now deprecated.
    +
     
    + + int capitalize +Now deprecated.
    +
     
    + + int editable +Now deprecated.
    +
     
    + + int enabled +Now deprecated.
    +
     
    + + int inputMethod +Now deprecated.
    +
     
    + + int numeric +Now deprecated.
    +
     
    + + int password +Now deprecated.
    +
     
    + + int phoneNumber +Now deprecated.
    +
     
    + + int searchButtonText +Now deprecated.
    +
     
    + + int singleLine +Now deprecated.
    +
     
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.R.drawable.html b/docs/html/sdk/api_diff/3/changes/android.R.drawable.html new file mode 100644 index 000000000000..fe046dd7370f --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.R.drawable.html @@ -0,0 +1,137 @@ + + + + + + + + + +android.R.drawable + + + + + + + + + + +
    +
    +
    +

    +Class android.R.drawable +

    + + + +

    + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int dark_header +  
    + + int ic_btn_speak_now +  
    + + int title_bar_tall +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.R.id.html b/docs/html/sdk/api_diff/3/changes/android.R.id.html new file mode 100644 index 000000000000..d30fc1da3b7f --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.R.id.html @@ -0,0 +1,221 @@ + + + + + + + + + +android.R.id + + + + + + + + + + +
    +
    +
    +

    +Class android.R.id +

    + + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int addToDictionary +  
    + + int candidatesArea +  
    + + int closeButton +  
    + + int copy +  
    + + int copyUrl +  
    + + int cut +  
    + + int extractArea +  
    + + int inputArea +  
    + + int inputExtractEditText +  
    + + int keyboardView +  
    + + int paste +  
    + + int selectAll +  
    + + int startSelectingText +  
    + + int stopSelectingText +  
    + + int switchInputMethod +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.R.string.html b/docs/html/sdk/api_diff/3/changes/android.R.string.html new file mode 100644 index 000000000000..5d18ffa187c6 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.R.string.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.R.string + + + + + + + + + + +
    +
    +
    +

    +Class android.R.string +

    + + + +

    + + + + + + + + + + + + +
    Added Fields +
    + + int VideoView_error_text_invalid_progressive_playback +  
    + + int dialog_alert_title +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.R.style.html b/docs/html/sdk/api_diff/3/changes/android.R.style.html new file mode 100644 index 000000000000..726bab9fb2b4 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.R.style.html @@ -0,0 +1,151 @@ + + + + + + + + + +android.R.style + + + + + + + + + + +
    +
    +
    +

    +Class android.R.style +

    + + + +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int Theme_InputMethod +  
    + + int Theme_Light_Panel +  
    + + int Theme_NoDisplay +  
    + + int Theme_Panel +  
    + + int Widget_KeyboardView +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.app.Activity.html b/docs/html/sdk/api_diff/3/changes/android.app.Activity.html new file mode 100644 index 000000000000..7ff5871e76ce --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.app.Activity.html @@ -0,0 +1,151 @@ + + + + + + + + + +android.app.Activity + + + + + + + + + + +
    +
    +
    +

    +Class android.app.Activity +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + void closeContextMenu() +  
    + + boolean hasWindowFocus() +  
    + + void onUserInteraction() +  
    + + void onUserLeaveHint() +  
    + + void setVisible(boolean) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.app.ActivityManager.html b/docs/html/sdk/api_diff/3/changes/android.app.ActivityManager.html new file mode 100644 index 000000000000..bd473fb8a393 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.app.ActivityManager.html @@ -0,0 +1,137 @@ + + + + + + + + + +android.app.ActivityManager + + + + + + + + + + +
    +
    +
    +

    +Class android.app.ActivityManager +

    + + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + ConfigurationInfo getDeviceConfigurationInfo() +  
    + + List<RunningAppProcessInfo> getRunningAppProcesses() +  
    + + void restartPackage(String) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.app.AlarmManager.html b/docs/html/sdk/api_diff/3/changes/android.app.AlarmManager.html new file mode 100644 index 000000000000..b8280f2fc9b6 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.app.AlarmManager.html @@ -0,0 +1,166 @@ + + + + + + + + + +android.app.AlarmManager + + + + + + + + + + +
    +
    +
    +

    +Class android.app.AlarmManager +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void setInexactRepeating(int, long, long, PendingIntent) +  
    +  + +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + long INTERVAL_DAY +  
    + + long INTERVAL_FIFTEEN_MINUTES +  
    + + long INTERVAL_HALF_DAY +  
    + + long INTERVAL_HALF_HOUR +  
    + + long INTERVAL_HOUR +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.app.AlertDialog.html b/docs/html/sdk/api_diff/3/changes/android.app.AlertDialog.html new file mode 100644 index 000000000000..bb8cdb1624fe --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.app.AlertDialog.html @@ -0,0 +1,219 @@ + + + + + + + + + +android.app.AlertDialog + + + + + + + + + + +
    +
    +
    +

    +Class android.app.AlertDialog +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + Button getButton(int) +  
    + + ListView getListView() +  
    + + void setButton(CharSequence, OnClickListener) +  
    + + void setButton(CharSequence, Message) +  
    + + void setView(View, int, int, int, int) +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Methods +
    + + void setButton(int, CharSequence, OnClickListener) + +Change in signature from (CharSequence, OnClickListener) to (int, CharSequence, OnClickListener).
    +
     
    + + void setButton(int, CharSequence, Message) + +Change in signature from (CharSequence, Message) to (int, CharSequence, Message).
    +
     
    + + void setButton2(CharSequence, OnClickListener) + +Now deprecated.
    +
     
    + + void setButton2(CharSequence, Message) + +Now deprecated.
    +
     
    + + void setButton3(CharSequence, OnClickListener) + +Now deprecated.
    +
     
    + + void setButton3(CharSequence, Message) + +Now deprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.app.Instrumentation.html b/docs/html/sdk/api_diff/3/changes/android.app.Instrumentation.html new file mode 100644 index 000000000000..b6f26a6df962 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.app.Instrumentation.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.app.Instrumentation + + + + + + + + + + +
    +
    +
    +

    +Class android.app.Instrumentation +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void callActivityOnUserLeaving(Activity) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.app.LauncherActivity.html b/docs/html/sdk/api_diff/3/changes/android.app.LauncherActivity.html new file mode 100644 index 000000000000..60f7f29a6071 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.app.LauncherActivity.html @@ -0,0 +1,148 @@ + + + + + + + + + +android.app.LauncherActivity + + + + + + + + + + +
    +
    +
    +

    +Class android.app.LauncherActivity +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + Intent intentForPosition(int) +  
    + + List<ListItem> makeListItems() +  
    +  +

    + + + + + + + + + +
    Changed Methods +
    + + Intent getTargetIntent() + +Changed from abstract to non-abstract. +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.app.PendingIntent.html b/docs/html/sdk/api_diff/3/changes/android.app.PendingIntent.html new file mode 100644 index 000000000000..6155508fcd81 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.app.PendingIntent.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.app.PendingIntent + + + + + + + + + + +
    +
    +
    +

    +Class android.app.PendingIntent +

    + + + +

    + + + + + + + + +
    Added Fields +
    + + int FLAG_UPDATE_CURRENT +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.content.BroadcastReceiver.html b/docs/html/sdk/api_diff/3/changes/android.content.BroadcastReceiver.html new file mode 100644 index 000000000000..bd8cc8ccadb6 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.content.BroadcastReceiver.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.content.BroadcastReceiver + + + + + + + + + + +
    +
    +
    +

    +Class android.content.BroadcastReceiver +

    + + +

    + + + + + + + + +
    Added Methods +
    + + IBinder peekService(Context, Intent) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.content.ContentProvider.html b/docs/html/sdk/api_diff/3/changes/android.content.ContentProvider.html new file mode 100644 index 000000000000..c6de32605166 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.content.ContentProvider.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.content.ContentProvider + + + + + + + + + + +
    +
    +
    +

    +Class android.content.ContentProvider +

    + + +

    + + + + + + + + +
    Added Methods +
    + + AssetFileDescriptor openAssetFile(Uri, String) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.content.ContentResolver.html b/docs/html/sdk/api_diff/3/changes/android.content.ContentResolver.html new file mode 100644 index 000000000000..2101198a7f04 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.content.ContentResolver.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.content.ContentResolver + + + + + + + + + + +
    +
    +
    +

    +Class android.content.ContentResolver +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + AssetFileDescriptor openAssetFileDescriptor(Uri, String) +  
    + + OutputStream openOutputStream(Uri, String) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.content.Context.html b/docs/html/sdk/api_diff/3/changes/android.content.Context.html new file mode 100644 index 000000000000..ac3d99da74f2 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.content.Context.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.content.Context + + + + + + + + + + +
    +
    +
    +

    +Class android.content.Context +

    + + + +

    + + + + + + + + +
    Added Fields +
    + + String INPUT_METHOD_SERVICE +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.content.DialogInterface.html b/docs/html/sdk/api_diff/3/changes/android.content.DialogInterface.html new file mode 100644 index 000000000000..17dd651368bc --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.content.DialogInterface.html @@ -0,0 +1,172 @@ + + + + + + + + + +android.content.DialogInterface + + + + + + + + + + +
    +
    +
    +

    +Interface android.content.DialogInterface +

    + + + +

    + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int BUTTON_NEGATIVE +  
    + + int BUTTON_NEUTRAL +  
    + + int BUTTON_POSITIVE +  
    +  +

    + + + + + + + + + + + + + + + + + + + +
    Changed Fields +
    + + int BUTTON1 +Now deprecated.
    +
     
    + + int BUTTON2 +Now deprecated.
    +
     
    + + int BUTTON3 +Now deprecated.
    +
     
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.content.Intent.html b/docs/html/sdk/api_diff/3/changes/android.content.Intent.html new file mode 100644 index 000000000000..edb02387b0aa --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.content.Intent.html @@ -0,0 +1,251 @@ + + + + + + + + + +android.content.Intent + + + + + + + + + + +
    +
    +
    +

    +Class android.content.Intent +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + Intent replaceExtras(Intent) +  
    + + Intent replaceExtras(Bundle) +  
    +  + +

    + + + + + + + + +
    Removed Fields +
    + + String CATEGORY_GADGET +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + String ACTION_INPUT_METHOD_CHANGED +  
    + + String ACTION_MEDIA_CHECKING +  
    + + String ACTION_MEDIA_NOFS +  
    + + String ACTION_PACKAGE_DATA_CLEARED +  
    + + String ACTION_PACKAGE_REPLACED +  
    + + String ACTION_SEARCH_LONG_PRESS +  
    + + String ACTION_SYSTEM_TUTORIAL +  
    + + String ACTION_USER_PRESENT +  
    + + String CATEGORY_INFO +  
    + + String EXTRA_DATA_REMOVED +  
    + + String EXTRA_REPLACING +  
    + + int FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET +  
    + + int FLAG_ACTIVITY_NO_USER_ACTION +  
    + + int FLAG_ACTIVITY_REORDER_TO_FRONT +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.content.pm.ActivityInfo.html b/docs/html/sdk/api_diff/3/changes/android.content.pm.ActivityInfo.html new file mode 100644 index 000000000000..5c62f6b769d0 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.content.pm.ActivityInfo.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.content.pm.ActivityInfo + + + + + + + + + + +
    +
    +
    +

    +Class android.content.pm.ActivityInfo +

    + + + +

    + + + + + + + + + + + + +
    Added Fields +
    + + int FLAG_NO_HISTORY +  
    + + int softInputMode +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.content.pm.PackageInfo.html b/docs/html/sdk/api_diff/3/changes/android.content.pm.PackageInfo.html new file mode 100644 index 000000000000..b360d7c2bba2 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.content.pm.PackageInfo.html @@ -0,0 +1,137 @@ + + + + + + + + + +android.content.pm.PackageInfo + + + + + + + + + + +
    +
    +
    +

    +Class android.content.pm.PackageInfo +

    + + + +

    + + + + + + + + + + + + + + + + +
    Added Fields +
    + + ConfigurationInfo[] configPreferences +  
    + + String sharedUserId +  
    + + int sharedUserLabel +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.content.pm.PackageManager.html b/docs/html/sdk/api_diff/3/changes/android.content.pm.PackageManager.html new file mode 100644 index 000000000000..efd37c54f3b1 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.content.pm.PackageManager.html @@ -0,0 +1,166 @@ + + + + + + + + + +android.content.pm.PackageManager + + + + + + + + + + +
    +
    +
    +

    +Class android.content.pm.PackageManager +

    + + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + Intent getLaunchIntentForPackage(String) +  
    + + String[] getSystemSharedLibraryNames() +  
    + + boolean isSafeMode() +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int GET_CONFIGURATIONS +  
    + + int GET_UNINSTALLED_PACKAGES +  
    + + int INSTALL_FAILED_CONFLICTING_PROVIDER +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.content.res.AssetFileDescriptor.html b/docs/html/sdk/api_diff/3/changes/android.content.res.AssetFileDescriptor.html new file mode 100644 index 000000000000..458a70a74ecf --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.content.res.AssetFileDescriptor.html @@ -0,0 +1,174 @@ + + + + + + + + + +android.content.res.AssetFileDescriptor + + + + + + + + + + +
    +
    +
    +

    +Class android.content.res.AssetFileDescriptor +

    +

    Added interface android.os.Parcelable.
    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + FileInputStream createInputStream() +  
    + + FileOutputStream createOutputStream() +  
    + + int describeContents() +  
    + + long getDeclaredLength() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + + + + + + + + + + + + +
    Added Fields +
    + + Creator CREATOR +  
    + + long UNKNOWN_LENGTH +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.content.res.Configuration.html b/docs/html/sdk/api_diff/3/changes/android.content.res.Configuration.html new file mode 100644 index 000000000000..3b8f943aceb7 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.content.res.Configuration.html @@ -0,0 +1,144 @@ + + + + + + + + + +android.content.res.Configuration + + + + + + + + + + +
    +
    +
    +

    +Class android.content.res.Configuration +

    + + + +

    + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int HARDKEYBOARDHIDDEN_NO +  
    + + int HARDKEYBOARDHIDDEN_UNDEFINED +  
    + + int HARDKEYBOARDHIDDEN_YES +  
    + + int hardKeyboardHidden +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.content.res.Resources.html b/docs/html/sdk/api_diff/3/changes/android.content.res.Resources.html new file mode 100644 index 000000000000..7fde1f983310 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.content.res.Resources.html @@ -0,0 +1,151 @@ + + + + + + + + + +android.content.res.Resources + + + + + + + + + + +
    +
    +
    +

    +Class android.content.res.Resources +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + boolean getBoolean(int) +  
    + + float getFraction(int, int, int) +  
    + + InputStream openRawResource(int, TypedValue) +  
    + + void parseBundleExtra(String, AttributeSet, Bundle) +  
    + + void parseBundleExtras(XmlResourceParser, Bundle) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.content.res.TypedArray.html b/docs/html/sdk/api_diff/3/changes/android.content.res.TypedArray.html new file mode 100644 index 000000000000..f1336fc7d7ed --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.content.res.TypedArray.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.content.res.TypedArray + + + + + + + + + + +
    +
    +
    +

    +Class android.content.res.TypedArray +

    + + +

    + + + + + + + + +
    Added Methods +
    + + int getLayoutDimension(int, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.database.Cursor.html b/docs/html/sdk/api_diff/3/changes/android.database.Cursor.html new file mode 100644 index 000000000000..020402a4c714 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.database.Cursor.html @@ -0,0 +1,126 @@ + + + + + + + + + +android.database.Cursor + + + + + + + + + + +
    +
    +
    +

    +Interface android.database.Cursor +

    + + +

    + + + + + + + + + +
    Changed Methods +
    + + int getColumnIndex(String) + +Change from deprecated to undeprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.database.CursorWrapper.html b/docs/html/sdk/api_diff/3/changes/android.database.CursorWrapper.html new file mode 100644 index 000000000000..3a7675d57da6 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.database.CursorWrapper.html @@ -0,0 +1,126 @@ + + + + + + + + + +android.database.CursorWrapper + + + + + + + + + + +
    +
    +
    +

    +Class android.database.CursorWrapper +

    + + +

    + + + + + + + + + +
    Changed Methods +
    + + int getColumnIndex(String) + +Change from deprecated to undeprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.database.DatabaseUtils.html b/docs/html/sdk/api_diff/3/changes/android.database.DatabaseUtils.html new file mode 100644 index 000000000000..114beaeeee62 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.database.DatabaseUtils.html @@ -0,0 +1,126 @@ + + + + + + + + + +android.database.DatabaseUtils + + + + + + + + + + +
    +
    +
    +

    +Class android.database.DatabaseUtils +

    + + +

    + + + + + + + + + +
    Changed Methods +
    + + void appendEscapedSQLString(StringBuilder, String) + +Change from deprecated to undeprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.database.sqlite.SQLiteDatabase.html b/docs/html/sdk/api_diff/3/changes/android.database.sqlite.SQLiteDatabase.html new file mode 100644 index 000000000000..cd59c1b85431 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.database.sqlite.SQLiteDatabase.html @@ -0,0 +1,141 @@ + + + + + + + + + +android.database.sqlite.SQLiteDatabase + + + + + + + + + + +
    +
    +
    +

    +Class android.database.sqlite.SQLiteDatabase +

    + + +

    + + + + + + + + +
    Added Methods +
    + + boolean yieldIfContendedSafely() +  
    +  +

    + + + + + + + + + +
    Changed Methods +
    + + boolean yieldIfContended() + +Now deprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.graphics.Bitmap.html b/docs/html/sdk/api_diff/3/changes/android.graphics.Bitmap.html new file mode 100644 index 000000000000..f6ddc29c10bf --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.graphics.Bitmap.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.graphics.Bitmap + + + + + + + + + + +
    +
    +
    +

    +Class android.graphics.Bitmap +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void copyPixelsFromBuffer(Buffer) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.graphics.Canvas.html b/docs/html/sdk/api_diff/3/changes/android.graphics.Canvas.html new file mode 100644 index 000000000000..cf8ceef7ab5f --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.graphics.Canvas.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.graphics.Canvas + + + + + + + + + + +
    +
    +
    +

    +Class android.graphics.Canvas +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void drawBitmap(int[], int, int, float, float, int, int, boolean, Paint) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.graphics.Rect.html b/docs/html/sdk/api_diff/3/changes/android.graphics.Rect.html new file mode 100644 index 000000000000..1c0b1f342d37 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.graphics.Rect.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.graphics.Rect + + + + + + + + + + +
    +
    +
    +

    +Class android.graphics.Rect +

    + + +

    + + + + + + + + +
    Added Methods +
    + + String toShortString() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.graphics.RectF.html b/docs/html/sdk/api_diff/3/changes/android.graphics.RectF.html new file mode 100644 index 000000000000..4e9b91b2a2ed --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.graphics.RectF.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.graphics.RectF + + + + + + + + + + +
    +
    +
    +

    +Class android.graphics.RectF +

    +

    Added interface android.os.Parcelable.
    + + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + void readFromParcel(Parcel) +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + + + + + + + + +
    Added Fields +
    + + Creator CREATOR +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.Drawable.html b/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.Drawable.html new file mode 100644 index 000000000000..faa70b96da44 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.Drawable.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.graphics.drawable.Drawable + + + + + + + + + + +
    +
    +
    +

    +Class android.graphics.drawable.Drawable +

    + + +

    + + + + + + + + +
    Added Methods +
    + + Drawable mutate() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.RotateDrawable.html b/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.RotateDrawable.html new file mode 100644 index 000000000000..8cffe1e0bdb9 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.RotateDrawable.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.graphics.drawable.RotateDrawable + + + + + + + + + + +
    +
    +
    +

    +Class android.graphics.drawable.RotateDrawable +

    + + +

    + + + + + + + + +
    Added Methods +
    + + Drawable getDrawable() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.ScaleDrawable.html b/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.ScaleDrawable.html new file mode 100644 index 000000000000..529f38026ebe --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.ScaleDrawable.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.graphics.drawable.ScaleDrawable + + + + + + + + + + +
    +
    +
    +

    +Class android.graphics.drawable.ScaleDrawable +

    + + +

    + + + + + + + + +
    Added Methods +
    + + Drawable getDrawable() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.TransitionDrawable.html b/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.TransitionDrawable.html new file mode 100644 index 000000000000..d7dc8eafcf3c --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.TransitionDrawable.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.graphics.drawable.TransitionDrawable + + + + + + + + + + +
    +
    +
    +

    +Class android.graphics.drawable.TransitionDrawable +

    + +

    + + + + + + + + +
    Added Constructors +
    + + TransitionDrawable(Drawable[]) +  
    +  + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.shapes.Shape.html b/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.shapes.Shape.html new file mode 100644 index 000000000000..836aa9215913 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.graphics.drawable.shapes.Shape.html @@ -0,0 +1,128 @@ + + + + + + + + + +android.graphics.drawable.shapes.Shape + + + + + + + + + + +
    +
    +
    +

    +Class android.graphics.drawable.shapes.Shape +

    +

    Added interface java.lang.Cloneable.
    + + +

    + + + + + + + + + +
    Changed Methods +
    + + Shape clone() + +Change in return type from Object to Shape.
    + Method was inherited from java.lang.Object, but is now defined locally. Change of visibility from protected to public.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.hardware.Camera.html b/docs/html/sdk/api_diff/3/changes/android.hardware.Camera.html new file mode 100644 index 000000000000..b7a0dd37a122 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.hardware.Camera.html @@ -0,0 +1,141 @@ + + + + + + + + + +android.hardware.Camera + + + + + + + + + + +
    +
    +
    +

    +Class android.hardware.Camera +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void setOneShotPreviewCallback(PreviewCallback) +  
    +  +

    + + + + + + + + + +
    Changed Methods +
    + + void setPreviewDisplay(SurfaceHolder) + +Change in exceptions thrown from no exceptions to java.io.IOException.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.hardware.SensorListener.html b/docs/html/sdk/api_diff/3/changes/android.hardware.SensorListener.html new file mode 100644 index 000000000000..9b63571fcf52 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.hardware.SensorListener.html @@ -0,0 +1,109 @@ + + + + + + + + + +android.hardware.SensorListener + + + + + + + + + + +
    +
    +
    +

    +Interface android.hardware.SensorListener +

    +

    Now deprecated.
    + + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.hardware.SensorManager.html b/docs/html/sdk/api_diff/3/changes/android.hardware.SensorManager.html new file mode 100644 index 000000000000..e42eebaf21f9 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.hardware.SensorManager.html @@ -0,0 +1,473 @@ + + + + + + + + + +android.hardware.SensorManager + + + + + + + + + + +
    +
    +
    +

    +Class android.hardware.SensorManager +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + Sensor getDefaultSensor(int) +  
    + + float getInclination(float[]) +  
    + + float[] getOrientation(float[], float[]) +  
    + + boolean getRotationMatrix(float[], float[], float[], float[]) +  
    + + List<Sensor> getSensorList(int) +  
    + + boolean registerListener(SensorEventListener, Sensor, int) +  
    + + boolean registerListener(SensorEventListener, Sensor, int, Handler) +  
    + + boolean remapCoordinateSystem(float[], int, int, float[]) +  
    + + void unregisterListener(SensorEventListener) +  
    + + void unregisterListener(SensorEventListener, Sensor) +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Methods +
    + + int getSensors() + +Now deprecated.
    +
     
    + + boolean registerListener(SensorListener, int) + +Now deprecated.
    +
     
    + + boolean registerListener(SensorListener, int, int) + +Now deprecated.
    +
     
    + + void unregisterListener(SensorListener) + +Now deprecated.
    +
     
    + + void unregisterListener(SensorListener, int) + +Now deprecated.
    +
     
    +  + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int AXIS_MINUS_X +  
    + + int AXIS_MINUS_Y +  
    + + int AXIS_MINUS_Z +  
    + + int AXIS_X +  
    + + int AXIS_Y +  
    + + int AXIS_Z +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Fields +
    + + int DATA_X +Now deprecated.
    +
     
    + + int DATA_Y +Now deprecated.
    +
     
    + + int DATA_Z +Now deprecated.
    +
     
    + + float LIGHT_NO_MOON +Changed in value from 0.0010f to 0.001f. +  
    + + int RAW_DATA_INDEX +Now deprecated.
    +
     
    + + int RAW_DATA_X +Now deprecated.
    +
     
    + + int RAW_DATA_Y +Now deprecated.
    +
     
    + + int RAW_DATA_Z +Now deprecated.
    +
     
    + + int SENSOR_ACCELEROMETER +Now deprecated.
    +
     
    + + int SENSOR_ALL +Now deprecated.
    +
     
    + + int SENSOR_LIGHT +Now deprecated.
    +
     
    + + int SENSOR_MAGNETIC_FIELD +Now deprecated.
    +
     
    + + int SENSOR_MAX +Now deprecated.
    +
     
    + + int SENSOR_MIN +Now deprecated.
    +
     
    + + int SENSOR_ORIENTATION +Now deprecated.
    +
     
    + + int SENSOR_ORIENTATION_RAW +Now deprecated.
    +
     
    + + int SENSOR_PROXIMITY +Now deprecated.
    +
     
    + + int SENSOR_TEMPERATURE +Now deprecated.
    +
     
    + + int SENSOR_TRICORDER +Now deprecated.
    +
     
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.location.Location.html b/docs/html/sdk/api_diff/3/changes/android.location.Location.html new file mode 100644 index 000000000000..03d3f894f33c --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.location.Location.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.location.Location + + + + + + + + + + +
    +
    +
    +

    +Class android.location.Location +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void dump(Printer, String) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.location.LocationManager.html b/docs/html/sdk/api_diff/3/changes/android.location.LocationManager.html new file mode 100644 index 000000000000..4cd68386cbd4 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.location.LocationManager.html @@ -0,0 +1,243 @@ + + + + + + + + + +android.location.LocationManager + + + + + + + + + + +
    +
    +
    +

    +Class android.location.LocationManager +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + boolean addGpsStatusListener(Listener) +  
    + + void addTestProvider(String, boolean, boolean, boolean, boolean, boolean, boolean, boolean, int, int) +  
    + + void clearTestProviderEnabled(String) +  
    + + void clearTestProviderLocation(String) +  
    + + void clearTestProviderStatus(String) +  
    + + GpsStatus getGpsStatus(GpsStatus) +  
    + + void removeGpsStatusListener(Listener) +  
    + + void removeTestProvider(String) +  
    + + void removeUpdates(PendingIntent) +  
    + + void requestLocationUpdates(String, long, float, PendingIntent) +  
    + + boolean sendExtraCommand(String, String, Bundle) +  
    + + void setTestProviderEnabled(String, boolean) +  
    + + void setTestProviderLocation(String, Location) +  
    + + void setTestProviderStatus(String, int, Bundle, long) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Fields +
    + + String KEY_LOCATION_CHANGED +  
    + + String KEY_PROVIDER_ENABLED +  
    + + String KEY_STATUS_CHANGED +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.media.AudioManager.html b/docs/html/sdk/api_diff/3/changes/android.media.AudioManager.html new file mode 100644 index 000000000000..a98d840ffaf7 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.media.AudioManager.html @@ -0,0 +1,227 @@ + + + + + + + + + +android.media.AudioManager + + + + + + + + + + +
    +
    +
    +

    +Class android.media.AudioManager +

    + + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + boolean isBluetoothA2dpOn() +  
    + + void playSoundEffect(int, float) +  
    + + void setBluetoothA2dpOn(boolean) +  
    +  + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + String ACTION_AUDIO_BECOMING_NOISY +  
    + + int FX_KEYPRESS_DELETE +  
    + + int FX_KEYPRESS_RETURN +  
    + + int FX_KEYPRESS_SPACEBAR +  
    + + int FX_KEYPRESS_STANDARD +  
    + + int ROUTE_BLUETOOTH_A2DP +  
    + + int ROUTE_BLUETOOTH_SCO +  
    + + int STREAM_NOTIFICATION +  
    +  +

    + + + + + + + + + + + + + + +
    Changed Fields +
    + + int NUM_STREAMS +Now deprecated.
    +
     
    + + int ROUTE_BLUETOOTH +Now deprecated.
    +
     
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.media.MediaPlayer.html b/docs/html/sdk/api_diff/3/changes/android.media.MediaPlayer.html new file mode 100644 index 000000000000..7704e1232ee8 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.media.MediaPlayer.html @@ -0,0 +1,180 @@ + + + + + + + + + +android.media.MediaPlayer + + + + + + + + + + +
    +
    +
    +

    +Class android.media.MediaPlayer +

    + + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + boolean isLooping() +  
    + + void setOnInfoListener(OnInfoListener) +  
    + + void setOnVideoSizeChangedListener(OnVideoSizeChangedListener) +  
    +  + +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK +  
    + + int MEDIA_INFO_BAD_INTERLEAVING +  
    + + int MEDIA_INFO_NOT_SEEKABLE +  
    + + int MEDIA_INFO_UNKNOWN +  
    + + int MEDIA_INFO_VIDEO_TRACK_LAGGING +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.media.MediaRecorder.OutputFormat.html b/docs/html/sdk/api_diff/3/changes/android.media.MediaRecorder.OutputFormat.html new file mode 100644 index 000000000000..0967c567c7f4 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.media.MediaRecorder.OutputFormat.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.media.MediaRecorder.OutputFormat + + + + + + + + + + +
    +
    +
    +

    +Class android.media.MediaRecorder.OutputFormat +

    + + + +

    + + + + + + + + +
    Added Fields +
    + + int RAW_AMR +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.media.MediaRecorder.html b/docs/html/sdk/api_diff/3/changes/android.media.MediaRecorder.html new file mode 100644 index 000000000000..9daf4c350aaa --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.media.MediaRecorder.html @@ -0,0 +1,240 @@ + + + + + + + + + +android.media.MediaRecorder + + + + + + + + + + +
    +
    +
    +

    +Class android.media.MediaRecorder +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + void setCamera(Camera) +  
    + + void setMaxDuration(int) +  
    + + void setMaxFileSize(long) +  
    + + void setOnErrorListener(OnErrorListener) +  
    + + void setOnInfoListener(OnInfoListener) +  
    + + void setOutputFile(FileDescriptor) +  
    + + void setVideoEncoder(int) +  
    + + void setVideoFrameRate(int) +  
    + + void setVideoSize(int, int) +  
    + + void setVideoSource(int) +  
    +  +

    + + + + + + + + + +
    Changed Methods +
    + + void prepare() + +Change in exceptions thrown from java.lang.IllegalStateException to (java.io.IOException, java.lang.IllegalStateException).
    +
     
    +  + +

    + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int MEDIA_RECORDER_ERROR_UNKNOWN +  
    + + int MEDIA_RECORDER_INFO_MAX_DURATION_REACHED +  
    + + int MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED +  
    + + int MEDIA_RECORDER_INFO_UNKNOWN +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.media.RingtoneManager.html b/docs/html/sdk/api_diff/3/changes/android.media.RingtoneManager.html new file mode 100644 index 000000000000..e9fdbfc24b04 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.media.RingtoneManager.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.media.RingtoneManager + + + + + + + + + + +
    +
    +
    +

    +Class android.media.RingtoneManager +

    + + +

    + + + + + + + + +
    Added Methods +
    + + int inferStreamType() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.media.SoundPool.html b/docs/html/sdk/api_diff/3/changes/android.media.SoundPool.html new file mode 100644 index 000000000000..6e765d837f78 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.media.SoundPool.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.media.SoundPool + + + + + + + + + + +
    +
    +
    +

    +Class android.media.SoundPool +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + int load(AssetFileDescriptor, int) +  
    + + int load(FileDescriptor, long, long, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.net.ConnectivityManager.html b/docs/html/sdk/api_diff/3/changes/android.net.ConnectivityManager.html new file mode 100644 index 000000000000..7b0750e02f15 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.net.ConnectivityManager.html @@ -0,0 +1,138 @@ + + + + + + + + + +android.net.ConnectivityManager + + + + + + + + + + +
    +
    +
    +

    +Class android.net.ConnectivityManager +

    + + +

    + + + + + + + + +
    Added Methods +
    + + boolean getBackgroundDataSetting() +  
    +  + +

    + + + + + + + + +
    Added Fields +
    + + String ACTION_BACKGROUND_DATA_SETTING_CHANGED +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.net.NetworkInfo.html b/docs/html/sdk/api_diff/3/changes/android.net.NetworkInfo.html new file mode 100644 index 000000000000..6c3c26d2c4c4 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.net.NetworkInfo.html @@ -0,0 +1,152 @@ + + + + + + + + + +android.net.NetworkInfo + + + + + + + + + + +
    +
    +
    +

    +Class android.net.NetworkInfo +

    + +

    + + + + + + + + +
    Removed Constructors +
    + + NetworkInfo(int) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int getSubtype() +  
    + + String getSubtypeName() +  
    + + boolean isRoaming() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.net.wifi.WifiManager.html b/docs/html/sdk/api_diff/3/changes/android.net.wifi.WifiManager.html new file mode 100644 index 000000000000..2e79642e7662 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.net.wifi.WifiManager.html @@ -0,0 +1,145 @@ + + + + + + + + + +android.net.wifi.WifiManager + + + + + + + + + + +
    +
    +
    +

    +Class android.net.wifi.WifiManager +

    + + +

    + + + + + + + + +
    Added Methods +
    + + WifiLock createWifiLock(int, String) +  
    +  + +

    + + + + + + + + + + + + +
    Added Fields +
    + + int WIFI_MODE_FULL +  
    + + int WIFI_MODE_SCAN_ONLY +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.os.Binder.html b/docs/html/sdk/api_diff/3/changes/android.os.Binder.html new file mode 100644 index 000000000000..882803adaf42 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.os.Binder.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.os.Binder + + + + + + + + + + +
    +
    +
    +

    +Class android.os.Binder +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void dump(FileDescriptor, String[]) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.os.Build.html b/docs/html/sdk/api_diff/3/changes/android.os.Build.html new file mode 100644 index 000000000000..2a69a8c7c204 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.os.Build.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.os.Build + + + + + + + + + + +
    +
    +
    +

    +Class android.os.Build +

    + + + +

    + + + + + + + + +
    Added Fields +
    + + String DISPLAY +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.os.Debug.html b/docs/html/sdk/api_diff/3/changes/android.os.Debug.html new file mode 100644 index 000000000000..8e7e2db3eef8 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.os.Debug.html @@ -0,0 +1,141 @@ + + + + + + + + + +android.os.Debug + + + + + + + + + + +
    +
    +
    +

    +Class android.os.Debug +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void dumpHprofData(String) +  
    +  +

    + + + + + + + + + +
    Changed Methods +
    + + void changeDebugPort(int) + +Now deprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.os.Environment.html b/docs/html/sdk/api_diff/3/changes/android.os.Environment.html new file mode 100644 index 000000000000..4cc764375c64 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.os.Environment.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.os.Environment + + + + + + + + + + +
    +
    +
    +

    +Class android.os.Environment +

    + + + +

    + + + + + + + + + + + + +
    Added Fields +
    + + String MEDIA_CHECKING +  
    + + String MEDIA_NOFS +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.os.Handler.html b/docs/html/sdk/api_diff/3/changes/android.os.Handler.html new file mode 100644 index 000000000000..fc10c9b29cd1 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.os.Handler.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.os.Handler + + + + + + + + + + +
    +
    +
    +

    +Class android.os.Handler +

    + +

    + + + + + + + + + + + + +
    Added Constructors +
    + + Handler(Callback) +  
    + + Handler(Looper, Callback) +  
    +  + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.os.IBinder.html b/docs/html/sdk/api_diff/3/changes/android.os.IBinder.html new file mode 100644 index 000000000000..95745dc7d4a3 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.os.IBinder.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.os.IBinder + + + + + + + + + + +
    +
    +
    +

    +Interface android.os.IBinder +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void dump(FileDescriptor, String[]) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.os.Looper.html b/docs/html/sdk/api_diff/3/changes/android.os.Looper.html new file mode 100644 index 000000000000..d79ae756786f --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.os.Looper.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.os.Looper + + + + + + + + + + +
    +
    +
    +

    +Class android.os.Looper +

    + + +

    + + + + + + + + +
    Added Methods +
    + + Thread getThread() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.os.Parcel.html b/docs/html/sdk/api_diff/3/changes/android.os.Parcel.html new file mode 100644 index 000000000000..317b722d9f0f --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.os.Parcel.html @@ -0,0 +1,146 @@ + + + + + + + + + +android.os.Parcel + + + + + + + + + + +
    +
    +
    +

    +Class android.os.Parcel +

    + + +

    + + + + + + + + + + + + + + + + + + + +
    Changed Methods +
    + + HashMap readHashMap(ClassLoader) + +Change from deprecated to undeprecated.
    +
     
    + + void readMap(Map, ClassLoader) + +Change from deprecated to undeprecated.
    +
     
    + + void writeMap(Map) + +Change from deprecated to undeprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.os.ParcelFileDescriptor.html b/docs/html/sdk/api_diff/3/changes/android.os.ParcelFileDescriptor.html new file mode 100644 index 000000000000..77641d54c4dd --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.os.ParcelFileDescriptor.html @@ -0,0 +1,138 @@ + + + + + + + + + +android.os.ParcelFileDescriptor + + + + + + + + + + +
    +
    +
    +

    +Class android.os.ParcelFileDescriptor +

    + + +

    + + + + + + + + +
    Added Methods +
    + + long getStatSize() +  
    +  + +

    + + + + + + + + +
    Added Fields +
    + + int MODE_APPEND +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.preference.DialogPreference.html b/docs/html/sdk/api_diff/3/changes/android.preference.DialogPreference.html new file mode 100644 index 000000000000..93e05e7c6320 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.preference.DialogPreference.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.preference.DialogPreference + + + + + + + + + + +
    +
    +
    +

    +Class android.preference.DialogPreference +

    + + +

    + + + + + + + + +
    Added Methods +
    + + Dialog getDialog() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.Browser.html b/docs/html/sdk/api_diff/3/changes/android.provider.Browser.html new file mode 100644 index 000000000000..9a9a4b80ef09 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.provider.Browser.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.provider.Browser + + + + + + + + + + +
    +
    +
    +

    +Class android.provider.Browser +

    + + + +

    + + + + + + + + +
    Added Fields +
    + + String EXTRA_APPLICATION_ID +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.Contacts.Intents.Insert.html b/docs/html/sdk/api_diff/3/changes/android.provider.Contacts.Intents.Insert.html new file mode 100644 index 000000000000..32541826a888 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.provider.Contacts.Intents.Insert.html @@ -0,0 +1,179 @@ + + + + + + + + + +android.provider.Contacts.Intents.Insert + + + + + + + + + + +
    +
    +
    +

    +Class android.provider.Contacts.Intents.Insert +

    + + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + String PHONETIC_NAME +  
    + + String SECONDARY_EMAIL +  
    + + String SECONDARY_EMAIL_TYPE +  
    + + String SECONDARY_PHONE +  
    + + String SECONDARY_PHONE_TYPE +  
    + + String TERTIARY_EMAIL +  
    + + String TERTIARY_EMAIL_TYPE +  
    + + String TERTIARY_PHONE +  
    + + String TERTIARY_PHONE_TYPE +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.Contacts.Intents.html b/docs/html/sdk/api_diff/3/changes/android.provider.Contacts.Intents.html new file mode 100644 index 000000000000..1f758333c47e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.provider.Contacts.Intents.html @@ -0,0 +1,137 @@ + + + + + + + + + +android.provider.Contacts.Intents + + + + + + + + + + +
    +
    +
    +

    +Class android.provider.Contacts.Intents +

    + + + +

    + + + + + + + + + + + + + + + + +
    Added Fields +
    + + String EXTRA_CREATE_DESCRIPTION +  
    + + String EXTRA_FORCE_CREATE +  
    + + String SHOW_OR_CREATE_CONTACT +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.Contacts.PeopleColumns.html b/docs/html/sdk/api_diff/3/changes/android.provider.Contacts.PeopleColumns.html new file mode 100644 index 000000000000..e8c0f4d6d2c7 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.provider.Contacts.PeopleColumns.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.provider.Contacts.PeopleColumns + + + + + + + + + + +
    +
    +
    +

    +Interface android.provider.Contacts.PeopleColumns +

    + + + +

    + + + + + + + + +
    Added Fields +
    + + String PHONETIC_NAME +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Audio.AlbumColumns.html b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Audio.AlbumColumns.html new file mode 100644 index 000000000000..ade1498b3082 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Audio.AlbumColumns.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.provider.MediaStore.Audio.AlbumColumns + + + + + + + + + + +
    +
    +
    +

    +Interface android.provider.MediaStore.Audio.AlbumColumns +

    + + + +

    + + + + + + + + +
    Added Fields +
    + + String NUMBER_OF_SONGS_FOR_ARTIST +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Audio.Media.html b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Audio.Media.html new file mode 100644 index 000000000000..52bae9d6f275 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Audio.Media.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.provider.MediaStore.Audio.Media + + + + + + + + + + +
    +
    +
    +

    +Class android.provider.MediaStore.Audio.Media +

    + + + +

    + + + + + + + + +
    Added Fields +
    + + String EXTRA_MAX_BYTES +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Images.Media.html b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Images.Media.html new file mode 100644 index 000000000000..b375c3f9959f --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Images.Media.html @@ -0,0 +1,125 @@ + + + + + + + + + +android.provider.MediaStore.Images.Media + + + + + + + + + + +
    +
    +
    +

    +Class android.provider.MediaStore.Images.Media +

    + + + +

    + + + + + + + + + +
    Changed Fields +
    + + String DEFAULT_SORT_ORDER +Changed in value from "name ASC" to "bucket_display_name". +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Video.VideoColumns.html b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Video.VideoColumns.html new file mode 100644 index 000000000000..43494502563f --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Video.VideoColumns.html @@ -0,0 +1,137 @@ + + + + + + + + + +android.provider.MediaStore.Video.VideoColumns + + + + + + + + + + +
    +
    +
    +

    +Interface android.provider.MediaStore.Video.VideoColumns +

    + + + +

    + + + + + + + + + + + + + + + + +
    Added Fields +
    + + String BOOKMARK +  
    + + String BUCKET_DISPLAY_NAME +  
    + + String BUCKET_ID +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Video.html b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Video.html new file mode 100644 index 000000000000..60437625988c --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.Video.html @@ -0,0 +1,125 @@ + + + + + + + + + +android.provider.MediaStore.Video + + + + + + + + + + +
    +
    +
    +

    +Class android.provider.MediaStore.Video +

    + + + +

    + + + + + + + + + +
    Changed Fields +
    + + String DEFAULT_SORT_ORDER +Changed in value from "name ASC" to "_display_name". +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.html b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.html new file mode 100644 index 000000000000..0d6a4cdce690 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.provider.MediaStore.html @@ -0,0 +1,207 @@ + + + + + + + + + +android.provider.MediaStore + + + + + + + + + + +
    +
    +
    +

    +Class android.provider.MediaStore +

    + + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + String ACTION_IMAGE_CAPTURE +  
    + + String ACTION_VIDEO_CAPTURE +  
    + + String EXTRA_FINISH_ON_COMPLETION +  
    + + String EXTRA_MEDIA_ALBUM +  
    + + String EXTRA_MEDIA_ARTIST +  
    + + String EXTRA_MEDIA_FOCUS +  
    + + String EXTRA_MEDIA_TITLE +  
    + + String EXTRA_OUTPUT +  
    + + String EXTRA_SCREEN_ORIENTATION +  
    + + String EXTRA_VIDEO_QUALITY +  
    + + String INTENT_ACTION_MEDIA_SEARCH +  
    + + String INTENT_ACTION_STILL_IMAGE_CAMERA +  
    + + String INTENT_ACTION_VIDEO_CAMERA +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.Settings.System.html b/docs/html/sdk/api_diff/3/changes/android.provider.Settings.System.html new file mode 100644 index 000000000000..b7ef86c6695a --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.provider.Settings.System.html @@ -0,0 +1,502 @@ + + + + + + + + + +android.provider.Settings.System + + + + + + + + + + +
    +
    +
    +

    +Class android.provider.Settings.System +

    + + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + long getLong(ContentResolver, String) +  
    + + long getLong(ContentResolver, String, long) +  
    + + boolean putLong(ContentResolver, String, long) +  
    +  + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + String ACCELEROMETER_ROTATION +  
    + + String HAPTIC_FEEDBACK_ENABLED +  
    + + String LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED +  
    + + String VOLUME_NOTIFICATION +  
    + + String WIFI_MAX_DHCP_RETRY_COUNT +  
    + + String WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS +  
    + + String WIFI_SLEEP_POLICY +  
    + + int WIFI_SLEEP_POLICY_DEFAULT +  
    + + int WIFI_SLEEP_POLICY_NEVER +  
    + + int WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Fields +
    + + String ADB_ENABLED +Now deprecated.
    +
     
    + + String ANDROID_ID +Now deprecated.
    +
     
    + + String BLUETOOTH_ON +Now deprecated.
    +
     
    + + String DATA_ROAMING +Now deprecated.
    +
     
    + + String DEVICE_PROVISIONED +Now deprecated.
    +
     
    + + String HTTP_PROXY +Now deprecated.
    +
     
    + + String INSTALL_NON_MARKET_APPS +Now deprecated.
    +
     
    + + String LOCATION_PROVIDERS_ALLOWED +Now deprecated.
    +
     
    + + String LOGGING_ID +Now deprecated.
    +
     
    + + String NETWORK_PREFERENCE +Now deprecated.
    +
     
    + + String PARENTAL_CONTROL_ENABLED +Now deprecated.
    +
     
    + + String PARENTAL_CONTROL_LAST_UPDATE +Now deprecated.
    +
     
    + + String PARENTAL_CONTROL_REDIRECT_URL +Now deprecated.
    +
     
    + + String SETTINGS_CLASSNAME +Now deprecated.
    +
     
    + + String USB_MASS_STORAGE_ENABLED +Now deprecated.
    +
     
    + + String USE_GOOGLE_MAIL +Now deprecated.
    +
     
    + + String WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON +Now deprecated.
    +
     
    + + String WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY +Now deprecated.
    +
     
    + + String WIFI_NUM_OPEN_NETWORKS_KEPT +Now deprecated.
    +
     
    + + String WIFI_ON +Now deprecated.
    +
     
    + + String WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE +Now deprecated.
    +
     
    + + String WIFI_WATCHDOG_AP_COUNT +Now deprecated.
    +
     
    + + String WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS +Now deprecated.
    +
     
    + + String WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED +Now deprecated.
    +
     
    + + String WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS +Now deprecated.
    +
     
    + + String WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT +Now deprecated.
    +
     
    + + String WIFI_WATCHDOG_MAX_AP_CHECKS +Now deprecated.
    +
     
    + + String WIFI_WATCHDOG_ON +Now deprecated.
    +
     
    + + String WIFI_WATCHDOG_PING_COUNT +Now deprecated.
    +
     
    + + String WIFI_WATCHDOG_PING_DELAY_MS +Now deprecated.
    +
     
    + + String WIFI_WATCHDOG_PING_TIMEOUT_MS +Now deprecated.
    +
     
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.provider.Settings.html b/docs/html/sdk/api_diff/3/changes/android.provider.Settings.html new file mode 100644 index 000000000000..227b462ed957 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.provider.Settings.html @@ -0,0 +1,200 @@ + + + + + + + + + +android.provider.Settings + + + + + + + + + + +
    +
    +
    +

    +Class android.provider.Settings +

    + + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + String ACTION_AIRPLANE_MODE_SETTINGS +  
    + + String ACTION_APPLICATION_DEVELOPMENT_SETTINGS +  
    + + String ACTION_DATA_ROAMING_SETTINGS +  
    + + String ACTION_INPUT_METHOD_SETTINGS +  
    + + String ACTION_INTERNAL_STORAGE_SETTINGS +  
    + + String ACTION_MANAGE_APPLICATIONS_SETTINGS +  
    + + String ACTION_MEMORY_CARD_SETTINGS +  
    + + String ACTION_NETWORK_OPERATOR_SETTINGS +  
    + + String ACTION_QUICK_LAUNCH_SETTINGS +  
    + + String ACTION_SYNC_SETTINGS +  
    + + String ACTION_USER_DICTIONARY_SETTINGS +  
    + + String ACTION_WIFI_IP_SETTINGS +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.telephony.PhoneNumberUtils.html b/docs/html/sdk/api_diff/3/changes/android.telephony.PhoneNumberUtils.html new file mode 100644 index 000000000000..6e0b240ca75b --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.telephony.PhoneNumberUtils.html @@ -0,0 +1,138 @@ + + + + + + + + + +android.telephony.PhoneNumberUtils + + + + + + + + + + +
    +
    +
    +

    +Class android.telephony.PhoneNumberUtils +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void formatJapaneseNumber(Editable) +  
    +  + +

    + + + + + + + + +
    Added Fields +
    + + int FORMAT_JAPAN +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.telephony.TelephonyManager.html b/docs/html/sdk/api_diff/3/changes/android.telephony.TelephonyManager.html new file mode 100644 index 000000000000..aa02f5c1f3a8 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.telephony.TelephonyManager.html @@ -0,0 +1,173 @@ + + + + + + + + + +android.telephony.TelephonyManager + + + + + + + + + + +
    +
    +
    +

    +Class android.telephony.TelephonyManager +

    + + +

    + + + + + + + + +
    Added Methods +
    + + List<NeighboringCellInfo> getNeighboringCellInfo() +  
    +  + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + String ACTION_PHONE_STATE_CHANGED +  
    + + String EXTRA_INCOMING_NUMBER +  
    + + String EXTRA_STATE +  
    + + String EXTRA_STATE_IDLE +  
    + + String EXTRA_STATE_OFFHOOK +  
    + + String EXTRA_STATE_RINGING +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.telephony.gsm.SmsMessage.html b/docs/html/sdk/api_diff/3/changes/android.telephony.gsm.SmsMessage.html new file mode 100644 index 000000000000..c6069043fe40 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.telephony.gsm.SmsMessage.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.telephony.gsm.SmsMessage + + + + + + + + + + +
    +
    +
    +

    +Class android.telephony.gsm.SmsMessage +

    + + +

    + + + + + + + + +
    Added Methods +
    + + int[] calculateLength(CharSequence, boolean) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.test.ActivityInstrumentationTestCase.html b/docs/html/sdk/api_diff/3/changes/android.test.ActivityInstrumentationTestCase.html new file mode 100644 index 000000000000..c3360776828e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.test.ActivityInstrumentationTestCase.html @@ -0,0 +1,109 @@ + + + + + + + + + +android.test.ActivityInstrumentationTestCase + + + + + + + + + + +
    +
    +
    +

    +Class android.test.ActivityInstrumentationTestCase +

    +

    Now deprecated.
    + + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.test.InstrumentationTestCase.html b/docs/html/sdk/api_diff/3/changes/android.test.InstrumentationTestCase.html new file mode 100644 index 000000000000..1fb403aaabe5 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.test.InstrumentationTestCase.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.test.InstrumentationTestCase + + + + + + + + + + +
    +
    +
    +

    +Class android.test.InstrumentationTestCase +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + T launchActivityWithIntent(String, Class<T>, Intent) +  
    + + void runTestOnUiThread(Runnable) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.test.ProviderTestCase.html b/docs/html/sdk/api_diff/3/changes/android.test.ProviderTestCase.html new file mode 100644 index 000000000000..ffbee6091afe --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.test.ProviderTestCase.html @@ -0,0 +1,109 @@ + + + + + + + + + +android.test.ProviderTestCase + + + + + + + + + + +
    +
    +
    +

    +Class android.test.ProviderTestCase +

    +

    Now deprecated.
    + + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.test.TouchUtils.html b/docs/html/sdk/api_diff/3/changes/android.test.TouchUtils.html new file mode 100644 index 000000000000..75f9e5e03e2a --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.test.TouchUtils.html @@ -0,0 +1,362 @@ + + + + + + + + + +android.test.TouchUtils + + + + + + + + + + +
    +
    +
    +

    +Class android.test.TouchUtils +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + void drag(InstrumentationTestCase, float, float, float, float, int) +  
    + + void dragQuarterScreenDown(InstrumentationTestCase, Activity) +  
    + + void dragQuarterScreenUp(InstrumentationTestCase, Activity) +  
    + + int dragViewBy(InstrumentationTestCase, View, int, int, int) +  
    + + int dragViewTo(InstrumentationTestCase, View, int, int, int) +  
    + + void dragViewToBottom(ActivityInstrumentationTestCase, View, int) +  
    + + void dragViewToBottom(InstrumentationTestCase, Activity, View, int) +  
    + + void dragViewToTop(InstrumentationTestCase, View) +  
    + + void dragViewToTop(InstrumentationTestCase, View, int) +  
    + + int dragViewToX(InstrumentationTestCase, View, int, int) +  
    + + int dragViewToY(InstrumentationTestCase, View, int, int) +  
    + + void longClickView(InstrumentationTestCase, View) +  
    + + void scrollToBottom(InstrumentationTestCase, Activity, ViewGroup) +  
    + + void scrollToTop(InstrumentationTestCase, Activity, ViewGroup) +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Methods +
    + + void drag(ActivityInstrumentationTestCase, float, float, float, float, int) + +Now deprecated.
    +
     
    + + void dragQuarterScreenDown(ActivityInstrumentationTestCase) + +Now deprecated.
    +
     
    + + void dragQuarterScreenUp(ActivityInstrumentationTestCase) + +Now deprecated.
    +
     
    + + int dragViewBy(ActivityInstrumentationTestCase, View, int, int, int) + +Now deprecated.
    +
     
    + + int dragViewTo(ActivityInstrumentationTestCase, View, int, int, int) + +Now deprecated.
    +
     
    + + void dragViewToBottom(ActivityInstrumentationTestCase, View) + +Now deprecated.
    +
     
    + + void dragViewToBottom(InstrumentationTestCase, Activity, View) + +Change in signature from (ActivityInstrumentationTestCase, View, int) to (InstrumentationTestCase, Activity, View).
    +
     
    + + void dragViewToTop(ActivityInstrumentationTestCase, View) + +Now deprecated.
    +
     
    + + void dragViewToTop(ActivityInstrumentationTestCase, View, int) + +Now deprecated.
    +
     
    + + int dragViewToX(ActivityInstrumentationTestCase, View, int, int) + +Now deprecated.
    +
     
    + + int dragViewToY(ActivityInstrumentationTestCase, View, int, int) + +Now deprecated.
    +
     
    + + void longClickView(ActivityInstrumentationTestCase, View) + +Now deprecated.
    +
     
    + + void scrollToBottom(ActivityInstrumentationTestCase, ViewGroup) + +Now deprecated.
    +
     
    + + void scrollToTop(ActivityInstrumentationTestCase, ViewGroup) + +Now deprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.test.mock.MockPackageManager.html b/docs/html/sdk/api_diff/3/changes/android.test.mock.MockPackageManager.html new file mode 100644 index 000000000000..8e727f35f6b8 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.test.mock.MockPackageManager.html @@ -0,0 +1,137 @@ + + + + + + + + + +android.test.mock.MockPackageManager + + + + + + + + + + +
    +
    +
    +

    +Class android.test.mock.MockPackageManager +

    + + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + Intent getLaunchIntentForPackage(String) +  
    + + String[] getSystemSharedLibraryNames() +  
    + + boolean isSafeMode() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.test.suitebuilder.TestMethod.html b/docs/html/sdk/api_diff/3/changes/android.test.suitebuilder.TestMethod.html new file mode 100644 index 000000000000..52467f3fbb2f --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.test.suitebuilder.TestMethod.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.test.suitebuilder.TestMethod + + + + + + + + + + +
    +
    +
    +

    +Class android.test.suitebuilder.TestMethod +

    + +

    + + + + + + + + + + + + +
    Added Constructors +
    + + TestMethod(String, Class<TestCase>) +  
    + + TestMethod(TestCase) +  
    +  + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.test.suitebuilder.TestSuiteBuilder.html b/docs/html/sdk/api_diff/3/changes/android.test.suitebuilder.TestSuiteBuilder.html new file mode 100644 index 000000000000..548f473b72f5 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.test.suitebuilder.TestSuiteBuilder.html @@ -0,0 +1,126 @@ + + + + + + + + + +android.test.suitebuilder.TestSuiteBuilder + + + + + + + + + + +
    +
    +
    +

    +Class android.test.suitebuilder.TestSuiteBuilder +

    + + +

    + + + + + + + + + +
    Changed Methods +
    + + TestSuiteBuilder addRequirements(Predicate<TestMethod>) + +Change in signature from void to Predicate<TestMethod>.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.Annotation.html b/docs/html/sdk/api_diff/3/changes/android.text.Annotation.html new file mode 100644 index 000000000000..863f172ffa65 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.Annotation.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.Annotation + + + + + + + + + + +
    +
    +
    +

    +Class android.text.Annotation +

    +

    Added interface android.text.ParcelableSpan.
    + +

    + + + + + + + + +
    Added Constructors +
    + + Annotation(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.AutoText.html b/docs/html/sdk/api_diff/3/changes/android.text.AutoText.html new file mode 100644 index 000000000000..04ef46d33271 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.AutoText.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.text.AutoText + + + + + + + + + + +
    +
    +
    +

    +Class android.text.AutoText +

    + + +

    + + + + + + + + +
    Added Methods +
    + + int getSize(View) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.SpanWatcher.html b/docs/html/sdk/api_diff/3/changes/android.text.SpanWatcher.html new file mode 100644 index 000000000000..fd9943a56ff2 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.SpanWatcher.html @@ -0,0 +1,109 @@ + + + + + + + + + +android.text.SpanWatcher + + + + + + + + + + +
    +
    +
    +

    +Interface android.text.SpanWatcher +

    +

    Added interface android.text.NoCopySpan.
    + + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.Spanned.html b/docs/html/sdk/api_diff/3/changes/android.text.Spanned.html new file mode 100644 index 000000000000..1c861979d671 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.Spanned.html @@ -0,0 +1,137 @@ + + + + + + + + + +android.text.Spanned + + + + + + + + + + +
    +
    +
    +

    +Interface android.text.Spanned +

    + + + +

    + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int SPAN_COMPOSING +  
    + + int SPAN_INTERMEDIATE +  
    + + int SPAN_POINT_MARK_MASK +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.TextUtils.html b/docs/html/sdk/api_diff/3/changes/android.text.TextUtils.html new file mode 100644 index 000000000000..9fc8dae935ee --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.TextUtils.html @@ -0,0 +1,159 @@ + + + + + + + + + +android.text.TextUtils + + + + + + + + + + +
    +
    +
    +

    +Class android.text.TextUtils +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + void dumpSpans(CharSequence, Printer, String) +  
    + + int getCapsMode(CharSequence, int, int) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int CAP_MODE_CHARACTERS +  
    + + int CAP_MODE_SENTENCES +  
    + + int CAP_MODE_WORDS +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.TextWatcher.html b/docs/html/sdk/api_diff/3/changes/android.text.TextWatcher.html new file mode 100644 index 000000000000..a3856f851c10 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.TextWatcher.html @@ -0,0 +1,109 @@ + + + + + + + + + +android.text.TextWatcher + + + + + + + + + + +
    +
    +
    +

    +Interface android.text.TextWatcher +

    +

    Added interface android.text.NoCopySpan.
    + + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.ArrowKeyMovementMethod.html b/docs/html/sdk/api_diff/3/changes/android.text.method.ArrowKeyMovementMethod.html new file mode 100644 index 000000000000..6a1ce5eda080 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.ArrowKeyMovementMethod.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.text.method.ArrowKeyMovementMethod + + + + + + + + + + +
    +
    +
    +

    +Class android.text.method.ArrowKeyMovementMethod +

    + + +

    + + + + + + + + +
    Added Methods +
    + + boolean onKeyOther(TextView, Spannable, KeyEvent) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.BaseKeyListener.html b/docs/html/sdk/api_diff/3/changes/android.text.method.BaseKeyListener.html new file mode 100644 index 000000000000..b8dddc31cea3 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.BaseKeyListener.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.text.method.BaseKeyListener + + + + + + + + + + +
    +
    +
    +

    +Class android.text.method.BaseKeyListener +

    + + +

    + + + + + + + + +
    Added Methods +
    + + boolean onKeyOther(View, Editable, KeyEvent) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.DateKeyListener.html b/docs/html/sdk/api_diff/3/changes/android.text.method.DateKeyListener.html new file mode 100644 index 000000000000..d49752c259cf --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.DateKeyListener.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.text.method.DateKeyListener + + + + + + + + + + +
    +
    +
    +

    +Class android.text.method.DateKeyListener +

    + + +

    + + + + + + + + +
    Added Methods +
    + + int getInputType() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.DateTimeKeyListener.html b/docs/html/sdk/api_diff/3/changes/android.text.method.DateTimeKeyListener.html new file mode 100644 index 000000000000..82734d3833ef --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.DateTimeKeyListener.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.text.method.DateTimeKeyListener + + + + + + + + + + +
    +
    +
    +

    +Class android.text.method.DateTimeKeyListener +

    + + +

    + + + + + + + + +
    Added Methods +
    + + int getInputType() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.DialerKeyListener.html b/docs/html/sdk/api_diff/3/changes/android.text.method.DialerKeyListener.html new file mode 100644 index 000000000000..435e701ed689 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.DialerKeyListener.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.text.method.DialerKeyListener + + + + + + + + + + +
    +
    +
    +

    +Class android.text.method.DialerKeyListener +

    + + +

    + + + + + + + + +
    Added Methods +
    + + int getInputType() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.DigitsKeyListener.html b/docs/html/sdk/api_diff/3/changes/android.text.method.DigitsKeyListener.html new file mode 100644 index 000000000000..f33d5fe695bd --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.DigitsKeyListener.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.text.method.DigitsKeyListener + + + + + + + + + + +
    +
    +
    +

    +Class android.text.method.DigitsKeyListener +

    + + +

    + + + + + + + + +
    Added Methods +
    + + int getInputType() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.KeyListener.html b/docs/html/sdk/api_diff/3/changes/android.text.method.KeyListener.html new file mode 100644 index 000000000000..2b24f03c022d --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.KeyListener.html @@ -0,0 +1,137 @@ + + + + + + + + + +android.text.method.KeyListener + + + + + + + + + + +
    +
    +
    +

    +Interface android.text.method.KeyListener +

    + + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + void clearMetaKeyState(View, Editable, int) +  
    + + int getInputType() +  
    + + boolean onKeyOther(View, Editable, KeyEvent) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.MetaKeyKeyListener.html b/docs/html/sdk/api_diff/3/changes/android.text.method.MetaKeyKeyListener.html new file mode 100644 index 000000000000..ecdedc1edb85 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.MetaKeyKeyListener.html @@ -0,0 +1,186 @@ + + + + + + + + + +android.text.method.MetaKeyKeyListener + + + + + + + + + + +
    +
    +
    +

    +Class android.text.method.MetaKeyKeyListener +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + long adjustMetaAfterKeypress(long) +  
    + + long clearMetaKeyState(long, int) +  
    + + void clearMetaKeyState(View, Editable, int) +  
    + + void clearMetaKeyState(Editable, int) +  
    + + int getMetaState(long) +  
    + + int getMetaState(long, int) +  
    + + long handleKeyDown(long, int, KeyEvent) +  
    + + long handleKeyUp(long, int, KeyEvent) +  
    + + boolean isSelectingMetaTracker(CharSequence, Object) +  
    + + long resetLockedMeta(long) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.MovementMethod.html b/docs/html/sdk/api_diff/3/changes/android.text.method.MovementMethod.html new file mode 100644 index 000000000000..a86dff5fea56 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.MovementMethod.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.text.method.MovementMethod + + + + + + + + + + +
    +
    +
    +

    +Interface android.text.method.MovementMethod +

    + + +

    + + + + + + + + +
    Added Methods +
    + + boolean onKeyOther(TextView, Spannable, KeyEvent) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.MultiTapKeyListener.html b/docs/html/sdk/api_diff/3/changes/android.text.method.MultiTapKeyListener.html new file mode 100644 index 000000000000..b7c2f52694ec --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.MultiTapKeyListener.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.text.method.MultiTapKeyListener + + + + + + + + + + +
    +
    +
    +

    +Class android.text.method.MultiTapKeyListener +

    + + +

    + + + + + + + + +
    Added Methods +
    + + int getInputType() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.QwertyKeyListener.html b/docs/html/sdk/api_diff/3/changes/android.text.method.QwertyKeyListener.html new file mode 100644 index 000000000000..fff86c659b13 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.QwertyKeyListener.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.text.method.QwertyKeyListener + + + + + + + + + + +
    +
    +
    +

    +Class android.text.method.QwertyKeyListener +

    + + +

    + + + + + + + + +
    Added Methods +
    + + int getInputType() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.ScrollingMovementMethod.html b/docs/html/sdk/api_diff/3/changes/android.text.method.ScrollingMovementMethod.html new file mode 100644 index 000000000000..acf5dcd844aa --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.ScrollingMovementMethod.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.text.method.ScrollingMovementMethod + + + + + + + + + + +
    +
    +
    +

    +Class android.text.method.ScrollingMovementMethod +

    + + +

    + + + + + + + + +
    Added Methods +
    + + boolean onKeyOther(TextView, Spannable, KeyEvent) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.TextKeyListener.html b/docs/html/sdk/api_diff/3/changes/android.text.method.TextKeyListener.html new file mode 100644 index 000000000000..f905b3fe75f3 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.TextKeyListener.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.text.method.TextKeyListener + + + + + + + + + + +
    +
    +
    +

    +Class android.text.method.TextKeyListener +

    + + +

    + + + + + + + + +
    Added Methods +
    + + int getInputType() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.TimeKeyListener.html b/docs/html/sdk/api_diff/3/changes/android.text.method.TimeKeyListener.html new file mode 100644 index 000000000000..0545b2fb4266 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.TimeKeyListener.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.text.method.TimeKeyListener + + + + + + + + + + +
    +
    +
    +

    +Class android.text.method.TimeKeyListener +

    + + +

    + + + + + + + + +
    Added Methods +
    + + int getInputType() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.method.Touch.html b/docs/html/sdk/api_diff/3/changes/android.text.method.Touch.html new file mode 100644 index 000000000000..fd0f64a6a3c8 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.method.Touch.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.text.method.Touch + + + + + + + + + + +
    +
    +
    +

    +Class android.text.method.Touch +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + int getInitialScrollX(TextView, Spannable) +  
    + + int getInitialScrollY(TextView, Spannable) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.AbsoluteSizeSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.AbsoluteSizeSpan.html new file mode 100644 index 000000000000..32b1098ef891 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.AbsoluteSizeSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.AbsoluteSizeSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.AbsoluteSizeSpan +

    +

    Added interface android.text.ParcelableSpan.
    + +

    + + + + + + + + +
    Added Constructors +
    + + AbsoluteSizeSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.AlignmentSpan.Standard.html b/docs/html/sdk/api_diff/3/changes/android.text.style.AlignmentSpan.Standard.html new file mode 100644 index 000000000000..86b03d47bbfb --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.AlignmentSpan.Standard.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.AlignmentSpan.Standard + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.AlignmentSpan.Standard +

    +

    Added interface android.text.ParcelableSpan.
    + +

    + + + + + + + + +
    Added Constructors +
    + + AlignmentSpan.Standard(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.BackgroundColorSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.BackgroundColorSpan.html new file mode 100644 index 000000000000..b7705aaee5f1 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.BackgroundColorSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.BackgroundColorSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.BackgroundColorSpan +

    +

    Added interfaces android.text.ParcelableSpan, android.text.style.UpdateAppearance.
    + +

    + + + + + + + + +
    Added Constructors +
    + + BackgroundColorSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.BulletSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.BulletSpan.html new file mode 100644 index 000000000000..10f6d2aa0445 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.BulletSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.BulletSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.BulletSpan +

    +

    Added interface android.text.ParcelableSpan.
    + +

    + + + + + + + + +
    Added Constructors +
    + + BulletSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.ClickableSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.ClickableSpan.html new file mode 100644 index 000000000000..0d7fecb93a4d --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.ClickableSpan.html @@ -0,0 +1,109 @@ + + + + + + + + + +android.text.style.ClickableSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.ClickableSpan +

    +

    Added interface android.text.style.UpdateAppearance.
    + + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.DynamicDrawableSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.DynamicDrawableSpan.html new file mode 100644 index 000000000000..2bc83fa5da73 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.DynamicDrawableSpan.html @@ -0,0 +1,167 @@ + + + + + + + + + +android.text.style.DynamicDrawableSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.DynamicDrawableSpan +

    + +

    + + + + + + + + +
    Added Constructors +
    + + DynamicDrawableSpan(int) +  
    +  + +

    + + + + + + + + +
    Added Methods +
    + + int getVerticalAlignment() +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int ALIGN_BASELINE +  
    + + int ALIGN_BOTTOM +  
    + + int mVerticalAlignment +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.ForegroundColorSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.ForegroundColorSpan.html new file mode 100644 index 000000000000..fa483c002d9f --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.ForegroundColorSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.ForegroundColorSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.ForegroundColorSpan +

    +

    Added interfaces android.text.ParcelableSpan, android.text.style.UpdateAppearance.
    + +

    + + + + + + + + +
    Added Constructors +
    + + ForegroundColorSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.ImageSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.ImageSpan.html new file mode 100644 index 000000000000..459e2b7e510c --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.ImageSpan.html @@ -0,0 +1,151 @@ + + + + + + + + + +android.text.style.ImageSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.ImageSpan +

    + +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Constructors +
    + + ImageSpan(Context, Uri, int) +  
    + + ImageSpan(Context, int, int) +  
    + + ImageSpan(Bitmap, int) +  
    + + ImageSpan(Drawable, int) +  
    + + ImageSpan(Drawable, String, int) +  
    +  + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.LeadingMarginSpan.Standard.html b/docs/html/sdk/api_diff/3/changes/android.text.style.LeadingMarginSpan.Standard.html new file mode 100644 index 000000000000..922bcbc607bc --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.LeadingMarginSpan.Standard.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.LeadingMarginSpan.Standard + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.LeadingMarginSpan.Standard +

    +

    Added interface android.text.ParcelableSpan.
    + +

    + + + + + + + + +
    Added Constructors +
    + + LeadingMarginSpan.Standard(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.MaskFilterSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.MaskFilterSpan.html new file mode 100644 index 000000000000..fbd8db93560c --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.MaskFilterSpan.html @@ -0,0 +1,109 @@ + + + + + + + + + +android.text.style.MaskFilterSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.MaskFilterSpan +

    +

    Added interface android.text.style.UpdateAppearance.
    + + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.QuoteSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.QuoteSpan.html new file mode 100644 index 000000000000..334c2233552a --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.QuoteSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.QuoteSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.QuoteSpan +

    +

    Added interface android.text.ParcelableSpan.
    + +

    + + + + + + + + +
    Added Constructors +
    + + QuoteSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.RasterizerSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.RasterizerSpan.html new file mode 100644 index 000000000000..62fb6479f8f7 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.RasterizerSpan.html @@ -0,0 +1,109 @@ + + + + + + + + + +android.text.style.RasterizerSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.RasterizerSpan +

    +

    Added interface android.text.style.UpdateAppearance.
    + + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.RelativeSizeSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.RelativeSizeSpan.html new file mode 100644 index 000000000000..17d97fba524b --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.RelativeSizeSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.RelativeSizeSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.RelativeSizeSpan +

    +

    Added interface android.text.ParcelableSpan.
    + +

    + + + + + + + + +
    Added Constructors +
    + + RelativeSizeSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.ScaleXSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.ScaleXSpan.html new file mode 100644 index 000000000000..ee289f518ff2 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.ScaleXSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.ScaleXSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.ScaleXSpan +

    +

    Added interface android.text.ParcelableSpan.
    + +

    + + + + + + + + +
    Added Constructors +
    + + ScaleXSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.StrikethroughSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.StrikethroughSpan.html new file mode 100644 index 000000000000..f045b964395f --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.StrikethroughSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.StrikethroughSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.StrikethroughSpan +

    +

    Added interfaces android.text.ParcelableSpan, android.text.style.UpdateAppearance.
    + +

    + + + + + + + + +
    Added Constructors +
    + + StrikethroughSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.StyleSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.StyleSpan.html new file mode 100644 index 000000000000..fcc16080d017 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.StyleSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.StyleSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.StyleSpan +

    +

    Added interface android.text.ParcelableSpan.
    + +

    + + + + + + + + +
    Added Constructors +
    + + StyleSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.SubscriptSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.SubscriptSpan.html new file mode 100644 index 000000000000..ec3d56242b15 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.SubscriptSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.SubscriptSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.SubscriptSpan +

    +

    Added interface android.text.ParcelableSpan.
    + +

    + + + + + + + + +
    Added Constructors +
    + + SubscriptSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.SuperscriptSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.SuperscriptSpan.html new file mode 100644 index 000000000000..853be697af24 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.SuperscriptSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.SuperscriptSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.SuperscriptSpan +

    +

    Added interface android.text.ParcelableSpan.
    + +

    + + + + + + + + +
    Added Constructors +
    + + SuperscriptSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.TextAppearanceSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.TextAppearanceSpan.html new file mode 100644 index 000000000000..719e68f0ce14 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.TextAppearanceSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.TextAppearanceSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.TextAppearanceSpan +

    +

    Added interface android.text.ParcelableSpan.
    + +

    + + + + + + + + +
    Added Constructors +
    + + TextAppearanceSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.TypefaceSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.TypefaceSpan.html new file mode 100644 index 000000000000..01b74e73408e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.TypefaceSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.TypefaceSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.TypefaceSpan +

    +

    Added interface android.text.ParcelableSpan.
    + +

    + + + + + + + + +
    Added Constructors +
    + + TypefaceSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.URLSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.URLSpan.html new file mode 100644 index 000000000000..2a659a4e35c0 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.URLSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.URLSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.URLSpan +

    +

    Added interface android.text.ParcelableSpan.
    + +

    + + + + + + + + +
    Added Constructors +
    + + URLSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.UnderlineSpan.html b/docs/html/sdk/api_diff/3/changes/android.text.style.UnderlineSpan.html new file mode 100644 index 000000000000..6c596a03da91 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.UnderlineSpan.html @@ -0,0 +1,153 @@ + + + + + + + + + +android.text.style.UnderlineSpan + + + + + + + + + + +
    +
    +
    +

    +Class android.text.style.UnderlineSpan +

    +

    Added interfaces android.text.ParcelableSpan, android.text.style.UpdateAppearance.
    + +

    + + + + + + + + +
    Added Constructors +
    + + UnderlineSpan(Parcel) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int describeContents() +  
    + + int getSpanTypeId() +  
    + + void writeToParcel(Parcel, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.text.style.UpdateLayout.html b/docs/html/sdk/api_diff/3/changes/android.text.style.UpdateLayout.html new file mode 100644 index 000000000000..4cca7b433476 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.text.style.UpdateLayout.html @@ -0,0 +1,109 @@ + + + + + + + + + +android.text.style.UpdateLayout + + + + + + + + + + +
    +
    +
    +

    +Interface android.text.style.UpdateLayout +

    +

    Added interface android.text.style.UpdateAppearance.
    + + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.util.SparseIntArray.html b/docs/html/sdk/api_diff/3/changes/android.util.SparseIntArray.html new file mode 100644 index 000000000000..5657765133fd --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.util.SparseIntArray.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.util.SparseIntArray + + + + + + + + + + +
    +
    +
    +

    +Class android.util.SparseIntArray +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void removeAt(int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.util.TimeUtils.html b/docs/html/sdk/api_diff/3/changes/android.util.TimeUtils.html new file mode 100644 index 000000000000..3317fae27bb3 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.util.TimeUtils.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.util.TimeUtils + + + + + + + + + + +
    +
    +
    +

    +Class android.util.TimeUtils +

    + + +

    + + + + + + + + +
    Added Methods +
    + + String getTimeZoneDatabaseVersion() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.GestureDetector.SimpleOnGestureListener.html b/docs/html/sdk/api_diff/3/changes/android.view.GestureDetector.SimpleOnGestureListener.html new file mode 100644 index 000000000000..0e00c6047a5e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.GestureDetector.SimpleOnGestureListener.html @@ -0,0 +1,138 @@ + + + + + + + + + +android.view.GestureDetector.SimpleOnGestureListener + + + + + + + + + + +
    +
    +
    +

    +Class android.view.GestureDetector.SimpleOnGestureListener +

    +

    Added interface android.view.GestureDetector.OnDoubleTapListener.
    + + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + boolean onDoubleTap(MotionEvent) +  
    + + boolean onDoubleTapEvent(MotionEvent) +  
    + + boolean onSingleTapConfirmed(MotionEvent) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.GestureDetector.html b/docs/html/sdk/api_diff/3/changes/android.view.GestureDetector.html new file mode 100644 index 000000000000..dec5a4d9da9a --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.GestureDetector.html @@ -0,0 +1,173 @@ + + + + + + + + + +android.view.GestureDetector + + + + + + + + + + +
    +
    +
    +

    +Class android.view.GestureDetector +

    + +

    + + + + + + + + + + + + +
    Added Constructors +
    + + GestureDetector(Context, OnGestureListener) +  
    + + GestureDetector(Context, OnGestureListener, Handler) +  
    +  +

    + + + + + + + + + + + + + + +
    Changed Constructors +
    + + GestureDetector(OnGestureListener) + +Now deprecated.
    +
     
    + + GestureDetector(OnGestureListener, Handler) + +Now deprecated.
    +
     
    +  + +

    + + + + + + + + +
    Added Methods +
    + + void setOnDoubleTapListener(OnDoubleTapListener) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.Gravity.html b/docs/html/sdk/api_diff/3/changes/android.view.Gravity.html new file mode 100644 index 000000000000..1aa10d3682fb --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.Gravity.html @@ -0,0 +1,166 @@ + + + + + + + + + +android.view.Gravity + + + + + + + + + + +
    +
    +
    +

    +Class android.view.Gravity +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void applyDisplay(int, Rect, Rect) +  
    +  + +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int AXIS_CLIP +  
    + + int CLIP_HORIZONTAL +  
    + + int CLIP_VERTICAL +  
    + + int DISPLAY_CLIP_HORIZONTAL +  
    + + int DISPLAY_CLIP_VERTICAL +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.KeyCharacterMap.html b/docs/html/sdk/api_diff/3/changes/android.view.KeyCharacterMap.html new file mode 100644 index 000000000000..7a409cbe1308 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.KeyCharacterMap.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.view.KeyCharacterMap + + + + + + + + + + +
    +
    +
    +

    +Class android.view.KeyCharacterMap +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + boolean deviceHasKey(int) +  
    + + boolean[] deviceHasKeys(int[]) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.KeyEvent.html b/docs/html/sdk/api_diff/3/changes/android.view.KeyEvent.html new file mode 100644 index 000000000000..bf3ec6b22e01 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.KeyEvent.html @@ -0,0 +1,275 @@ + + + + + + + + + +android.view.KeyEvent + + + + + + + + + + +
    +
    +
    +

    +Class android.view.KeyEvent +

    + +

    + + + + + + + + + + + + +
    Added Constructors +
    + + KeyEvent(KeyEvent) +  
    + + KeyEvent(long, String, int, int) +  
    +  + +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + KeyEvent changeAction(KeyEvent, int) +  
    + + KeyEvent changeFlags(KeyEvent, int) +  
    + + KeyEvent changeTimeRepeat(KeyEvent, long, int) +  
    + + String getCharacters() +  
    + + int getMaxKeyCode() +  
    +  + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int FLAG_EDITOR_ACTION +  
    + + int FLAG_FROM_SYSTEM +  
    + + int FLAG_KEEP_TOUCH_MODE +  
    + + int FLAG_SOFT_KEYBOARD +  
    + + int KEYCODE_MEDIA_FAST_FORWARD +  
    + + int KEYCODE_MEDIA_NEXT +  
    + + int KEYCODE_MEDIA_PLAY_PAUSE +  
    + + int KEYCODE_MEDIA_PREVIOUS +  
    + + int KEYCODE_MEDIA_REWIND +  
    + + int KEYCODE_MEDIA_STOP +  
    + + int KEYCODE_MUTE +  
    +  +

    + + + + + + + + + +
    Changed Fields +
    + + int MAX_KEYCODE +Now deprecated.
    +
     
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.Menu.html b/docs/html/sdk/api_diff/3/changes/android.view.Menu.html new file mode 100644 index 000000000000..09b910a42688 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.Menu.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.view.Menu + + + + + + + + + + +
    +
    +
    +

    +Interface android.view.Menu +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + void close() +  
    + + MenuItem getItem(int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.MotionEvent.html b/docs/html/sdk/api_diff/3/changes/android.view.MotionEvent.html new file mode 100644 index 000000000000..5291df778213 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.MotionEvent.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.view.MotionEvent + + + + + + + + + + +
    +
    +
    +

    +Class android.view.MotionEvent +

    + + + +

    + + + + + + + + +
    Added Fields +
    + + int ACTION_OUTSIDE +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.OrientationListener.html b/docs/html/sdk/api_diff/3/changes/android.view.OrientationListener.html new file mode 100644 index 000000000000..ac58489da46a --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.OrientationListener.html @@ -0,0 +1,124 @@ + + + + + + + + + +android.view.OrientationListener + + + + + + + + + + +
    +
    +
    +

    +Class android.view.OrientationListener +

    +

    Now deprecated.
    + +

    + + + + + + + + +
    Added Constructors +
    + + OrientationListener(Context, int) +  
    +  + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.View.html b/docs/html/sdk/api_diff/3/changes/android.view.View.html new file mode 100644 index 000000000000..ccd58a9d2c8a --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.View.html @@ -0,0 +1,257 @@ + + + + + + + + + +android.view.View + + + + + + + + + + +
    +
    +
    +

    +Class android.view.View +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + boolean checkInputConnectionProxy(View) +  
    + + boolean dispatchKeyEventPreIme(KeyEvent) +  
    + + void getWindowVisibleDisplayFrame(Rect) +  
    + + boolean isHapticFeedbackEnabled() +  
    + + boolean isInEditMode() +  
    + + boolean onCheckIsTextEditor() +  
    + + InputConnection onCreateInputConnection(EditorInfo) +  
    + + void onFinishTemporaryDetach() +  
    + + boolean onKeyPreIme(int, KeyEvent) +  
    + + void onStartTemporaryDetach() +  
    + + boolean performHapticFeedback(int) +  
    + + boolean performHapticFeedback(int, int) +  
    + + void setHapticFeedbackEnabled(boolean) +  
    + + void setScrollContainer(boolean) +  
    +  +

    + + + + + + + + + + + + + + +
    Changed Methods +
    + + Handler getHandler() + +Change of visibility from protected to public.
    +
     
    + + void playSoundEffect(int) + +Change of visibility from protected to public.
    +
     
    +  + +

    + + + + + + + + +
    Added Fields +
    + + int HAPTIC_FEEDBACK_ENABLED +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.ViewConfiguration.html b/docs/html/sdk/api_diff/3/changes/android.view.ViewConfiguration.html new file mode 100644 index 000000000000..0bf487c289d7 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.ViewConfiguration.html @@ -0,0 +1,282 @@ + + + + + + + + + +android.view.ViewConfiguration + + + + + + + + + + +
    +
    +
    +

    +Class android.view.ViewConfiguration +

    + +

    + + + + + + + + + +
    Changed Constructors +
    + + ViewConfiguration() + +Now deprecated.
    +
     
    +  + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + ViewConfiguration get(Context) +  
    + + int getDoubleTapTimeout() +  
    + + int getScaledDoubleTapSlop() +  
    + + int getScaledEdgeSlop() +  
    + + int getScaledFadingEdgeLength() +  
    + + int getScaledMaximumDrawingCacheSize() +  
    + + int getScaledMinimumFlingVelocity() +  
    + + int getScaledScrollBarSize() +  
    + + int getScaledTouchSlop() +  
    + + int getScaledWindowTouchSlop() +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Methods +
    + + int getEdgeSlop() + +Now deprecated.
    +
     
    + + int getFadingEdgeLength() + +Now deprecated.
    +
     
    + + int getMaximumDrawingCacheSize() + +Now deprecated.
    +
     
    + + int getMinimumFlingVelocity() + +Now deprecated.
    +
     
    + + int getScrollBarSize() + +Now deprecated.
    +
     
    + + int getTouchSlop() + +Now deprecated.
    +
     
    + + int getWindowTouchSlop() + +Now deprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.ViewDebug.html b/docs/html/sdk/api_diff/3/changes/android.view.ViewDebug.html new file mode 100644 index 000000000000..17c0c8a34ebe --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.ViewDebug.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.view.ViewDebug + + + + + + + + + + +
    +
    +
    +

    +Class android.view.ViewDebug +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void dumpCapturedView(String, Object) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.ViewGroup.html b/docs/html/sdk/api_diff/3/changes/android.view.ViewGroup.html new file mode 100644 index 000000000000..589f266ff2cf --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.ViewGroup.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.view.ViewGroup + + + + + + + + + + +
    +
    +
    +

    +Class android.view.ViewGroup +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void setStaticTransformationsEnabled(boolean) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.ViewParent.html b/docs/html/sdk/api_diff/3/changes/android.view.ViewParent.html new file mode 100644 index 000000000000..536e7e95c4fd --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.ViewParent.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.view.ViewParent + + + + + + + + + + +
    +
    +
    +

    +Interface android.view.ViewParent +

    + + +

    + + + + + + + + +
    Added Methods +
    + + boolean requestChildRectangleOnScreen(View, Rect, boolean) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.ViewTreeObserver.html b/docs/html/sdk/api_diff/3/changes/android.view.ViewTreeObserver.html new file mode 100644 index 000000000000..41753a737d44 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.ViewTreeObserver.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.view.ViewTreeObserver + + + + + + + + + + +
    +
    +
    +

    +Class android.view.ViewTreeObserver +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + void addOnScrollChangedListener(OnScrollChangedListener) +  
    + + void removeOnScrollChangedListener(OnScrollChangedListener) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.Window.html b/docs/html/sdk/api_diff/3/changes/android.view.Window.html new file mode 100644 index 000000000000..d84eb2b11810 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.Window.html @@ -0,0 +1,137 @@ + + + + + + + + + +android.view.Window + + + + + + + + + + +
    +
    +
    +

    +Class android.view.Window +

    + + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + boolean hasSoftInputMode() +  
    + + void setSoftInputMode(int) +  
    + + void setWindowAnimations(int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.WindowManager.LayoutParams.html b/docs/html/sdk/api_diff/3/changes/android.view.WindowManager.LayoutParams.html new file mode 100644 index 000000000000..7304b0ea7876 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.WindowManager.LayoutParams.html @@ -0,0 +1,292 @@ + + + + + + + + + +android.view.WindowManager.LayoutParams + + + + + + + + + + +
    +
    +
    +

    +Class android.view.WindowManager.LayoutParams +

    + + +

    + + + + + + + + +
    Added Methods +
    + + boolean mayUseInputMethod(int) +  
    +  + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int FLAG_ALT_FOCUSABLE_IM +  
    + + int FLAG_WATCH_OUTSIDE_TOUCH +  
    + + int SCREEN_BRIGHTNESS_CHANGED +  
    + + int SCREEN_ORIENTATION_CHANGED +  
    + + int SOFT_INPUT_ADJUST_PAN +  
    + + int SOFT_INPUT_ADJUST_RESIZE +  
    + + int SOFT_INPUT_ADJUST_UNSPECIFIED +  
    + + int SOFT_INPUT_IS_FORWARD_NAVIGATION +  
    + + int SOFT_INPUT_MASK_ADJUST +  
    + + int SOFT_INPUT_MASK_STATE +  
    + + int SOFT_INPUT_MODE_CHANGED +  
    + + int SOFT_INPUT_STATE_ALWAYS_HIDDEN +  
    + + int SOFT_INPUT_STATE_ALWAYS_VISIBLE +  
    + + int SOFT_INPUT_STATE_HIDDEN +  
    + + int SOFT_INPUT_STATE_UNCHANGED +  
    + + int SOFT_INPUT_STATE_UNSPECIFIED +  
    + + int SOFT_INPUT_STATE_VISIBLE +  
    + + int TYPE_APPLICATION_ATTACHED_DIALOG +  
    + + int TYPE_INPUT_METHOD +  
    + + int TYPE_INPUT_METHOD_DIALOG +  
    + + float screenBrightness +  
    + + int screenOrientation +  
    + + int softInputMode +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.animation.Animation.html b/docs/html/sdk/api_diff/3/changes/android.view.animation.Animation.html new file mode 100644 index 000000000000..9cdf434cb74e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.animation.Animation.html @@ -0,0 +1,138 @@ + + + + + + + + + +android.view.animation.Animation + + + + + + + + + + +
    +
    +
    +

    +Class android.view.animation.Animation +

    +

    Added interface java.lang.Cloneable.
    + + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + long computeDurationHint() +  
    + + boolean isFillEnabled() +  
    + + void setFillEnabled(boolean) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.view.animation.Transformation.html b/docs/html/sdk/api_diff/3/changes/android.view.animation.Transformation.html new file mode 100644 index 000000000000..8c5cbf55cf32 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.view.animation.Transformation.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.view.animation.Transformation + + + + + + + + + + +
    +
    +
    +

    +Class android.view.animation.Transformation +

    + + +

    + + + + + + + + +
    Added Methods +
    + + String toShortString() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.webkit.URLUtil.html b/docs/html/sdk/api_diff/3/changes/android.webkit.URLUtil.html new file mode 100644 index 000000000000..cff874168f2d --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.webkit.URLUtil.html @@ -0,0 +1,126 @@ + + + + + + + + + +android.webkit.URLUtil + + + + + + + + + + +
    +
    +
    +

    +Class android.webkit.URLUtil +

    + + +

    + + + + + + + + + +
    Changed Methods +
    + + boolean isCookielessProxyUrl(String) + +Now deprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.webkit.UrlInterceptHandler.html b/docs/html/sdk/api_diff/3/changes/android.webkit.UrlInterceptHandler.html new file mode 100644 index 000000000000..8664bc6e18f7 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.webkit.UrlInterceptHandler.html @@ -0,0 +1,141 @@ + + + + + + + + + +android.webkit.UrlInterceptHandler + + + + + + + + + + +
    +
    +
    +

    +Interface android.webkit.UrlInterceptHandler +

    + + +

    + + + + + + + + +
    Added Methods +
    + + PluginData getPluginData(String, Map<String, String>) +  
    +  +

    + + + + + + + + + +
    Changed Methods +
    + + CacheResult service(String, Map<String, String>) + +Now deprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.webkit.UrlInterceptRegistry.html b/docs/html/sdk/api_diff/3/changes/android.webkit.UrlInterceptRegistry.html new file mode 100644 index 000000000000..09d11496ddf4 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.webkit.UrlInterceptRegistry.html @@ -0,0 +1,141 @@ + + + + + + + + + +android.webkit.UrlInterceptRegistry + + + + + + + + + + +
    +
    +
    +

    +Class android.webkit.UrlInterceptRegistry +

    + + +

    + + + + + + + + +
    Added Methods +
    + + PluginData getPluginData(String, Map<String, String>) +  
    +  +

    + + + + + + + + + +
    Changed Methods +
    + + CacheResult getSurrogate(String, Map<String, String>) + +Now deprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.webkit.WebHistoryItem.html b/docs/html/sdk/api_diff/3/changes/android.webkit.WebHistoryItem.html new file mode 100644 index 000000000000..10140196bb07 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.webkit.WebHistoryItem.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.webkit.WebHistoryItem + + + + + + + + + + +
    +
    +
    +

    +Class android.webkit.WebHistoryItem +

    + + +

    + + + + + + + + +
    Added Methods +
    + + String getOriginalUrl() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.webkit.WebSettings.html b/docs/html/sdk/api_diff/3/changes/android.webkit.WebSettings.html new file mode 100644 index 000000000000..eb421cf63ad7 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.webkit.WebSettings.html @@ -0,0 +1,186 @@ + + + + + + + + + +android.webkit.WebSettings + + + + + + + + + + +
    +
    +
    +

    +Class android.webkit.WebSettings +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + boolean getAllowFileAccess() +  
    + + boolean getBuiltInZoomControls() +  
    + + String getUserAgentString() +  
    + + void setAllowFileAccess(boolean) +  
    + + void setBuiltInZoomControls(boolean) +  
    + + void setUserAgentString(String) +  
    +  +

    + + + + + + + + + + + + + + +
    Changed Methods +
    + + int getUserAgent() + +Now deprecated.
    +
     
    + + void setUserAgent(int) + +Now deprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.webkit.WebView.html b/docs/html/sdk/api_diff/3/changes/android.webkit.WebView.html new file mode 100644 index 000000000000..cd721c8fdfff --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.webkit.WebView.html @@ -0,0 +1,193 @@ + + + + + + + + + +android.webkit.WebView + + + + + + + + + + +
    +
    +
    +

    +Class android.webkit.WebView +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + void clearMatches() +  
    + + int findAll(String) +  
    + + void findNext(boolean) +  
    + + String getOriginalUrl() +  
    + + boolean restorePicture(Bundle, File) +  
    + + boolean savePicture(Bundle, File) +  
    + + void setNetworkAvailable(boolean) +  
    +  +

    + + + + + + + + + + + + + + +
    Changed Methods +
    + + View getZoomControls() + +Now deprecated.
    +
     
    + + void onGlobalFocusChanged(View, View) + +Now deprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.AbsListView.html b/docs/html/sdk/api_diff/3/changes/android.widget.AbsListView.html new file mode 100644 index 000000000000..6d1ed3535a44 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.AbsListView.html @@ -0,0 +1,151 @@ + + + + + + + + + +android.widget.AbsListView + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.AbsListView +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + CharSequence getTextFilter() +  
    + + boolean isFastScrollEnabled() +  
    + + boolean isSmoothScrollbarEnabled() +  
    + + void setFastScrollEnabled(boolean) +  
    + + void setSmoothScrollbarEnabled(boolean) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.AbsSeekBar.html b/docs/html/sdk/api_diff/3/changes/android.widget.AbsSeekBar.html new file mode 100644 index 000000000000..128b31f182e9 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.AbsSeekBar.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.widget.AbsSeekBar + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.AbsSeekBar +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + int getKeyProgressIncrement() +  
    + + void setKeyProgressIncrement(int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.AbsoluteLayout.html b/docs/html/sdk/api_diff/3/changes/android.widget.AbsoluteLayout.html new file mode 100644 index 000000000000..77025f08c08e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.AbsoluteLayout.html @@ -0,0 +1,109 @@ + + + + + + + + + +android.widget.AbsoluteLayout + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.AbsoluteLayout +

    +

    Now deprecated.
    + + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.ArrayAdapter.html b/docs/html/sdk/api_diff/3/changes/android.widget.ArrayAdapter.html new file mode 100644 index 000000000000..0beed263f3fb --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.ArrayAdapter.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.widget.ArrayAdapter + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.ArrayAdapter +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void sort(Comparator<? super T>) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.AutoCompleteTextView.html b/docs/html/sdk/api_diff/3/changes/android.widget.AutoCompleteTextView.html new file mode 100644 index 000000000000..a6e89e41b564 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.AutoCompleteTextView.html @@ -0,0 +1,214 @@ + + + + + + + + + +android.widget.AutoCompleteTextView + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.AutoCompleteTextView +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + void clearListSelection() +  
    + + int getDropDownAnchor() +  
    + + int getDropDownWidth() +  
    + + int getListSelection() +  
    + + OnItemClickListener getOnItemClickListener() +  
    + + OnItemSelectedListener getOnItemSelectedListener() +  
    + + boolean isPerformingCompletion() +  
    + + void setDropDownAnchor(int) +  
    + + void setDropDownWidth(int) +  
    + + void setListSelection(int) +  
    +  +

    + + + + + + + + + + + + + + +
    Changed Methods +
    + + OnItemClickListener getItemClickListener() + +Now deprecated.
    +
     
    + + OnItemSelectedListener getItemSelectedListener() + +Now deprecated.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.Chronometer.html b/docs/html/sdk/api_diff/3/changes/android.widget.Chronometer.html new file mode 100644 index 000000000000..2a82a201933a --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.Chronometer.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.widget.Chronometer + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.Chronometer +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + OnChronometerTickListener getOnChronometerTickListener() +  
    + + void setOnChronometerTickListener(OnChronometerTickListener) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.CursorAdapter.html b/docs/html/sdk/api_diff/3/changes/android.widget.CursorAdapter.html new file mode 100644 index 000000000000..0a890300efd1 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.CursorAdapter.html @@ -0,0 +1,161 @@ + + + + + + + + + +android.widget.CursorAdapter + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.CursorAdapter +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void onContentChanged() +  
    +  +

    + + + + + + + + + + + + + + + + + + + +
    Changed Methods +
    + + int getCount() + +Change from final to non-final.
    +
     
    + + Object getItem(int) + +Change from final to non-final.
    +
     
    + + long getItemId(int) + +Change from final to non-final.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.GridView.html b/docs/html/sdk/api_diff/3/changes/android.widget.GridView.html new file mode 100644 index 000000000000..86e019ba9ce0 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.GridView.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.widget.GridView + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.GridView +

    + + + +

    + + + + + + + + +
    Added Fields +
    + + int STRETCH_SPACING_UNIFORM +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.ListView.html b/docs/html/sdk/api_diff/3/changes/android.widget.ListView.html new file mode 100644 index 000000000000..ecaf3096e598 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.ListView.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.widget.ListView + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.ListView +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + void setFooterDividersEnabled(boolean) +  
    + + void setHeaderDividersEnabled(boolean) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.PopupWindow.OnDismissListener.html b/docs/html/sdk/api_diff/3/changes/android.widget.PopupWindow.OnDismissListener.html new file mode 100644 index 000000000000..2e08886708b9 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.PopupWindow.OnDismissListener.html @@ -0,0 +1,109 @@ + + + + + + + + + +android.widget.PopupWindow.OnDismissListener + + + + + + + + + + +
    +
    +
    +

    +Interface android.widget.PopupWindow.OnDismissListener +

    +

    Change of visibility from to public.
    + + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.PopupWindow.html b/docs/html/sdk/api_diff/3/changes/android.widget.PopupWindow.html new file mode 100644 index 000000000000..b3a33037a77e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.PopupWindow.html @@ -0,0 +1,243 @@ + + + + + + + + + +android.widget.PopupWindow + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.PopupWindow +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + int getInputMethodMode() +  
    + + int getMaxAvailableHeight(View, int) +  
    + + boolean isAboveAnchor() +  
    + + boolean isClippingEnabled() +  
    + + boolean isOutsideTouchable() +  
    + + boolean isTouchable() +  
    + + void setClippingEnabled(boolean) +  
    + + void setInputMethodMode(int) +  
    + + void setOutsideTouchable(boolean) +  
    + + void setTouchInterceptor(OnTouchListener) +  
    + + void setTouchable(boolean) +  
    + + void setWindowLayoutMode(int, int) +  
    + + void update() +  
    + + void update(int, int, int, int, boolean) +  
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int INPUT_METHOD_FROM_FOCUSABLE +  
    + + int INPUT_METHOD_NEEDED +  
    + + int INPUT_METHOD_NOT_NEEDED +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.ProgressBar.html b/docs/html/sdk/api_diff/3/changes/android.widget.ProgressBar.html new file mode 100644 index 000000000000..eea94f2b5e04 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.ProgressBar.html @@ -0,0 +1,136 @@ + + + + + + + + + +android.widget.ProgressBar + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.ProgressBar +

    + + +

    + + + + + + + + + + + + + + +
    Changed Methods +
    + + void onRestoreInstanceState(Parcelable) + +Method was inherited from android.view.View, but is now defined locally. Change of visibility from protected to public.
    +
     
    + + Parcelable onSaveInstanceState() + +Method was inherited from android.view.View, but is now defined locally. Change of visibility from protected to public.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.RemoteViews.ActionException.html b/docs/html/sdk/api_diff/3/changes/android.widget.RemoteViews.ActionException.html new file mode 100644 index 000000000000..c2f5c9623291 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.RemoteViews.ActionException.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.widget.RemoteViews.ActionException + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.RemoteViews.ActionException +

    + +

    + + + + + + + + +
    Added Constructors +
    + + RemoteViews.ActionException(Exception) +  
    +  + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.RemoteViews.html b/docs/html/sdk/api_diff/3/changes/android.widget.RemoteViews.html new file mode 100644 index 000000000000..ef8eb0826080 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.RemoteViews.html @@ -0,0 +1,221 @@ + + + + + + + + + +android.widget.RemoteViews + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.RemoteViews +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + void setBitmap(int, String, Bitmap) +  
    + + void setBoolean(int, String, boolean) +  
    + + void setByte(int, String, byte) +  
    + + void setChar(int, String, char) +  
    + + void setCharSequence(int, String, CharSequence) +  
    + + void setDouble(int, String, double) +  
    + + void setFloat(int, String, float) +  
    + + void setImageViewBitmap(int, Bitmap) +  
    + + void setInt(int, String, int) +  
    + + void setLong(int, String, long) +  
    + + void setOnClickPendingIntent(int, PendingIntent) +  
    + + void setShort(int, String, short) +  
    + + void setString(int, String, String) +  
    + + void setTextColor(int, int) +  
    + + void setUri(int, String, Uri) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.ResourceCursorAdapter.html b/docs/html/sdk/api_diff/3/changes/android.widget.ResourceCursorAdapter.html new file mode 100644 index 000000000000..cee8f59b3d29 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.ResourceCursorAdapter.html @@ -0,0 +1,138 @@ + + + + + + + + + +android.widget.ResourceCursorAdapter + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.ResourceCursorAdapter +

    + +

    + + + + + + + + +
    Added Constructors +
    + + ResourceCursorAdapter(Context, int, Cursor, boolean) +  
    +  + +

    + + + + + + + + +
    Added Methods +
    + + void setViewResource(int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.Scroller.html b/docs/html/sdk/api_diff/3/changes/android.widget.Scroller.html new file mode 100644 index 000000000000..e5b524df6658 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.Scroller.html @@ -0,0 +1,130 @@ + + + + + + + + + +android.widget.Scroller + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.Scroller +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + int getStartX() +  
    + + int getStartY() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.SimpleCursorAdapter.html b/docs/html/sdk/api_diff/3/changes/android.widget.SimpleCursorAdapter.html new file mode 100644 index 000000000000..63b7b132902c --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.SimpleCursorAdapter.html @@ -0,0 +1,123 @@ + + + + + + + + + +android.widget.SimpleCursorAdapter + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.SimpleCursorAdapter +

    + + +

    + + + + + + + + +
    Added Methods +
    + + void changeCursorAndColumns(Cursor, String[], int[]) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/android.widget.TextView.html b/docs/html/sdk/api_diff/3/changes/android.widget.TextView.html new file mode 100644 index 000000000000..42ecdc9f58fa --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/android.widget.TextView.html @@ -0,0 +1,333 @@ + + + + + + + + + +android.widget.TextView + + + + + + + + + + +
    +
    +
    +

    +Class android.widget.TextView +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Methods +
    + + void beginBatchEdit() +  
    + + boolean bringPointIntoView(int) +  
    + + void clearComposingText() +  
    + + boolean didTouchFocusSelect() +  
    + + void endBatchEdit() +  
    + + boolean extractText(ExtractedTextRequest, ExtractedText) +  
    + + Editable getEditableText() +  
    + + int getImeActionId() +  
    + + CharSequence getImeActionLabel() +  
    + + int getImeOptions() +  
    + + Bundle getInputExtras(boolean) +  
    + + int getInputType() +  
    + + String getPrivateImeOptions() +  
    + + boolean isInputMethodTarget() +  
    + + boolean moveCursorToVisibleOffset() +  
    + + void onBeginBatchEdit() +  
    + + void onCommitCompletion(CompletionInfo) +  
    + + void onEditorAction(int) +  
    + + void onEndBatchEdit() +  
    + + boolean onPrivateIMECommand(String, Bundle) +  
    + + void onSelectionChanged(int, int) +  
    + + boolean onTextContextMenuItem(int) +  
    + + void setCompoundDrawablesWithIntrinsicBounds(int, int, int, int) +  
    + + void setExtractedText(ExtractedText) +  
    + + void setImeActionLabel(CharSequence, int) +  
    + + void setImeOptions(int) +  
    + + void setInputExtras(int) +  
    + + void setInputType(int) +  
    + + void setOnEditorActionListener(OnEditorActionListener) +  
    + + void setPrivateImeOptions(String) +  
    + + void setRawInputType(int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/changes-summary.html b/docs/html/sdk/api_diff/3/changes/changes-summary.html new file mode 100644 index 000000000000..bf52a9658076 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/changes-summary.html @@ -0,0 +1,451 @@ + + + + + + + + + +Android API Differences Report + + + + + + + + + + +
    +
    +
    +
    +

    Android API Differences Report

    +

    This report details the changes in the core Android framework API between two API Level +specifications. It shows additions, modifications, and removals for packages, classes, methods, and fields. +The report also includes general statistics that characterize the extent and type of the differences.

    +

    This report is based a comparison of the Android API specifications +whose API Level identifiers are given in the upper-right corner of this page. It compares a +newer "to" API to an older "from" API, noting all changes relative to the +older API. So, for example, API elements marked as removed are no longer present in the "to" +API specification.

    +

    To navigate the report, use the "Select a Diffs Index" and "Filter the Index" +controls on the left. The report uses text formatting to indicate interface names, +links to reference documentation, and links to change +description. The statistics are accessible from the "Statistics" link in the upper-right corner.

    +

    For more information about the Android framework API and SDK, +see the Android Developers site.

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Packages +
    + + android.appwidget +  
    + + android.inputmethodservice +  
    + + android.speech +  
    + + android.text.format +  
    + + android.view.inputmethod +  
    + + java.beans +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Packages +
    + + android +  
    + + android.app +  
    + + android.content +  
    + + android.content.pm +  
    + + android.content.res +  
    + + android.database +  
    + + android.database.sqlite +  
    + + android.graphics +  
    + + android.graphics.drawable +  
    + + android.graphics.drawable.shapes +  
    + + android.hardware +  
    + + android.location +  
    + + android.media +  
    + + android.net +  
    + + android.net.wifi +  
    + + android.opengl +  
    + + android.os +  
    + + android.preference +  
    + + android.provider +  
    + + android.telephony +  
    + + android.telephony.gsm +  
    + + android.test +  
    + + android.test.mock +  
    + + android.test.suitebuilder +  
    + + android.text +  
    + + android.text.method +  
    + + android.text.style +  
    + + android.util +  
    + + android.view +  
    + + android.view.animation +  
    + + android.webkit +  
    + + android.widget +  
    + + dalvik.system +  
    + + java.lang +  
    + + java.lang.reflect +  
    + + java.net +  
    + + java.util +  
    + + java.util.jar +  
    + + java.util.logging +  
    +  + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/classes_index_additions.html b/docs/html/sdk/api_diff/3/changes/classes_index_additions.html new file mode 100644 index 000000000000..32a68e3117fd --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/classes_index_additions.html @@ -0,0 +1,469 @@ + + + + + + + + + +Class Additions Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Classes +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + +
    A  +C +D +G +H +I +J +L +M +N +O +P +R +S +T +U +V + TOP +

    +ActivityInstrumentationTestCase2
    +ActivityManager.RunningAppProcessInfo
    +AlphabetIndexer
    +AssetFileDescriptor.AutoCloseInputStream
    +AssetFileDescriptor.AutoCloseOutputStream
    +AsyncTask
    +AsyncTask.Status
    +AudioFormat
    +AudioRecord
    +AudioRecord.OnRecordPositionUpdateListener
    +AudioTrack
    +AudioTrack.OnPlaybackPositionUpdateListener
    + +
    C  +A +D +G +H +I +J +L +M +N +O +P +R +S +T +U +V + TOP +

    +Chronometer.OnChronometerTickListener
    +ConfigurationInfo
    + +
    D  +A +C +G +H +I +J +L +M +N +O +P +R +S +T +U +V + TOP +

    +DexClassLoader
    + +
    G  +A +C +D +H +I +J +L +M +N +O +P +R +S +T +U +V + TOP +

    +GeomagneticField
    +GestureDetector.OnDoubleTapListener
    +GLSurfaceView
    +GLSurfaceView.EGLConfigChooser
    +GLSurfaceView.GLWrapper
    +GLSurfaceView.Renderer
    +GpsSatellite
    +GpsStatus
    +GpsStatus.Listener
    + +
    H  +A +C +D +G +I +J +L +M +N +O +P +R +S +T +U +V + TOP +

    +Handler.Callback
    +HapticFeedbackConstants
    +HorizontalScrollView
    + +
    I  +A +C +D +G +H +J +L +M +N +O +P +R +S +T +U +V + TOP +

    +InputType
    +IntentService
    + +
    J  +A +C +D +G +H +I +L +M +N +O +P +R +S +T +U +V + TOP +

    +JetPlayer
    +JetPlayer.OnJetEventListener
    + +
    L  +A +C +D +G +H +I +J +M +N +O +P +R +S +T +U +V + TOP +

    +LauncherActivity.IconResizer
    +LauncherActivity.ListItem
    +LiveFolders
    + +
    M  +A +C +D +G +H +I +J +L +N +O +P +R +S +T +U +V + TOP +

    +MediaPlayer.OnInfoListener
    +MediaPlayer.OnVideoSizeChangedListener
    +MediaRecorder.OnErrorListener
    +MediaRecorder.OnInfoListener
    +MediaRecorder.VideoEncoder
    +MediaRecorder.VideoSource
    + +
    N  +A +C +D +G +H +I +J +L +M +O +P +R +S +T +U +V + TOP +

    +NeighboringCellInfo
    +NoCopySpan
    +NoCopySpan.Concrete
    + +
    O  +A +C +D +G +H +I +J +L +M +N +P +R +S +T +U +V + TOP +

    +OrientationEventListener
    + +
    P  +A +C +D +G +H +I +J +L +M +N +O +R +S +T +U +V + TOP +

    +ParcelableSpan
    +PluginData
    +PrintStreamPrinter
    +ProviderTestCase2
    + +
    R  +A +C +D +G +H +I +J +L +M +N +O +P +S +T +U +V + TOP +

    +R.bool
    +R.integer
    +ResultReceiver
    + +
    S  +A +C +D +G +H +I +J +L +M +N +O +P +R +T +U +V + TOP +

    +SectionIndexer
    +Sensor
    +SensorEvent
    +SensorEventListener
    +Settings.Secure
    +SlidingDrawer
    +SlidingDrawer.OnDrawerCloseListener
    +SlidingDrawer.OnDrawerOpenListener
    +SlidingDrawer.OnDrawerScrollListener
    + +
    T  +A +C +D +G +H +I +J +L +M +N +O +P +R +S +U +V + TOP +

    +TextView.OnEditorActionListener
    + +
    U  +A +C +D +G +H +I +J +L +M +N +O +P +R +S +T +V + TOP +

    +UpdateAppearance
    +UserDictionary
    +UserDictionary.Words
    + +
    V  +A +C +D +G +H +I +J +L +M +N +O +P +R +S +T +U + TOP +

    +ViewDebug.CapturedViewProperty
    +ViewTreeObserver.OnScrollChangedListener
    +Visibility
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/classes_index_all.html b/docs/html/sdk/api_diff/3/changes/classes_index_all.html new file mode 100644 index 000000000000..5815c29ca5a5 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/classes_index_all.html @@ -0,0 +1,963 @@ + + + + + + + + + +Class Differences Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +Classes +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + +
    A  +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +AbsListView
    +AbsoluteLayout
    +AbsoluteSizeSpan
    +AbsSeekBar
    +Activity
    +ActivityInfo
    +ActivityInstrumentationTestCase
    +ActivityInstrumentationTestCase2
    +ActivityManager
    +ActivityManager.RunningAppProcessInfo
    +AlarmManager
    +AlertDialog
    +AlignmentSpan.Standard
    +AlphabetIndexer
    +Animation
    +Annotation
    +ArrayAdapter
    +ArrowKeyMovementMethod
    +AssetFileDescriptor
    +AssetFileDescriptor.AutoCloseInputStream
    +AssetFileDescriptor.AutoCloseOutputStream
    +AsyncTask
    +AsyncTask.Status
    +AudioFormat
    +AudioManager
    +AudioRecord
    +AudioRecord.OnRecordPositionUpdateListener
    +AudioTrack
    +AudioTrack.OnPlaybackPositionUpdateListener
    +AutoCompleteTextView
    +AutoText
    + +
    B  +A +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +BackgroundColorSpan
    +BaseKeyListener
    +Binder
    +Bitmap
    +BroadcastReceiver
    +Browser
    +Build
    +BulletSpan
    + +
    C  +A +B +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +Camera
    +Canvas
    +Character.UnicodeBlock
    +Chronometer
    +Chronometer.OnChronometerTickListener
    +Class
    +ClickableSpan
    +Configuration
    +ConfigurationInfo
    +ConnectivityManager
    +Contacts.Intents
    +Contacts.Intents.Insert
    +Contacts.PeopleColumns
    +ContentProvider
    +ContentResolver
    +Context
    +Cursor
    +CursorAdapter
    +CursorWrapper
    + +
    D  +A +B +C +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +DatabaseUtils
    +Date
    +DateKeyListener
    +DateTimeKeyListener
    +Debug
    +DexClassLoader
    +DexFile
    +DialerKeyListener
    +DialogInterface
    +DialogPreference
    +DigitsKeyListener
    +Drawable
    +DynamicDrawableSpan
    + +
    E  +A +B +C +D +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +Environment
    + +
    F  +A +B +C +D +E +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +ForegroundColorSpan
    + +
    G  +A +B +C +D +E +F +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +GeomagneticField
    +GestureDetector
    +GestureDetector.OnDoubleTapListener
    +GestureDetector.SimpleOnGestureListener
    +GLSurfaceView
    +GLSurfaceView.EGLConfigChooser
    +GLSurfaceView.GLWrapper
    +GLSurfaceView.Renderer
    +GpsSatellite
    +GpsStatus
    +GpsStatus.Listener
    +Gravity
    +GridView
    + +
    H  +A +B +C +D +E +F +G +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +Handler
    +Handler.Callback
    +HapticFeedbackConstants
    +HorizontalScrollView
    + +
    I  +A +B +C +D +E +F +G +H +J +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +IBinder
    +ImageSpan
    +InputType
    +Instrumentation
    +InstrumentationTestCase
    +Intent
    +IntentService
    + +
    J  +A +B +C +D +E +F +G +H +I +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +JetPlayer
    +JetPlayer.OnJetEventListener
    + +
    K  +A +B +C +D +E +F +G +H +I +J +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +KeyCharacterMap
    +KeyEvent
    +KeyListener
    + +
    L  +A +B +C +D +E +F +G +H +I +J +K +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +LauncherActivity
    +LauncherActivity.IconResizer
    +LauncherActivity.ListItem
    +LeadingMarginSpan.Standard
    +Level
    +ListView
    +LiveFolders
    +Location
    +LocationManager
    +LogManager
    +Looper
    + +
    M  +A +B +C +D +E +F +G +H +I +J +K +L +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +Manifest.permission
    +MaskFilterSpan
    +MediaPlayer
    +MediaPlayer.OnInfoListener
    +MediaPlayer.OnVideoSizeChangedListener
    +MediaRecorder
    +MediaRecorder.OnErrorListener
    +MediaRecorder.OnInfoListener
    +MediaRecorder.OutputFormat
    +MediaRecorder.VideoEncoder
    +MediaRecorder.VideoSource
    +MediaStore
    +MediaStore.Audio.AlbumColumns
    +MediaStore.Audio.Media
    +MediaStore.Images.Media
    +MediaStore.Video
    +MediaStore.Video.VideoColumns
    +Menu
    +MetaKeyKeyListener
    +MockPackageManager
    +MotionEvent
    +MovementMethod
    +MultiTapKeyListener
    + +
    N  +A +B +C +D +E +F +G +H +I +J +K +L +M +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +NeighboringCellInfo
    +NetworkInfo
    +NoCopySpan
    +NoCopySpan.Concrete
    + +
    O  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +P +Q +R +S +T +U +V +W +Z + TOP +

    +OrientationEventListener
    +OrientationListener
    + +
    P  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +Q +R +S +T +U +V +W +Z + TOP +

    +Pack200.Packer
    +Pack200.Unpacker
    +PackageInfo
    +PackageManager
    +Parcel
    +ParcelableSpan
    +ParcelFileDescriptor
    +PendingIntent
    +PhoneNumberUtils
    +PluginData
    +PopupWindow
    +PopupWindow.OnDismissListener
    +PrintStreamPrinter
    +ProgressBar
    +ProviderTestCase
    +ProviderTestCase2
    +Proxy
    + +
    Q  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +R +S +T +U +V +W +Z + TOP +

    +QuoteSpan
    +QwertyKeyListener
    + +
    R  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +S +T +U +V +W +Z + TOP +

    +R.attr
    +R.bool
    +R.drawable
    +R.id
    +R.integer
    +R.string
    +R.style
    +RasterizerSpan
    +Rect
    +RectF
    +RelativeSizeSpan
    +RemoteViews
    +RemoteViews.ActionException
    +ResourceCursorAdapter
    +Resources
    +ResultReceiver
    +RingtoneManager
    +RotateDrawable
    + +
    S  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +T +U +V +W +Z + TOP +

    +ScaleDrawable
    +ScaleXSpan
    +Scroller
    +ScrollingMovementMethod
    +SectionIndexer
    +Sensor
    +SensorEvent
    +SensorEventListener
    +SensorListener
    +SensorManager
    +Settings
    +Settings.Secure
    +Settings.System
    +Shape
    +SimpleCursorAdapter
    +SlidingDrawer
    +SlidingDrawer.OnDrawerCloseListener
    +SlidingDrawer.OnDrawerOpenListener
    +SlidingDrawer.OnDrawerScrollListener
    +SmsMessage
    +Socket
    +SoundPool
    +Spanned
    +SpanWatcher
    +SparseIntArray
    +SQLiteDatabase
    +StrikethroughSpan
    +String
    +StyleSpan
    +SubscriptSpan
    +SuperscriptSpan
    + +
    T  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +U +V +W +Z + TOP +

    +TelephonyManager
    +TestMethod
    +TestSuiteBuilder
    +TextAppearanceSpan
    +TextKeyListener
    +TextUtils
    +TextView
    +TextView.OnEditorActionListener
    +TextWatcher
    +TimeKeyListener
    +TimeUtils
    +Touch
    +TouchUtils
    +Transformation
    +TransitionDrawable
    +TypedArray
    +TypefaceSpan
    + +
    U  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +V +W +Z + TOP +

    +UnderlineSpan
    +UpdateAppearance
    +UpdateLayout
    +UrlInterceptHandler
    +UrlInterceptRegistry
    +URLSpan
    +URLUtil
    +UserDictionary
    +UserDictionary.Words
    + +
    V  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +W +Z + TOP +

    +View
    +ViewConfiguration
    +ViewDebug
    +ViewDebug.CapturedViewProperty
    +ViewGroup
    +ViewParent
    +ViewTreeObserver
    +ViewTreeObserver.OnScrollChangedListener
    +Visibility
    +VMDebug
    + +
    W  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +Z + TOP +

    +WebHistoryItem
    +WebSettings
    +WebView
    +WifiManager
    +Window
    +WindowManager.LayoutParams
    + +
    Z  +A +B +C +D +E +F +G +H +I +J +K +L +M +N +O +P +Q +R +S +T +U +V +W + TOP +

    +Zygote
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/classes_index_changes.html b/docs/html/sdk/api_diff/3/changes/classes_index_changes.html new file mode 100644 index 000000000000..58d4edcbc8a7 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/classes_index_changes.html @@ -0,0 +1,846 @@ + + + + + + + + + +Class Changes Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Classes +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + +
    A  +B +C +D +E +F +G +H +I +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +AbsListView
    +AbsoluteLayout
    +AbsoluteSizeSpan
    +AbsSeekBar
    +Activity
    +ActivityInfo
    +ActivityInstrumentationTestCase
    +ActivityManager
    +AlarmManager
    +AlertDialog
    +AlignmentSpan.Standard
    +Animation
    +Annotation
    +ArrayAdapter
    +ArrowKeyMovementMethod
    +AssetFileDescriptor
    +AudioManager
    +AutoCompleteTextView
    +AutoText
    + +
    B  +A +C +D +E +F +G +H +I +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +BackgroundColorSpan
    +BaseKeyListener
    +Binder
    +Bitmap
    +BroadcastReceiver
    +Browser
    +Build
    +BulletSpan
    + +
    C  +A +B +D +E +F +G +H +I +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +Camera
    +Canvas
    +Character.UnicodeBlock
    +Chronometer
    +Class
    +ClickableSpan
    +Configuration
    +ConnectivityManager
    +Contacts.Intents
    +Contacts.Intents.Insert
    +Contacts.PeopleColumns
    +ContentProvider
    +ContentResolver
    +Context
    +Cursor
    +CursorAdapter
    +CursorWrapper
    + +
    D  +A +B +C +E +F +G +H +I +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +DatabaseUtils
    +Date
    +DateKeyListener
    +DateTimeKeyListener
    +Debug
    +DexFile
    +DialerKeyListener
    +DialogInterface
    +DialogPreference
    +DigitsKeyListener
    +Drawable
    +DynamicDrawableSpan
    + +
    E  +A +B +C +D +F +G +H +I +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +Environment
    + +
    F  +A +B +C +D +E +G +H +I +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +ForegroundColorSpan
    + +
    G  +A +B +C +D +E +F +H +I +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +GestureDetector
    +GestureDetector.SimpleOnGestureListener
    +Gravity
    +GridView
    + +
    H  +A +B +C +D +E +F +G +I +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +Handler
    + +
    I  +A +B +C +D +E +F +G +H +K +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +IBinder
    +ImageSpan
    +Instrumentation
    +InstrumentationTestCase
    +Intent
    + +
    K  +A +B +C +D +E +F +G +H +I +L +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +KeyCharacterMap
    +KeyEvent
    +KeyListener
    + +
    L  +A +B +C +D +E +F +G +H +I +K +M +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +LauncherActivity
    +LeadingMarginSpan.Standard
    +Level
    +ListView
    +Location
    +LocationManager
    +LogManager
    +Looper
    + +
    M  +A +B +C +D +E +F +G +H +I +K +L +N +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +Manifest.permission
    +MaskFilterSpan
    +MediaPlayer
    +MediaRecorder
    +MediaRecorder.OutputFormat
    +MediaStore
    +MediaStore.Audio.AlbumColumns
    +MediaStore.Audio.Media
    +MediaStore.Images.Media
    +MediaStore.Video
    +MediaStore.Video.VideoColumns
    +Menu
    +MetaKeyKeyListener
    +MockPackageManager
    +MotionEvent
    +MovementMethod
    +MultiTapKeyListener
    + +
    N  +A +B +C +D +E +F +G +H +I +K +L +M +O +P +Q +R +S +T +U +V +W +Z + TOP +

    +NetworkInfo
    + +
    O  +A +B +C +D +E +F +G +H +I +K +L +M +N +P +Q +R +S +T +U +V +W +Z + TOP +

    +OrientationListener
    + +
    P  +A +B +C +D +E +F +G +H +I +K +L +M +N +O +Q +R +S +T +U +V +W +Z + TOP +

    +Pack200.Packer
    +Pack200.Unpacker
    +PackageInfo
    +PackageManager
    +Parcel
    +ParcelFileDescriptor
    +PendingIntent
    +PhoneNumberUtils
    +PopupWindow
    +PopupWindow.OnDismissListener
    +ProgressBar
    +ProviderTestCase
    +Proxy
    + +
    Q  +A +B +C +D +E +F +G +H +I +K +L +M +N +O +P +R +S +T +U +V +W +Z + TOP +

    +QuoteSpan
    +QwertyKeyListener
    + +
    R  +A +B +C +D +E +F +G +H +I +K +L +M +N +O +P +Q +S +T +U +V +W +Z + TOP +

    +R.attr
    +R.drawable
    +R.id
    +R.string
    +R.style
    +RasterizerSpan
    +Rect
    +RectF
    +RelativeSizeSpan
    +RemoteViews
    +RemoteViews.ActionException
    +ResourceCursorAdapter
    +Resources
    +RingtoneManager
    +RotateDrawable
    + +
    S  +A +B +C +D +E +F +G +H +I +K +L +M +N +O +P +Q +R +T +U +V +W +Z + TOP +

    +ScaleDrawable
    +ScaleXSpan
    +Scroller
    +ScrollingMovementMethod
    +SensorListener
    +SensorManager
    +Settings
    +Settings.System
    +Shape
    +SimpleCursorAdapter
    +SmsMessage
    +Socket
    +SoundPool
    +Spanned
    +SpanWatcher
    +SparseIntArray
    +SQLiteDatabase
    +StrikethroughSpan
    +String
    +StyleSpan
    +SubscriptSpan
    +SuperscriptSpan
    + +
    T  +A +B +C +D +E +F +G +H +I +K +L +M +N +O +P +Q +R +S +U +V +W +Z + TOP +

    +TelephonyManager
    +TestMethod
    +TestSuiteBuilder
    +TextAppearanceSpan
    +TextKeyListener
    +TextUtils
    +TextView
    +TextWatcher
    +TimeKeyListener
    +TimeUtils
    +Touch
    +TouchUtils
    +Transformation
    +TransitionDrawable
    +TypedArray
    +TypefaceSpan
    + +
    U  +A +B +C +D +E +F +G +H +I +K +L +M +N +O +P +Q +R +S +T +V +W +Z + TOP +

    +UnderlineSpan
    +UpdateLayout
    +UrlInterceptHandler
    +UrlInterceptRegistry
    +URLSpan
    +URLUtil
    + +
    V  +A +B +C +D +E +F +G +H +I +K +L +M +N +O +P +Q +R +S +T +U +W +Z + TOP +

    +View
    +ViewConfiguration
    +ViewDebug
    +ViewGroup
    +ViewParent
    +ViewTreeObserver
    +VMDebug
    + +
    W  +A +B +C +D +E +F +G +H +I +K +L +M +N +O +P +Q +R +S +T +U +V +Z + TOP +

    +WebHistoryItem
    +WebSettings
    +WebView
    +WifiManager
    +Window
    +WindowManager.LayoutParams
    + +
    Z  +A +B +C +D +E +F +G +H +I +K +L +M +N +O +P +Q +R +S +T +U +V +W + TOP +

    +Zygote
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/classes_index_removals.html b/docs/html/sdk/api_diff/3/changes/classes_index_removals.html new file mode 100644 index 000000000000..bc5e2e821957 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/classes_index_removals.html @@ -0,0 +1,62 @@ + + + + + + + + + +Class Removals Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Classes +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/constructors_index_additions.html b/docs/html/sdk/api_diff/3/changes/constructors_index_additions.html new file mode 100644 index 000000000000..0dff7fe55a96 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/constructors_index_additions.html @@ -0,0 +1,409 @@ + + + + + + + + + +Constructor Additions Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Constructors +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + +
    A  +B +D +F +G +H +I +K +L +O +Q +R +S +T +U + TOP +

    +AbsoluteSizeSpan +(Parcel) constructor
    +AlignmentSpan.Standard +(Parcel) constructor
    +Annotation +(Parcel) constructor
    + +
    B  +A +D +F +G +H +I +K +L +O +Q +R +S +T +U + TOP +

    +BackgroundColorSpan +(Parcel) constructor
    +BulletSpan +(Parcel) constructor
    + +
    D  +A +B +F +G +H +I +K +L +O +Q +R +S +T +U + TOP +

    +DynamicDrawableSpan +(int) constructor
    + +
    F  +A +B +D +G +H +I +K +L +O +Q +R +S +T +U + TOP +

    +ForegroundColorSpan +(Parcel) constructor
    + +
    G  +A +B +D +F +H +I +K +L +O +Q +R +S +T +U + TOP +

    +GestureDetector
    +  GestureDetector +(Context, OnGestureListener) constructor
    +  GestureDetector +(Context, OnGestureListener, Handler) constructor
    + +
    H  +A +B +D +F +G +I +K +L +O +Q +R +S +T +U + TOP +

    +Handler
    +  Handler +(Callback) constructor
    +  Handler +(Looper, Callback) constructor
    + +
    I  +A +B +D +F +G +H +K +L +O +Q +R +S +T +U + TOP +

    +ImageSpan
    +  ImageSpan +(Context, Uri, int) constructor
    +  ImageSpan +(Context, int, int) constructor
    +  ImageSpan +(Bitmap, int) constructor
    +  ImageSpan +(Drawable, int) constructor
    +  ImageSpan +(Drawable, String, int) constructor
    + +
    K  +A +B +D +F +G +H +I +L +O +Q +R +S +T +U + TOP +

    +KeyEvent
    +  KeyEvent +(KeyEvent) constructor
    +  KeyEvent +(long, String, int, int) constructor
    + +
    L  +A +B +D +F +G +H +I +K +O +Q +R +S +T +U + TOP +

    +LeadingMarginSpan.Standard +(Parcel) constructor
    + +
    O  +A +B +D +F +G +H +I +K +L +Q +R +S +T +U + TOP +

    +OrientationListener +(Context, int) constructor
    + +
    Q  +A +B +D +F +G +H +I +K +L +O +R +S +T +U + TOP +

    +QuoteSpan +(Parcel) constructor
    + +
    R  +A +B +D +F +G +H +I +K +L +O +Q +S +T +U + TOP +

    +RelativeSizeSpan +(Parcel) constructor
    +RemoteViews.ActionException +(Exception) constructor
    +ResourceCursorAdapter +(Context, int, Cursor, boolean) constructor
    + +
    S  +A +B +D +F +G +H +I +K +L +O +Q +R +T +U + TOP +

    +ScaleXSpan +(Parcel) constructor
    +StrikethroughSpan +(Parcel) constructor
    +StyleSpan +(Parcel) constructor
    +SubscriptSpan +(Parcel) constructor
    +SuperscriptSpan +(Parcel) constructor
    + +
    T  +A +B +D +F +G +H +I +K +L +O +Q +R +S +U + TOP +

    +TestMethod
    +  TestMethod +(String, Class<TestCase>) constructor
    +  TestMethod +(TestCase) constructor
    +TextAppearanceSpan +(Parcel) constructor
    +TransitionDrawable +(Drawable[]) constructor
    +TypefaceSpan +(Parcel) constructor
    + +
    U  +A +B +D +F +G +H +I +K +L +O +Q +R +S +T + TOP +

    +UnderlineSpan +(Parcel) constructor
    +URLSpan +(Parcel) constructor
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/constructors_index_all.html b/docs/html/sdk/api_diff/3/changes/constructors_index_all.html new file mode 100644 index 000000000000..49ad673c48aa --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/constructors_index_all.html @@ -0,0 +1,514 @@ + + + + + + + + + +Constructor Differences Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +Constructors +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + +
    A  +B +D +F +G +H +I +K +L +N +O +Q +R +S +T +U +V + TOP +

    +AbsoluteSizeSpan +(Parcel) constructor
    +AlignmentSpan.Standard +(Parcel) constructor
    +Annotation +(Parcel) constructor
    + +
    B  +A +D +F +G +H +I +K +L +N +O +Q +R +S +T +U +V + TOP +

    +BackgroundColorSpan +(Parcel) constructor
    +BulletSpan +(Parcel) constructor
    + +
    D  +A +B +F +G +H +I +K +L +N +O +Q +R +S +T +U +V + TOP +

    +Date
    +  Date +() constructor
    +  Date +(int, int, int, int, int, int) constructor
    +DynamicDrawableSpan +(int) constructor
    + +
    F  +A +B +D +G +H +I +K +L +N +O +Q +R +S +T +U +V + TOP +

    +ForegroundColorSpan +(Parcel) constructor
    + +
    G  +A +B +D +F +H +I +K +L +N +O +Q +R +S +T +U +V + TOP +

    +GestureDetector
    +  GestureDetector +(Context, OnGestureListener) constructor
    +  GestureDetector +(Context, OnGestureListener, Handler) constructor
    +  GestureDetector +(OnGestureListener) constructor
    +  GestureDetector +(OnGestureListener, Handler) constructor
    + +
    H  +A +B +D +F +G +I +K +L +N +O +Q +R +S +T +U +V + TOP +

    +Handler
    +  Handler +(Callback) constructor
    +  Handler +(Looper, Callback) constructor
    + +
    I  +A +B +D +F +G +H +K +L +N +O +Q +R +S +T +U +V + TOP +

    +ImageSpan
    +  ImageSpan +(Context, Uri, int) constructor
    +  ImageSpan +(Context, int, int) constructor
    +  ImageSpan +(Bitmap, int) constructor
    +  ImageSpan +(Drawable, int) constructor
    +  ImageSpan +(Drawable, String, int) constructor
    + +
    K  +A +B +D +F +G +H +I +L +N +O +Q +R +S +T +U +V + TOP +

    +KeyEvent
    +  KeyEvent +(KeyEvent) constructor
    +  KeyEvent +(long, String, int, int) constructor
    + +
    L  +A +B +D +F +G +H +I +K +N +O +Q +R +S +T +U +V + TOP +

    +LeadingMarginSpan.Standard +(Parcel) constructor
    + +
    N  +A +B +D +F +G +H +I +K +L +O +Q +R +S +T +U +V + TOP +

    +NetworkInfo +(int) constructor
    + +
    O  +A +B +D +F +G +H +I +K +L +N +Q +R +S +T +U +V + TOP +

    +OrientationListener +(Context, int) constructor
    + +
    Q  +A +B +D +F +G +H +I +K +L +N +O +R +S +T +U +V + TOP +

    +QuoteSpan +(Parcel) constructor
    + +
    R  +A +B +D +F +G +H +I +K +L +N +O +Q +S +T +U +V + TOP +

    +RelativeSizeSpan +(Parcel) constructor
    +RemoteViews.ActionException +(Exception) constructor
    +ResourceCursorAdapter +(Context, int, Cursor, boolean) constructor
    + +
    S  +A +B +D +F +G +H +I +K +L +N +O +Q +R +T +U +V + TOP +

    +ScaleXSpan +(Parcel) constructor
    +Socket
    +  Socket +() constructor
    +  Socket +(String, int) constructor
    +  Socket +(String, int, InetAddress, int) constructor
    +  Socket +(Proxy) constructor
    +  Socket +(SocketImpl) constructor
    +StrikethroughSpan +(Parcel) constructor
    +String
    +  String +() constructor
    +  String +(byte[]) constructor
    +  String +(byte[], int) constructor
    +  String +(byte[], int, int) constructor
    +  String +(byte[], int, int, int) constructor
    +StyleSpan +(Parcel) constructor
    +SubscriptSpan +(Parcel) constructor
    +SuperscriptSpan +(Parcel) constructor
    + +
    T  +A +B +D +F +G +H +I +K +L +N +O +Q +R +S +U +V + TOP +

    +TestMethod
    +  TestMethod +(String, Class<TestCase>) constructor
    +  TestMethod +(TestCase) constructor
    +TextAppearanceSpan +(Parcel) constructor
    +TransitionDrawable +(Drawable[]) constructor
    +TypefaceSpan +(Parcel) constructor
    + +
    U  +A +B +D +F +G +H +I +K +L +N +O +Q +R +S +T +V + TOP +

    +UnderlineSpan +(Parcel) constructor
    +URLSpan +(Parcel) constructor
    + +
    V  +A +B +D +F +G +H +I +K +L +N +O +Q +R +S +T +U + TOP +

    +ViewConfiguration +() constructor
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/constructors_index_changes.html b/docs/html/sdk/api_diff/3/changes/constructors_index_changes.html new file mode 100644 index 000000000000..8ea3eec7b034 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/constructors_index_changes.html @@ -0,0 +1,124 @@ + + + + + + + + + +Constructor Changes Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Constructors +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + +
    D  +G +S +V + TOP +

    +Date
    +  Date +() constructor
    +  Date +(int, int, int, int, int, int) constructor
    + +
    G  +D +S +V + TOP +

    +GestureDetector
    +  GestureDetector +(OnGestureListener) constructor
    +  GestureDetector +(OnGestureListener, Handler) constructor
    + +
    S  +D +G +V + TOP +

    +Socket
    +  Socket +() constructor
    +  Socket +(String, int) constructor
    +  Socket +(String, int, InetAddress, int) constructor
    +  Socket +(Proxy) constructor
    +  Socket +(SocketImpl) constructor
    +String
    +  String +() constructor
    +  String +(byte[]) constructor
    +  String +(byte[], int) constructor
    +  String +(byte[], int, int) constructor
    +  String +(byte[], int, int, int) constructor
    + +
    V  +D +G +S + TOP +

    +ViewConfiguration +() constructor
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/constructors_index_removals.html b/docs/html/sdk/api_diff/3/changes/constructors_index_removals.html new file mode 100644 index 000000000000..8e591c1e3fd5 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/constructors_index_removals.html @@ -0,0 +1,68 @@ + + + + + + + + + +Constructor Removals Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Constructors +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + +
    N  + TOP +

    +NetworkInfo +(int) constructor
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/dalvik.system.DexFile.html b/docs/html/sdk/api_diff/3/changes/dalvik.system.DexFile.html new file mode 100644 index 000000000000..ef3937c0a195 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/dalvik.system.DexFile.html @@ -0,0 +1,123 @@ + + + + + + + + + +dalvik.system.DexFile + + + + + + + + + + +
    +
    +
    +

    +Class dalvik.system.DexFile +

    + + +

    + + + + + + + + +
    Added Methods +
    + + DexFile loadDex(String, String, int) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/dalvik.system.VMDebug.html b/docs/html/sdk/api_diff/3/changes/dalvik.system.VMDebug.html new file mode 100644 index 000000000000..c7ee90942566 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/dalvik.system.VMDebug.html @@ -0,0 +1,130 @@ + + + + + + + + + +dalvik.system.VMDebug + + + + + + + + + + +
    +
    +
    +

    +Class dalvik.system.VMDebug +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + void dumpHprofData(String) +  
    + + boolean isDebuggingEnabled() +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/dalvik.system.Zygote.html b/docs/html/sdk/api_diff/3/changes/dalvik.system.Zygote.html new file mode 100644 index 000000000000..d26e9e64abe2 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/dalvik.system.Zygote.html @@ -0,0 +1,187 @@ + + + + + + + + + +dalvik.system.Zygote + + + + + + + + + + +
    +
    +
    +

    +Class dalvik.system.Zygote +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + int forkAndSpecialize(int, int, int[], int, int[][]) +  
    + + int forkSystemServer(int, int, int[], int, int[][]) +  
    +  +

    + + + + + + + + + + + + + + +
    Changed Methods +
    + + int forkAndSpecialize(int, int, int[], boolean, int[][]) + +Now deprecated.
    +
     
    + + int forkSystemServer(int, int, int[], boolean, int[][]) + +Now deprecated.
    +
     
    +  + +

    + + + + + + + + + + + + + + + + +
    Added Fields +
    + + int DEBUG_ENABLE_ASSERT +  
    + + int DEBUG_ENABLE_CHECKJNI +  
    + + int DEBUG_ENABLE_DEBUGGER +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/fields_index_additions.html b/docs/html/sdk/api_diff/3/changes/fields_index_additions.html new file mode 100644 index 000000000000..c2c3b494595c --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/fields_index_additions.html @@ -0,0 +1,1129 @@ + + + + + + + + + +Field Additions Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Fields +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + +
    A  +B +C +D +E +F +G +H +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +ACCELEROMETER_ROTATION +
    +ACTION_AIRPLANE_MODE_SETTINGS +
    +ACTION_APPLICATION_DEVELOPMENT_SETTINGS +
    +ACTION_AUDIO_BECOMING_NOISY +
    +ACTION_BACKGROUND_DATA_SETTING_CHANGED +
    +ACTION_DATA_ROAMING_SETTINGS +
    +ACTION_IMAGE_CAPTURE +
    +ACTION_INPUT_METHOD_CHANGED +
    +ACTION_INPUT_METHOD_SETTINGS +
    +ACTION_INTERNAL_STORAGE_SETTINGS +
    +ACTION_MANAGE_APPLICATIONS_SETTINGS +
    +ACTION_MEDIA_CHECKING +
    +ACTION_MEDIA_NOFS +
    +ACTION_MEMORY_CARD_SETTINGS +
    +ACTION_NETWORK_OPERATOR_SETTINGS +
    +ACTION_OUTSIDE +
    +ACTION_PACKAGE_DATA_CLEARED +
    +ACTION_PACKAGE_REPLACED +
    +ACTION_PHONE_STATE_CHANGED +
    +ACTION_QUICK_LAUNCH_SETTINGS +
    +ACTION_SEARCH_LONG_PRESS +
    +ACTION_SYNC_SETTINGS +
    +ACTION_SYSTEM_TUTORIAL +
    +ACTION_USER_DICTIONARY_SETTINGS +
    +ACTION_USER_PRESENT +
    +ACTION_VIDEO_CAPTURE +
    +ACTION_WIFI_IP_SETTINGS +
    +addToDictionary +
    +ALIGN_BASELINE +
    +ALIGN_BOTTOM +
    +allowSingleTap +
    +animateOnClick +
    +AXIS_CLIP +
    +AXIS_MINUS_X +
    +AXIS_MINUS_Y +
    +AXIS_MINUS_Z +
    +AXIS_X +
    +AXIS_Y +
    +AXIS_Z +
    + +
    B  +A +C +D +E +F +G +H +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +backgroundDimEnabled +
    +BIND_APPWIDGET +
    +BIND_INPUT_METHOD +
    +BOOKMARK +
    +bottomOffset +
    +BUCKET_DISPLAY_NAME +
    +BUCKET_ID +
    +BUTTON_NEGATIVE +
    +BUTTON_NEUTRAL +
    +BUTTON_POSITIVE +
    + +
    C  +A +B +D +E +F +G +H +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +candidatesArea +
    +candidatesTextStyleSpans +
    +CAP_MODE_CHARACTERS +
    +CAP_MODE_SENTENCES +
    +CAP_MODE_WORDS +
    +CATEGORY_INFO +
    +CLIP_HORIZONTAL +
    +CLIP_VERTICAL +
    +closeButton +
    +codes +
    +configPreferences +
    +configure +
    +content +
    +copy +
    +copyUrl +
    +CREATOR
    + in  +android.content.res.AssetFileDescriptor +
    + in  +android.graphics.RectF +
    +cut +
    + +
    D  +A +B +C +E +F +G +H +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +dark_header +
    +DEBUG_ENABLE_ASSERT +
    +DEBUG_ENABLE_CHECKJNI +
    +DEBUG_ENABLE_DEBUGGER +
    +dialog_alert_title +
    +DISPLAY +
    +DISPLAY_CLIP_HORIZONTAL +
    +DISPLAY_CLIP_VERTICAL +
    +dropDownAnchor +
    +dropDownWidth +
    + +
    E  +A +B +C +D +F +G +H +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +editorExtras +
    +EXTRA_APPLICATION_ID +
    +EXTRA_CREATE_DESCRIPTION +
    +EXTRA_DATA_REMOVED +
    +EXTRA_FINISH_ON_COMPLETION +
    +EXTRA_FORCE_CREATE +
    +EXTRA_INCOMING_NUMBER +
    +EXTRA_MAX_BYTES +
    +EXTRA_MEDIA_ALBUM +
    +EXTRA_MEDIA_ARTIST +
    +EXTRA_MEDIA_FOCUS +
    +EXTRA_MEDIA_TITLE +
    +EXTRA_OUTPUT +
    +EXTRA_REPLACING +
    +EXTRA_SCREEN_ORIENTATION +
    +EXTRA_STATE +
    +EXTRA_STATE_IDLE +
    +EXTRA_STATE_OFFHOOK +
    +EXTRA_STATE_RINGING +
    +EXTRA_VIDEO_QUALITY +
    +extractArea +
    + +
    F  +A +B +C +D +E +G +H +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +fastScrollEnabled +
    +fillEnabled +
    +FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET +
    +FLAG_ACTIVITY_NO_USER_ACTION +
    +FLAG_ACTIVITY_REORDER_TO_FRONT +
    +FLAG_ALT_FOCUSABLE_IM +
    +FLAG_EDITOR_ACTION +
    +FLAG_FROM_SYSTEM +
    +FLAG_KEEP_TOUCH_MODE +
    +FLAG_NO_HISTORY +
    +FLAG_SOFT_KEYBOARD +
    +FLAG_UPDATE_CURRENT +
    +FLAG_WATCH_OUTSIDE_TOUCH +
    +footerDividersEnabled +
    +FORMAT_JAPAN +
    +FX_KEYPRESS_DELETE +
    +FX_KEYPRESS_RETURN +
    +FX_KEYPRESS_SPACEBAR +
    +FX_KEYPRESS_STANDARD +
    + +
    G  +A +B +C +D +E +F +H +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +GET_CONFIGURATIONS +
    +GET_UNINSTALLED_PACKAGES +
    + +
    H  +A +B +C +D +E +F +G +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +handle +
    +HAPTIC_FEEDBACK_ENABLED
    + in  +android.provider.Settings.System +
    + in  +android.view.View +
    +hapticFeedbackEnabled +
    +hardKeyboardHidden +
    +HARDKEYBOARDHIDDEN_NO +
    +HARDKEYBOARDHIDDEN_UNDEFINED +
    +HARDKEYBOARDHIDDEN_YES +
    +headerDividersEnabled +
    +horizontalGap +
    + +
    I  +A +B +C +D +E +F +G +H +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +ic_btn_speak_now +
    +iconPreview +
    +imeActionId +
    +imeActionLabel +
    +imeExtractEnterAnimation +
    +imeExtractExitAnimation +
    +imeFullscreenBackground +
    +imeOptions +
    +initialLayout +
    +innerRadius +
    +INPUT_METHOD_FROM_FOCUSABLE +
    +INPUT_METHOD_NEEDED +
    +INPUT_METHOD_NOT_NEEDED +
    +INPUT_METHOD_SERVICE +
    +inputArea +
    +inputExtractEditText +
    +inputType +
    +INSTALL_FAILED_CONFLICTING_PROVIDER +
    +INTENT_ACTION_MEDIA_SEARCH +
    +INTENT_ACTION_STILL_IMAGE_CAMERA +
    +INTENT_ACTION_VIDEO_CAMERA +
    +INTERVAL_DAY +
    +INTERVAL_FIFTEEN_MINUTES +
    +INTERVAL_HALF_DAY +
    +INTERVAL_HALF_HOUR +
    +INTERVAL_HOUR +
    +isDefault +
    +isModifier +
    +isRepeatable +
    +isScrollContainer +
    +isSticky +
    + +
    K  +A +B +C +D +E +F +G +H +I +L +M +N +P +R +S +T +U +V +W + TOP +

    +KEY_LOCATION_CHANGED +
    +KEY_PROVIDER_ENABLED +
    +KEY_STATUS_CHANGED +
    +keyBackground +
    +keyboardMode +
    +keyboardView +
    +KEYCODE_MEDIA_FAST_FORWARD +
    +KEYCODE_MEDIA_NEXT +
    +KEYCODE_MEDIA_PLAY_PAUSE +
    +KEYCODE_MEDIA_PREVIOUS +
    +KEYCODE_MEDIA_REWIND +
    +KEYCODE_MEDIA_STOP +
    +KEYCODE_MUTE +
    +keyEdgeFlags +
    +keyHeight +
    +keyIcon +
    +keyLabel +
    +keyOutputText +
    +keyPreviewHeight +
    +keyPreviewLayout +
    +keyPreviewOffset +
    +keyTextColor +
    +keyTextSize +
    +keyWidth +
    + +
    L  +A +B +C +D +E +F +G +H +I +K +M +N +P +R +S +T +U +V +W + TOP +

    +labelTextSize +
    +LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED +
    + +
    M  +A +B +C +D +E +F +G +H +I +K +L +N +P +R +S +T +U +V +W + TOP +

    +MEDIA_CHECKING +
    +MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK +
    +MEDIA_INFO_BAD_INTERLEAVING +
    +MEDIA_INFO_NOT_SEEKABLE +
    +MEDIA_INFO_UNKNOWN +
    +MEDIA_INFO_VIDEO_TRACK_LAGGING +
    +MEDIA_NOFS +
    +MEDIA_RECORDER_ERROR_UNKNOWN +
    +MEDIA_RECORDER_INFO_MAX_DURATION_REACHED +
    +MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED +
    +MEDIA_RECORDER_INFO_UNKNOWN +
    +MODE_APPEND +
    +MOUNT_FORMAT_FILESYSTEMS +
    +mVerticalAlignment +
    + +
    N  +A +B +C +D +E +F +G +H +I +K +L +M +P +R +S +T +U +V +W + TOP +

    +noHistory +
    +NUMBER_OF_SONGS_FOR_ARTIST +
    + +
    P  +A +B +C +D +E +F +G +H +I +K +L +M +N +R +S +T +U +V +W + TOP +

    +paste +
    +PHONETIC_NAME
    + in  +android.provider.Contacts.Intents.Insert +
    + in  +android.provider.Contacts.PeopleColumns +
    +popupCharacters +
    +popupKeyboard +
    +popupLayout +
    +privateImeOptions +
    + +
    R  +A +B +C +D +E +F +G +H +I +K +L +M +N +P +S +T +U +V +W + TOP +

    +RAW_AMR +
    +reqFiveWayNav +
    +reqHardKeyboard +
    +reqKeyboardType +
    +reqNavigation +
    +reqTouchScreen +
    +ROUTE_BLUETOOTH_A2DP +
    +ROUTE_BLUETOOTH_SCO +
    +rowEdgeFlags +
    + +
    S  +A +B +C +D +E +F +G +H +I +K +L +M +N +P +R +T +U +V +W + TOP +

    +SCREEN_BRIGHTNESS_CHANGED +
    +SCREEN_ORIENTATION_CHANGED +
    +screenBrightness +
    +screenOrientation +
    +SECONDARY_EMAIL +
    +SECONDARY_EMAIL_TYPE +
    +SECONDARY_PHONE +
    +SECONDARY_PHONE_TYPE +
    +selectAll +
    +settingsActivity +
    +sharedUserId +
    +sharedUserLabel
    + in  +android.R.attr +
    + in  +android.content.pm.PackageInfo +
    +SHOW_OR_CREATE_CONTACT +
    +smoothScrollbar +
    +SOFT_INPUT_ADJUST_PAN +
    +SOFT_INPUT_ADJUST_RESIZE +
    +SOFT_INPUT_ADJUST_UNSPECIFIED +
    +SOFT_INPUT_IS_FORWARD_NAVIGATION +
    +SOFT_INPUT_MASK_ADJUST +
    +SOFT_INPUT_MASK_STATE +
    +SOFT_INPUT_MODE_CHANGED +
    +SOFT_INPUT_STATE_ALWAYS_HIDDEN +
    +SOFT_INPUT_STATE_ALWAYS_VISIBLE +
    +SOFT_INPUT_STATE_HIDDEN +
    +SOFT_INPUT_STATE_UNCHANGED +
    +SOFT_INPUT_STATE_UNSPECIFIED +
    +SOFT_INPUT_STATE_VISIBLE +
    +softInputMode
    + in  +android.content.pm.ActivityInfo +
    + in  +android.view.WindowManager.LayoutParams +
    +SPAN_COMPOSING +
    +SPAN_INTERMEDIATE +
    +SPAN_POINT_MARK_MASK +
    +startSelectingText +
    +state_long_pressable +
    +stopSelectingText +
    +STREAM_NOTIFICATION +
    +STRETCH_SPACING_UNIFORM +
    +switchInputMethod +
    + +
    T  +A +B +C +D +E +F +G +H +I +K +L +M +N +P +R +S +U +V +W + TOP +

    +TERTIARY_EMAIL +
    +TERTIARY_EMAIL_TYPE +
    +TERTIARY_PHONE +
    +TERTIARY_PHONE_TYPE +
    +Theme_InputMethod +
    +Theme_Light_Panel +
    +Theme_NoDisplay +
    +Theme_Panel +
    +thickness +
    +title_bar_tall +
    +topOffset +
    +TYPE_APPLICATION_ATTACHED_DIALOG +
    +TYPE_INPUT_METHOD +
    +TYPE_INPUT_METHOD_DIALOG +
    + +
    U  +A +B +C +D +E +F +G +H +I +K +L +M +N +P +R +S +T +V +W + TOP +

    +UNKNOWN_LENGTH +
    +UPDATE_DEVICE_STATS +
    +updatePeriodMillis +
    + +
    V  +A +B +C +D +E +F +G +H +I +K +L +M +N +P +R +S +T +U +W + TOP +

    +verticalCorrection +
    +verticalGap +
    +VideoView_error_text_invalid_progressive_playback +
    +voiceLanguage +
    +voiceLanguageModel +
    +voiceMaxResults +
    +voicePromptText +
    +voiceSearchMode +
    +VOLUME_NOTIFICATION +
    + +
    W  +A +B +C +D +E +F +G +H +I +K +L +M +N +P +R +S +T +U +V + TOP +

    +Widget_KeyboardView +
    +WIFI_MAX_DHCP_RETRY_COUNT +
    +WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS +
    +WIFI_MODE_FULL +
    +WIFI_MODE_SCAN_ONLY +
    +WIFI_SLEEP_POLICY +
    +WIFI_SLEEP_POLICY_DEFAULT +
    +WIFI_SLEEP_POLICY_NEVER +
    +WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED +
    +windowDisablePreview +
    +windowNoDisplay +
    +windowSoftInputMode +
    +WRITE_SECURE_SETTINGS +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/fields_index_all.html b/docs/html/sdk/api_diff/3/changes/fields_index_all.html new file mode 100644 index 000000000000..786a36005452 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/fields_index_all.html @@ -0,0 +1,1270 @@ + + + + + + + + + +Field Differences Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +Fields +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + +
    A  +B +C +D +E +F +G +H +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +ACCELEROMETER_ROTATION +
    +ACTION_AIRPLANE_MODE_SETTINGS +
    +ACTION_APPLICATION_DEVELOPMENT_SETTINGS +
    +ACTION_AUDIO_BECOMING_NOISY +
    +ACTION_BACKGROUND_DATA_SETTING_CHANGED +
    +ACTION_DATA_ROAMING_SETTINGS +
    +ACTION_IMAGE_CAPTURE +
    +ACTION_INPUT_METHOD_CHANGED +
    +ACTION_INPUT_METHOD_SETTINGS +
    +ACTION_INTERNAL_STORAGE_SETTINGS +
    +ACTION_MANAGE_APPLICATIONS_SETTINGS +
    +ACTION_MEDIA_CHECKING +
    +ACTION_MEDIA_NOFS +
    +ACTION_MEMORY_CARD_SETTINGS +
    +ACTION_NETWORK_OPERATOR_SETTINGS +
    +ACTION_OUTSIDE +
    +ACTION_PACKAGE_DATA_CLEARED +
    +ACTION_PACKAGE_REPLACED +
    +ACTION_PHONE_STATE_CHANGED +
    +ACTION_QUICK_LAUNCH_SETTINGS +
    +ACTION_SEARCH_LONG_PRESS +
    +ACTION_SYNC_SETTINGS +
    +ACTION_SYSTEM_TUTORIAL +
    +ACTION_USER_DICTIONARY_SETTINGS +
    +ACTION_USER_PRESENT +
    +ACTION_VIDEO_CAPTURE +
    +ACTION_WIFI_IP_SETTINGS +
    +ADB_ENABLED +
    +addToDictionary +
    +ALIGN_BASELINE +
    +ALIGN_BOTTOM +
    +allowSingleTap +
    +ANDROID_ID +
    +animateOnClick +
    +autoText +
    +AXIS_CLIP +
    +AXIS_MINUS_X +
    +AXIS_MINUS_Y +
    +AXIS_MINUS_Z +
    +AXIS_X +
    +AXIS_Y +
    +AXIS_Z +
    + +
    B  +A +C +D +E +F +G +H +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +backgroundDimEnabled +
    +BIND_APPWIDGET +
    +BIND_INPUT_METHOD +
    +BLUETOOTH_ON +
    +BOOKMARK +
    +bottomOffset +
    +BUCKET_DISPLAY_NAME +
    +BUCKET_ID +
    +BUTTON1 +
    +BUTTON2 +
    +BUTTON3 +
    +BUTTON_NEGATIVE +
    +BUTTON_NEUTRAL +
    +BUTTON_POSITIVE +
    + +
    C  +A +B +D +E +F +G +H +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +candidatesArea +
    +candidatesTextStyleSpans +
    +CAP_MODE_CHARACTERS +
    +CAP_MODE_SENTENCES +
    +CAP_MODE_WORDS +
    +capitalize +
    +CATEGORY_GADGET +
    +CATEGORY_INFO +
    +CLIP_HORIZONTAL +
    +CLIP_VERTICAL +
    +closeButton +
    +codes +
    +configPreferences +
    +configure +
    +content +
    +copy +
    +copyUrl +
    +CREATOR
    + in  +android.content.res.AssetFileDescriptor +
    + in  +android.graphics.RectF +
    +cut +
    + +
    D  +A +B +C +E +F +G +H +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +dark_header +
    +DATA_ROAMING +
    +DATA_X +
    +DATA_Y +
    +DATA_Z +
    +DEBUG_ENABLE_ASSERT +
    +DEBUG_ENABLE_CHECKJNI +
    +DEBUG_ENABLE_DEBUGGER +
    +DEFAULT_SORT_ORDER
    + in  +android.provider.MediaStore.Images.Media +
    + in  +android.provider.MediaStore.Video +
    +DEVICE_PROVISIONED +
    +dialog_alert_title +
    +DISPLAY +
    +DISPLAY_CLIP_HORIZONTAL +
    +DISPLAY_CLIP_VERTICAL +
    +dropDownAnchor +
    +dropDownWidth +
    + +
    E  +A +B +C +D +F +G +H +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +editable +
    +editorExtras +
    +enabled +
    +EXTRA_APPLICATION_ID +
    +EXTRA_CREATE_DESCRIPTION +
    +EXTRA_DATA_REMOVED +
    +EXTRA_FINISH_ON_COMPLETION +
    +EXTRA_FORCE_CREATE +
    +EXTRA_INCOMING_NUMBER +
    +EXTRA_MAX_BYTES +
    +EXTRA_MEDIA_ALBUM +
    +EXTRA_MEDIA_ARTIST +
    +EXTRA_MEDIA_FOCUS +
    +EXTRA_MEDIA_TITLE +
    +EXTRA_OUTPUT +
    +EXTRA_REPLACING +
    +EXTRA_SCREEN_ORIENTATION +
    +EXTRA_STATE +
    +EXTRA_STATE_IDLE +
    +EXTRA_STATE_OFFHOOK +
    +EXTRA_STATE_RINGING +
    +EXTRA_VIDEO_QUALITY +
    +extractArea +
    + +
    F  +A +B +C +D +E +G +H +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +fastScrollEnabled +
    +fillEnabled +
    +FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET +
    +FLAG_ACTIVITY_NO_USER_ACTION +
    +FLAG_ACTIVITY_REORDER_TO_FRONT +
    +FLAG_ALT_FOCUSABLE_IM +
    +FLAG_EDITOR_ACTION +
    +FLAG_FROM_SYSTEM +
    +FLAG_KEEP_TOUCH_MODE +
    +FLAG_NO_HISTORY +
    +FLAG_SOFT_KEYBOARD +
    +FLAG_UPDATE_CURRENT +
    +FLAG_WATCH_OUTSIDE_TOUCH +
    +footerDividersEnabled +
    +FORMAT_JAPAN +
    +FX_KEYPRESS_DELETE +
    +FX_KEYPRESS_RETURN +
    +FX_KEYPRESS_SPACEBAR +
    +FX_KEYPRESS_STANDARD +
    + +
    G  +A +B +C +D +E +F +H +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +GET_CONFIGURATIONS +
    +GET_UNINSTALLED_PACKAGES +
    + +
    H  +A +B +C +D +E +F +G +I +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +handle +
    +HAPTIC_FEEDBACK_ENABLED
    + in  +android.provider.Settings.System +
    + in  +android.view.View +
    +hapticFeedbackEnabled +
    +hardKeyboardHidden +
    +HARDKEYBOARDHIDDEN_NO +
    +HARDKEYBOARDHIDDEN_UNDEFINED +
    +HARDKEYBOARDHIDDEN_YES +
    +headerDividersEnabled +
    +horizontalGap +
    +HTTP_PROXY +
    + +
    I  +A +B +C +D +E +F +G +H +K +L +M +N +P +R +S +T +U +V +W + TOP +

    +ic_btn_speak_now +
    +iconPreview +
    +imeActionId +
    +imeActionLabel +
    +imeExtractEnterAnimation +
    +imeExtractExitAnimation +
    +imeFullscreenBackground +
    +imeOptions +
    +initialLayout +
    +innerRadius +
    +INPUT_METHOD_FROM_FOCUSABLE +
    +INPUT_METHOD_NEEDED +
    +INPUT_METHOD_NOT_NEEDED +
    +INPUT_METHOD_SERVICE +
    +inputArea +
    +inputExtractEditText +
    +inputMethod +
    +inputType +
    +INSTALL_FAILED_CONFLICTING_PROVIDER +
    +INSTALL_NON_MARKET_APPS +
    +INTENT_ACTION_MEDIA_SEARCH +
    +INTENT_ACTION_STILL_IMAGE_CAMERA +
    +INTENT_ACTION_VIDEO_CAMERA +
    +INTERVAL_DAY +
    +INTERVAL_FIFTEEN_MINUTES +
    +INTERVAL_HALF_DAY +
    +INTERVAL_HALF_HOUR +
    +INTERVAL_HOUR +
    +isDefault +
    +isModifier +
    +isRepeatable +
    +isScrollContainer +
    +isSticky +
    + +
    K  +A +B +C +D +E +F +G +H +I +L +M +N +P +R +S +T +U +V +W + TOP +

    +KEY_LOCATION_CHANGED +
    +KEY_PROVIDER_ENABLED +
    +KEY_STATUS_CHANGED +
    +keyBackground +
    +keyboardMode +
    +keyboardView +
    +KEYCODE_MEDIA_FAST_FORWARD +
    +KEYCODE_MEDIA_NEXT +
    +KEYCODE_MEDIA_PLAY_PAUSE +
    +KEYCODE_MEDIA_PREVIOUS +
    +KEYCODE_MEDIA_REWIND +
    +KEYCODE_MEDIA_STOP +
    +KEYCODE_MUTE +
    +keyEdgeFlags +
    +keyHeight +
    +keyIcon +
    +keyLabel +
    +keyOutputText +
    +keyPreviewHeight +
    +keyPreviewLayout +
    +keyPreviewOffset +
    +keyTextColor +
    +keyTextSize +
    +keyWidth +
    + +
    L  +A +B +C +D +E +F +G +H +I +K +M +N +P +R +S +T +U +V +W + TOP +

    +labelTextSize +
    +LIGHT_NO_MOON +
    +LOCATION_PROVIDERS_ALLOWED +
    +LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED +
    +LOGGING_ID +
    + +
    M  +A +B +C +D +E +F +G +H +I +K +L +N +P +R +S +T +U +V +W + TOP +

    +MAX_KEYCODE +
    +MEDIA_CHECKING +
    +MEDIA_ERROR_NOT_VALID_FOR_PROGRESSIVE_PLAYBACK +
    +MEDIA_INFO_BAD_INTERLEAVING +
    +MEDIA_INFO_NOT_SEEKABLE +
    +MEDIA_INFO_UNKNOWN +
    +MEDIA_INFO_VIDEO_TRACK_LAGGING +
    +MEDIA_NOFS +
    +MEDIA_RECORDER_ERROR_UNKNOWN +
    +MEDIA_RECORDER_INFO_MAX_DURATION_REACHED +
    +MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED +
    +MEDIA_RECORDER_INFO_UNKNOWN +
    +MODE_APPEND +
    +MOUNT_FORMAT_FILESYSTEMS +
    +mVerticalAlignment +
    + +
    N  +A +B +C +D +E +F +G +H +I +K +L +M +P +R +S +T +U +V +W + TOP +

    +NETWORK_PREFERENCE +
    +noHistory +
    +NUM_STREAMS +
    +NUMBER_OF_SONGS_FOR_ARTIST +
    +numeric +
    + +
    P  +A +B +C +D +E +F +G +H +I +K +L +M +N +R +S +T +U +V +W + TOP +

    +PARENTAL_CONTROL_ENABLED +
    +PARENTAL_CONTROL_LAST_UPDATE +
    +PARENTAL_CONTROL_REDIRECT_URL +
    +password +
    +paste +
    +phoneNumber +
    +PHONETIC_NAME
    + in  +android.provider.Contacts.Intents.Insert +
    + in  +android.provider.Contacts.PeopleColumns +
    +popupCharacters +
    +popupKeyboard +
    +popupLayout +
    +privateImeOptions +
    + +
    R  +A +B +C +D +E +F +G +H +I +K +L +M +N +P +S +T +U +V +W + TOP +

    +RAW_AMR +
    +RAW_DATA_INDEX +
    +RAW_DATA_X +
    +RAW_DATA_Y +
    +RAW_DATA_Z +
    +reqFiveWayNav +
    +reqHardKeyboard +
    +reqKeyboardType +
    +reqNavigation +
    +reqTouchScreen +
    +ROUTE_BLUETOOTH +
    +ROUTE_BLUETOOTH_A2DP +
    +ROUTE_BLUETOOTH_SCO +
    +rowEdgeFlags +
    + +
    S  +A +B +C +D +E +F +G +H +I +K +L +M +N +P +R +T +U +V +W + TOP +

    +SCREEN_BRIGHTNESS_CHANGED +
    +SCREEN_ORIENTATION_CHANGED +
    +screenBrightness +
    +screenOrientation +
    +searchButtonText +
    +SECONDARY_EMAIL +
    +SECONDARY_EMAIL_TYPE +
    +SECONDARY_PHONE +
    +SECONDARY_PHONE_TYPE +
    +selectAll +
    +SENSOR_ACCELEROMETER +
    +SENSOR_ALL +
    +SENSOR_LIGHT +
    +SENSOR_MAGNETIC_FIELD +
    +SENSOR_MAX +
    +SENSOR_MIN +
    +SENSOR_ORIENTATION +
    +SENSOR_ORIENTATION_RAW +
    +SENSOR_PROXIMITY +
    +SENSOR_TEMPERATURE +
    +SENSOR_TRICORDER +
    +SETTINGS_CLASSNAME +
    +settingsActivity +
    +sharedUserId +
    +sharedUserLabel
    + in  +android.R.attr +
    + in  +android.content.pm.PackageInfo +
    +SHOW_OR_CREATE_CONTACT +
    +singleLine +
    +smoothScrollbar +
    +SOFT_INPUT_ADJUST_PAN +
    +SOFT_INPUT_ADJUST_RESIZE +
    +SOFT_INPUT_ADJUST_UNSPECIFIED +
    +SOFT_INPUT_IS_FORWARD_NAVIGATION +
    +SOFT_INPUT_MASK_ADJUST +
    +SOFT_INPUT_MASK_STATE +
    +SOFT_INPUT_MODE_CHANGED +
    +SOFT_INPUT_STATE_ALWAYS_HIDDEN +
    +SOFT_INPUT_STATE_ALWAYS_VISIBLE +
    +SOFT_INPUT_STATE_HIDDEN +
    +SOFT_INPUT_STATE_UNCHANGED +
    +SOFT_INPUT_STATE_UNSPECIFIED +
    +SOFT_INPUT_STATE_VISIBLE +
    +softInputMode
    + in  +android.content.pm.ActivityInfo +
    + in  +android.view.WindowManager.LayoutParams +
    +SPAN_COMPOSING +
    +SPAN_INTERMEDIATE +
    +SPAN_POINT_MARK_MASK +
    +startSelectingText +
    +state_long_pressable +
    +stopSelectingText +
    +STREAM_NOTIFICATION +
    +STRETCH_SPACING_UNIFORM +
    +switchInputMethod +
    + +
    T  +A +B +C +D +E +F +G +H +I +K +L +M +N +P +R +S +U +V +W + TOP +

    +TERTIARY_EMAIL +
    +TERTIARY_EMAIL_TYPE +
    +TERTIARY_PHONE +
    +TERTIARY_PHONE_TYPE +
    +Theme_InputMethod +
    +Theme_Light_Panel +
    +Theme_NoDisplay +
    +Theme_Panel +
    +thickness +
    +title_bar_tall +
    +topOffset +
    +TYPE_APPLICATION_ATTACHED_DIALOG +
    +TYPE_INPUT_METHOD +
    +TYPE_INPUT_METHOD_DIALOG +
    + +
    U  +A +B +C +D +E +F +G +H +I +K +L +M +N +P +R +S +T +V +W + TOP +

    +UNKNOWN_LENGTH +
    +UPDATE_DEVICE_STATS +
    +updatePeriodMillis +
    +USB_MASS_STORAGE_ENABLED +
    +USE_GOOGLE_MAIL +
    + +
    V  +A +B +C +D +E +F +G +H +I +K +L +M +N +P +R +S +T +U +W + TOP +

    +verticalCorrection +
    +verticalGap +
    +VideoView_error_text_invalid_progressive_playback +
    +voiceLanguage +
    +voiceLanguageModel +
    +voiceMaxResults +
    +voicePromptText +
    +voiceSearchMode +
    +VOLUME_NOTIFICATION +
    + +
    W  +A +B +C +D +E +F +G +H +I +K +L +M +N +P +R +S +T +U +V + TOP +

    +Widget_KeyboardView +
    +WIFI_MAX_DHCP_RETRY_COUNT +
    +WIFI_MOBILE_DATA_TRANSITION_WAKELOCK_TIMEOUT_MS +
    +WIFI_MODE_FULL +
    +WIFI_MODE_SCAN_ONLY +
    +WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON +
    +WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY +
    +WIFI_NUM_OPEN_NETWORKS_KEPT +
    +WIFI_ON +
    +WIFI_SLEEP_POLICY +
    +WIFI_SLEEP_POLICY_DEFAULT +
    +WIFI_SLEEP_POLICY_NEVER +
    +WIFI_SLEEP_POLICY_NEVER_WHILE_PLUGGED +
    +WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE +
    +WIFI_WATCHDOG_AP_COUNT +
    +WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS +
    +WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED +
    +WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS +
    +WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT +
    +WIFI_WATCHDOG_MAX_AP_CHECKS +
    +WIFI_WATCHDOG_ON +
    +WIFI_WATCHDOG_PING_COUNT +
    +WIFI_WATCHDOG_PING_DELAY_MS +
    +WIFI_WATCHDOG_PING_TIMEOUT_MS +
    +windowDisablePreview +
    +windowNoDisplay +
    +windowSoftInputMode +
    +WRITE_SECURE_SETTINGS +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/fields_index_changes.html b/docs/html/sdk/api_diff/3/changes/fields_index_changes.html new file mode 100644 index 000000000000..3f5dd5a9b775 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/fields_index_changes.html @@ -0,0 +1,471 @@ + + + + + + + + + +Field Changes Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Fields +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + +
    A  +B +C +D +E +H +I +L +M +N +P +R +S +U +W + TOP +

    +ADB_ENABLED +
    +ANDROID_ID +
    +autoText +
    + +
    B  +A +C +D +E +H +I +L +M +N +P +R +S +U +W + TOP +

    +BLUETOOTH_ON +
    +BUTTON1 +
    +BUTTON2 +
    +BUTTON3 +
    + +
    C  +A +B +D +E +H +I +L +M +N +P +R +S +U +W + TOP +

    +capitalize +
    + +
    D  +A +B +C +E +H +I +L +M +N +P +R +S +U +W + TOP +

    +DATA_ROAMING +
    +DATA_X +
    +DATA_Y +
    +DATA_Z +
    +DEFAULT_SORT_ORDER
    + in  +android.provider.MediaStore.Images.Media +
    + in  +android.provider.MediaStore.Video +
    +DEVICE_PROVISIONED +
    + +
    E  +A +B +C +D +H +I +L +M +N +P +R +S +U +W + TOP +

    +editable +
    +enabled +
    + +
    H  +A +B +C +D +E +I +L +M +N +P +R +S +U +W + TOP +

    +HTTP_PROXY +
    + +
    I  +A +B +C +D +E +H +L +M +N +P +R +S +U +W + TOP +

    +inputMethod +
    +INSTALL_NON_MARKET_APPS +
    + +
    L  +A +B +C +D +E +H +I +M +N +P +R +S +U +W + TOP +

    +LIGHT_NO_MOON +
    +LOCATION_PROVIDERS_ALLOWED +
    +LOGGING_ID +
    + +
    M  +A +B +C +D +E +H +I +L +N +P +R +S +U +W + TOP +

    +MAX_KEYCODE +
    + +
    N  +A +B +C +D +E +H +I +L +M +P +R +S +U +W + TOP +

    +NETWORK_PREFERENCE +
    +NUM_STREAMS +
    +numeric +
    + +
    P  +A +B +C +D +E +H +I +L +M +N +R +S +U +W + TOP +

    +PARENTAL_CONTROL_ENABLED +
    +PARENTAL_CONTROL_LAST_UPDATE +
    +PARENTAL_CONTROL_REDIRECT_URL +
    +password +
    +phoneNumber +
    + +
    R  +A +B +C +D +E +H +I +L +M +N +P +S +U +W + TOP +

    +RAW_DATA_INDEX +
    +RAW_DATA_X +
    +RAW_DATA_Y +
    +RAW_DATA_Z +
    +ROUTE_BLUETOOTH +
    + +
    S  +A +B +C +D +E +H +I +L +M +N +P +R +U +W + TOP +

    +searchButtonText +
    +SENSOR_ACCELEROMETER +
    +SENSOR_ALL +
    +SENSOR_LIGHT +
    +SENSOR_MAGNETIC_FIELD +
    +SENSOR_MAX +
    +SENSOR_MIN +
    +SENSOR_ORIENTATION +
    +SENSOR_ORIENTATION_RAW +
    +SENSOR_PROXIMITY +
    +SENSOR_TEMPERATURE +
    +SENSOR_TRICORDER +
    +SETTINGS_CLASSNAME +
    +singleLine +
    + +
    U  +A +B +C +D +E +H +I +L +M +N +P +R +S +W + TOP +

    +USB_MASS_STORAGE_ENABLED +
    +USE_GOOGLE_MAIL +
    + +
    W  +A +B +C +D +E +H +I +L +M +N +P +R +S +U + TOP +

    +WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON +
    +WIFI_NETWORKS_AVAILABLE_REPEAT_DELAY +
    +WIFI_NUM_OPEN_NETWORKS_KEPT +
    +WIFI_ON +
    +WIFI_WATCHDOG_ACCEPTABLE_PACKET_LOSS_PERCENTAGE +
    +WIFI_WATCHDOG_AP_COUNT +
    +WIFI_WATCHDOG_BACKGROUND_CHECK_DELAY_MS +
    +WIFI_WATCHDOG_BACKGROUND_CHECK_ENABLED +
    +WIFI_WATCHDOG_BACKGROUND_CHECK_TIMEOUT_MS +
    +WIFI_WATCHDOG_INITIAL_IGNORED_PING_COUNT +
    +WIFI_WATCHDOG_MAX_AP_CHECKS +
    +WIFI_WATCHDOG_ON +
    +WIFI_WATCHDOG_PING_COUNT +
    +WIFI_WATCHDOG_PING_DELAY_MS +
    +WIFI_WATCHDOG_PING_TIMEOUT_MS +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/fields_index_removals.html b/docs/html/sdk/api_diff/3/changes/fields_index_removals.html new file mode 100644 index 000000000000..58ad6557e1eb --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/fields_index_removals.html @@ -0,0 +1,68 @@ + + + + + + + + + +Field Removals Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Fields +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + +
    C  + TOP +

    +CATEGORY_GADGET +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/java.lang.Character.UnicodeBlock.html b/docs/html/sdk/api_diff/3/changes/java.lang.Character.UnicodeBlock.html new file mode 100644 index 000000000000..f7c9d8f64068 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/java.lang.Character.UnicodeBlock.html @@ -0,0 +1,126 @@ + + + + + + + + + +java.lang.Character.UnicodeBlock + + + + + + + + + + +
    +
    +
    +

    +Class java.lang.Character.UnicodeBlock +

    + + +

    + + + + + + + + + +
    Changed Methods +
    + + UnicodeBlock forName(String) + +Change from non-final to final.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/java.lang.Class.html b/docs/html/sdk/api_diff/3/changes/java.lang.Class.html new file mode 100644 index 000000000000..fa0b05639952 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/java.lang.Class.html @@ -0,0 +1,166 @@ + + + + + + + + + +java.lang.Class + + + + + + + + + + +
    +
    +
    +

    +Class java.lang.Class +

    + + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Methods +
    + + Class[] getClasses() + +Change in return type from Class<?> to Class[].
    +
     
    + + Constructor[] getConstructors() + +Change in return type from Constructor<T> to Constructor[].
    +
     
    + + Class[] getDeclaredClasses() + +Change in return type from Class<?> to Class[].
    +
     
    + + Constructor[] getDeclaredConstructors() + +Change in return type from Constructor<T> to Constructor[].
    +
     
    + + Class[] getInterfaces() + +Change in return type from Class<?> to Class[].
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/java.lang.String.html b/docs/html/sdk/api_diff/3/changes/java.lang.String.html new file mode 100644 index 000000000000..5c41b8cc893e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/java.lang.String.html @@ -0,0 +1,161 @@ + + + + + + + + + +java.lang.String + + + + + + + + + + +
    +
    +
    +

    +Class java.lang.String +

    + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Constructors +
    + + String() + +  
    + + String(byte[]) + +  
    + + String(byte[], int) + +  
    + + String(byte[], int, int) + +  
    + + String(byte[], int, int, int) + +  
    +  + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/java.lang.reflect.Proxy.html b/docs/html/sdk/api_diff/3/changes/java.lang.reflect.Proxy.html new file mode 100644 index 000000000000..f593c0ee8e73 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/java.lang.reflect.Proxy.html @@ -0,0 +1,126 @@ + + + + + + + + + +java.lang.reflect.Proxy + + + + + + + + + + +
    +
    +
    +

    +Class java.lang.reflect.Proxy +

    + + +

    + + + + + + + + + +
    Changed Methods +
    + + Class<?> getProxyClass(ClassLoader, Class<?>) + +Change in signature from (ClassLoader, ) to (ClassLoader, Class<?>).
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/java.net.Socket.html b/docs/html/sdk/api_diff/3/changes/java.net.Socket.html new file mode 100644 index 000000000000..6027217d619c --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/java.net.Socket.html @@ -0,0 +1,161 @@ + + + + + + + + + +java.net.Socket + + + + + + + + + + +
    +
    +
    +

    +Class java.net.Socket +

    + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Constructors +
    + + Socket() + +  
    + + Socket(String, int) + +  
    + + Socket(String, int, InetAddress, int) + +  
    + + Socket(Proxy) + +  
    + + Socket(SocketImpl) + +  
    +  + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/java.util.Date.html b/docs/html/sdk/api_diff/3/changes/java.util.Date.html new file mode 100644 index 000000000000..6a8dd2685635 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/java.util.Date.html @@ -0,0 +1,134 @@ + + + + + + + + + +java.util.Date + + + + + + + + + + +
    +
    +
    +

    +Class java.util.Date +

    + +

    + + + + + + + + + + + + + + +
    Changed Constructors +
    + + Date() + +  
    + + Date(int, int, int, int, int, int) + +  
    +  + + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/java.util.jar.Pack200.Packer.html b/docs/html/sdk/api_diff/3/changes/java.util.jar.Pack200.Packer.html new file mode 100644 index 000000000000..75b4cbc4a8f8 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/java.util.jar.Pack200.Packer.html @@ -0,0 +1,130 @@ + + + + + + + + + +java.util.jar.Pack200.Packer + + + + + + + + + + +
    +
    +
    +

    +Interface java.util.jar.Pack200.Packer +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + void addPropertyChangeListener(PropertyChangeListener) +  
    + + void removePropertyChangeListener(PropertyChangeListener) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/java.util.jar.Pack200.Unpacker.html b/docs/html/sdk/api_diff/3/changes/java.util.jar.Pack200.Unpacker.html new file mode 100644 index 000000000000..382fdea8428e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/java.util.jar.Pack200.Unpacker.html @@ -0,0 +1,130 @@ + + + + + + + + + +java.util.jar.Pack200.Unpacker + + + + + + + + + + +
    +
    +
    +

    +Interface java.util.jar.Pack200.Unpacker +

    + + +

    + + + + + + + + + + + + +
    Added Methods +
    + + void addPropertyChangeListener(PropertyChangeListener) +  
    + + void removePropertyChangeListener(PropertyChangeListener) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/java.util.logging.Level.html b/docs/html/sdk/api_diff/3/changes/java.util.logging.Level.html new file mode 100644 index 000000000000..7f5fd19782c8 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/java.util.logging.Level.html @@ -0,0 +1,127 @@ + + + + + + + + + +java.util.logging.Level + + + + + + + + + + +
    +
    +
    +

    +Class java.util.logging.Level +

    + + +

    + + + + + + + + + +
    Changed Methods +
    + + Level parse(String) + +Change in exceptions thrown from no exceptions to java.lang.IllegalArgumentException.
    + Change from final to non-final.
    +
     
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/java.util.logging.LogManager.html b/docs/html/sdk/api_diff/3/changes/java.util.logging.LogManager.html new file mode 100644 index 000000000000..d259077f26d9 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/java.util.logging.LogManager.html @@ -0,0 +1,137 @@ + + + + + + + + + +java.util.logging.LogManager + + + + + + + + + + +
    +
    +
    +

    +Class java.util.logging.LogManager +

    + + +

    + + + + + + + + + + + + + + + + +
    Added Methods +
    + + void addPropertyChangeListener(PropertyChangeListener) +  
    + + LoggingMXBean getLoggingMXBean() +  
    + + void removePropertyChangeListener(PropertyChangeListener) +  
    +  + +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/jdiff_help.html b/docs/html/sdk/api_diff/3/changes/jdiff_help.html new file mode 100644 index 000000000000..21a59f92d526 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/jdiff_help.html @@ -0,0 +1,135 @@ + + + + + + + + + +JDiff Help + + + + + + + + + + + + + + + + + +
    Generated by
    JDiff
    +
    + +
    +

    JDiff Documentation

    +
    +
    +JDiff is a Javadoc doclet which generates a report of the API differences between two versions of a product. It does not report changes in Javadoc comments, or changes in what a class or method does. +This help page describes the different parts of the output from JDiff. +
    +
    + See the reference page in the source for JDiff for information about how to generate a report like this one. +
    +
    +The indexes shown in the top-left frame help show each type of change in more detail. The index "All Differences" contains all the differences between the APIs, in alphabetical order. +These indexes all use the same format: +
      +
    • Removed packages, classes, constructors, methods and fields are struck through.
    • +
    • Added packages, classes, constructors, methods and fields appear in bold.
    • +
    • Changed packages, classes, constructors, methods and fields appear in normal text.
    • +
    +
    +
    +You can always tell when you are reading a JDiff page, rather than a Javadoc page, by the color of the index bar and the color of the background. +Links which take you to a Javadoc page are always in a typewriter font. +Just like Javadoc, all interface names are in italic, and class names are not italicized. Where there are multiple entries in an index with the same name, the heading for them is also in italics, but is not a link. +
    +
    +

    Javadoc

    +This is a link to the top-level Javadoc page for the new version of the product. +
    +
    +

    Overview

    +The overview is the top-level summary of what was removed, added and changed between versions. +
    +
    +

    Package

    +This is a link to the package containing the current changed class or interface. +
    +
    +

    Class

    +This is highlighted when you are looking at the changed class or interface. +
    +
    +

    Text Changes

    +This is a link to the top-level index of all documentation changes for the current package or class. +If it is not present, then there are no documentation changes for the current package or class. +This link can be removed entirely by not using the -docchanges option. +
    +
    +

    Statistics

    +This is a link to a page which shows statistics about the changes between the two APIs. +This link can be removed entirely by not using the -stats option. +
    +
    +

    Help

    +A link to this Help page for JDiff. +
    +
    +

    Prev/Next

    +These links take you to the previous and next changed package or class. +
    +
    +

    Frames/No Frames

    +These links show and hide the HTML frames. All pages are available with or without frames. +
    +
    +

    Complex Changes

    +There are some complex changes which can occur between versions, for example, when two or more methods with the same name change simultaneously, or when a method or field is moved into or from a superclass. +In these cases, the change will be seen as a removal and an addition, rather than as a change. Unexpected removals or additions are often part of one of these type of changes. +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/jdiff_statistics.html b/docs/html/sdk/api_diff/3/changes/jdiff_statistics.html new file mode 100644 index 000000000000..6faea52ee8f0 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/jdiff_statistics.html @@ -0,0 +1,1284 @@ + + + + + + + + + +API Change Statistics + + + + + + + + + + +
    +
    +
    +

    API Change Statistics

    +

    +The percent change statistic reported for all elements in the "to" API Level specification is defined recursively as follows:

    +
    +Percentage difference = 100 * (added + removed + 2*changed)
    +                        -----------------------------------
    +                        sum of public elements in BOTH APIs
    +
    +

    where added is the number of packages added, removed is the number of packages removed, and changed is the number of packages changed. +This definition is applied recursively for the classes and their program elements, so the value for a changed package will be less than 1, unless every class in that package has changed. +The definition ensures that if all packages are removed and all new packages are +added, the change will be 100%. Values are rounded here, so a value of 0% indicates a percentage difference of less than 0.5%.

    +

    The overall difference between the two APIs is approximately 4%. +

    +

    Contents

    +
    Changed Packages
    Sorted by percentage difference
    +
    Changed Classes and Interfaces
    Sorted by percentage difference
    +
    Total of Differences
    Listed by number and type
    +
    + +

    Changed Packages, Sorted by Percentage Difference

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Percentage DifferencePackage
    33android.opengl
    27android.media
    24android.text.style
    22android.hardware
    22android.location
    13android.content.res
    12dalvik.system
    9android.telephony
    9android.text.method
    8android.app
    8android.test
    8android.test.suitebuilder
    7android
    7android.text
    6android.provider
    6android.view
    5android.widget
    5android.os
    4android.webkit
    3android.content.pm
    2android.util
    1android.content
    1java.util.jar
    1android.graphics.drawable.shapes
    <1android.net
    <1android.graphics.drawable
    <1java.util.logging
    <1android.test.mock
    <1java.lang.reflect
    <1android.view.animation
    <1android.net.wifi
    <1android.telephony.gsm
    <1java.net
    <1android.database
    <1android.graphics
    <1java.lang
    <1android.database.sqlite
    <1android.preference
    <1java.util
    +
    + +

    Changed Classes and Interfaces, Sorted by Percentage Difference

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Percentage
    Difference
    Class or Interface
    84 +android.test.TouchUtils
    81 +dalvik.system.Zygote
    66 +android.webkit.UrlInterceptHandler
    61 +android.provider.MediaStore
    53 +android.view.GestureDetector
    50 +android.app.LauncherActivity
    50 +android.text.style.AlignmentSpan.Standard
    50 +android.text.style.StrikethroughSpan
    50 +android.text.style.UnderlineSpan
    50 +android.widget.PopupWindow.OnDismissListener
    48 +android.app.AlertDialog
    46 +android.content.DialogInterface
    45 +android.view.ViewConfiguration
    42 +android.text.method.KeyListener
    40 +android.text.Annotation
    40 +android.text.style.BackgroundColorSpan
    40 +android.text.style.ForegroundColorSpan
    40 +android.text.style.SubscriptSpan
    40 +android.text.style.SuperscriptSpan
    40 +android.text.style.URLSpan
    39 +android.media.MediaRecorder
    38 +android.text.style.DynamicDrawableSpan
    36 +android.content.res.AssetFileDescriptor
    36 +android.location.LocationManager
    34 +android.hardware.SensorManager
    33 +android.text.AutoText
    33 +android.text.method.Touch
    33 +android.text.style.AbsoluteSizeSpan
    33 +android.text.style.LeadingMarginSpan.Standard
    33 +android.text.style.RelativeSizeSpan
    33 +android.text.style.ScaleXSpan
    33 +android.text.style.StyleSpan
    33 +android.text.style.TypefaceSpan
    33 +android.widget.RemoteViews.ActionException
    31 +android.widget.RemoteViews
    30 +android.provider.Settings
    28 +android.text.style.QuoteSpan
    27 +android.app.AlarmManager
    26 +android.text.style.ImageSpan
    25 +android.hardware.SensorListener
    25 +android.text.method.MetaKeyKeyListener
    25 +android.text.style.BulletSpan
    25 +android.widget.ResourceCursorAdapter
    23 +android.provider.Contacts.Intents
    21 +android.widget.PopupWindow
    20 +android.R.id
    20 +android.provider.Settings.System
    20 +android.app.ActivityManager
    20 +android.text.method.BaseKeyListener
    20 +android.util.TimeUtils
    20 +android.widget.AutoCompleteTextView
    19 +android.provider.Contacts.Intents.Insert
    17 +android.view.GestureDetector.SimpleOnGestureListener
    16 +android.provider.MediaStore.Video
    16 +android.text.SpanWatcher
    16 +android.text.TextWatcher
    16 +android.text.style.ClickableSpan
    16 +android.text.style.MaskFilterSpan
    16 +android.text.style.RasterizerSpan
    16 +android.text.style.TextAppearanceSpan
    15 +android.webkit.UrlInterceptRegistry
    14 +android.media.MediaRecorder.OutputFormat
    14 +android.net.NetworkInfo
    14 +android.test.suitebuilder.TestMethod
    14 +android.text.method.QwertyKeyListener
    14 +android.widget.AbsSeekBar
    12 +android.view.WindowManager.LayoutParams
    12 +android.test.ActivityInstrumentationTestCase
    12 +android.test.InstrumentationTestCase
    12 +android.widget.AbsoluteLayout
    12 +java.util.logging.LogManager
    11 +android.view.Gravity
    11 +android.widget.CursorAdapter
    11 +android.widget.TextView
    11 +android.text.method.DateKeyListener
    11 +android.text.method.DateTimeKeyListener
    11 +android.text.method.DialerKeyListener
    11 +android.text.method.TimeKeyListener
    11 +android.webkit.WebHistoryItem
    11 +java.util.jar.Pack200.Unpacker
    10 +android.media.MediaPlayer
    10 +android.provider.MediaStore.Video.VideoColumns
    10 +android.test.ProviderTestCase
    10 +android.test.suitebuilder.TestSuiteBuilder
    10 +android.widget.Chronometer
    10 +java.net.Socket
    9 +android.graphics.drawable.TransitionDrawable
    9 +android.text.method.MultiTapKeyListener
    8 +android.media.AudioManager
    8 +android.view.ViewTreeObserver
    8 +java.lang.reflect.Proxy
    8 +android.content.pm.PackageInfo
    7 +android.text.Spanned
    7 +android.text.method.DigitsKeyListener
    7 +android.hardware.Camera
    7 +android.R.attr
    7 +android.telephony.TelephonyManager
    7 +android.media.SoundPool
    7 +android.os.Environment
    6 +android.view.KeyEvent
    6 +java.lang.String
    6 +android.graphics.drawable.shapes.Shape
    6 +android.text.method.MovementMethod
    6 +android.view.OrientationListener
    6 +dalvik.system.DexFile
    6 +java.util.Date
    6 +android.text.TextUtils
    6 +android.os.ParcelFileDescriptor
    5 +android.webkit.WebView
    5 +android.graphics.drawable.RotateDrawable
    5 +android.graphics.drawable.ScaleDrawable
    5 +android.provider.MediaStore.Audio.AlbumColumns
    5 +android.provider.MediaStore.Audio.Media
    5 +android.webkit.WebSettings
    5 +android.content.res.Resources
    5 +android.graphics.RectF
    5 +android.os.Looper
    5 +android.provider.Contacts.PeopleColumns
    5 +android.text.method.ArrowKeyMovementMethod
    5 +android.text.method.TextKeyListener
    5 +android.view.ViewDebug
    5 +android.widget.Scroller
    5 +android.widget.AbsListView
    5 +android.net.ConnectivityManager
    5 +android.view.KeyCharacterMap
    4 +android.content.res.Configuration
    4 +android.widget.ProgressBar
    4 +android.widget.SimpleCursorAdapter
    4 +android.R.string
    4 +java.lang.Class
    4 +java.util.jar.Pack200.Packer
    4 +android.provider.MediaStore.Images.Media
    3 +android.os.Build
    3 +android.os.IBinder
    3 +android.text.method.ScrollingMovementMethod
    3 +android.util.SparseIntArray
    3 +android.content.Intent
    3 +android.content.ContentResolver
    3 +android.net.wifi.WifiManager
    3 +android.content.BroadcastReceiver
    3 +android.os.Handler
    3 +android.view.Menu
    3 +android.view.animation.Animation
    3 +android.view.animation.Transformation
    2 +android.webkit.URLUtil
    2 +java.util.logging.Level
    2 +android.R.style
    2 +android.os.Binder
    2 +android.view.ViewParent
    2 +android.widget.GridView
    2 +android.test.mock.MockPackageManager
    2 +android.view.View
    2 +android.widget.ListView
    2 +android.app.PendingIntent
    2 +android.content.pm.PackageManager
    2 +android.telephony.PhoneNumberUtils
    2 +android.content.ContentProvider
    2 +android.Manifest.permission
    2 +android.widget.ArrayAdapter
    2 +android.content.pm.ActivityInfo
    2 +dalvik.system.VMDebug
    1 +android.database.sqlite.SQLiteDatabase
    1 +android.content.res.TypedArray
    1 +android.app.Activity
    1 +android.preference.DialogPreference
    1 +android.view.Window
    1 +android.graphics.Bitmap
    1 +android.os.Debug
    1 +android.provider.Browser
    1 +android.os.Parcel
    1 +android.database.DatabaseUtils
    1 +android.media.RingtoneManager
    1 +android.graphics.Rect
    1 +android.telephony.gsm.SmsMessage
    1 +android.database.Cursor
    1 +android.database.CursorWrapper
    1 +android.view.MotionEvent
    1 +android.location.Location
    1 +android.graphics.drawable.Drawable
    <1 +android.R.drawable
    <1 +android.app.Instrumentation
    <1 +android.graphics.Canvas
    <1 +android.content.Context
    <1 +android.view.ViewGroup
    <1 +java.lang.Character.UnicodeBlock
    <1 +android.text.style.UpdateLayout
    +
    + +

    Total of Differences, by Number and Type

    +

    +The table below lists the numbers of program elements (packages, classes, constructors, methods, and fields) that were removed, added or changed. The table includes only the highest-level program elements — that is, if a class with two methods was added, the number of methods added does not include those two methods, but the number of classes added does include that class. +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Number of Differences
      + RemovalsAdditionsChangesTotal
    Packages063945
    Classes and Interfaces067186253
    Constructors1361552
    Methods038171452
    Fields129668365
    Total27863791167
    +
    + +
    +
    + + + diff --git a/docs/html/sdk/api_diff/3/changes/jdiff_topleftframe.html b/docs/html/sdk/api_diff/3/changes/jdiff_topleftframe.html new file mode 100644 index 000000000000..666c9dd3ca8d --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/jdiff_topleftframe.html @@ -0,0 +1,64 @@ + + + + + + + + + +Android API Version Differences + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + Select a Diffs Index:
    All Differences
    By Package
    By Class
    By Constructor
    By Method
    By Field
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/methods_index_additions.html b/docs/html/sdk/api_diff/3/changes/methods_index_additions.html new file mode 100644 index 000000000000..1fa2bdb6c706 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/methods_index_additions.html @@ -0,0 +1,1397 @@ + + + + + + + + + +Method Additions Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Methods +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + +
    A  +B +C +D +E +F +G +H +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +addGpsStatusListener +(Listener)
    +addOnScrollChangedListener +(OnScrollChangedListener)
    +addPropertyChangeListener
    +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Packer +
    +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Unpacker +
    +  type  +(PropertyChangeListener) in java.util.logging.LogManager +
    +addTestProvider +(String, boolean, boolean, boolean, boolean, boolean, boolean, boolean, int, int)
    +adjustMetaAfterKeypress +(long)
    +applyDisplay +(int, Rect, Rect)
    + +
    B  +A +C +D +E +F +G +H +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +beginBatchEdit +()
    +bringPointIntoView +(int)
    + +
    C  +A +B +D +E +F +G +H +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +calculateLength +(CharSequence, boolean)
    +callActivityOnUserLeaving +(Activity)
    +changeAction +(KeyEvent, int)
    +changeCursorAndColumns +(Cursor, String[], int[])
    +changeFlags +(KeyEvent, int)
    +changeTimeRepeat +(KeyEvent, long, int)
    +checkInputConnectionProxy +(View)
    +clearComposingText +()
    +clearListSelection +()
    +clearMatches +()
    +clearMetaKeyState
    +  type  +(View, Editable, int) in android.text.method.KeyListener +
    +  type  +(long, int) in android.text.method.MetaKeyKeyListener +
    +  type  +(View, Editable, int) in android.text.method.MetaKeyKeyListener +
    +  type  +(Editable, int) in android.text.method.MetaKeyKeyListener +
    +clearTestProviderEnabled +(String)
    +clearTestProviderLocation +(String)
    +clearTestProviderStatus +(String)
    +close +()
    +closeContextMenu +()
    +computeDurationHint +()
    +copyPixelsFromBuffer +(Buffer)
    +createInputStream +()
    +createOutputStream +()
    +createWifiLock +(int, String)
    + +
    D  +A +B +C +E +F +G +H +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +describeContents
    +  type  +() in android.content.res.AssetFileDescriptor +
    +  type  +() in android.graphics.RectF +
    +  type  +() in android.text.Annotation +
    +  type  +() in android.text.style.AbsoluteSizeSpan +
    +  type  +() in android.text.style.AlignmentSpan.Standard +
    +  type  +() in android.text.style.BackgroundColorSpan +
    +  type  +() in android.text.style.BulletSpan +
    +  type  +() in android.text.style.ForegroundColorSpan +
    +  type  +() in android.text.style.LeadingMarginSpan.Standard +
    +  type  +() in android.text.style.QuoteSpan +
    +  type  +() in android.text.style.RelativeSizeSpan +
    +  type  +() in android.text.style.ScaleXSpan +
    +  type  +() in android.text.style.StrikethroughSpan +
    +  type  +() in android.text.style.StyleSpan +
    +  type  +() in android.text.style.SubscriptSpan +
    +  type  +() in android.text.style.SuperscriptSpan +
    +  type  +() in android.text.style.TextAppearanceSpan +
    +  type  +() in android.text.style.TypefaceSpan +
    +  type  +() in android.text.style.URLSpan +
    +  type  +() in android.text.style.UnderlineSpan +
    +deviceHasKey +(int)
    +deviceHasKeys +(int[])
    +didTouchFocusSelect +()
    +dispatchKeyEventPreIme +(KeyEvent)
    +drag +(InstrumentationTestCase, float, float, float, float, int)
    +dragQuarterScreenDown +(InstrumentationTestCase, Activity)
    +dragQuarterScreenUp +(InstrumentationTestCase, Activity)
    +dragViewBy +(InstrumentationTestCase, View, int, int, int)
    +dragViewTo +(InstrumentationTestCase, View, int, int, int)
    +dragViewToBottom
    +  type  +(ActivityInstrumentationTestCase, View, int) in android.test.TouchUtils +
    +  type  +(InstrumentationTestCase, Activity, View, int) in android.test.TouchUtils +
    +dragViewToTop
    +  type  +(InstrumentationTestCase, View) in android.test.TouchUtils +
    +  type  +(InstrumentationTestCase, View, int) in android.test.TouchUtils +
    +dragViewToX +(InstrumentationTestCase, View, int, int)
    +dragViewToY +(InstrumentationTestCase, View, int, int)
    +drawBitmap +(int[], int, int, float, float, int, int, boolean, Paint)
    +dump
    +  type  +(Printer, String) in android.location.Location +
    +  type  +(FileDescriptor, String[]) in android.os.Binder +
    +  type  +(FileDescriptor, String[]) in android.os.IBinder +
    +dumpCapturedView +(String, Object)
    +dumpHprofData
    +  type  +(String) in android.os.Debug +
    +  type  +(String) in dalvik.system.VMDebug +
    +dumpSpans +(CharSequence, Printer, String)
    + +
    E  +A +B +C +D +F +G +H +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +endBatchEdit +()
    +extractText +(ExtractedTextRequest, ExtractedText)
    + +
    F  +A +B +C +D +E +G +H +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +findAll +(String)
    +findNext +(boolean)
    +forkAndSpecialize +(int, int, int[], int, int[][])
    +forkSystemServer +(int, int, int[], int, int[][])
    +formatJapaneseNumber +(Editable)
    + +
    G  +A +B +C +D +E +F +H +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +get +(Context)
    +getAllowFileAccess +()
    +getBackgroundDataSetting +()
    +getBoolean +(int)
    +getBuiltInZoomControls +()
    +getButton +(int)
    +getCapsMode +(CharSequence, int, int)
    +getCharacters +()
    +getDeclaredLength +()
    +getDefaultSensor +(int)
    +getDeviceConfigurationInfo +()
    +getDialog +()
    +getDoubleTapTimeout +()
    +getDrawable
    +  type  +() in android.graphics.drawable.RotateDrawable +
    +  type  +() in android.graphics.drawable.ScaleDrawable +
    +getDropDownAnchor +()
    +getDropDownWidth +()
    +getEditableText +()
    +getFraction +(int, int, int)
    +getGpsStatus +(GpsStatus)
    +getImeActionId +()
    +getImeActionLabel +()
    +getImeOptions +()
    +getInclination +(float[])
    +getInitialScrollX +(TextView, Spannable)
    +getInitialScrollY +(TextView, Spannable)
    +getInputExtras +(boolean)
    +getInputMethodMode +()
    +getInputType
    +  type  +() in android.text.method.DateKeyListener +
    +  type  +() in android.text.method.DateTimeKeyListener +
    +  type  +() in android.text.method.DialerKeyListener +
    +  type  +() in android.text.method.DigitsKeyListener +
    +  type  +() in android.text.method.KeyListener +
    +  type  +() in android.text.method.MultiTapKeyListener +
    +  type  +() in android.text.method.QwertyKeyListener +
    +  type  +() in android.text.method.TextKeyListener +
    +  type  +() in android.text.method.TimeKeyListener +
    +  type  +() in android.widget.TextView +
    +getItem +(int)
    +getKeyProgressIncrement +()
    +getLaunchIntentForPackage
    +  type  +(String) in android.content.pm.PackageManager +
    +  type  +(String) in android.test.mock.MockPackageManager +
    +getLayoutDimension +(int, int)
    +getListSelection +()
    +getListView +()
    +getLoggingMXBean +()
    +getLong
    +  type  +(ContentResolver, String) in android.provider.Settings.System +
    +  type  +(ContentResolver, String, long) in android.provider.Settings.System +
    +getMaxAvailableHeight +(View, int)
    +getMaxKeyCode +()
    +getMetaState
    +  type  +(long) in android.text.method.MetaKeyKeyListener +
    +  type  +(long, int) in android.text.method.MetaKeyKeyListener +
    +getNeighboringCellInfo +()
    +getOnChronometerTickListener +()
    +getOnItemClickListener +()
    +getOnItemSelectedListener +()
    +getOrientation +(float[], float[])
    +getOriginalUrl
    +  type  +() in android.webkit.WebHistoryItem +
    +  type  +() in android.webkit.WebView +
    +getPluginData
    +  type  +(String, Map<String, String>) in android.webkit.UrlInterceptHandler +
    +  type  +(String, Map<String, String>) in android.webkit.UrlInterceptRegistry +
    +getPrivateImeOptions +()
    +getRotationMatrix +(float[], float[], float[], float[])
    +getRunningAppProcesses +()
    +getScaledDoubleTapSlop +()
    +getScaledEdgeSlop +()
    +getScaledFadingEdgeLength +()
    +getScaledMaximumDrawingCacheSize +()
    +getScaledMinimumFlingVelocity +()
    +getScaledScrollBarSize +()
    +getScaledTouchSlop +()
    +getScaledWindowTouchSlop +()
    +getSensorList +(int)
    +getSize +(View)
    +getSpanTypeId
    +  type  +() in android.text.Annotation +
    +  type  +() in android.text.style.AbsoluteSizeSpan +
    +  type  +() in android.text.style.AlignmentSpan.Standard +
    +  type  +() in android.text.style.BackgroundColorSpan +
    +  type  +() in android.text.style.BulletSpan +
    +  type  +() in android.text.style.ForegroundColorSpan +
    +  type  +() in android.text.style.LeadingMarginSpan.Standard +
    +  type  +() in android.text.style.QuoteSpan +
    +  type  +() in android.text.style.RelativeSizeSpan +
    +  type  +() in android.text.style.ScaleXSpan +
    +  type  +() in android.text.style.StrikethroughSpan +
    +  type  +() in android.text.style.StyleSpan +
    +  type  +() in android.text.style.SubscriptSpan +
    +  type  +() in android.text.style.SuperscriptSpan +
    +  type  +() in android.text.style.TextAppearanceSpan +
    +  type  +() in android.text.style.TypefaceSpan +
    +  type  +() in android.text.style.URLSpan +
    +  type  +() in android.text.style.UnderlineSpan +
    +getStartX +()
    +getStartY +()
    +getStatSize +()
    +getSubtype +()
    +getSubtypeName +()
    +getSystemSharedLibraryNames
    +  type  +() in android.content.pm.PackageManager +
    +  type  +() in android.test.mock.MockPackageManager +
    +getTextFilter +()
    +getThread +()
    +getTimeZoneDatabaseVersion +()
    +getUserAgentString +()
    +getVerticalAlignment +()
    +getWindowVisibleDisplayFrame +(Rect)
    + +
    H  +A +B +C +D +E +F +G +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +handleKeyDown +(long, int, KeyEvent)
    +handleKeyUp +(long, int, KeyEvent)
    +hasSoftInputMode +()
    +hasWindowFocus +()
    + +
    I  +A +B +C +D +E +F +G +H +L +M +O +P +R +S +T +U +W +Y + TOP +

    +inferStreamType +()
    +intentForPosition +(int)
    +isAboveAnchor +()
    +isBluetoothA2dpOn +()
    +isClippingEnabled +()
    +isDebuggingEnabled +()
    +isFastScrollEnabled +()
    +isFillEnabled +()
    +isHapticFeedbackEnabled +()
    +isInEditMode +()
    +isInputMethodTarget +()
    +isLooping +()
    +isOutsideTouchable +()
    +isPerformingCompletion +()
    +isRoaming +()
    +isSafeMode
    +  type  +() in android.content.pm.PackageManager +
    +  type  +() in android.test.mock.MockPackageManager +
    +isSelectingMetaTracker +(CharSequence, Object)
    +isSmoothScrollbarEnabled +()
    +isTouchable +()
    + +
    L  +A +B +C +D +E +F +G +H +I +M +O +P +R +S +T +U +W +Y + TOP +

    +launchActivityWithIntent +(String, Class<T>, Intent)
    +load
    +  type  +(AssetFileDescriptor, int) in android.media.SoundPool +
    +  type  +(FileDescriptor, long, long, int) in android.media.SoundPool +
    +loadDex +(String, String, int)
    +longClickView +(InstrumentationTestCase, View)
    + +
    M  +A +B +C +D +E +F +G +H +I +L +O +P +R +S +T +U +W +Y + TOP +

    +makeListItems +()
    +mayUseInputMethod +(int)
    +moveCursorToVisibleOffset +()
    +mutate +()
    + +
    O  +A +B +C +D +E +F +G +H +I +L +M +P +R +S +T +U +W +Y + TOP +

    +onBeginBatchEdit +()
    +onCheckIsTextEditor +()
    +onCommitCompletion +(CompletionInfo)
    +onContentChanged +()
    +onCreateInputConnection +(EditorInfo)
    +onDoubleTap +(MotionEvent)
    +onDoubleTapEvent +(MotionEvent)
    +onEditorAction +(int)
    +onEndBatchEdit +()
    +onFinishTemporaryDetach +()
    +onKeyOther
    +  type  +(TextView, Spannable, KeyEvent) in android.text.method.ArrowKeyMovementMethod +
    +  type  +(View, Editable, KeyEvent) in android.text.method.BaseKeyListener +
    +  type  +(View, Editable, KeyEvent) in android.text.method.KeyListener +
    +  type  +(TextView, Spannable, KeyEvent) in android.text.method.MovementMethod +
    +  type  +(TextView, Spannable, KeyEvent) in android.text.method.ScrollingMovementMethod +
    +onKeyPreIme +(int, KeyEvent)
    +onPrivateIMECommand +(String, Bundle)
    +onSelectionChanged +(int, int)
    +onSingleTapConfirmed +(MotionEvent)
    +onStartTemporaryDetach +()
    +onTextContextMenuItem +(int)
    +onUserInteraction +()
    +onUserLeaveHint +()
    +openAssetFile +(Uri, String)
    +openAssetFileDescriptor +(Uri, String)
    +openOutputStream +(Uri, String)
    +openRawResource +(int, TypedValue)
    + +
    P  +A +B +C +D +E +F +G +H +I +L +M +O +R +S +T +U +W +Y + TOP +

    +parseBundleExtra +(String, AttributeSet, Bundle)
    +parseBundleExtras +(XmlResourceParser, Bundle)
    +peekService +(Context, Intent)
    +performHapticFeedback
    +  type  +(int) in android.view.View +
    +  type  +(int, int) in android.view.View +
    +playSoundEffect +(int, float)
    +putLong +(ContentResolver, String, long)
    + +
    R  +A +B +C +D +E +F +G +H +I +L +M +O +P +S +T +U +W +Y + TOP +

    +readFromParcel +(Parcel)
    +registerListener
    +  type  +(SensorEventListener, Sensor, int) in android.hardware.SensorManager +
    +  type  +(SensorEventListener, Sensor, int, Handler) in android.hardware.SensorManager +
    +remapCoordinateSystem +(float[], int, int, float[])
    +removeAt +(int)
    +removeGpsStatusListener +(Listener)
    +removeOnScrollChangedListener +(OnScrollChangedListener)
    +removePropertyChangeListener
    +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Packer +
    +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Unpacker +
    +  type  +(PropertyChangeListener) in java.util.logging.LogManager +
    +removeTestProvider +(String)
    +removeUpdates +(PendingIntent)
    +replaceExtras
    +  type  +(Intent) in android.content.Intent +
    +  type  +(Bundle) in android.content.Intent +
    +requestChildRectangleOnScreen +(View, Rect, boolean)
    +requestLocationUpdates +(String, long, float, PendingIntent)
    +resetLockedMeta +(long)
    +restartPackage +(String)
    +restorePicture +(Bundle, File)
    +runTestOnUiThread +(Runnable)
    + +
    S  +A +B +C +D +E +F +G +H +I +L +M +O +P +R +T +U +W +Y + TOP +

    +savePicture +(Bundle, File)
    +scrollToBottom +(InstrumentationTestCase, Activity, ViewGroup)
    +scrollToTop +(InstrumentationTestCase, Activity, ViewGroup)
    +sendExtraCommand +(String, String, Bundle)
    +setAllowFileAccess +(boolean)
    +setBitmap +(int, String, Bitmap)
    +setBluetoothA2dpOn +(boolean)
    +setBoolean +(int, String, boolean)
    +setBuiltInZoomControls +(boolean)
    +setButton
    +  type  +(CharSequence, OnClickListener) in android.app.AlertDialog +
    +  type  +(CharSequence, Message) in android.app.AlertDialog +
    +setByte +(int, String, byte)
    +setCamera +(Camera)
    +setChar +(int, String, char)
    +setCharSequence +(int, String, CharSequence)
    +setClippingEnabled +(boolean)
    +setCompoundDrawablesWithIntrinsicBounds +(int, int, int, int)
    +setDouble +(int, String, double)
    +setDropDownAnchor +(int)
    +setDropDownWidth +(int)
    +setExtractedText +(ExtractedText)
    +setFastScrollEnabled +(boolean)
    +setFillEnabled +(boolean)
    +setFloat +(int, String, float)
    +setFooterDividersEnabled +(boolean)
    +setHapticFeedbackEnabled +(boolean)
    +setHeaderDividersEnabled +(boolean)
    +setImageViewBitmap +(int, Bitmap)
    +setImeActionLabel +(CharSequence, int)
    +setImeOptions +(int)
    +setInexactRepeating +(int, long, long, PendingIntent)
    +setInputExtras +(int)
    +setInputMethodMode +(int)
    +setInputType +(int)
    +setInt +(int, String, int)
    +setKeyProgressIncrement +(int)
    +setListSelection +(int)
    +setLong +(int, String, long)
    +setMaxDuration +(int)
    +setMaxFileSize +(long)
    +setNetworkAvailable +(boolean)
    +setOnChronometerTickListener +(OnChronometerTickListener)
    +setOnClickPendingIntent +(int, PendingIntent)
    +setOnDoubleTapListener +(OnDoubleTapListener)
    +setOnEditorActionListener +(OnEditorActionListener)
    +setOnErrorListener +(OnErrorListener)
    +setOneShotPreviewCallback +(PreviewCallback)
    +setOnInfoListener
    +  type  +(OnInfoListener) in android.media.MediaPlayer +
    +  type  +(OnInfoListener) in android.media.MediaRecorder +
    +setOnVideoSizeChangedListener +(OnVideoSizeChangedListener)
    +setOutputFile +(FileDescriptor)
    +setOutsideTouchable +(boolean)
    +setPrivateImeOptions +(String)
    +setRawInputType +(int)
    +setScrollContainer +(boolean)
    +setShort +(int, String, short)
    +setSmoothScrollbarEnabled +(boolean)
    +setSoftInputMode +(int)
    +setStaticTransformationsEnabled +(boolean)
    +setString +(int, String, String)
    +setTestProviderEnabled +(String, boolean)
    +setTestProviderLocation +(String, Location)
    +setTestProviderStatus +(String, int, Bundle, long)
    +setTextColor +(int, int)
    +setTouchable +(boolean)
    +setTouchInterceptor +(OnTouchListener)
    +setUri +(int, String, Uri)
    +setUserAgentString +(String)
    +setVideoEncoder +(int)
    +setVideoFrameRate +(int)
    +setVideoSize +(int, int)
    +setVideoSource +(int)
    +setView +(View, int, int, int, int)
    +setViewResource +(int)
    +setVisible +(boolean)
    +setWindowAnimations +(int)
    +setWindowLayoutMode +(int, int)
    +sort +(Comparator<? super T>)
    + +
    T  +A +B +C +D +E +F +G +H +I +L +M +O +P +R +S +U +W +Y + TOP +

    +toShortString
    +  type  +() in android.graphics.Rect +
    +  type  +() in android.view.animation.Transformation +
    + +
    U  +A +B +C +D +E +F +G +H +I +L +M +O +P +R +S +T +W +Y + TOP +

    +unregisterListener
    +  type  +(SensorEventListener) in android.hardware.SensorManager +
    +  type  +(SensorEventListener, Sensor) in android.hardware.SensorManager +
    +update
    +  type  +() in android.widget.PopupWindow +
    +  type  +(int, int, int, int, boolean) in android.widget.PopupWindow +
    + +
    W  +A +B +C +D +E +F +G +H +I +L +M +O +P +R +S +T +U +Y + TOP +

    +writeToParcel
    +  type  +(Parcel, int) in android.content.res.AssetFileDescriptor +
    +  type  +(Parcel, int) in android.graphics.RectF +
    +  type  +(Parcel, int) in android.text.Annotation +
    +  type  +(Parcel, int) in android.text.style.AbsoluteSizeSpan +
    +  type  +(Parcel, int) in android.text.style.AlignmentSpan.Standard +
    +  type  +(Parcel, int) in android.text.style.BackgroundColorSpan +
    +  type  +(Parcel, int) in android.text.style.BulletSpan +
    +  type  +(Parcel, int) in android.text.style.ForegroundColorSpan +
    +  type  +(Parcel, int) in android.text.style.LeadingMarginSpan.Standard +
    +  type  +(Parcel, int) in android.text.style.QuoteSpan +
    +  type  +(Parcel, int) in android.text.style.RelativeSizeSpan +
    +  type  +(Parcel, int) in android.text.style.ScaleXSpan +
    +  type  +(Parcel, int) in android.text.style.StrikethroughSpan +
    +  type  +(Parcel, int) in android.text.style.StyleSpan +
    +  type  +(Parcel, int) in android.text.style.SubscriptSpan +
    +  type  +(Parcel, int) in android.text.style.SuperscriptSpan +
    +  type  +(Parcel, int) in android.text.style.TextAppearanceSpan +
    +  type  +(Parcel, int) in android.text.style.TypefaceSpan +
    +  type  +(Parcel, int) in android.text.style.URLSpan +
    +  type  +(Parcel, int) in android.text.style.UnderlineSpan +
    + +
    Y  +A +B +C +D +E +F +G +H +I +L +M +O +P +R +S +T +U +W + TOP +

    +yieldIfContendedSafely +()
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/methods_index_all.html b/docs/html/sdk/api_diff/3/changes/methods_index_all.html new file mode 100644 index 000000000000..22492a352290 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/methods_index_all.html @@ -0,0 +1,1600 @@ + + + + + + + + + +Method Differences Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +Methods +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + +
    A  +B +C +D +E +F +G +H +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +addGpsStatusListener +(Listener)
    +addOnScrollChangedListener +(OnScrollChangedListener)
    +addPropertyChangeListener
    +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Packer +
    +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Unpacker +
    +  type  +(PropertyChangeListener) in java.util.logging.LogManager +
    +addRequirements +(Predicate<TestMethod>)
    +addTestProvider +(String, boolean, boolean, boolean, boolean, boolean, boolean, boolean, int, int)
    +adjustMetaAfterKeypress +(long)
    +appendEscapedSQLString +(StringBuilder, String)
    +applyDisplay +(int, Rect, Rect)
    + +
    B  +A +C +D +E +F +G +H +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +beginBatchEdit +()
    +bringPointIntoView +(int)
    + +
    C  +A +B +D +E +F +G +H +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +calculateLength +(CharSequence, boolean)
    +callActivityOnUserLeaving +(Activity)
    +changeAction +(KeyEvent, int)
    +changeCursorAndColumns +(Cursor, String[], int[])
    +changeDebugPort +(int)
    +changeFlags +(KeyEvent, int)
    +changeTimeRepeat +(KeyEvent, long, int)
    +checkInputConnectionProxy +(View)
    +clearComposingText +()
    +clearListSelection +()
    +clearMatches +()
    +clearMetaKeyState
    +  type  +(View, Editable, int) in android.text.method.KeyListener +
    +  type  +(long, int) in android.text.method.MetaKeyKeyListener +
    +  type  +(View, Editable, int) in android.text.method.MetaKeyKeyListener +
    +  type  +(Editable, int) in android.text.method.MetaKeyKeyListener +
    +clearTestProviderEnabled +(String)
    +clearTestProviderLocation +(String)
    +clearTestProviderStatus +(String)
    +clone +()
    +close +()
    +closeContextMenu +()
    +computeDurationHint +()
    +copyPixelsFromBuffer +(Buffer)
    +createInputStream +()
    +createOutputStream +()
    +createWifiLock +(int, String)
    + +
    D  +A +B +C +E +F +G +H +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +describeContents
    +  type  +() in android.content.res.AssetFileDescriptor +
    +  type  +() in android.graphics.RectF +
    +  type  +() in android.text.Annotation +
    +  type  +() in android.text.style.AbsoluteSizeSpan +
    +  type  +() in android.text.style.AlignmentSpan.Standard +
    +  type  +() in android.text.style.BackgroundColorSpan +
    +  type  +() in android.text.style.BulletSpan +
    +  type  +() in android.text.style.ForegroundColorSpan +
    +  type  +() in android.text.style.LeadingMarginSpan.Standard +
    +  type  +() in android.text.style.QuoteSpan +
    +  type  +() in android.text.style.RelativeSizeSpan +
    +  type  +() in android.text.style.ScaleXSpan +
    +  type  +() in android.text.style.StrikethroughSpan +
    +  type  +() in android.text.style.StyleSpan +
    +  type  +() in android.text.style.SubscriptSpan +
    +  type  +() in android.text.style.SuperscriptSpan +
    +  type  +() in android.text.style.TextAppearanceSpan +
    +  type  +() in android.text.style.TypefaceSpan +
    +  type  +() in android.text.style.URLSpan +
    +  type  +() in android.text.style.UnderlineSpan +
    +deviceHasKey +(int)
    +deviceHasKeys +(int[])
    +didTouchFocusSelect +()
    +dispatchKeyEventPreIme +(KeyEvent)
    +drag
    +  type  +(InstrumentationTestCase, float, float, float, float, int) in android.test.TouchUtils +
    +  type  +(ActivityInstrumentationTestCase, float, float, float, float, int) in android.test.TouchUtils +
    +dragQuarterScreenDown
    +  type  +(InstrumentationTestCase, Activity) in android.test.TouchUtils +
    +  type  +(ActivityInstrumentationTestCase) in android.test.TouchUtils +
    +dragQuarterScreenUp
    +  type  +(InstrumentationTestCase, Activity) in android.test.TouchUtils +
    +  type  +(ActivityInstrumentationTestCase) in android.test.TouchUtils +
    +dragViewBy
    +  type  +(InstrumentationTestCase, View, int, int, int) in android.test.TouchUtils +
    +  type  +(ActivityInstrumentationTestCase, View, int, int, int) in android.test.TouchUtils +
    +dragViewTo
    +  type  +(InstrumentationTestCase, View, int, int, int) in android.test.TouchUtils +
    +  type  +(ActivityInstrumentationTestCase, View, int, int, int) in android.test.TouchUtils +
    +dragViewToBottom
    +  type  +(ActivityInstrumentationTestCase, View, int) in android.test.TouchUtils +
    +  type  +(InstrumentationTestCase, Activity, View, int) in android.test.TouchUtils +
    +  type  +(ActivityInstrumentationTestCase, View) in android.test.TouchUtils +
    +  type  +(InstrumentationTestCase, Activity, View) in android.test.TouchUtils +
    +dragViewToTop
    +  type  +(InstrumentationTestCase, View) in android.test.TouchUtils +
    +  type  +(InstrumentationTestCase, View, int) in android.test.TouchUtils +
    +  type  +(ActivityInstrumentationTestCase, View) in android.test.TouchUtils +
    +  type  +(ActivityInstrumentationTestCase, View, int) in android.test.TouchUtils +
    +dragViewToX
    +  type  +(InstrumentationTestCase, View, int, int) in android.test.TouchUtils +
    +  type  +(ActivityInstrumentationTestCase, View, int, int) in android.test.TouchUtils +
    +dragViewToY
    +  type  +(InstrumentationTestCase, View, int, int) in android.test.TouchUtils +
    +  type  +(ActivityInstrumentationTestCase, View, int, int) in android.test.TouchUtils +
    +drawBitmap +(int[], int, int, float, float, int, int, boolean, Paint)
    +dump
    +  type  +(Printer, String) in android.location.Location +
    +  type  +(FileDescriptor, String[]) in android.os.Binder +
    +  type  +(FileDescriptor, String[]) in android.os.IBinder +
    +dumpCapturedView +(String, Object)
    +dumpHprofData
    +  type  +(String) in android.os.Debug +
    +  type  +(String) in dalvik.system.VMDebug +
    +dumpSpans +(CharSequence, Printer, String)
    + +
    E  +A +B +C +D +F +G +H +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +endBatchEdit +()
    +extractText +(ExtractedTextRequest, ExtractedText)
    + +
    F  +A +B +C +D +E +G +H +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +findAll +(String)
    +findNext +(boolean)
    +forkAndSpecialize
    +  type  +(int, int, int[], int, int[][]) in dalvik.system.Zygote +
    +  type  +(int, int, int[], boolean, int[][]) in dalvik.system.Zygote +
    +forkSystemServer
    +  type  +(int, int, int[], int, int[][]) in dalvik.system.Zygote +
    +  type  +(int, int, int[], boolean, int[][]) in dalvik.system.Zygote +
    +formatJapaneseNumber +(Editable)
    +forName +(String)
    + +
    G  +A +B +C +D +E +F +H +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +get +(Context)
    +getAllowFileAccess +()
    +getBackgroundDataSetting +()
    +getBoolean +(int)
    +getBuiltInZoomControls +()
    +getButton +(int)
    +getCapsMode +(CharSequence, int, int)
    +getCharacters +()
    +getClasses +()
    +getColumnIndex
    +  type  +(String) in android.database.Cursor +
    +  type  +(String) in android.database.CursorWrapper +
    +getConstructors +()
    +getCount +()
    +getDeclaredClasses +()
    +getDeclaredConstructors +()
    +getDeclaredLength +()
    +getDefaultSensor +(int)
    +getDeviceConfigurationInfo +()
    +getDialog +()
    +getDoubleTapTimeout +()
    +getDrawable
    +  type  +() in android.graphics.drawable.RotateDrawable +
    +  type  +() in android.graphics.drawable.ScaleDrawable +
    +getDropDownAnchor +()
    +getDropDownWidth +()
    +getEdgeSlop +()
    +getEditableText +()
    +getFadingEdgeLength +()
    +getFraction +(int, int, int)
    +getGpsStatus +(GpsStatus)
    +getHandler +()
    +getImeActionId +()
    +getImeActionLabel +()
    +getImeOptions +()
    +getInclination +(float[])
    +getInitialScrollX +(TextView, Spannable)
    +getInitialScrollY +(TextView, Spannable)
    +getInputExtras +(boolean)
    +getInputMethodMode +()
    +getInputType
    +  type  +() in android.text.method.DateKeyListener +
    +  type  +() in android.text.method.DateTimeKeyListener +
    +  type  +() in android.text.method.DialerKeyListener +
    +  type  +() in android.text.method.DigitsKeyListener +
    +  type  +() in android.text.method.KeyListener +
    +  type  +() in android.text.method.MultiTapKeyListener +
    +  type  +() in android.text.method.QwertyKeyListener +
    +  type  +() in android.text.method.TextKeyListener +
    +  type  +() in android.text.method.TimeKeyListener +
    +  type  +() in android.widget.TextView +
    +getInterfaces +()
    +getItem
    +  type  +(int) in android.view.Menu +
    +  type  +(int) in android.widget.CursorAdapter +
    +getItemClickListener +()
    +getItemId +(int)
    +getItemSelectedListener +()
    +getKeyProgressIncrement +()
    +getLaunchIntentForPackage
    +  type  +(String) in android.content.pm.PackageManager +
    +  type  +(String) in android.test.mock.MockPackageManager +
    +getLayoutDimension +(int, int)
    +getListSelection +()
    +getListView +()
    +getLoggingMXBean +()
    +getLong
    +  type  +(ContentResolver, String) in android.provider.Settings.System +
    +  type  +(ContentResolver, String, long) in android.provider.Settings.System +
    +getMaxAvailableHeight +(View, int)
    +getMaximumDrawingCacheSize +()
    +getMaxKeyCode +()
    +getMetaState
    +  type  +(long) in android.text.method.MetaKeyKeyListener +
    +  type  +(long, int) in android.text.method.MetaKeyKeyListener +
    +getMinimumFlingVelocity +()
    +getNeighboringCellInfo +()
    +getOnChronometerTickListener +()
    +getOnItemClickListener +()
    +getOnItemSelectedListener +()
    +getOrientation +(float[], float[])
    +getOriginalUrl
    +  type  +() in android.webkit.WebHistoryItem +
    +  type  +() in android.webkit.WebView +
    +getPluginData
    +  type  +(String, Map<String, String>) in android.webkit.UrlInterceptHandler +
    +  type  +(String, Map<String, String>) in android.webkit.UrlInterceptRegistry +
    +getPrivateImeOptions +()
    +getProxyClass +(ClassLoader, Class<?>)
    +getRotationMatrix +(float[], float[], float[], float[])
    +getRunningAppProcesses +()
    +getScaledDoubleTapSlop +()
    +getScaledEdgeSlop +()
    +getScaledFadingEdgeLength +()
    +getScaledMaximumDrawingCacheSize +()
    +getScaledMinimumFlingVelocity +()
    +getScaledScrollBarSize +()
    +getScaledTouchSlop +()
    +getScaledWindowTouchSlop +()
    +getScrollBarSize +()
    +getSensorList +(int)
    +getSensors +()
    +getSize +(View)
    +getSpanTypeId
    +  type  +() in android.text.Annotation +
    +  type  +() in android.text.style.AbsoluteSizeSpan +
    +  type  +() in android.text.style.AlignmentSpan.Standard +
    +  type  +() in android.text.style.BackgroundColorSpan +
    +  type  +() in android.text.style.BulletSpan +
    +  type  +() in android.text.style.ForegroundColorSpan +
    +  type  +() in android.text.style.LeadingMarginSpan.Standard +
    +  type  +() in android.text.style.QuoteSpan +
    +  type  +() in android.text.style.RelativeSizeSpan +
    +  type  +() in android.text.style.ScaleXSpan +
    +  type  +() in android.text.style.StrikethroughSpan +
    +  type  +() in android.text.style.StyleSpan +
    +  type  +() in android.text.style.SubscriptSpan +
    +  type  +() in android.text.style.SuperscriptSpan +
    +  type  +() in android.text.style.TextAppearanceSpan +
    +  type  +() in android.text.style.TypefaceSpan +
    +  type  +() in android.text.style.URLSpan +
    +  type  +() in android.text.style.UnderlineSpan +
    +getStartX +()
    +getStartY +()
    +getStatSize +()
    +getSubtype +()
    +getSubtypeName +()
    +getSurrogate +(String, Map<String, String>)
    +getSystemSharedLibraryNames
    +  type  +() in android.content.pm.PackageManager +
    +  type  +() in android.test.mock.MockPackageManager +
    +getTargetIntent +()
    +getTextFilter +()
    +getThread +()
    +getTimeZoneDatabaseVersion +()
    +getTouchSlop +()
    +getUserAgent +()
    +getUserAgentString +()
    +getVerticalAlignment +()
    +getWindowTouchSlop +()
    +getWindowVisibleDisplayFrame +(Rect)
    +getZoomControls +()
    + +
    H  +A +B +C +D +E +F +G +I +L +M +O +P +R +S +T +U +W +Y + TOP +

    +handleKeyDown +(long, int, KeyEvent)
    +handleKeyUp +(long, int, KeyEvent)
    +hasSoftInputMode +()
    +hasWindowFocus +()
    + +
    I  +A +B +C +D +E +F +G +H +L +M +O +P +R +S +T +U +W +Y + TOP +

    +inferStreamType +()
    +intentForPosition +(int)
    +isAboveAnchor +()
    +isBluetoothA2dpOn +()
    +isClippingEnabled +()
    +isCookielessProxyUrl +(String)
    +isDebuggingEnabled +()
    +isFastScrollEnabled +()
    +isFillEnabled +()
    +isHapticFeedbackEnabled +()
    +isInEditMode +()
    +isInputMethodTarget +()
    +isLooping +()
    +isOutsideTouchable +()
    +isPerformingCompletion +()
    +isRoaming +()
    +isSafeMode
    +  type  +() in android.content.pm.PackageManager +
    +  type  +() in android.test.mock.MockPackageManager +
    +isSelectingMetaTracker +(CharSequence, Object)
    +isSmoothScrollbarEnabled +()
    +isTouchable +()
    + +
    L  +A +B +C +D +E +F +G +H +I +M +O +P +R +S +T +U +W +Y + TOP +

    +launchActivityWithIntent +(String, Class<T>, Intent)
    +load
    +  type  +(AssetFileDescriptor, int) in android.media.SoundPool +
    +  type  +(FileDescriptor, long, long, int) in android.media.SoundPool +
    +loadDex +(String, String, int)
    +longClickView
    +  type  +(InstrumentationTestCase, View) in android.test.TouchUtils +
    +  type  +(ActivityInstrumentationTestCase, View) in android.test.TouchUtils +
    + +
    M  +A +B +C +D +E +F +G +H +I +L +O +P +R +S +T +U +W +Y + TOP +

    +makeListItems +()
    +mayUseInputMethod +(int)
    +moveCursorToVisibleOffset +()
    +mutate +()
    + +
    O  +A +B +C +D +E +F +G +H +I +L +M +P +R +S +T +U +W +Y + TOP +

    +onBeginBatchEdit +()
    +onCheckIsTextEditor +()
    +onCommitCompletion +(CompletionInfo)
    +onContentChanged +()
    +onCreateInputConnection +(EditorInfo)
    +onDoubleTap +(MotionEvent)
    +onDoubleTapEvent +(MotionEvent)
    +onEditorAction +(int)
    +onEndBatchEdit +()
    +onFinishTemporaryDetach +()
    +onGlobalFocusChanged +(View, View)
    +onKeyOther
    +  type  +(TextView, Spannable, KeyEvent) in android.text.method.ArrowKeyMovementMethod +
    +  type  +(View, Editable, KeyEvent) in android.text.method.BaseKeyListener +
    +  type  +(View, Editable, KeyEvent) in android.text.method.KeyListener +
    +  type  +(TextView, Spannable, KeyEvent) in android.text.method.MovementMethod +
    +  type  +(TextView, Spannable, KeyEvent) in android.text.method.ScrollingMovementMethod +
    +onKeyPreIme +(int, KeyEvent)
    +onPrivateIMECommand +(String, Bundle)
    +onRestoreInstanceState +(Parcelable)
    +onSaveInstanceState +()
    +onSelectionChanged +(int, int)
    +onSingleTapConfirmed +(MotionEvent)
    +onStartTemporaryDetach +()
    +onTextContextMenuItem +(int)
    +onUserInteraction +()
    +onUserLeaveHint +()
    +openAssetFile +(Uri, String)
    +openAssetFileDescriptor +(Uri, String)
    +openOutputStream +(Uri, String)
    +openRawResource +(int, TypedValue)
    + +
    P  +A +B +C +D +E +F +G +H +I +L +M +O +R +S +T +U +W +Y + TOP +

    +parse +(String)
    +parseBundleExtra +(String, AttributeSet, Bundle)
    +parseBundleExtras +(XmlResourceParser, Bundle)
    +peekService +(Context, Intent)
    +performHapticFeedback
    +  type  +(int) in android.view.View +
    +  type  +(int, int) in android.view.View +
    +playSoundEffect
    +  type  +(int, float) in android.media.AudioManager +
    +  type  +(int) in android.view.View +
    +prepare +()
    +putLong +(ContentResolver, String, long)
    + +
    R  +A +B +C +D +E +F +G +H +I +L +M +O +P +S +T +U +W +Y + TOP +

    +readFromParcel +(Parcel)
    +readHashMap +(ClassLoader)
    +readMap +(Map, ClassLoader)
    +registerListener
    +  type  +(SensorEventListener, Sensor, int) in android.hardware.SensorManager +
    +  type  +(SensorEventListener, Sensor, int, Handler) in android.hardware.SensorManager +
    +  type  +(SensorListener, int) in android.hardware.SensorManager +
    +  type  +(SensorListener, int, int) in android.hardware.SensorManager +
    +remapCoordinateSystem +(float[], int, int, float[])
    +removeAt +(int)
    +removeGpsStatusListener +(Listener)
    +removeOnScrollChangedListener +(OnScrollChangedListener)
    +removePropertyChangeListener
    +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Packer +
    +  type  +(PropertyChangeListener) in java.util.jar.Pack200.Unpacker +
    +  type  +(PropertyChangeListener) in java.util.logging.LogManager +
    +removeTestProvider +(String)
    +removeUpdates +(PendingIntent)
    +replaceExtras
    +  type  +(Intent) in android.content.Intent +
    +  type  +(Bundle) in android.content.Intent +
    +requestChildRectangleOnScreen +(View, Rect, boolean)
    +requestLocationUpdates +(String, long, float, PendingIntent)
    +resetLockedMeta +(long)
    +restartPackage +(String)
    +restorePicture +(Bundle, File)
    +runTestOnUiThread +(Runnable)
    + +
    S  +A +B +C +D +E +F +G +H +I +L +M +O +P +R +T +U +W +Y + TOP +

    +savePicture +(Bundle, File)
    +scrollToBottom
    +  type  +(InstrumentationTestCase, Activity, ViewGroup) in android.test.TouchUtils +
    +  type  +(ActivityInstrumentationTestCase, ViewGroup) in android.test.TouchUtils +
    +scrollToTop
    +  type  +(InstrumentationTestCase, Activity, ViewGroup) in android.test.TouchUtils +
    +  type  +(ActivityInstrumentationTestCase, ViewGroup) in android.test.TouchUtils +
    +sendExtraCommand +(String, String, Bundle)
    +service +(String, Map<String, String>)
    +setAllowFileAccess +(boolean)
    +setBitmap +(int, String, Bitmap)
    +setBluetoothA2dpOn +(boolean)
    +setBoolean +(int, String, boolean)
    +setBuiltInZoomControls +(boolean)
    +setButton
    +  type  +(CharSequence, OnClickListener) in android.app.AlertDialog +
    +  type  +(CharSequence, Message) in android.app.AlertDialog +
    +  type  +(int, CharSequence, OnClickListener) in android.app.AlertDialog +
    +  type  +(int, CharSequence, Message) in android.app.AlertDialog +
    +setButton2
    +  type  +(CharSequence, OnClickListener) in android.app.AlertDialog +
    +  type  +(CharSequence, Message) in android.app.AlertDialog +
    +setButton3
    +  type  +(CharSequence, OnClickListener) in android.app.AlertDialog +
    +  type  +(CharSequence, Message) in android.app.AlertDialog +
    +setByte +(int, String, byte)
    +setCamera +(Camera)
    +setChar +(int, String, char)
    +setCharSequence +(int, String, CharSequence)
    +setClippingEnabled +(boolean)
    +setCompoundDrawablesWithIntrinsicBounds +(int, int, int, int)
    +setDouble +(int, String, double)
    +setDropDownAnchor +(int)
    +setDropDownWidth +(int)
    +setExtractedText +(ExtractedText)
    +setFastScrollEnabled +(boolean)
    +setFillEnabled +(boolean)
    +setFloat +(int, String, float)
    +setFooterDividersEnabled +(boolean)
    +setHapticFeedbackEnabled +(boolean)
    +setHeaderDividersEnabled +(boolean)
    +setImageViewBitmap +(int, Bitmap)
    +setImeActionLabel +(CharSequence, int)
    +setImeOptions +(int)
    +setInexactRepeating +(int, long, long, PendingIntent)
    +setInputExtras +(int)
    +setInputMethodMode +(int)
    +setInputType +(int)
    +setInt +(int, String, int)
    +setKeyProgressIncrement +(int)
    +setListSelection +(int)
    +setLong +(int, String, long)
    +setMaxDuration +(int)
    +setMaxFileSize +(long)
    +setNetworkAvailable +(boolean)
    +setOnChronometerTickListener +(OnChronometerTickListener)
    +setOnClickPendingIntent +(int, PendingIntent)
    +setOnDoubleTapListener +(OnDoubleTapListener)
    +setOnEditorActionListener +(OnEditorActionListener)
    +setOnErrorListener +(OnErrorListener)
    +setOneShotPreviewCallback +(PreviewCallback)
    +setOnInfoListener
    +  type  +(OnInfoListener) in android.media.MediaPlayer +
    +  type  +(OnInfoListener) in android.media.MediaRecorder +
    +setOnVideoSizeChangedListener +(OnVideoSizeChangedListener)
    +setOutputFile +(FileDescriptor)
    +setOutsideTouchable +(boolean)
    +setPreviewDisplay +(SurfaceHolder)
    +setPrivateImeOptions +(String)
    +setRawInputType +(int)
    +setScrollContainer +(boolean)
    +setShort +(int, String, short)
    +setSmoothScrollbarEnabled +(boolean)
    +setSoftInputMode +(int)
    +setStaticTransformationsEnabled +(boolean)
    +setString +(int, String, String)
    +setTestProviderEnabled +(String, boolean)
    +setTestProviderLocation +(String, Location)
    +setTestProviderStatus +(String, int, Bundle, long)
    +setTextColor +(int, int)
    +setTouchable +(boolean)
    +setTouchInterceptor +(OnTouchListener)
    +setUri +(int, String, Uri)
    +setUserAgent +(int)
    +setUserAgentString +(String)
    +setVideoEncoder +(int)
    +setVideoFrameRate +(int)
    +setVideoSize +(int, int)
    +setVideoSource +(int)
    +setView +(View, int, int, int, int)
    +setViewResource +(int)
    +setVisible +(boolean)
    +setWindowAnimations +(int)
    +setWindowLayoutMode +(int, int)
    +sort +(Comparator<? super T>)
    + +
    T  +A +B +C +D +E +F +G +H +I +L +M +O +P +R +S +U +W +Y + TOP +

    +toShortString
    +  type  +() in android.graphics.Rect +
    +  type  +() in android.view.animation.Transformation +
    + +
    U  +A +B +C +D +E +F +G +H +I +L +M +O +P +R +S +T +W +Y + TOP +

    +unregisterListener
    +  type  +(SensorEventListener) in android.hardware.SensorManager +
    +  type  +(SensorEventListener, Sensor) in android.hardware.SensorManager +
    +  type  +(SensorListener) in android.hardware.SensorManager +
    +  type  +(SensorListener, int) in android.hardware.SensorManager +
    +update
    +  type  +() in android.widget.PopupWindow +
    +  type  +(int, int, int, int, boolean) in android.widget.PopupWindow +
    + +
    W  +A +B +C +D +E +F +G +H +I +L +M +O +P +R +S +T +U +Y + TOP +

    +writeMap +(Map)
    +writeToParcel
    +  type  +(Parcel, int) in android.content.res.AssetFileDescriptor +
    +  type  +(Parcel, int) in android.graphics.RectF +
    +  type  +(Parcel, int) in android.text.Annotation +
    +  type  +(Parcel, int) in android.text.style.AbsoluteSizeSpan +
    +  type  +(Parcel, int) in android.text.style.AlignmentSpan.Standard +
    +  type  +(Parcel, int) in android.text.style.BackgroundColorSpan +
    +  type  +(Parcel, int) in android.text.style.BulletSpan +
    +  type  +(Parcel, int) in android.text.style.ForegroundColorSpan +
    +  type  +(Parcel, int) in android.text.style.LeadingMarginSpan.Standard +
    +  type  +(Parcel, int) in android.text.style.QuoteSpan +
    +  type  +(Parcel, int) in android.text.style.RelativeSizeSpan +
    +  type  +(Parcel, int) in android.text.style.ScaleXSpan +
    +  type  +(Parcel, int) in android.text.style.StrikethroughSpan +
    +  type  +(Parcel, int) in android.text.style.StyleSpan +
    +  type  +(Parcel, int) in android.text.style.SubscriptSpan +
    +  type  +(Parcel, int) in android.text.style.SuperscriptSpan +
    +  type  +(Parcel, int) in android.text.style.TextAppearanceSpan +
    +  type  +(Parcel, int) in android.text.style.TypefaceSpan +
    +  type  +(Parcel, int) in android.text.style.URLSpan +
    +  type  +(Parcel, int) in android.text.style.UnderlineSpan +
    + +
    Y  +A +B +C +D +E +F +G +H +I +L +M +O +P +R +S +T +U +W + TOP +

    +yieldIfContended +()
    +yieldIfContendedSafely +()
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/methods_index_changes.html b/docs/html/sdk/api_diff/3/changes/methods_index_changes.html new file mode 100644 index 000000000000..1b1b305b9a44 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/methods_index_changes.html @@ -0,0 +1,466 @@ + + + + + + + + + +Method Changes Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Methods +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + +
    A  +C +D +F +G +I +L +O +P +R +S +U +W +Y + TOP +

    +addRequirements +(Predicate<TestMethod>)
    +appendEscapedSQLString +(StringBuilder, String)
    + +
    C  +A +D +F +G +I +L +O +P +R +S +U +W +Y + TOP +

    +changeDebugPort +(int)
    +clone +()
    + +
    D  +A +C +F +G +I +L +O +P +R +S +U +W +Y + TOP +

    +drag +(ActivityInstrumentationTestCase, float, float, float, float, int)
    +dragQuarterScreenDown +(ActivityInstrumentationTestCase)
    +dragQuarterScreenUp +(ActivityInstrumentationTestCase)
    +dragViewBy +(ActivityInstrumentationTestCase, View, int, int, int)
    +dragViewTo +(ActivityInstrumentationTestCase, View, int, int, int)
    +dragViewToBottom
    +  type  +(ActivityInstrumentationTestCase, View) in android.test.TouchUtils +
    +  type  +(InstrumentationTestCase, Activity, View) in android.test.TouchUtils +
    +dragViewToTop
    +  type  +(ActivityInstrumentationTestCase, View) in android.test.TouchUtils +
    +  type  +(ActivityInstrumentationTestCase, View, int) in android.test.TouchUtils +
    +dragViewToX +(ActivityInstrumentationTestCase, View, int, int)
    +dragViewToY +(ActivityInstrumentationTestCase, View, int, int)
    + +
    F  +A +C +D +G +I +L +O +P +R +S +U +W +Y + TOP +

    +forkAndSpecialize +(int, int, int[], boolean, int[][])
    +forkSystemServer +(int, int, int[], boolean, int[][])
    +forName +(String)
    + +
    G  +A +C +D +F +I +L +O +P +R +S +U +W +Y + TOP +

    +getClasses +()
    +getColumnIndex
    +  type  +(String) in android.database.Cursor +
    +  type  +(String) in android.database.CursorWrapper +
    +getConstructors +()
    +getCount +()
    +getDeclaredClasses +()
    +getDeclaredConstructors +()
    +getEdgeSlop +()
    +getFadingEdgeLength +()
    +getHandler +()
    +getInterfaces +()
    +getItem +(int)
    +getItemClickListener +()
    +getItemId +(int)
    +getItemSelectedListener +()
    +getMaximumDrawingCacheSize +()
    +getMinimumFlingVelocity +()
    +getProxyClass +(ClassLoader, Class<?>)
    +getScrollBarSize +()
    +getSensors +()
    +getSurrogate +(String, Map<String, String>)
    +getTargetIntent +()
    +getTouchSlop +()
    +getUserAgent +()
    +getWindowTouchSlop +()
    +getZoomControls +()
    + +
    I  +A +C +D +F +G +L +O +P +R +S +U +W +Y + TOP +

    +isCookielessProxyUrl +(String)
    + +
    L  +A +C +D +F +G +I +O +P +R +S +U +W +Y + TOP +

    +longClickView +(ActivityInstrumentationTestCase, View)
    + +
    O  +A +C +D +F +G +I +L +P +R +S +U +W +Y + TOP +

    +onGlobalFocusChanged +(View, View)
    +onRestoreInstanceState +(Parcelable)
    +onSaveInstanceState +()
    + +
    P  +A +C +D +F +G +I +L +O +R +S +U +W +Y + TOP +

    +parse +(String)
    +playSoundEffect +(int)
    +prepare +()
    + +
    R  +A +C +D +F +G +I +L +O +P +S +U +W +Y + TOP +

    +readHashMap +(ClassLoader)
    +readMap +(Map, ClassLoader)
    +registerListener
    +  type  +(SensorListener, int) in android.hardware.SensorManager +
    +  type  +(SensorListener, int, int) in android.hardware.SensorManager +
    + +
    S  +A +C +D +F +G +I +L +O +P +R +U +W +Y + TOP +

    +scrollToBottom +(ActivityInstrumentationTestCase, ViewGroup)
    +scrollToTop +(ActivityInstrumentationTestCase, ViewGroup)
    +service +(String, Map<String, String>)
    +setButton
    +  type  +(int, CharSequence, OnClickListener) in android.app.AlertDialog +
    +  type  +(int, CharSequence, Message) in android.app.AlertDialog +
    +setButton2
    +  type  +(CharSequence, OnClickListener) in android.app.AlertDialog +
    +  type  +(CharSequence, Message) in android.app.AlertDialog +
    +setButton3
    +  type  +(CharSequence, OnClickListener) in android.app.AlertDialog +
    +  type  +(CharSequence, Message) in android.app.AlertDialog +
    +setPreviewDisplay +(SurfaceHolder)
    +setUserAgent +(int)
    + +
    U  +A +C +D +F +G +I +L +O +P +R +S +W +Y + TOP +

    +unregisterListener
    +  type  +(SensorListener) in android.hardware.SensorManager +
    +  type  +(SensorListener, int) in android.hardware.SensorManager +
    + +
    W  +A +C +D +F +G +I +L +O +P +R +S +U +Y + TOP +

    +writeMap +(Map)
    + +
    Y  +A +C +D +F +G +I +L +O +P +R +S +U +W + TOP +

    +yieldIfContended +()
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/methods_index_removals.html b/docs/html/sdk/api_diff/3/changes/methods_index_removals.html new file mode 100644 index 000000000000..bbce14487297 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/methods_index_removals.html @@ -0,0 +1,62 @@ + + + + + + + + + +Method Removals Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Methods +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/packages_index_additions.html b/docs/html/sdk/api_diff/3/changes/packages_index_additions.html new file mode 100644 index 000000000000..ccd54fdc5c76 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/packages_index_additions.html @@ -0,0 +1,72 @@ + + + + + + + + + +Package Additions Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Packages +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    +
    +
    + +android.appwidget
    +android.inputmethodservice
    +android.speech
    +android.text.format
    +android.view.inputmethod
    + +java.beans
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/packages_index_all.html b/docs/html/sdk/api_diff/3/changes/packages_index_all.html new file mode 100644 index 000000000000..5876fe92fca9 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/packages_index_all.html @@ -0,0 +1,112 @@ + + + + + + + + + +Package Differences Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +Packages +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    +
    +
    + +android
    +android.app
    +android.appwidget
    +android.content
    +android.content.pm
    +android.content.res
    +android.database
    +android.database.sqlite
    +android.graphics
    +android.graphics.drawable
    +android.graphics.drawable.shapes
    +android.hardware
    +android.inputmethodservice
    +android.location
    +android.media
    +android.net
    +android.net.wifi
    +android.opengl
    +android.os
    +android.preference
    +android.provider
    +android.speech
    +android.telephony
    +android.telephony.gsm
    +android.test
    +android.test.mock
    +android.test.suitebuilder
    +android.text
    +android.text.format
    +android.text.method
    +android.text.style
    +android.util
    +android.view
    +android.view.animation
    +android.view.inputmethod
    +android.webkit
    +android.widget
    + +dalvik.system
    + +java.beans
    +java.lang
    +java.lang.reflect
    +java.net
    +java.util
    +java.util.jar
    +java.util.logging
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/packages_index_changes.html b/docs/html/sdk/api_diff/3/changes/packages_index_changes.html new file mode 100644 index 000000000000..3665a918f31f --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/packages_index_changes.html @@ -0,0 +1,106 @@ + + + + + + + + + +Package Changes Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Packages +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    +
    +
    + +android
    +android.app
    +android.content
    +android.content.pm
    +android.content.res
    +android.database
    +android.database.sqlite
    +android.graphics
    +android.graphics.drawable
    +android.graphics.drawable.shapes
    +android.hardware
    +android.location
    +android.media
    +android.net
    +android.net.wifi
    +android.opengl
    +android.os
    +android.preference
    +android.provider
    +android.telephony
    +android.telephony.gsm
    +android.test
    +android.test.mock
    +android.test.suitebuilder
    +android.text
    +android.text.method
    +android.text.style
    +android.util
    +android.view
    +android.view.animation
    +android.webkit
    +android.widget
    + +dalvik.system
    + +java.lang
    +java.lang.reflect
    +java.net
    +java.util
    +java.util.jar
    +java.util.logging
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/packages_index_removals.html b/docs/html/sdk/api_diff/3/changes/packages_index_removals.html new file mode 100644 index 000000000000..17a90d9989ca --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/packages_index_removals.html @@ -0,0 +1,64 @@ + + + + + + + + + +Package Removals Index + + + + + + + + + + + + + + + +
    + Filter the Index: +
    +All Packages +
    +Removals +
    +Additions +
    +Changes +
    +
    +Bold indicates New; Strike indicates deleted. Plain indicates changed. +
    +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.app.html b/docs/html/sdk/api_diff/3/changes/pkg_android.app.html new file mode 100644 index 000000000000..c1602d80f1a3 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.app.html @@ -0,0 +1,198 @@ + + + + + + + + + +android.app + + + + + + + + + + +
    +
    +
    +

    +Package android.app +

    +

    + + + + + + + + + + + + + + + + + + + + +
    Added Classes +
    + + ActivityManager.RunningAppProcessInfo +  
    + + IntentService +  
    + + LauncherActivity.IconResizer +  
    + + LauncherActivity.ListItem +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Classes +
    + + Activity +  
    + + ActivityManager +  
    + + AlarmManager +  
    + + AlertDialog +  
    + + Instrumentation +  
    + + LauncherActivity +  
    + + PendingIntent +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.content.html b/docs/html/sdk/api_diff/3/changes/pkg_android.content.html new file mode 100644 index 000000000000..8a9f4af0a243 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.content.html @@ -0,0 +1,155 @@ + + + + + + + + + +android.content + + + + + + + + + + +
    +
    +
    +

    +Package android.content +

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Classes and Interfaces +
    + + BroadcastReceiver +  
    + + ContentProvider +  
    + + ContentResolver +  
    + + Context +  
    + + DialogInterface +  
    + + Intent +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.content.pm.html b/docs/html/sdk/api_diff/3/changes/pkg_android.content.pm.html new file mode 100644 index 000000000000..d3bddd4badc3 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.content.pm.html @@ -0,0 +1,149 @@ + + + + + + + + + +android.content.pm + + + + + + + + + + +
    +
    +
    +

    +Package android.content.pm +

    +

    + + + + + + + + +
    Added Classes +
    + + ConfigurationInfo +  
    +  +

    + + + + + + + + + + + + + + + + +
    Changed Classes +
    + + ActivityInfo +  
    + + PackageInfo +  
    + + PackageManager +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.content.res.html b/docs/html/sdk/api_diff/3/changes/pkg_android.content.res.html new file mode 100644 index 000000000000..81d234d2263c --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.content.res.html @@ -0,0 +1,163 @@ + + + + + + + + + +android.content.res + + + + + + + + + + +
    +
    +
    +

    +Package android.content.res +

    +

    + + + + + + + + + + + + +
    Added Classes +
    + + AssetFileDescriptor.AutoCloseInputStream +  
    + + AssetFileDescriptor.AutoCloseOutputStream +  
    +  +

    + + + + + + + + + + + + + + + + + + + + +
    Changed Classes +
    + + AssetFileDescriptor +  
    + + Configuration +  
    + + Resources +  
    + + TypedArray +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.database.html b/docs/html/sdk/api_diff/3/changes/pkg_android.database.html new file mode 100644 index 000000000000..70b964445d55 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.database.html @@ -0,0 +1,134 @@ + + + + + + + + + +android.database + + + + + + + + + + +
    +
    +
    +

    +Package android.database +

    +

    + + + + + + + + + + + + + + + + +
    Changed Classes and Interfaces +
    + + Cursor +  
    + + CursorWrapper +  
    + + DatabaseUtils +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.database.sqlite.html b/docs/html/sdk/api_diff/3/changes/pkg_android.database.sqlite.html new file mode 100644 index 000000000000..db2017bbdc9b --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.database.sqlite.html @@ -0,0 +1,120 @@ + + + + + + + + + +android.database.sqlite + + + + + + + + + + +
    +
    +
    +

    +Package android.database.sqlite +

    +

    + + + + + + + + +
    Changed Classes +
    + + SQLiteDatabase +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.graphics.drawable.html b/docs/html/sdk/api_diff/3/changes/pkg_android.graphics.drawable.html new file mode 100644 index 000000000000..6025b71b03d8 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.graphics.drawable.html @@ -0,0 +1,141 @@ + + + + + + + + + +android.graphics.drawable + + + + + + + + + + +
    +
    +
    +

    +Package android.graphics.drawable +

    +

    + + + + + + + + + + + + + + + + + + + + +
    Changed Classes +
    + + Drawable +  
    + + RotateDrawable +  
    + + ScaleDrawable +  
    + + TransitionDrawable +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.graphics.drawable.shapes.html b/docs/html/sdk/api_diff/3/changes/pkg_android.graphics.drawable.shapes.html new file mode 100644 index 000000000000..affdaabc6321 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.graphics.drawable.shapes.html @@ -0,0 +1,120 @@ + + + + + + + + + +android.graphics.drawable.shapes + + + + + + + + + + +
    +
    +
    +

    +Package android.graphics.drawable.shapes +

    +

    + + + + + + + + +
    Changed Classes +
    + + Shape +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.graphics.html b/docs/html/sdk/api_diff/3/changes/pkg_android.graphics.html new file mode 100644 index 000000000000..c7644d5860bd --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.graphics.html @@ -0,0 +1,141 @@ + + + + + + + + + +android.graphics + + + + + + + + + + +
    +
    +
    +

    +Package android.graphics +

    +

    + + + + + + + + + + + + + + + + + + + + +
    Changed Classes +
    + + Bitmap +  
    + + Canvas +  
    + + Rect +  
    + + RectF +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.hardware.html b/docs/html/sdk/api_diff/3/changes/pkg_android.hardware.html new file mode 100644 index 000000000000..63ebbdc19f69 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.hardware.html @@ -0,0 +1,170 @@ + + + + + + + + + +android.hardware + + + + + + + + + + +
    +
    +
    +

    +Package android.hardware +

    +

    + + + + + + + + + + + + + + + + + + + + +
    Added Classes and Interfaces +
    + + GeomagneticField +  
    + + Sensor +  
    + + SensorEvent +  
    + + SensorEventListener +  
    +  +

    + + + + + + + + + + + + + + + + +
    Changed Classes and Interfaces +
    + + Camera +  
    + + SensorListener +  
    + + SensorManager +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.html b/docs/html/sdk/api_diff/3/changes/pkg_android.html new file mode 100644 index 000000000000..0cedd98cb86e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.html @@ -0,0 +1,177 @@ + + + + + + + + + +android + + + + + + + + + + +
    +
    +
    +

    +Package android +

    +

    + + + + + + + + + + + + +
    Added Classes +
    + + R.bool +  
    + + R.integer +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Classes +
    + + Manifest.permission +  
    + + R.attr +  
    + + R.drawable +  
    + + R.id +  
    + + R.string +  
    + + R.style +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.location.html b/docs/html/sdk/api_diff/3/changes/pkg_android.location.html new file mode 100644 index 000000000000..2f8af381b95d --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.location.html @@ -0,0 +1,156 @@ + + + + + + + + + +android.location + + + + + + + + + + +
    +
    +
    +

    +Package android.location +

    +

    + + + + + + + + + + + + + + + + +
    Added Classes and Interfaces +
    + + GpsSatellite +  
    + + GpsStatus +  
    + + GpsStatus.Listener +  
    +  +

    + + + + + + + + + + + + +
    Changed Classes +
    + + Location +  
    + + LocationManager +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.media.html b/docs/html/sdk/api_diff/3/changes/pkg_android.media.html new file mode 100644 index 000000000000..c531240beb8d --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.media.html @@ -0,0 +1,254 @@ + + + + + + + + + +android.media + + + + + + + + + + +
    +
    +
    +

    +Package android.media +

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Classes and Interfaces +
    + + AudioFormat +  
    + + AudioRecord +  
    + + AudioRecord.OnRecordPositionUpdateListener +  
    + + AudioTrack +  
    + + AudioTrack.OnPlaybackPositionUpdateListener +  
    + + JetPlayer +  
    + + JetPlayer.OnJetEventListener +  
    + + MediaPlayer.OnInfoListener +  
    + + MediaPlayer.OnVideoSizeChangedListener +  
    + + MediaRecorder.OnErrorListener +  
    + + MediaRecorder.OnInfoListener +  
    + + MediaRecorder.VideoEncoder +  
    + + MediaRecorder.VideoSource +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Classes +
    + + AudioManager +  
    + + MediaPlayer +  
    + + MediaRecorder +  
    + + MediaRecorder.OutputFormat +  
    + + RingtoneManager +  
    + + SoundPool +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.net.html b/docs/html/sdk/api_diff/3/changes/pkg_android.net.html new file mode 100644 index 000000000000..cf2f916cede7 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.net.html @@ -0,0 +1,127 @@ + + + + + + + + + +android.net + + + + + + + + + + +
    +
    +
    +

    +Package android.net +

    +

    + + + + + + + + + + + + +
    Changed Classes +
    + + ConnectivityManager +  
    + + NetworkInfo +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.net.wifi.html b/docs/html/sdk/api_diff/3/changes/pkg_android.net.wifi.html new file mode 100644 index 000000000000..99f2951d1f78 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.net.wifi.html @@ -0,0 +1,120 @@ + + + + + + + + + +android.net.wifi + + + + + + + + + + +
    +
    +
    +

    +Package android.net.wifi +

    +

    + + + + + + + + +
    Changed Classes +
    + + WifiManager +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.opengl.html b/docs/html/sdk/api_diff/3/changes/pkg_android.opengl.html new file mode 100644 index 000000000000..622d8612fb97 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.opengl.html @@ -0,0 +1,148 @@ + + + + + + + + + +android.opengl + + + + + + + + + + +
    +
    +
    +

    +Package android.opengl +

    +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Classes and Interfaces +
    + + GLSurfaceView +  
    + + GLSurfaceView.EGLConfigChooser +  
    + + GLSurfaceView.GLWrapper +  
    + + GLSurfaceView.Renderer +  
    + + Visibility +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.os.html b/docs/html/sdk/api_diff/3/changes/pkg_android.os.html new file mode 100644 index 000000000000..098864ef879d --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.os.html @@ -0,0 +1,212 @@ + + + + + + + + + +android.os + + + + + + + + + + +
    +
    +
    +

    +Package android.os +

    +

    + + + + + + + + + + + + + + + + + + + + +
    Added Classes and Interfaces +
    + + AsyncTask +  
    + + AsyncTask.Status +  
    + + Handler.Callback +  
    + + ResultReceiver +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Classes and Interfaces +
    + + Binder +  
    + + Build +  
    + + Debug +  
    + + Environment +  
    + + Handler +  
    + + IBinder +  
    + + Looper +  
    + + Parcel +  
    + + ParcelFileDescriptor +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.preference.html b/docs/html/sdk/api_diff/3/changes/pkg_android.preference.html new file mode 100644 index 000000000000..5ffe3cb61f34 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.preference.html @@ -0,0 +1,120 @@ + + + + + + + + + +android.preference + + + + + + + + + + +
    +
    +
    +

    +Package android.preference +

    +

    + + + + + + + + +
    Changed Classes +
    + + DialogPreference +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.provider.html b/docs/html/sdk/api_diff/3/changes/pkg_android.provider.html new file mode 100644 index 000000000000..f16e4fd19767 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.provider.html @@ -0,0 +1,233 @@ + + + + + + + + + +android.provider + + + + + + + + + + +
    +
    +
    +

    +Package android.provider +

    +

    + + + + + + + + + + + + + + + + + + + + +
    Added Classes +
    + + LiveFolders +  
    + + Settings.Secure +  
    + + UserDictionary +  
    + + UserDictionary.Words +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Classes and Interfaces +
    + + Browser +  
    + + Contacts.Intents +  
    + + Contacts.Intents.Insert +  
    + + Contacts.PeopleColumns +  
    + + MediaStore +  
    + + MediaStore.Audio.AlbumColumns +  
    + + MediaStore.Audio.Media +  
    + + MediaStore.Images.Media +  
    + + MediaStore.Video +  
    + + MediaStore.Video.VideoColumns +  
    + + Settings +  
    + + Settings.System +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.telephony.gsm.html b/docs/html/sdk/api_diff/3/changes/pkg_android.telephony.gsm.html new file mode 100644 index 000000000000..d17223483e02 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.telephony.gsm.html @@ -0,0 +1,120 @@ + + + + + + + + + +android.telephony.gsm + + + + + + + + + + +
    +
    +
    +

    +Package android.telephony.gsm +

    +

    + + + + + + + + +
    Changed Classes +
    + + SmsMessage +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.telephony.html b/docs/html/sdk/api_diff/3/changes/pkg_android.telephony.html new file mode 100644 index 000000000000..8131269eab82 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.telephony.html @@ -0,0 +1,142 @@ + + + + + + + + + +android.telephony + + + + + + + + + + +
    +
    +
    +

    +Package android.telephony +

    +

    + + + + + + + + +
    Added Classes +
    + + NeighboringCellInfo +  
    +  +

    + + + + + + + + + + + + +
    Changed Classes +
    + + PhoneNumberUtils +  
    + + TelephonyManager +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.test.html b/docs/html/sdk/api_diff/3/changes/pkg_android.test.html new file mode 100644 index 000000000000..3b5edd42df00 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.test.html @@ -0,0 +1,163 @@ + + + + + + + + + +android.test + + + + + + + + + + +
    +
    +
    +

    +Package android.test +

    +

    + + + + + + + + + + + + +
    Added Classes +
    + + ActivityInstrumentationTestCase2 +  
    + + ProviderTestCase2 +  
    +  +

    + + + + + + + + + + + + + + + + + + + + +
    Changed Classes +
    + + ActivityInstrumentationTestCase +  
    + + InstrumentationTestCase +  
    + + ProviderTestCase +  
    + + TouchUtils +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.test.mock.html b/docs/html/sdk/api_diff/3/changes/pkg_android.test.mock.html new file mode 100644 index 000000000000..87a371cd22b1 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.test.mock.html @@ -0,0 +1,120 @@ + + + + + + + + + +android.test.mock + + + + + + + + + + +
    +
    +
    +

    +Package android.test.mock +

    +

    + + + + + + + + +
    Changed Classes +
    + + MockPackageManager +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.test.suitebuilder.html b/docs/html/sdk/api_diff/3/changes/pkg_android.test.suitebuilder.html new file mode 100644 index 000000000000..469db289da92 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.test.suitebuilder.html @@ -0,0 +1,127 @@ + + + + + + + + + +android.test.suitebuilder + + + + + + + + + + +
    +
    +
    +

    +Package android.test.suitebuilder +

    +

    + + + + + + + + + + + + +
    Changed Classes +
    + + TestMethod +  
    + + TestSuiteBuilder +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.text.html b/docs/html/sdk/api_diff/3/changes/pkg_android.text.html new file mode 100644 index 000000000000..ffc696676f16 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.text.html @@ -0,0 +1,191 @@ + + + + + + + + + +android.text + + + + + + + + + + +
    +
    +
    +

    +Package android.text +

    +

    + + + + + + + + + + + + + + + + + + + + +
    Added Classes and Interfaces +
    + + InputType +  
    + + NoCopySpan +  
    + + NoCopySpan.Concrete +  
    + + ParcelableSpan +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Classes and Interfaces +
    + + Annotation +  
    + + AutoText +  
    + + SpanWatcher +  
    + + Spanned +  
    + + TextUtils +  
    + + TextWatcher +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.text.method.html b/docs/html/sdk/api_diff/3/changes/pkg_android.text.method.html new file mode 100644 index 000000000000..89b94ad3125b --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.text.method.html @@ -0,0 +1,218 @@ + + + + + + + + + +android.text.method + + + + + + + + + + +
    +
    +
    +

    +Package android.text.method +

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Classes and Interfaces +
    + + ArrowKeyMovementMethod +  
    + + BaseKeyListener +  
    + + DateKeyListener +  
    + + DateTimeKeyListener +  
    + + DialerKeyListener +  
    + + DigitsKeyListener +  
    + + KeyListener +  
    + + MetaKeyKeyListener +  
    + + MovementMethod +  
    + + MultiTapKeyListener +  
    + + QwertyKeyListener +  
    + + ScrollingMovementMethod +  
    + + TextKeyListener +  
    + + TimeKeyListener +  
    + + Touch +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.text.style.html b/docs/html/sdk/api_diff/3/changes/pkg_android.text.style.html new file mode 100644 index 000000000000..e1e1fec0b4e9 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.text.style.html @@ -0,0 +1,289 @@ + + + + + + + + + +android.text.style + + + + + + + + + + +
    +
    +
    +

    +Package android.text.style +

    +

    + + + + + + + + +
    Added Interfaces +
    + + UpdateAppearance +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Classes and Interfaces +
    + + AbsoluteSizeSpan +  
    + + AlignmentSpan.Standard +  
    + + BackgroundColorSpan +  
    + + BulletSpan +  
    + + ClickableSpan +  
    + + DynamicDrawableSpan +  
    + + ForegroundColorSpan +  
    + + ImageSpan +  
    + + LeadingMarginSpan.Standard +  
    + + MaskFilterSpan +  
    + + QuoteSpan +  
    + + RasterizerSpan +  
    + + RelativeSizeSpan +  
    + + ScaleXSpan +  
    + + StrikethroughSpan +  
    + + StyleSpan +  
    + + SubscriptSpan +  
    + + SuperscriptSpan +  
    + + TextAppearanceSpan +  
    + + TypefaceSpan +  
    + + URLSpan +  
    + + UnderlineSpan +  
    + + UpdateLayout +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.util.html b/docs/html/sdk/api_diff/3/changes/pkg_android.util.html new file mode 100644 index 000000000000..7403be48c31e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.util.html @@ -0,0 +1,142 @@ + + + + + + + + + +android.util + + + + + + + + + + +
    +
    +
    +

    +Package android.util +

    +

    + + + + + + + + +
    Added Classes +
    + + PrintStreamPrinter +  
    +  +

    + + + + + + + + + + + + +
    Changed Classes +
    + + SparseIntArray +  
    + + TimeUtils +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.view.animation.html b/docs/html/sdk/api_diff/3/changes/pkg_android.view.animation.html new file mode 100644 index 000000000000..30c1badc27d7 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.view.animation.html @@ -0,0 +1,127 @@ + + + + + + + + + +android.view.animation + + + + + + + + + + +
    +
    +
    +

    +Package android.view.animation +

    +

    + + + + + + + + + + + + +
    Changed Classes +
    + + Animation +  
    + + Transformation +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.view.html b/docs/html/sdk/api_diff/3/changes/pkg_android.view.html new file mode 100644 index 000000000000..9b4a0427dacd --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.view.html @@ -0,0 +1,268 @@ + + + + + + + + + +android.view + + + + + + + + + + +
    +
    +
    +

    +Package android.view +

    +

    + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Classes and Interfaces +
    + + GestureDetector.OnDoubleTapListener +  
    + + HapticFeedbackConstants +  
    + + OrientationEventListener +  
    + + ViewDebug.CapturedViewProperty +  
    + + ViewTreeObserver.OnScrollChangedListener +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Classes and Interfaces +
    + + GestureDetector +  
    + + GestureDetector.SimpleOnGestureListener +  
    + + Gravity +  
    + + KeyCharacterMap +  
    + + KeyEvent +  
    + + Menu +  
    + + MotionEvent +  
    + + OrientationListener +  
    + + View +  
    + + ViewConfiguration +  
    + + ViewDebug +  
    + + ViewGroup +  
    + + ViewParent +  
    + + ViewTreeObserver +  
    + + Window +  
    + + WindowManager.LayoutParams +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.webkit.html b/docs/html/sdk/api_diff/3/changes/pkg_android.webkit.html new file mode 100644 index 000000000000..339b9ab3b479 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.webkit.html @@ -0,0 +1,170 @@ + + + + + + + + + +android.webkit + + + + + + + + + + +
    +
    +
    +

    +Package android.webkit +

    +

    + + + + + + + + +
    Added Classes +
    + + PluginData +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Classes and Interfaces +
    + + URLUtil +  
    + + UrlInterceptHandler +  
    + + UrlInterceptRegistry +  
    + + WebHistoryItem +  
    + + WebSettings +  
    + + WebView +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_android.widget.html b/docs/html/sdk/api_diff/3/changes/pkg_android.widget.html new file mode 100644 index 000000000000..fc6e9015391a --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_android.widget.html @@ -0,0 +1,310 @@ + + + + + + + + + +android.widget + + + + + + + + + + +
    +
    +
    +

    +Package android.widget +

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Added Classes and Interfaces +
    + + AlphabetIndexer +  
    + + Chronometer.OnChronometerTickListener +  
    + + HorizontalScrollView +  
    + + SectionIndexer +  
    + + SlidingDrawer +  
    + + SlidingDrawer.OnDrawerCloseListener +  
    + + SlidingDrawer.OnDrawerOpenListener +  
    + + SlidingDrawer.OnDrawerScrollListener +  
    + + TextView.OnEditorActionListener +  
    +  +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Changed Classes and Interfaces +
    + + AbsListView +  
    + + AbsSeekBar +  
    + + AbsoluteLayout +  
    + + ArrayAdapter +  
    + + AutoCompleteTextView +  
    + + Chronometer +  
    + + CursorAdapter +  
    + + GridView +  
    + + ListView +  
    + + PopupWindow +  
    + + PopupWindow.OnDismissListener +  
    + + ProgressBar +  
    + + RemoteViews +  
    + + RemoteViews.ActionException +  
    + + ResourceCursorAdapter +  
    + + Scroller +  
    + + SimpleCursorAdapter +  
    + + TextView +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_dalvik.system.html b/docs/html/sdk/api_diff/3/changes/pkg_dalvik.system.html new file mode 100644 index 000000000000..654be0fb246e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_dalvik.system.html @@ -0,0 +1,149 @@ + + + + + + + + + +dalvik.system + + + + + + + + + + +
    +
    +
    +

    +Package dalvik.system +

    +

    + + + + + + + + +
    Added Classes +
    + + DexClassLoader +  
    +  +

    + + + + + + + + + + + + + + + + +
    Changed Classes +
    + + DexFile +  
    + + VMDebug +  
    + + Zygote +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_java.lang.html b/docs/html/sdk/api_diff/3/changes/pkg_java.lang.html new file mode 100644 index 000000000000..d7699273d263 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_java.lang.html @@ -0,0 +1,134 @@ + + + + + + + + + +java.lang + + + + + + + + + + +
    +
    +
    +

    +Package java.lang +

    +

    + + + + + + + + + + + + + + + + +
    Changed Classes +
    + + Character.UnicodeBlock +  
    + + Class +  
    + + String +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_java.lang.reflect.html b/docs/html/sdk/api_diff/3/changes/pkg_java.lang.reflect.html new file mode 100644 index 000000000000..ccc643dd8c99 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_java.lang.reflect.html @@ -0,0 +1,120 @@ + + + + + + + + + +java.lang.reflect + + + + + + + + + + +
    +
    +
    +

    +Package java.lang.reflect +

    +

    + + + + + + + + +
    Changed Classes +
    + + Proxy +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_java.net.html b/docs/html/sdk/api_diff/3/changes/pkg_java.net.html new file mode 100644 index 000000000000..98cc83d2cd89 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_java.net.html @@ -0,0 +1,120 @@ + + + + + + + + + +java.net + + + + + + + + + + +
    +
    +
    +

    +Package java.net +

    +

    + + + + + + + + +
    Changed Classes +
    + + Socket +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_java.util.html b/docs/html/sdk/api_diff/3/changes/pkg_java.util.html new file mode 100644 index 000000000000..462c73b083b6 --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_java.util.html @@ -0,0 +1,120 @@ + + + + + + + + + +java.util + + + + + + + + + + +
    +
    +
    +

    +Package java.util +

    +

    + + + + + + + + +
    Changed Classes +
    + + Date +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_java.util.jar.html b/docs/html/sdk/api_diff/3/changes/pkg_java.util.jar.html new file mode 100644 index 000000000000..f1ac6e5d7f7d --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_java.util.jar.html @@ -0,0 +1,127 @@ + + + + + + + + + +java.util.jar + + + + + + + + + + +
    +
    +
    +

    +Package java.util.jar +

    +

    + + + + + + + + + + + + +
    Changed Interfaces +
    + + Pack200.Packer +  
    + + Pack200.Unpacker +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/changes/pkg_java.util.logging.html b/docs/html/sdk/api_diff/3/changes/pkg_java.util.logging.html new file mode 100644 index 000000000000..f2cc23d8472e --- /dev/null +++ b/docs/html/sdk/api_diff/3/changes/pkg_java.util.logging.html @@ -0,0 +1,127 @@ + + + + + + + + + +java.util.logging + + + + + + + + + + +
    +
    +
    +

    +Package java.util.logging +

    +

    + + + + + + + + + + + + +
    Changed Classes +
    + + Level +  
    + + LogManager +  
    +  +

    + +
    +
    + + + + diff --git a/docs/html/sdk/api_diff/3/stylesheet-jdiff.css b/docs/html/sdk/api_diff/3/stylesheet-jdiff.css new file mode 100644 index 000000000000..b3c1b9af86b9 --- /dev/null +++ b/docs/html/sdk/api_diff/3/stylesheet-jdiff.css @@ -0,0 +1,37 @@ + +/* (http://www.jdiff.org) */ + +div.and-diff-id {border: 1px solid #eee;position:relative;float:right;clear:both;padding:0px;} +table.diffspectable {border:1px;padding:0px;margin:0px;} +.diffspechead {background-color:#eee;} +.diffspectable tr {border:0px;padding:0px;} +.diffspectable td {background-color:eee;border:0px;font-size:90%;font-weight:normal;padding:0px;padding-left:1px;padding-right:1px;text-align:center;color:777;} +td.diffvalueold {color:orange;background-color:white;border:0px;font-size:80%;font-style:normal;text-align:left;padding:0px;padding-left:1px;padding-right:1px;line-height:.95em;} +td.diffvaluenew {color:green;background-color:white;border:0px;font-size:80%;font-weight:normal;text-align:left;padding:0px;padding-left:1px;padding-right:1px;line-height:.95em;} +td.diffvalue {color:444;background-color:white;border:0px;font-size:80%;font-weight:normal;text-align:left;padding:0px;padding-left:1px;padding-right:1px;line-height:.95em;} +td.diffspec {background-color:white;border:0px;font-size:80%;font-weight:normal;padding:1px;color:444;text-align:right;padding-right:.5em;line-height:.95em;} +tt {font-size:11pt;font-family:monospace;} +.indexHeader { + font-size:96%; + line-height:.8em;} +.jdiffIndex td { + font-size:96%; + xline-height:.8em; + padding:2px; + padding-left:1em;} +.indexText { + font-size:100%; + padding-left:1em;} +#indexTableCaption { + font-size:96%; + margin-top:.25em; + margin-bottom:0; + } +.hiddenlink { + font-size:96%; + line-height:.8em; + text-decoration:none;} +a { + text-decoration:none;} +a:hover { + text-decoration:underline;} -- cgit v1.2.3-59-g8ed1b From 1596b517be4925b82ea55973b6e7595f8d5f2cf5 Mon Sep 17 00:00:00 2001 From: Dirk Dougherty <> Date: Tue, 21 Apr 2009 15:00:26 -0700 Subject: AI 147238: Update tools index, replace activitycreator with android BUG=1790234 Automated import of CL 147238 --- docs/html/guide/appendix/faq/commontasks.jd | 4 +- docs/html/guide/developing/tools/index.jd | 33 +++++++------ docs/html/guide/developing/tools/othertools.jd | 64 ++++++++------------------ docs/html/guide/guide_toc.cs | 7 +-- docs/html/samples/index.jd | 5 +- 5 files changed, 46 insertions(+), 67 deletions(-) diff --git a/docs/html/guide/appendix/faq/commontasks.jd b/docs/html/guide/appendix/faq/commontasks.jd index 9c79bddf75ea..0f89e7534a68 100644 --- a/docs/html/guide/appendix/faq/commontasks.jd +++ b/docs/html/guide/appendix/faq/commontasks.jd @@ -701,8 +701,8 @@ If the latitudeSpan, longitudeSpan, and zoomLevel attributes are not consistent,

    List of Files for an Android Application

    The following list describes the structure and files of an Android application. - Many of these files can be built for you (or stubbed out) by the activitycreator - application shipped in the tools/ menu of the SDK.

    + Many of these files can be built for you (or stubbed out) by the android tool + shipped in the tools/ menu of the SDK.

    diff --git a/docs/html/guide/developing/tools/index.jd b/docs/html/guide/developing/tools/index.jd index b491a4fcd8da..e53d5957995a 100644 --- a/docs/html/guide/developing/tools/index.jd +++ b/docs/html/guide/developing/tools/index.jd @@ -8,23 +8,29 @@ applications on the Android platform. The most important of these are the Androi Emulator and the Android Development Tools plugin for Eclipse, but the SDK also includes a variety of other tools for debugging, packaging, and installing your applications on the emulator.

    - -
    -
    Android Emulator
    -
    A virtual mobile device that runs on your computer. You use the emulator to design, - debug, and test your applications in an actual Android run-time environment.
    +
    Android Development Tools Plugin (for the Eclipse IDE)
    The ADT plugin adds powerful extensions to the Eclipse integrated environment, making creating and debugging your Android applications easier and faster. If you use Eclipse, the ADT plugin gives you an incredible boost in developing Android applications.
    +
    Android Emulator
    +
    A QEMU-based device-emulation tool that you can use to design, + debug, and test your applications in an actual Android run-time environment.
    -
    Hierarchy Viewer
    -
    The Hierarchy Viewer tool allows you to debug and optimize your user interface. - It provides a visual representation of your layout's hierarchy of Views and a magnified inspector - of the current display with a pixel grid, so you can get your layout just right. -
    +
    Android Virtual Devices (AVDs)
    +
    Virtual device configurations that you create, to model device + characteristics in the Android Emulator. In each configuration, you can + specify the Android platform to run, the hardware options, and the + emulator skin to use. Each AVD functions as an independent device with + it's own storage for user data, SD card, and so on.
    + +
    Hierarchy Viewer
    +
    The Hierarchy Viewer tool allows you to debug and optimize your user interface. + It provides a visual representation of your layout's hierarchy of Views and a magnified inspector + of the current display with a pixel grid, so you can get your layout just right. +
    Draw 9-patch
    The Draw 9-patch tool allows you to easily create a @@ -79,10 +85,9 @@ applications on the emulator.

    level events. You can use the Monkey to stress-test applications that you are developing, in a random yet repeatable manner.
    -
    activitycreator
    -
    A script that generates android +
    A script that lets you manage AVDs and generate Ant build files that - you can use to compile your Android applications. If you are developing - on Eclipse with the ADT plugin, you won't need to use this script.
    + you can use to compile your Android applications.
    diff --git a/docs/html/guide/developing/tools/othertools.jd b/docs/html/guide/developing/tools/othertools.jd index eaa0b76a5f42..603609eb1ae0 100644 --- a/docs/html/guide/developing/tools/othertools.jd +++ b/docs/html/guide/developing/tools/othertools.jd @@ -3,16 +3,32 @@ page.title=Other Tools

    The sections below describe other tools that you can use when building Android applications.

    -

    All of the tools are included in the Android SDK and are accessible from the tools/ directory.

    +

    All of the tools are included in the Android SDK and are accessible from the <sdk>/tools/ directory.

    Contents

    +
    android
    mksdcard
    dx
    -
    activitycreator
    + +

    android

    + +

    The android tool is a script that lets you create and manage Android Virtual Devices (AVDs) and, if you are developing using Ant, generate template Android projects to help you get started quickly.

    + +

    For information about how to use the android tool to manage AVDs, see Android Virtual Devices.

    + +

    For information about how to use the android tool to create or update a project, see Developing in Other IDEs.

    + +

    Note that if you are developing in Eclipse with the ADT plugin, you will use the android tool to manage the AVDs you create, but you will not use the android tool for creating a project. The ADT plugin provides a New Project Wizard that helps you set up an Android project in Eclipse.

    + +

    If you are developing in Ant, you will use the android tool to manage your AVDs, and you can also use it to create or update a project.

    + +

    Note: The android tool replaces the activitycreator tool provided in previous SDK releases.

    + +

    mksdcard

    @@ -21,7 +37,7 @@ page.title=Other Tools
    mksdcard [-l label] <size>[K|M] <file>
    -

    The table below lists the available options/arguments

    +

    The table below lists the available options/arguments

    MyApp/
    @@ -57,48 +73,6 @@ You can also specify size in kilobytes or megabytes, by appending a "K" or "M" t

    The dx tool lets you generate Android bytecode from .class files. The tool converts target files and/or directories to Dalvik executable format (.dex) files, so that they can run in the Android environment. It can also dump the class files in a human-readable format and run a target unit test. You can get the usage and options for this tool by using dx --help.

    - - -

    activitycreator

    - -

    If you aren't using the Eclipse IDE and ADT plugin, you can use the the activitycreator script to get started with a new application. When you run the script, it creates the structure of a minimal Android application that you can build on and extend to meet your needs.

    - -

    For Linux and Mac, the SDK provides activitycreator, a shell script, and for Windows activitycreator.bat, a batch script that runs an executable. Regardless of platform, the usage for the script is the same:

    - -
    activitycreator [--out <folder>] [--ide intellij] your.package.name.ActivityName
    - -
    - - - - - - - - - - - - - - - -
    OptionDescription
    --out <folder>Specifies where to create the files/folders.
    --ide intellijCreates project files for IntelliJ
    - - -

    When run, the script creates these files:

    - -
      -
    • AndroidManifest.xml -- The application manifest file.
    • -
    • build.xml -- An Ant script to build/package the application.
    • -
    • res -- The resource directory.
    • -
    • src -- The source directory.
    • -
    • src/your/package/name/ActivityName.java -- The Activity class.
    • -
    • bin -- The output folder for the compiled .apk (when built by Ant).
    • -
    - -

    When you are ready, you can use Ant to build the project so that you can run it on the emulator.

    -

    If you are using Eclipse with the ADT plugin, you do not need to use activitycreator. You can use the New Project Wizard, provided by the ADT plugin, instead.

    diff --git a/docs/html/guide/guide_toc.cs b/docs/html/guide/guide_toc.cs index 77d3522ce72a..3c9b7c27bbcd 100644 --- a/docs/html/guide/guide_toc.cs +++ b/docs/html/guide/guide_toc.cs @@ -61,6 +61,7 @@
  • <provider>
  • <receiver>
  • <service>
  • +
  • <uses-configuration>
  • <uses-library>
  • <uses-permission>
  • <uses-sdk>
  • @@ -84,7 +85,7 @@
  • Accelerometer
--> -
  • Location
  • +
  • Location and Maps
  • -
  • In Eclipse, with ADT
  • In Other IDEs
  • On a Device
  • @@ -110,9 +110,10 @@
    • aapt
    • adb
    • -
    • activitycreator
    • +
    • android
    • aidl
    • +
    • AVDs
    • ddms
    • dx
    • Draw 9-Patch
    • diff --git a/docs/html/samples/index.jd b/docs/html/samples/index.jd index c5c0b7132eb9..06afd07f8ded 100644 --- a/docs/html/samples/index.jd +++ b/docs/html/samples/index.jd @@ -18,6 +18,5 @@ page.onlyfortemplate=codesite

      To run these samples, you should import them into -Eclipse or use -activitycreator.py, as described in the Installing the SDK.

      +Eclipse or build them with Ant, as described in +Developing in Other IDEs.

      -- cgit v1.2.3-59-g8ed1b From 874c731ac3399ca038745df83d1545dba33ac367 Mon Sep 17 00:00:00 2001 From: Dirk Dougherty <> Date: Tue, 21 Apr 2009 15:00:34 -0700 Subject: AI 147239: am: CL 147238 Update tools index, replace activitycreator with android Original author: ddougherty Merged from: //branches/cupcake/... Automated import of CL 147239 --- docs/html/guide/appendix/faq/commontasks.jd | 4 +- docs/html/guide/developing/tools/index.jd | 33 +++++++------ docs/html/guide/developing/tools/othertools.jd | 64 ++++++++------------------ docs/html/guide/guide_toc.cs | 7 +-- docs/html/samples/index.jd | 5 +- 5 files changed, 46 insertions(+), 67 deletions(-) diff --git a/docs/html/guide/appendix/faq/commontasks.jd b/docs/html/guide/appendix/faq/commontasks.jd index 9c79bddf75ea..0f89e7534a68 100644 --- a/docs/html/guide/appendix/faq/commontasks.jd +++ b/docs/html/guide/appendix/faq/commontasks.jd @@ -701,8 +701,8 @@ If the latitudeSpan, longitudeSpan, and zoomLevel attributes are not consistent,

      List of Files for an Android Application

      The following list describes the structure and files of an Android application. - Many of these files can be built for you (or stubbed out) by the activitycreator - application shipped in the tools/ menu of the SDK.

      + Many of these files can be built for you (or stubbed out) by the android tool + shipped in the tools/ menu of the SDK.

      diff --git a/docs/html/guide/developing/tools/index.jd b/docs/html/guide/developing/tools/index.jd index b491a4fcd8da..e53d5957995a 100644 --- a/docs/html/guide/developing/tools/index.jd +++ b/docs/html/guide/developing/tools/index.jd @@ -8,23 +8,29 @@ applications on the Android platform. The most important of these are the Androi Emulator and the Android Development Tools plugin for Eclipse, but the SDK also includes a variety of other tools for debugging, packaging, and installing your applications on the emulator.

      - -
      -
      Android Emulator
      -
      A virtual mobile device that runs on your computer. You use the emulator to design, - debug, and test your applications in an actual Android run-time environment.
      +
      Android Development Tools Plugin (for the Eclipse IDE)
      The ADT plugin adds powerful extensions to the Eclipse integrated environment, making creating and debugging your Android applications easier and faster. If you use Eclipse, the ADT plugin gives you an incredible boost in developing Android applications.
      +
      Android Emulator
      +
      A QEMU-based device-emulation tool that you can use to design, + debug, and test your applications in an actual Android run-time environment.
      -
      Hierarchy Viewer
      -
      The Hierarchy Viewer tool allows you to debug and optimize your user interface. - It provides a visual representation of your layout's hierarchy of Views and a magnified inspector - of the current display with a pixel grid, so you can get your layout just right. -
      +
      Android Virtual Devices (AVDs)
      +
      Virtual device configurations that you create, to model device + characteristics in the Android Emulator. In each configuration, you can + specify the Android platform to run, the hardware options, and the + emulator skin to use. Each AVD functions as an independent device with + it's own storage for user data, SD card, and so on.
      + +
      Hierarchy Viewer
      +
      The Hierarchy Viewer tool allows you to debug and optimize your user interface. + It provides a visual representation of your layout's hierarchy of Views and a magnified inspector + of the current display with a pixel grid, so you can get your layout just right. +
      Draw 9-patch
      The Draw 9-patch tool allows you to easily create a @@ -79,10 +85,9 @@ applications on the emulator.

      level events. You can use the Monkey to stress-test applications that you are developing, in a random yet repeatable manner.
      -
      activitycreator
      -
      A script that generates android +
      A script that lets you manage AVDs and generate Ant build files that - you can use to compile your Android applications. If you are developing - on Eclipse with the ADT plugin, you won't need to use this script.
      + you can use to compile your Android applications.
      diff --git a/docs/html/guide/developing/tools/othertools.jd b/docs/html/guide/developing/tools/othertools.jd index eaa0b76a5f42..603609eb1ae0 100644 --- a/docs/html/guide/developing/tools/othertools.jd +++ b/docs/html/guide/developing/tools/othertools.jd @@ -3,16 +3,32 @@ page.title=Other Tools

      The sections below describe other tools that you can use when building Android applications.

      -

      All of the tools are included in the Android SDK and are accessible from the tools/ directory.

      +

      All of the tools are included in the Android SDK and are accessible from the <sdk>/tools/ directory.

      Contents

      +
      android
      mksdcard
      dx
      -
      activitycreator
      + +

      android

      + +

      The android tool is a script that lets you create and manage Android Virtual Devices (AVDs) and, if you are developing using Ant, generate template Android projects to help you get started quickly.

      + +

      For information about how to use the android tool to manage AVDs, see Android Virtual Devices.

      + +

      For information about how to use the android tool to create or update a project, see Developing in Other IDEs.

      + +

      Note that if you are developing in Eclipse with the ADT plugin, you will use the android tool to manage the AVDs you create, but you will not use the android tool for creating a project. The ADT plugin provides a New Project Wizard that helps you set up an Android project in Eclipse.

      + +

      If you are developing in Ant, you will use the android tool to manage your AVDs, and you can also use it to create or update a project.

      + +

      Note: The android tool replaces the activitycreator tool provided in previous SDK releases.

      + +

      mksdcard

      @@ -21,7 +37,7 @@ page.title=Other Tools
      mksdcard [-l label] <size>[K|M] <file>
      -

      The table below lists the available options/arguments

      +

      The table below lists the available options/arguments

      MyApp/
      @@ -57,48 +73,6 @@ You can also specify size in kilobytes or megabytes, by appending a "K" or "M" t

      The dx tool lets you generate Android bytecode from .class files. The tool converts target files and/or directories to Dalvik executable format (.dex) files, so that they can run in the Android environment. It can also dump the class files in a human-readable format and run a target unit test. You can get the usage and options for this tool by using dx --help.

      - - -

      activitycreator

      - -

      If you aren't using the Eclipse IDE and ADT plugin, you can use the the activitycreator script to get started with a new application. When you run the script, it creates the structure of a minimal Android application that you can build on and extend to meet your needs.

      - -

      For Linux and Mac, the SDK provides activitycreator, a shell script, and for Windows activitycreator.bat, a batch script that runs an executable. Regardless of platform, the usage for the script is the same:

      - -
      activitycreator [--out <folder>] [--ide intellij] your.package.name.ActivityName
      - -
      - - - - - - - - - - - - - - - -
      OptionDescription
      --out <folder>Specifies where to create the files/folders.
      --ide intellijCreates project files for IntelliJ
      - - -

      When run, the script creates these files:

      - -
        -
      • AndroidManifest.xml -- The application manifest file.
      • -
      • build.xml -- An Ant script to build/package the application.
      • -
      • res -- The resource directory.
      • -
      • src -- The source directory.
      • -
      • src/your/package/name/ActivityName.java -- The Activity class.
      • -
      • bin -- The output folder for the compiled .apk (when built by Ant).
      • -
      - -

      When you are ready, you can use Ant to build the project so that you can run it on the emulator.

      -

      If you are using Eclipse with the ADT plugin, you do not need to use activitycreator. You can use the New Project Wizard, provided by the ADT plugin, instead.

      diff --git a/docs/html/guide/guide_toc.cs b/docs/html/guide/guide_toc.cs index 77d3522ce72a..3c9b7c27bbcd 100644 --- a/docs/html/guide/guide_toc.cs +++ b/docs/html/guide/guide_toc.cs @@ -61,6 +61,7 @@
    • <provider>
    • <receiver>
    • <service>
    • +
    • <uses-configuration>
    • <uses-library>
    • <uses-permission>
    • <uses-sdk>
    • @@ -84,7 +85,7 @@
    • Accelerometer
    --> -
  • Location
  • +
  • Location and Maps
  • -
  • In Eclipse, with ADT
  • In Other IDEs
  • On a Device
  • @@ -110,9 +110,10 @@
    • aapt
    • adb
    • -
    • activitycreator
    • +
    • android
    • aidl
    • +
    • AVDs
    • ddms
    • dx
    • Draw 9-Patch
    • diff --git a/docs/html/samples/index.jd b/docs/html/samples/index.jd index c5c0b7132eb9..06afd07f8ded 100644 --- a/docs/html/samples/index.jd +++ b/docs/html/samples/index.jd @@ -18,6 +18,5 @@ page.onlyfortemplate=codesite

      To run these samples, you should import them into -Eclipse or use -activitycreator.py, as described in the Installing the SDK.

      +Eclipse or build them with Ant, as described in +Developing in Other IDEs.

      -- cgit v1.2.3-59-g8ed1b From 9daf96a377ba6f8ed1083d66f1e2e991cdfeb8ec Mon Sep 17 00:00:00 2001 From: Dirk Dougherty <> Date: Tue, 21 Apr 2009 15:03:07 -0700 Subject: AI 147242: am: CL 147239 am: CL 147238 Update tools index, replace activitycreator with android Original author: ddougherty Merged from: //branches/cupcake/... Original author: android-build Automated import of CL 147242 --- docs/html/guide/appendix/faq/commontasks.jd | 4 +- docs/html/guide/developing/tools/index.jd | 33 +++++++------ docs/html/guide/developing/tools/othertools.jd | 64 ++++++++------------------ docs/html/guide/guide_toc.cs | 7 +-- docs/html/samples/index.jd | 5 +- 5 files changed, 46 insertions(+), 67 deletions(-) diff --git a/docs/html/guide/appendix/faq/commontasks.jd b/docs/html/guide/appendix/faq/commontasks.jd index 9c79bddf75ea..0f89e7534a68 100644 --- a/docs/html/guide/appendix/faq/commontasks.jd +++ b/docs/html/guide/appendix/faq/commontasks.jd @@ -701,8 +701,8 @@ If the latitudeSpan, longitudeSpan, and zoomLevel attributes are not consistent,

      List of Files for an Android Application

      The following list describes the structure and files of an Android application. - Many of these files can be built for you (or stubbed out) by the activitycreator - application shipped in the tools/ menu of the SDK.

      + Many of these files can be built for you (or stubbed out) by the android tool + shipped in the tools/ menu of the SDK.

      diff --git a/docs/html/guide/developing/tools/index.jd b/docs/html/guide/developing/tools/index.jd index b491a4fcd8da..e53d5957995a 100644 --- a/docs/html/guide/developing/tools/index.jd +++ b/docs/html/guide/developing/tools/index.jd @@ -8,23 +8,29 @@ applications on the Android platform. The most important of these are the Androi Emulator and the Android Development Tools plugin for Eclipse, but the SDK also includes a variety of other tools for debugging, packaging, and installing your applications on the emulator.

      - -
      -
      Android Emulator
      -
      A virtual mobile device that runs on your computer. You use the emulator to design, - debug, and test your applications in an actual Android run-time environment.
      +
      Android Development Tools Plugin (for the Eclipse IDE)
      The ADT plugin adds powerful extensions to the Eclipse integrated environment, making creating and debugging your Android applications easier and faster. If you use Eclipse, the ADT plugin gives you an incredible boost in developing Android applications.
      +
      Android Emulator
      +
      A QEMU-based device-emulation tool that you can use to design, + debug, and test your applications in an actual Android run-time environment.
      -
      Hierarchy Viewer
      -
      The Hierarchy Viewer tool allows you to debug and optimize your user interface. - It provides a visual representation of your layout's hierarchy of Views and a magnified inspector - of the current display with a pixel grid, so you can get your layout just right. -
      +
      Android Virtual Devices (AVDs)
      +
      Virtual device configurations that you create, to model device + characteristics in the Android Emulator. In each configuration, you can + specify the Android platform to run, the hardware options, and the + emulator skin to use. Each AVD functions as an independent device with + it's own storage for user data, SD card, and so on.
      + +
      Hierarchy Viewer
      +
      The Hierarchy Viewer tool allows you to debug and optimize your user interface. + It provides a visual representation of your layout's hierarchy of Views and a magnified inspector + of the current display with a pixel grid, so you can get your layout just right. +
      Draw 9-patch
      The Draw 9-patch tool allows you to easily create a @@ -79,10 +85,9 @@ applications on the emulator.

      level events. You can use the Monkey to stress-test applications that you are developing, in a random yet repeatable manner.
      -
      activitycreator
      -
      A script that generates android +
      A script that lets you manage AVDs and generate Ant build files that - you can use to compile your Android applications. If you are developing - on Eclipse with the ADT plugin, you won't need to use this script.
      + you can use to compile your Android applications.
      diff --git a/docs/html/guide/developing/tools/othertools.jd b/docs/html/guide/developing/tools/othertools.jd index eaa0b76a5f42..603609eb1ae0 100644 --- a/docs/html/guide/developing/tools/othertools.jd +++ b/docs/html/guide/developing/tools/othertools.jd @@ -3,16 +3,32 @@ page.title=Other Tools

      The sections below describe other tools that you can use when building Android applications.

      -

      All of the tools are included in the Android SDK and are accessible from the tools/ directory.

      +

      All of the tools are included in the Android SDK and are accessible from the <sdk>/tools/ directory.

      Contents

      +
      android
      mksdcard
      dx
      -
      activitycreator
      + +

      android

      + +

      The android tool is a script that lets you create and manage Android Virtual Devices (AVDs) and, if you are developing using Ant, generate template Android projects to help you get started quickly.

      + +

      For information about how to use the android tool to manage AVDs, see Android Virtual Devices.

      + +

      For information about how to use the android tool to create or update a project, see Developing in Other IDEs.

      + +

      Note that if you are developing in Eclipse with the ADT plugin, you will use the android tool to manage the AVDs you create, but you will not use the android tool for creating a project. The ADT plugin provides a New Project Wizard that helps you set up an Android project in Eclipse.

      + +

      If you are developing in Ant, you will use the android tool to manage your AVDs, and you can also use it to create or update a project.

      + +

      Note: The android tool replaces the activitycreator tool provided in previous SDK releases.

      + +

      mksdcard

      @@ -21,7 +37,7 @@ page.title=Other Tools
      mksdcard [-l label] <size>[K|M] <file>
      -

      The table below lists the available options/arguments

      +

      The table below lists the available options/arguments

      MyApp/
      @@ -57,48 +73,6 @@ You can also specify size in kilobytes or megabytes, by appending a "K" or "M" t

      The dx tool lets you generate Android bytecode from .class files. The tool converts target files and/or directories to Dalvik executable format (.dex) files, so that they can run in the Android environment. It can also dump the class files in a human-readable format and run a target unit test. You can get the usage and options for this tool by using dx --help.

      - - -

      activitycreator

      - -

      If you aren't using the Eclipse IDE and ADT plugin, you can use the the activitycreator script to get started with a new application. When you run the script, it creates the structure of a minimal Android application that you can build on and extend to meet your needs.

      - -

      For Linux and Mac, the SDK provides activitycreator, a shell script, and for Windows activitycreator.bat, a batch script that runs an executable. Regardless of platform, the usage for the script is the same:

      - -
      activitycreator [--out <folder>] [--ide intellij] your.package.name.ActivityName
      - -
      - - - - - - - - - - - - - - - -
      OptionDescription
      --out <folder>Specifies where to create the files/folders.
      --ide intellijCreates project files for IntelliJ
      - - -

      When run, the script creates these files:

      - -
        -
      • AndroidManifest.xml -- The application manifest file.
      • -
      • build.xml -- An Ant script to build/package the application.
      • -
      • res -- The resource directory.
      • -
      • src -- The source directory.
      • -
      • src/your/package/name/ActivityName.java -- The Activity class.
      • -
      • bin -- The output folder for the compiled .apk (when built by Ant).
      • -
      - -

      When you are ready, you can use Ant to build the project so that you can run it on the emulator.

      -

      If you are using Eclipse with the ADT plugin, you do not need to use activitycreator. You can use the New Project Wizard, provided by the ADT plugin, instead.

      diff --git a/docs/html/guide/guide_toc.cs b/docs/html/guide/guide_toc.cs index 77d3522ce72a..3c9b7c27bbcd 100644 --- a/docs/html/guide/guide_toc.cs +++ b/docs/html/guide/guide_toc.cs @@ -61,6 +61,7 @@
    • <provider>
    • <receiver>
    • <service>
    • +
    • <uses-configuration>
    • <uses-library>
    • <uses-permission>
    • <uses-sdk>
    • @@ -84,7 +85,7 @@
    • Accelerometer
    --> -
  • Location
  • +
  • Location and Maps
  • -
  • In Eclipse, with ADT
  • In Other IDEs
  • On a Device
  • @@ -110,9 +110,10 @@
    • aapt
    • adb
    • -
    • activitycreator
    • +
    • android
    • aidl
    • +
    • AVDs
    • ddms
    • dx
    • Draw 9-Patch
    • diff --git a/docs/html/samples/index.jd b/docs/html/samples/index.jd index c5c0b7132eb9..06afd07f8ded 100644 --- a/docs/html/samples/index.jd +++ b/docs/html/samples/index.jd @@ -18,6 +18,5 @@ page.onlyfortemplate=codesite

      To run these samples, you should import them into -Eclipse or use -activitycreator.py, as described in the Installing the SDK.

      +Eclipse or build them with Ant, as described in +Developing in Other IDEs.

      -- cgit v1.2.3-59-g8ed1b From 46000b5841033c7171b17e429650a37ec810b4a6 Mon Sep 17 00:00:00 2001 From: Jeff Hamilton <> Date: Tue, 21 Apr 2009 15:12:16 -0700 Subject: AI 147250: Fix a nasty typo in the docs for ContentResolver.update(). No code changes. BUG=1067866 Automated import of CL 147250 --- core/java/android/content/ContentResolver.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/java/android/content/ContentResolver.java b/core/java/android/content/ContentResolver.java index 0d886ee23e8d..0a71d572932e 100644 --- a/core/java/android/content/ContentResolver.java +++ b/core/java/android/content/ContentResolver.java @@ -541,7 +541,7 @@ public abstract class ContentResolver { A null value will remove an existing field value. * @param where A filter to apply to rows before deleting, formatted as an SQL WHERE clause (excluding the WHERE itself). - * @return the URL of the newly created row + * @return The number of rows updated. * @throws NullPointerException if uri or values are null */ public final int update(Uri uri, ContentValues values, String where, -- cgit v1.2.3-59-g8ed1b From 348c1796d460e43e45e582739956c02c5bc8f602 Mon Sep 17 00:00:00 2001 From: Jeff Hamilton <> Date: Tue, 21 Apr 2009 15:13:18 -0700 Subject: AI 147253: am: CL 147250 Fix a nasty typo in the docs for ContentResolver.update(). No code changes. Original author: jham Merged from: //branches/cupcake/... Automated import of CL 147253 --- core/java/android/content/ContentResolver.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/java/android/content/ContentResolver.java b/core/java/android/content/ContentResolver.java index 0d886ee23e8d..0a71d572932e 100644 --- a/core/java/android/content/ContentResolver.java +++ b/core/java/android/content/ContentResolver.java @@ -541,7 +541,7 @@ public abstract class ContentResolver { A null value will remove an existing field value. * @param where A filter to apply to rows before deleting, formatted as an SQL WHERE clause (excluding the WHERE itself). - * @return the URL of the newly created row + * @return The number of rows updated. * @throws NullPointerException if uri or values are null */ public final int update(Uri uri, ContentValues values, String where, -- cgit v1.2.3-59-g8ed1b From b0c6dbd53b26b172fe8eb7d117550e4edf7a0c9c Mon Sep 17 00:00:00 2001 From: Jeff Hamilton <> Date: Tue, 21 Apr 2009 15:16:13 -0700 Subject: AI 147255: am: CL 147253 am: CL 147250 Fix a nasty typo in the docs for ContentResolver.update(). No code changes. Original author: jham Merged from: //branches/cupcake/... Original author: android-build Automated import of CL 147255 --- core/java/android/content/ContentResolver.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/java/android/content/ContentResolver.java b/core/java/android/content/ContentResolver.java index 0d886ee23e8d..0a71d572932e 100644 --- a/core/java/android/content/ContentResolver.java +++ b/core/java/android/content/ContentResolver.java @@ -541,7 +541,7 @@ public abstract class ContentResolver { A null value will remove an existing field value. * @param where A filter to apply to rows before deleting, formatted as an SQL WHERE clause (excluding the WHERE itself). - * @return the URL of the newly created row + * @return The number of rows updated. * @throws NullPointerException if uri or values are null */ public final int update(Uri uri, ContentValues values, String where, -- cgit v1.2.3-59-g8ed1b From 375cbb47ff721a26b62385211b82a7cf26db0395 Mon Sep 17 00:00:00 2001 From: Mike Lockwood Date: Tue, 21 Apr 2009 15:49:38 -0700 Subject: gps: Check for null APN name when receiving telephony notifications. Fixes bug b/1800584 Signed-off-by: Mike Lockwood --- location/java/com/android/internal/location/GpsLocationProvider.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/location/java/com/android/internal/location/GpsLocationProvider.java b/location/java/com/android/internal/location/GpsLocationProvider.java index c8257240e8d3..924641c8a398 100644 --- a/location/java/com/android/internal/location/GpsLocationProvider.java +++ b/location/java/com/android/internal/location/GpsLocationProvider.java @@ -218,7 +218,7 @@ public class GpsLocationProvider extends LocationProviderImpl { if (Config.LOGD) { Log.d(TAG, "state: " + state + " apnName: " + apnName + " reason: " + reason); } - if ("CONNECTED".equals(state)) { + if ("CONNECTED".equals(state) && apnName != null && apnName.length() > 0) { mSuplApn = apnName; if (mSuplDataConnectionState == SUPL_DATA_CONNECTION_OPENING) { native_supl_data_conn_open(mSuplApn); -- cgit v1.2.3-59-g8ed1b From 71fd04616ba5b63f2ba9431e5ad5acf547f5f74d Mon Sep 17 00:00:00 2001 From: Mike Lockwood Date: Tue, 21 Apr 2009 16:45:33 -0700 Subject: Geocoder: Document behavior when no backend service is available. Signed-off-by: Mike Lockwood --- location/java/android/location/Geocoder.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/location/java/android/location/Geocoder.java b/location/java/android/location/Geocoder.java index 709ad23fd787..2ce127367a85 100644 --- a/location/java/android/location/Geocoder.java +++ b/location/java/android/location/Geocoder.java @@ -37,6 +37,10 @@ import java.util.List; * reverse geocoded location description may vary, for example one * might contain the full street address of the closest building, while * another might contain only a city name and postal code. + * + * The Geocoder class requires a backend service that is not included in + * the core android framework. The Geocoder query methods will return an + * empty list if there no backend service in the platform. */ public final class Geocoder { private static final String TAG = "Geocoder"; @@ -94,8 +98,8 @@ public final class Geocoder { * @param longitude the longitude a point for the search * @param maxResults max number of addresses to return. Smaller numbers (1 to 5) are recommended * - * @return a list of Address objects or null if no matches were - * found. + * @return a list of Address objects. Returns null or empty list if no matches were + * found or there is no backend service available. * * @throws IllegalArgumentException if latitude is * less than -90 or greater than 90 @@ -143,7 +147,8 @@ public final class Geocoder { * @param locationName a user-supplied description of a location * @param maxResults max number of results to return. Smaller numbers (1 to 5) are recommended * - * @return a list of Address objects or null if no matches were found. + * @return a list of Address objects. Returns null or empty list if no matches were + * found or there is no backend service available. * * @throws IllegalArgumentException if locationName is null * @throws IOException if the network is unavailable or any other @@ -192,7 +197,8 @@ public final class Geocoder { * @param upperRightLatitude the latitude of the upper right corner of the bounding box * @param upperRightLongitude the longitude of the upper right corner of the bounding box * - * @return a list of Address objects or null if no matches were found. + * @return a list of Address objects. Returns null or empty list if no matches were + * found or there is no backend service available. * * @throws IllegalArgumentException if locationName is null * @throws IllegalArgumentException if any latitude is -- cgit v1.2.3-59-g8ed1b From ee378956e3ab9dd312890f4554350ee76e07b301 Mon Sep 17 00:00:00 2001 From: Xavier Ducrohet <> Date: Tue, 21 Apr 2009 18:45:32 -0700 Subject: AI 147290: Update Geocoder javadoc to reflect the need for a backend service. BUG=1794552 Automated import of CL 147290 --- location/java/android/location/Geocoder.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/location/java/android/location/Geocoder.java b/location/java/android/location/Geocoder.java index 709ad23fd787..53e46b7d2001 100644 --- a/location/java/android/location/Geocoder.java +++ b/location/java/android/location/Geocoder.java @@ -36,7 +36,11 @@ import java.util.List; * coordinate into a (partial) address. The amount of detail in a * reverse geocoded location description may vary, for example one * might contain the full street address of the closest building, while - * another might contain only a city name and postal code. + * another might contain only a city name and postal code. + * + * The Geocoder class requires a backend service that is not included in + * the core android framework. The Geocoder query methods will return an + * empty list if there no backend service in the platform. */ public final class Geocoder { private static final String TAG = "Geocoder"; @@ -94,8 +98,8 @@ public final class Geocoder { * @param longitude the longitude a point for the search * @param maxResults max number of addresses to return. Smaller numbers (1 to 5) are recommended * - * @return a list of Address objects or null if no matches were - * found. + * @return a list of Address objects. Returns null or empty list if no matches were + * found or there is no backend service available. * * @throws IllegalArgumentException if latitude is * less than -90 or greater than 90 @@ -143,7 +147,8 @@ public final class Geocoder { * @param locationName a user-supplied description of a location * @param maxResults max number of results to return. Smaller numbers (1 to 5) are recommended * - * @return a list of Address objects or null if no matches were found. + * @return a list of Address objects. Returns null or empty list if no matches were + * found or there is no backend service available. * * @throws IllegalArgumentException if locationName is null * @throws IOException if the network is unavailable or any other @@ -192,7 +197,8 @@ public final class Geocoder { * @param upperRightLatitude the latitude of the upper right corner of the bounding box * @param upperRightLongitude the longitude of the upper right corner of the bounding box * - * @return a list of Address objects or null if no matches were found. + * @return a list of Address objects. Returns null or empty list if no matches were + * found or there is no backend service available. * * @throws IllegalArgumentException if locationName is null * @throws IllegalArgumentException if any latitude is -- cgit v1.2.3-59-g8ed1b From 4193558f232c8961039b9ae6f875e3303b8e5d30 Mon Sep 17 00:00:00 2001 From: Xavier Ducrohet <> Date: Tue, 21 Apr 2009 18:47:12 -0700 Subject: AI 147294: am: CL 147290 Update Geocoder javadoc to reflect the need for a backend service. Original author: xav Merged from: //branches/cupcake/... Automated import of CL 147294 --- location/java/android/location/Geocoder.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/location/java/android/location/Geocoder.java b/location/java/android/location/Geocoder.java index 709ad23fd787..53e46b7d2001 100644 --- a/location/java/android/location/Geocoder.java +++ b/location/java/android/location/Geocoder.java @@ -36,7 +36,11 @@ import java.util.List; * coordinate into a (partial) address. The amount of detail in a * reverse geocoded location description may vary, for example one * might contain the full street address of the closest building, while - * another might contain only a city name and postal code. + * another might contain only a city name and postal code. + * + * The Geocoder class requires a backend service that is not included in + * the core android framework. The Geocoder query methods will return an + * empty list if there no backend service in the platform. */ public final class Geocoder { private static final String TAG = "Geocoder"; @@ -94,8 +98,8 @@ public final class Geocoder { * @param longitude the longitude a point for the search * @param maxResults max number of addresses to return. Smaller numbers (1 to 5) are recommended * - * @return a list of Address objects or null if no matches were - * found. + * @return a list of Address objects. Returns null or empty list if no matches were + * found or there is no backend service available. * * @throws IllegalArgumentException if latitude is * less than -90 or greater than 90 @@ -143,7 +147,8 @@ public final class Geocoder { * @param locationName a user-supplied description of a location * @param maxResults max number of results to return. Smaller numbers (1 to 5) are recommended * - * @return a list of Address objects or null if no matches were found. + * @return a list of Address objects. Returns null or empty list if no matches were + * found or there is no backend service available. * * @throws IllegalArgumentException if locationName is null * @throws IOException if the network is unavailable or any other @@ -192,7 +197,8 @@ public final class Geocoder { * @param upperRightLatitude the latitude of the upper right corner of the bounding box * @param upperRightLongitude the longitude of the upper right corner of the bounding box * - * @return a list of Address objects or null if no matches were found. + * @return a list of Address objects. Returns null or empty list if no matches were + * found or there is no backend service available. * * @throws IllegalArgumentException if locationName is null * @throws IllegalArgumentException if any latitude is -- cgit v1.2.3-59-g8ed1b From 85ae1b1d5364c66f7dd8de26890287806bfdb63f Mon Sep 17 00:00:00 2001 From: Xavier Ducrohet <> Date: Tue, 21 Apr 2009 18:47:18 -0700 Subject: AI 147295: am: CL 147294 am: CL 147290 Update Geocoder javadoc to reflect the need for a backend service. Original author: xav Merged from: //branches/cupcake/... Original author: android-build Automated import of CL 147295 --- location/java/android/location/Geocoder.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/location/java/android/location/Geocoder.java b/location/java/android/location/Geocoder.java index 709ad23fd787..53e46b7d2001 100644 --- a/location/java/android/location/Geocoder.java +++ b/location/java/android/location/Geocoder.java @@ -36,7 +36,11 @@ import java.util.List; * coordinate into a (partial) address. The amount of detail in a * reverse geocoded location description may vary, for example one * might contain the full street address of the closest building, while - * another might contain only a city name and postal code. + * another might contain only a city name and postal code. + * + * The Geocoder class requires a backend service that is not included in + * the core android framework. The Geocoder query methods will return an + * empty list if there no backend service in the platform. */ public final class Geocoder { private static final String TAG = "Geocoder"; @@ -94,8 +98,8 @@ public final class Geocoder { * @param longitude the longitude a point for the search * @param maxResults max number of addresses to return. Smaller numbers (1 to 5) are recommended * - * @return a list of Address objects or null if no matches were - * found. + * @return a list of Address objects. Returns null or empty list if no matches were + * found or there is no backend service available. * * @throws IllegalArgumentException if latitude is * less than -90 or greater than 90 @@ -143,7 +147,8 @@ public final class Geocoder { * @param locationName a user-supplied description of a location * @param maxResults max number of results to return. Smaller numbers (1 to 5) are recommended * - * @return a list of Address objects or null if no matches were found. + * @return a list of Address objects. Returns null or empty list if no matches were + * found or there is no backend service available. * * @throws IllegalArgumentException if locationName is null * @throws IOException if the network is unavailable or any other @@ -192,7 +197,8 @@ public final class Geocoder { * @param upperRightLatitude the latitude of the upper right corner of the bounding box * @param upperRightLongitude the longitude of the upper right corner of the bounding box * - * @return a list of Address objects or null if no matches were found. + * @return a list of Address objects. Returns null or empty list if no matches were + * found or there is no backend service available. * * @throws IllegalArgumentException if locationName is null * @throws IllegalArgumentException if any latitude is -- cgit v1.2.3-59-g8ed1b From fe1f789124ecc4b1475abecfc7d8263c0b21fb6a Mon Sep 17 00:00:00 2001 From: Dirk Dougherty <> Date: Tue, 21 Apr 2009 18:52:41 -0700 Subject: AI 147297: Update Android 1.5 SDK Download, Release Notes, Version Notes, Highlights Please let me know if you have other "known issues", "resolved issues", or "highlights". Also, note that the installing and upgrading docs are being updated in a different CL, so the new version is not displayed on my staging server. BUG=1790234 Automated import of CL 147297 --- docs/html/sdk/1.5_r1/index.jd | 45 ++++-- docs/html/sdk/RELEASENOTES.jd | 229 +++++++++++++++++++++++++++-- docs/html/sdk/adt_download.jd | 17 ++- docs/html/sdk/android-1.5-highlights.jd | 205 ++++++++++++++++++++++++++ docs/html/sdk/android-1.5.jd | 245 +++++++++++++++++++++++++++++++- docs/html/sdk/sdk_toc.cs | 17 +-- 6 files changed, 717 insertions(+), 41 deletions(-) create mode 100644 docs/html/sdk/android-1.5-highlights.jd diff --git a/docs/html/sdk/1.5_r1/index.jd b/docs/html/sdk/1.5_r1/index.jd index 412887a95257..834ab7991959 100644 --- a/docs/html/sdk/1.5_r1/index.jd +++ b/docs/html/sdk/1.5_r1/index.jd @@ -2,51 +2,72 @@ sdk.version=1.5 sdk.rel.id=1 sdk.date=April 2009 -sdk.win_download= +sdk.win_download=android-sdk-windows-1.5_r1.zip sdk.win_bytes= sdk.win_checksum= -sdk.mac_download= +sdk.mac_download=android-sdk-mac_x86-1.5_r1.zip sdk.mac_bytes= sdk.mac_checksum= -sdk.linux_download= +sdk.linux_download=android-sdk-linux_x86-1.5_r1.zip sdk.linux_bytes= sdk.linux_checksum= -page.title=Download Android SDK +page.title=Android 1.5 SDK, Release 1 @jd:body

      SDK Contents

      Development tools

      -

      The SDK includes a variety of tools for developing and debugging application code and designing an application UI. You can read about the tools in the +

      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 included in this SDK includes many updates from that provided in the previous SDK and requires you to migrate your applications to the new development environment. For details, see the Upgrading the SDK document.

      +

      The tools package in this SDK includes updates from those provided in the previous SDK. The tools also require a different project structure. To use the new tools, you need to migrate your applications to the new development environment. For more information about how to migrate, see Upgrading the SDK. -

      System Images

      +

      For more information about the new tools features, see the SDK Release Notes. -

      The Android system images listed below are included in this SDK. For more information about a system image — features, applications included, localizations, API changes, and so on — see its Version Notes.

      +

      Android Platforms

      + +

      This SDK includes multiple Android platform versions that you 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.

      - + - + - + + + +
      System ImageAPI LevelNotesDescriptionPlatformAPI LevelNotesDescription
      Android 1.5 3 Version NotesIncludes a set of standard development applications. Includes 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).
      Android 1.1 2 Version NotesIncludes a set of standard development applications. Includes a compliant Android 1.1 library and system image with a set of development applications. Also includes the Maps external library (due to legacy build system issues). +external library.
      + +

      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-on listed below. The Android system API Level required by the add-on is noted.

      + + + + + + + + +
      Add-OnAPI LevelNotesDescription
      Google APIs3 Includes the com.google.android.maps external library, a compliant +system image, a {@link android.location.Geocoder Geocoder} +backend service implementation, documentation, and sample code.
      @@ -55,7 +76,6 @@ page.title=Download Android SDK

      You can look at a variety of tutorials and samples in the Dev Guide and access the sample code itself in the <sdk>/platforms/android-1.5/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.

      - diff --git a/docs/html/sdk/RELEASENOTES.jd b/docs/html/sdk/RELEASENOTES.jd index bad71a2a59da..c6a887a44662 100644 --- a/docs/html/sdk/RELEASENOTES.jd +++ b/docs/html/sdk/RELEASENOTES.jd @@ -1,21 +1,209 @@ page.title=SDK Release Notes @jd:body -

      This document provides version-specific information about Android SDK releases. For the latest known issues, please ensure that you're viewing this page at: http://developer.android.com/sdk/RELEASENOTES.html.

      +

      This document provides version-specific information about Android SDK +releases. For the latest known issues, please ensure that you're viewing this +page at: +http://developer.android.com/sdk/RELEASENOTES.html.

      + +

      Android 1.5 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 many new features for developers. Highlights of the +changes include:

      + +
        +
      • Multiple versions of the Android platform are included (Android 1.1, +Android 1.5). The tools are updated to let you deploy your application +on any platform in the SDK, which helps you ensure forward-compitility and, +if applicable, backward-compatibility.
      • +
      • Introduces Android +Virtual Devices — (AVD) configurations of options that you +run in the emulator to better model actual devices. Each AVD gets its +own dedicated storage area, making it much easier to work with multiple emulators +that are running concurrently.
      • +
      • Support for SDK add-ons, which extend the +Android SDK to give you access to one or more external Android libraries and/or +a customized (but compliant) system image that can run in the emulator.
      • +
      • The new Eclipse ADT plugin (version 0.9.0) offers new Wizards to let you +create projects targetted for specific Android configurations, generate XML +resources (such as layouts, animations, and menus), generate alternate layouts, +and export and sign your application for publishing.
      • +
      • Improved JUnit support in ADT
      • +
      • Easier profiling of performance
      • +
      • Easier management of localized applications. You can now include or +exclude locale resources when building your APK from a single +Android project.
      • +
      • A new tool called "android" replaces the activitycreator script.
      • +
      + +

      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.

      + +

      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. + +

      SDK Add-Ons

      + +

      This version of the SDK introduces support for SDK add-ons, which extend the +Android SDK to give you access to one or more external Android libraries and/or +a customized (but compliant) system image that can run in the emulator. The +purpose of an SDK add-on is to give you a way to develop applications for a +specific actual device (or family of devices) that extends the APIs available to +Android applications through external libraries or system customizations.

      + +

      From the perspective of your Android development environment, an SDK add-on +is similar to any of the Android platform targets included in the SDK — it +includes an external library, a system image, as well as custom emulator skins +and system properties. The add-on differs in that the Android platform it +provides may include customized UI, resources, or behaviors, a different set of +preinstalled applications, or other similar modifications. + +

      The SDK includes a single SDK add-on — the Google APIs add-on. The +Google APIs add-on gives your application access to the com.google.android.maps +external library that is included on many (if not most) Android-powered devices. +The Google APIs add-on also includes a {@link android.location.Geocoder Geocoder} +backend service implementation. For more information, see the "Maps External +Library" section below.

      + +

      Android Virtual Devices (AVDs)

      + +

      The SDK now gives you the capability to compile an application against any +one of several system targets, then run it in the emulator on top of any +compatible system image. There are two types of targets:

      +
        +
      • Targets that represent core Android platform versions.
      • +
      • Targets that are SDK add-ons, which typically provide application access to +one or more external libraries and/or a customized (but compliant) system image +that can run in the emulator. +
      + +

      A new tool called "android" lets you discover what targets and AVDs are +available to use.

      + +

      For more information about AVDs, see Android Virtual Devices + +

      Other Notes

      + +

      Maps External Library

      + +

      In previous versions of the SDK, the com.google.android.maps package was +included in the standard Android library and system image. In the Android 1.5 +SDK, that is not the case. The Android 1.5 library and system image do not +include the Maps external library (com.google.android.maps). However, the Maps +external library is available as part of the Google APIs add-on for the Android +SDK, downloadable from this location:

      + +

      http://code.google.com +/android/add-ons/google-apis

      + +

      For your convenience, the Google APIs add-on is included in the SDK.

      + +

      For information about how to register for a Maps API Key, see + +Obtaining a Maps API Key.

      + +

      USB Drivers 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. For your convenience, the Windows version of the Android SDK includes +these USB drivers that you can install, to let you develop on the device:

      + +
        +
      • USB driver for 32-bit XP and Vista
      • +
      • USB driver for 64-bit Vista only
      • +
      + +

      The USB driver files are located in the +<SDK>/usb_driver directory. For details and +installation instructions, see Setting Up a +Device for Development.

      +

      + +

      Resolved Issues, Changes

      + +

      Media

      +
        +
      • Updated documentation for {@link android.media.SoundPool +android.media.SoundPool}
      • +
      • {@link android.webkit.WebView} objects no longer automatically save +thumbnails. The {@link android.webkit.WebView#capturePicture() capturePicture()} +method will need to be called manually.
      • +
      + +

      Known Issues

      + +

      Sensor problems in Emulator

      + +
        +
      • If your application uses the Sensor API and you are running it in the +emulator on the Android 1.5 system image, you may experience problems. Your +application may generate ANR messages or crash when using the sensors. The +problem is being investigated.
      • +
      + +

      Other

      + +
        +
      • We regret to inform developers that Android 1.5 will not include support for +the Zilog Z80 processor architecture.
      • +
      +

      Android 1.1 SDK, Release 1

      -

      This SDK provides the development tools and Android system image you need to create applications for Android-powered devices. Applications developed on this SDK will be compatible with mobile devices running the Android 1.1 platform.

      +

      This SDK provides the development tools and Android system image you need to +create applications for Android-powered devices. Applications developed on this +SDK will be compatible with mobile devices running the Android 1.1 platform. +

      -

      This release provides an updated system image (Android 1.1), updated documentation, and the same set of development tools provided in the Android 1.0 r2 SDK. The updated system image includes bug fixes and some smaller features, as well as a few minor API changes from the 1.0 version.

      +

      This release provides an updated system image (Android 1.1), updated +documentation, and the same set of development tools provided in the Android 1.0 +r2 SDK. The updated system image includes bug fixes and some smaller features, +as well as a few minor API changes from the 1.0 version.

      -

      For details about the Android 1.1 system image included in the SDK — including bug fixes, features, and API changes — please read the Android 1.1 Version Notes.

      +

      For details about the Android 1.1 system image included in the SDK — +including bug fixes, features, and API changes — please read the Android 1.1 Version Notes.

      App Versioning for Android 1.1

      -

      If you are using this SDK to build an application that is compatible only with Android-powered devices running the Android 1.1 platform, please note that you must set the the android:minSdkVersion attribute in the application's manifest to the API Level of Android 1.1 — "2".

      +

      If you are using this SDK to build an application that is compatible +only with Android-powered devices running the Android 1.1 platform, +please note that you must set the the +android:minSdkVersion attribute in the application's manifest to +the API Level of Android 1.1 — "2".

      -

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

      +

      Specifically, you specify the android:minSdkVersion attribute in +a <uses-sdk> element as a child of +<manifest> in the manifest file. When set, the attribute +looks like this:

      <manifest>
         ...
      @@ -24,13 +212,29 @@ page.title=SDK Release Notes
       </manifest>
       
      -

      By setting android:minSdkVersion in this way, you ensure that users will only be able to install your application if their devices are running the Android 1.1 platform. In turn, this ensures that your application will function properly on their devices, especially if it uses APIs introduced in Android 1.1.

      +

      By setting android:minSdkVersion in this way, you ensure that +users will only be able to install your application if their devices are running +the Android 1.1 platform. In turn, this ensures that your application will +function properly on their devices, especially if it uses APIs introduced in +Android 1.1.

      -

      If your application uses APIs introduced in Android 1.1 but does not declare <uses-sdk minSdkVersion="2" />, then it will run properly on Android 1.1 devices but not on Android 1.0 devices.

      +

      If your application uses APIs introduced in Android 1.1 but does not declare +<uses-sdk minSdkVersion="2" />, then it will run properly on +Android 1.1 devices but not on Android 1.0 devices.

      -

      If your application does not use any new APIs introduced in Android 1.1, you can indicate Android 1.0 compatibility by removing minSdkVersion or setting the attribute to "1". However, before publishing your application, you must make sure to compile your application against the Android 1.0 system image (available in the Android 1.0 SDK), to ensure that it builds and functions properly for Android 1.0 devices. You should test the application against system images corresponding to the API Levels that the application is designed to be compatible with.

      +

      If your application does not use any new APIs introduced in Android 1.1, you +can indicate Android 1.0 compatibility by removing minSdkVersion or +setting the attribute to "1". However, before publishing your application, you +must make sure to compile your application against the Android 1.0 system image +(available in the Android 1.0 SDK), to ensure that it builds and functions +properly for Android 1.0 devices. You should test the application against system +images corresponding to the API Levels that the application is designed to be +compatible with.

      -

      If you are sure your application is not using Android 1.1 APIs and has no need to use them, you might find it easier to keep working in the Android 1.0 SDK, rather than migrating to the Android 1.1 SDK and having to do additional testing.

      +

      If you are sure your application is not using Android 1.1 APIs and has no +need to use them, you might find it easier to keep working in the Android 1.0 +SDK, rather than migrating to the Android 1.1 SDK and having to do additional +testing.

      ADT Plugin Compatibility

      @@ -52,7 +256,7 @@ application on the Android 1.1 emulator for the first time.

      If you're installing the Android SDK for the first time, please see the instructions in Installing the SDK. +href="{@docRoot}sdk/1.5_r1/installing.html">Installing the SDK.

      Other Notes

      @@ -136,9 +340,6 @@ are not working in this release.
    - - -

    Android 1.0 SDK, Release 2

    This SDK release includes the Android 1.0 platform and application API. diff --git a/docs/html/sdk/adt_download.jd b/docs/html/sdk/adt_download.jd index 6e9eec4a2b73..6d46297830e8 100644 --- a/docs/html/sdk/adt_download.jd +++ b/docs/html/sdk/adt_download.jd @@ -26,11 +26,18 @@ page. - 0.8.0 - ADT-0.8.0.zip - 23 September 2008 - Android 1.1 SDK, Release 1
    Android 1.0 SDK, Release 1
    - Required for users of Android 1.1 SDK, Release 1 and Android 1.0 SDK, Release 1
    + 0.9.0 + ADT-0.9.0.zip + 27 April 2009 + Android 1.5 SDK + Required for users of Android 1.5 SDK (and later releases)
    + + + 0.8.0 + ADT-0.8.0.zip +
    23 September 2008 + Android 1.1 SDK
    Android 1.0 SDK
    +
    Required for users of Android 1.1 SDK and Android 1.0 SDK
    0.7.1 diff --git a/docs/html/sdk/android-1.5-highlights.jd b/docs/html/sdk/android-1.5-highlights.jd new file mode 100644 index 000000000000..46022d159d22 --- /dev/null +++ b/docs/html/sdk/android-1.5-highlights.jd @@ -0,0 +1,205 @@ +page.title=Android 1.5 Platform Highlights +sdk.version=1.5_r1 +@jd:body + +

    +April 2009 +

    + + +

    The Android 1.5 platform introduces many new features for users and developers. +The list below provides an overview of the changes.

    + + + +

    User interface refinements

    +
      +
    • System-wide: +
        +
      • Refinement of all core UI elements
      • +
      • Animated window transitions (off by default)
      • +
      • Accelerometer-based application rotations
      • +
      +
    • +
    • UI polish for: +
        +
      • In-call experience
      • +
      • Contacts, Call log, and Favorites
      • +
      • SMS & MMS
      • +
      • Browser
      • +
      • Gmail
      • +
      • Calendar
      • +
      • Email
      • +
      • Camera & Gallery
      • +
      • Application management
      • +
      +
    • +
    + +

    Performance improvements

    + +
      +
    • Faster Camera start-up and image capture
    • +
    • Much faster acquisition of GPS location (powered by SUPL AGPS)
    • +
    • Smoother page scrolling in Browser
    • +
    • Speedier GMail conversation list scrolling
    • +
    + +

    New features

    + +
      +
    • On-screen soft keyboard +
        +
      • Works in both portrait and landscape orientation
      • +
      • Support for user installation of 3rd party keyboards
      • +
      • User dictionary for custom words
      • +
      +
    • + +
    • Home screen +
        +
      • Widgets +
          +
        • Bundled home screen widgets include: analog clock, calendar, + music player, picture frame, and search
        • +
      • +
      • Live folders
      • +
      +
    • + +
    • Camera & Gallery +
        +
      • Video recording
      • +
      • Video playback (MPEG-4 & 3GP formats)
      • +
      +
    • + +
    • Bluetooth  +
        +
      • Stereo Bluetooth support (A2DP and AVCRP profiles)
      • +
      • Auto-pairing
      • +
      • Improved handsfree experience
      • +
      +
    • + +
    • Browser +
        +
      • Updated with latest Webkit browser & Squirrelfish Javascript engines
      • +
      • Copy 'n paste in browser
      • +
      • Search within a page
      • +
      • User-selectable text-encoding
      • +
      • UI changes include: +
          +
        • Unified Go and Search box
        • +
        • Tabbed bookmarks/history/most-visited screen
        • +
        +
      • +
      +
    • + +
    • Contacts +
        +
      • Shows user picture for Favorites
      • +
      • Specific date/time stamp for events in call log
      • +
      • One-touch access to a contact card from call log event
      • +
      +
    • + +
    • System +
        +
      • New Linux kernel (version 2.6.27)
      • +
      • SD card filesystem auto-checking and repair
      • +
      • SIM Application Toolkit 1.0
      • +
      +
    • + +
    • Google applications (not available in the Android 1.5 System Image that is +included in the Android SDK) +
        +
      • View Google Talk friends' status in Contacts, SMS, MMS, GMail, and + Email applications
      • +
      • Batch actions such as archive, delete, and label on Gmail messages
      • +
      • Upload videos to Youtube
      • +
      • Upload photos on Picasa
      • +
      +
    • +
    + +

    New APIs and manifest elements

    + + diff --git a/docs/html/sdk/android-1.5.jd b/docs/html/sdk/android-1.5.jd index fff911e29096..c9ab42e01e9e 100644 --- a/docs/html/sdk/android-1.5.jd +++ b/docs/html/sdk/android-1.5.jd @@ -8,7 +8,250 @@ sys.date=April 2009 API Level: 3

    -

    Please see Download the Android 1.5 Early Look SDK for more information.

    +

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

    + + + +

    Overview

    + +

    The Android 1.5 system delivered in the SDK (as library and system image) is +the development counterpart to the Android 1.5 production system image, +deployable to Android-powered handsets starting in May 2009. The system is fully +compliant and includes no external libraries. This is the first version of the +Android SDK that does not include the Maps external library.

    + +

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

    + +

    Applications can reference a specific API Level value in their +manifest files, to indicate the minimum version of the Android system +required to run the application. To reference a minimum API Level, applications +can add a minSdkVersion attribute in their manifest files. +The value of the attribute is an integer corresponding to an API Level +identifier. Prior to installing an application, the system then checks the value of +minSdkVersion and allows the install only +if the referenced integer is less than or equal to the API Level integer stored +in the system itself.

    + +

    When you migrate your application to the new SDK, you will need to choose +the platform version against which you will compile your application. In +general, you should compile your application against the lowest possible +version of the platform that your application can support. After you determine +the lowest version, you should ensure that your application's manifest file +defines the API Level of the lowest compatible platform version in the +minSdkVersion attribute. + +

    After compiling your application, you should make sure to test it on the +platform specified in the application's minSdkVersion attribute. To +ensure forward-compatibility, you should also run the application on platforms +using a higher API Level than that used by your application. To run your +application against different platform versions in the emulator, you 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.

    + +

    If you build an application using the Android 1.5 library and your +application makes use of any APIs introduced in API Level 3, you must set the +android:minSdkVersion attribute in the application's manifest to +"3".

    + +

    Specifically, you define the android:minSdkVersion +attribute in a <uses-sdk> element as a child of +<manifest> in the manifest file. When set, the +attribute looks like this:

    + +
    <manifest>
    +  ...
    +  <uses-sdk minSdkVersion="3" />
    +  ...
    +</manifest>
    + +

    By setting android:minSdkVersion in this way, you ensure 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 will function properly on their devices. This is especially +important if your application uses APIs or system features +introduced in Android 1.5.

    + +

    If your application uses APIs introduced in Android 1.5 but does not +declare <uses-sdk minSdkVersion="3" />, then it will +run properly on Android 1.5 devices but not on Android 1.0 +devices. In the latter case, the application will crash at runtime when +it tries to use the Android 1.5 APIs.

    + +

    Conversely, if your application does not use any new APIs introduced in +Android 1.5, the application will in most cases function normally on devices +running a later version of the platform. However, if you have published +the application, you are strongly encouraged to install and test your +application on the Android 1.5 system image included in the SDK. This will +ensure a smooth transition for users, as they upgrade their devices to +the new version of the Android platform.

    + +

    Finally, if your application does not use any new APIs introduced since +Android 1.1, you can indicate general Android 1.1 compatibility by +setting the attribute to "2". If your application does not use any +new APIs introduced since Android 1.0, you can remove the attribute or +set it to "1". However, +before publishing your application, you must make sure to compile your +application against the Android library that corresponds to the application's +minSdkVeresion value.

    + +

    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
    • +
    • 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.5 system image are listed below (with +language_country/region locale descriptor).

    + +
    +
      +
    • Chinese, PRC (zh_CN)
    • +
    • Chinese, Taiwan (zh_TW)
    • +
    • Czech (cs_CZ)
    • +
    • 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, New Zealand (en_NZ)
    • +
    • English, Singapore(en_SG)
    • +
    • 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)
  • +
  • Italian, Italy (it_IT)
  • +
  • Italian, Switzerland (it_CH)
  • +
  • Japanese (ja_JP)
  • +
  • Korean (ko_KR)
  • +
  • Polish (pl_PL)
  • +
  • Russian (ru_RU)
  • +
  • Spanish (es_ES)
  • + +
    + +

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

    + + + +

    New Features

    + +

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

    + +

    API Changes

    + +

    Overview

    + +
      +
    • UI framework
    • +
        +
      • Framework for easier background/UI thread interaction
      • +
      • New SlidingDrawer widget
      • +
      • Horizontal ScrollView widget
      • +
      + +
    • Home Screen framework
    • +
        +
      • APIs for creating secure home screen widgets
      • +
      • APIs for populating live folders with custom content
      • +
      + +
    • Media framework
    • +
        +
      • Raw audio recording and playback APIs
      • +
      • Interactive MIDI playback engine
      • +
      • Video recording APIs for developers (3GP format)
      • +
      • Video and photo sharing Intents
      • +
      • Media search Intent
      • +
      +
    • Input Method framework
    • +
        +
      • Text prediction engine
      • +
      • Ability to provide downloadable IMEs to users
      • +
      +
    • Application-defined hardware requirements +

      Applications can now use a new element in their manifest files, +<uses-configuration> to indicate to the Android system what hardware +features they require in order to function properly. For example, an application +might use the element to specify that it requires a physical keyboard or a +particular navigation device, such as a trackball. Prior to installing the +application, the Android system checks the attributes defined for the +<uses-configuration> element and allows the installation to +continue only if the required hardware is present.

    • +
    • Speech recognition framework
    • +
        +
      • Support for using speech recognition libraries via Intent
      • +
      +
    • Misc API additions
    • +
        +
      • LocationManager - Applications can get location change updates via +Intent
      • +
      • WebView - Touch start/end/move/cancel DOM event support
      • +
      • SensorManager - redesigned sensor APIs
      • +
      • GLSurfaceView - convenience framework for creating OpenGL +applications
      • +
      • Broadcast Intent for app update install succeeded - for smoother app +upgrade experience
      • +
      + +
    + +

    API Change Details

    + +

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

    diff --git a/docs/html/sdk/sdk_toc.cs b/docs/html/sdk/sdk_toc.cs index 8c7a0a764fe6..1e5122ffb644 100644 --- a/docs/html/sdk/sdk_toc.cs +++ b/docs/html/sdk/sdk_toc.cs @@ -2,17 +2,17 @@
    • -

      Android 1.5 SDK, r1

      Android SDK, r

      Current SDK Release

    • -

      Android System Images

      +

      System Image Version Notes

      • Android 1.5 Version Notes
      • Android 1.1 Version Notes
      • @@ -29,8 +29,9 @@
      • Previous SDK Releases

      • Date: Tue, 21 Apr 2009 19:09:24 -0700 Subject: AI 147306: re-write the Developing in Other IDEs doc with updated information for 1.5 BUG=1796104 Automated import of CL 147306 --- docs/html/guide/developing/other-ide.jd | 487 ++++++++++++++++++++++++-------- 1 file changed, 364 insertions(+), 123 deletions(-) diff --git a/docs/html/guide/developing/other-ide.jd b/docs/html/guide/developing/other-ide.jd index 7bcb509a4f4e..5db4f8d19b22 100644 --- a/docs/html/guide/developing/other-ide.jd +++ b/docs/html/guide/developing/other-ide.jd @@ -1,167 +1,408 @@ -page.title=In Other IDEs +page.title=Developing In Other IDEs @jd:body + +

        The recommended way to develop an Android application is to use - Eclipse with the Android - Development Tools (ADT) plugin, provided in the SDK. The ADT plugin - provides editing, building,and debugging functionality integrated right into the IDE.

        +Eclipse with the ADT plugin. +The ADT plugin provides editing, building, debugging, and .apk packaging and signing functionality +integrated right into the IDE.

        -

        However, if you'd rather develop your application in another IDE, such as IntelliJ, - or use Eclipse without the ADT plugin, you can do that instead. The SDK - provides the tools you need to set up, build, and debug your application. -

        +

        However, if you'd rather develop your application in another IDE, such as IntelliJ, +or in a basic editor, such as Emacs, you can do that instead. The SDK +includes all the tools you need to set up an Android project, build it, debug it and then +package it for distribution. This document is your guide to using these tools.

        -

        Creating an Android Project

        +

        Essential Tools

        -

        The Android SDK includes activityCreator, a program that generates a number of stub files for your project, as well as a build file. You can use the program to create an Android project for new code or from existing code, such as the sample applications included in the SDK. For Linux and Mac, the SDK provides activitycreator and for Windows, activityCreator.bat, a batch script. Regardless of platform, you can use activitycreator in the same way.

        +

        When developing in IDEs or editors other than Eclipse, you'll require +familiarity with the following Android SDK tools:

        -

        To run activityCreator and create an Android project, follow these steps:

        +
        +
        android
        +
        To create/update Android projects and to create/move/delete AVDs.
        +
        Android Emulator
        +
        To run your Android applications on an emulated Android platform.
        +
        Android Debug Bridge
        +
        To interface with your emulator or connected device (install apps, + shell the device, issue commands, etc.). +
        +
        + +

        In addition to the above tools, included with the SDK, you'll use the following +open source and third-party tools:

        + +
        +
        Ant
        +
        To compile and build your Android project into an installable .apk file.
        +
        Keytool
        +
        To generate a keystore and private key, used to sign your .apk file.
        +
        Jarsigner (or similar signing tool)
        +
        To sign your .apk file with a private key generated by keytool.
        +
        + +

        In the topics that follow, you'll be introduced to each of these tools as necessary. +For more advanced operations, please read the respective documentation for each tool.

        + + +

        Creating an Android Project

        + +

        To create an Android project, you must use the android tool. When you create +a new project with android, it will generate a project directory +with some default application files, stub files, configuration files and a build file.

        -
          -
        1. In the command line, change to the tools/ directory of the SDK and create a new directory for your project files. If you are creating a project from existing code, change to the root folder of your application instead.
        2. -
        3. Run activityCreator. In the command, you must specify a fully-qualified class name as an argument. If you are creating a project for new code, the class represents the name of a stub class that the script will create. If you are creating a project from existing code, you must specify the name of one Activity class in the package. Command options for the script include: +

          Creating a new Project

          + +

          If you're starting a new project, use the android create project +command to generate all the necessary files and folders.

          + +

          To create a new Android project, open a command-line, +navigate to the tools/ directory of your SDK and run:

          +
          +android create project \
          +--target <targetID> \
          +--path /path/to/your/project \
          +--activity <your_activity_name> \
          +--package <your_package_namespace>
          +
          +
            -
          • --out <folder> which sets the output directory. By default, the output directory is the current directory. If you created a new directory for your project files, use this option to point to it.
          • -
          • --ide intellij, which generates IntelliJ IDEA project files in the newly created project
          • +
          • target is the "build target" for your application. It corresponds + 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.
          • +
          • 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 + will be created for you inside + <path_to_your_project>/src/<your_package_namespace_path>/.
          • +
          • package is the package namespace for your project, following the same rules as for + packages in the Java programming language.
          -
        4. -
        -

        Here's an example:

        +

        Here's an example:

        -~/android_linux_sdk/tools $ ./activityCreator.py --out myproject your.package.name.ActivityName
        -package: your.package.name
        -out_dir: myproject
        -activity_name: ActivityName
        -~/android_linux_sdk/tools $ 
        +android create project \ +--target 1 \ +--path ./myProject \ +--activity MyActivity \ +--package com.example.myproject + -

        The activityCreator script generates the following files and directories (but will not overwrite existing ones):

        +

        The tool generates the following files and directories:

          -
        • AndroidManifest.xml The application manifest file, synced to the specified Activity class for the project.
        • -
        • build.xml An Ant file that you can use to build/package the application.
        • -
        • src/your/package/name/ActivityName.java The Activity class you specified on input.
        • -
        • your_activity.iml, your_activity.ipr, - your_activity.iws    [only - with the -ide intelliJ flag] intelliJ project - files.
        • -
        • res/   A directory to hold resources.
        • -
        • src/    The source directory. -
        • bin/    The output directory for the build script.
        • +
        • AndroidManifest.xml - The application manifest file, + synced to the specified Activity class for the project.
        • +
        • build.xml - Build file for Ant.
        • +
        • 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.
        • +
        • src/your/package/namespace/ActivityName.java - The Activity class + you specified during project creation.
        • +
        • bin/ - Output directory for the build script.
        • +
        • gen/ - Holds Ant-generated files, such as R.java.
        • +
        • libs/ - Holds private libraries.
        • +
        • res/ - Holds project resources.
        • +
        • src/ - Holds source code.
        • +
        • tests/ - Holds a duplicate of all-of-the-above, for testing purposes.
        -

        You can now move your folder wherever you want for development, but keep in mind - that you'll have to use the adb program in the tools/ folder to - send files to the emulator, so you'll need access between your solution and - the tools/ folder.

        - -

        Also, you should refrain from moving the - location of the SDK directory, since this will break the build scripts (they - will need to be manually updated to reflect the new SDK location before they will - work again).

        - -

        Building the Application with Ant

        -

        Use the Ant build.xml file generated by - activityCreator to build your application.

        -
          -
        1. If you don't have it, you can obtain Ant from the - Apache Ant home page. Install it and make - sure it is on your executable path.
        2. -
        3. Before calling Ant, you need to declare the JAVA_HOME environment variable to specify the path to where the JDK is installed. -

          Note: When installing JDK on Windows, the default is to install in the "Program Files" directory. This location will cause ant to fail, because of the space. To fix the problem, you can specify the JAVA_HOME variable like this: set JAVA_HOME=c:\Prora~1\Java\. The easiest solution, however, is to install JDK in a non-space directory, for example: c:\java\jdk1.6.0_02.

          -
        4. - - -
        5. If you have not done so already, follow the instructions for Creating a - New Project above to set up the project.
        6. -
        7. You can now run the Ant build file by simply typing ant in the same folder - as the build.xml file for your project. Each time you change - a source file or resource, you should run ant again and it will package up the - latest version of the application for you to deploy.
        8. -
        +

        Once you've created your project, you're ready to begin development. +You can move your project folder wherever you want for development, but keep in mind +that you must use the Android Debug Bridge +(adb) — located in the SDK tools/ directory — to send your application +to the emulator (discussed later). So you need access between your project solution and +the tools/ folder.

        + +

        Note: 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.)

        + -

        Setting Up Application Signing

        +

        Updating a project

        -

        As you begin developing Android applications, you should understand that all +

        If you're upgrading a project from an older version of the Android SDK or want to create +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 +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/
        +
        + +
          +
        • target is the "build target" for your application. It corresponds 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.
        • +
        • path is the location of your project directory.
        • +
        + +

        Here's an example:

        +
        +android update project --target 2 --path ./myProject
        +
        + + +

        Preparing to Sign Your Application

        + +

        As you begin developing Android applications, understand that all Android applications must be digitally signed before the system will install -them on the emulator or an actual device.

        +them on an emulator or device. There are two ways to do this: +with a debug key (for immediate testing on an emulator or development device) +or with a private key (for application distribution).

        -

        The Android build tools help you get started quickly by signing your .apk -files with a debug key, prior to installing them on the emulator. This means +

        The Android build tools help you get started by automatically signing your .apk +files with a debug key at build time. This means that you can compile your application and install it on the emulator without having to generate your own private key. However, please note that if you intend -to publish your application, you must sign the application with your +to publish your application, you must sign the application with your own private key, rather than the debug key generated by the SDK tools.

        -

        To sign your applications, the ADT plugin requires the Keytool utility -included in the JDK. To set up your development environment for -signing, all you need to do is make sure that Keytool is available on your -machine that the build tools know how to find it.

        - -

        In most cases, you can tell the SDK build tools how to find Keytool by making -sure that -your JAVA_HOME environment variable is set and that it references a suitable -JDK. Alternatively, -you can add the JDK version of Keytool to your PATH variable.

        - -

        If you are developing on a version of Linux that originally came with Gnu -Compiler for Java, -make sure that the system is using the JDK version of Keytool, rather than the -gcj version. -If keytool is already in your PATH, it might be pointing to a symlink at -/usr/bin/keytool. -In this case, check the symlink target to make sure that it points to the -keytool in the JDK.

        - -

        In all cases, please read and understand Signing Your -Applications, which provides an overview of application signing on Android -and what it means to you as an Android application developer.

        - - -

        Running an Android Application

        -

        To run a compiled - application, you will upload the .apk file to the /data/app/ directory - in the emulator using the adb tool as described here:

        +

        Please read Signing Your +Applications, which provides a thorough guide to application signing on Android +and what it means to you as an Android application developer.

        + + + +

        Building Your Application

        + +

        There are two ways to build your application: one for testing/debugging your application +— debug mode — and one for building your final package for release — +release mode. As described in the previous +section, your application must be signed before it can be installed on an emulator +or device.

        + +

        Whether you're building in debug mode or release mode, you +need to use the Ant tool to compile and build your project. This will create the .apk file +that is installed onto the emulator or device. When you build in debug mode, the .apk +file is automatically signed by the SDK tools with a debug key, so it's instantly ready for installation +(but only onto an emulator or attached development device). +When you build in release mode, the .apk file is unsigned, so you must manually +sign it with your own private key, using Keytool and Jarsigner.

        + +

        It's important that you read and understand +Signing Your Applications, particularly +once you're ready to release your application and share it with end-users. That document describes +the procedure for generating a private key and then using it to sign your .apk file. +If you're just getting started, however, +you can quickly run your applications on an emulator or your own development device by building in +debug mode.

        + +

        If you don't have Ant, you can obtain it from the +Apache Ant home page. Install it and make +sure it is in your executable PATH. Before calling Ant, you need to declare the JAVA_HOME +environment variable to specify the path to where the JDK is installed.

        + +

        Note: When installing JDK on Windows, the default is to install +in the "Program Files" directory. This location will cause ant to fail, because of +the space. To fix the problem, you can specify the JAVA_HOME variable like this: +set JAVA_HOME=c:\Prora~1\Java\. The easiest solution, however, is to +install JDK in a non-space directory, for example: c:\java\jdk1.6.0_02.

        + + +

        Building 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 +application in release mode. Debug mode simply allows you to run your application without +manually signing the application.

        + +

        To build in debug mode:

        + +
          +
        1. Open a command-line and navigate to the root of your project directory.
        2. +
        3. 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.

          +
        4. +
        + +

        Each time you change a source file or resource, you must run Ant +again in order to package up the latest version of the application.

        + +

        To install and run your application on an emulator, see the following section +about Running Your Application.

        + + +

        Building in release mode

        + +

        When you're ready to release and distribute your application to end-users, you must build +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:

        + +
          +
        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
          +

          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.

          +
        4. +
        + +

        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, +read Signing Your Applications.

        + +

        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. +You can also try installing it onto a device from a web server. +Simply upload the signed APK to a web site, then load the .apk URL in your Android web browser to +download the application and begin installation. +(On your device, be sure you have enabled Settings > Applications > Unknown sources.)

        + + +

        Running Your Application

        + +

        Unless you'll be running your application on device hardware, +you need to launch an emulator upon which you will install your application. +An instance of the Android emulator runs a specific Android platform with specific device configuration +settings. The platform and configuration is defined with an Android Virtual Device (AVD). +So before you can launch your emulator, you must define an AVD.

        + +

        If you'll be running your application on device hardware, please read about +Developing On a Device instead.

        +
          -
        1. Start the emulator (run <your_sdk_dir>/tools/emulator from the command line)
        2. -
        3. On the emulator, navigate to the home screen (it is best not to have that - application running when you reinstall it on the emulator; press the Home key - to navigate away from that application).
        4. -
        5. Run adb install myproject/bin/<appname>.apk to upload - the executable. So, for example, to install the Lunar Lander sample, navigate - in the command line to <your_sdk_dir>/sample/LunarLander and type ../../tools/adb install bin/LunarLander.apk
        6. -
        7. In the emulator, open the list of available applications, and scroll down to - select and start your application.
        8. +
        9. Create an AVD +
            +
          1. Open a command-line and navigate to your SDK package's + tools/ directory.
          2. +
          3. First, you need to select a "deployment target." To view available targets, execute: +
            android list targets
            +

            This will output a list of available Android targets, such as:

            +
            +id:1
            +    Name: Android 1.1
            +    Type: platform
            +    API level: 2
            +    Skins: HVGA (default), HVGA-L, HVGA-P, QVGA-L, QVGA-P
            +id:2
            +    Name: Android 1.5
            +    Type: platform
            +    API level: 3
            +    Skins: HVGA (default), HVGA-L, HVGA-P, QVGA-L, QVGA-P
            +
            +

            Find the target that matches the Android platform upon which you'd like + to run your application. Note the integer value of the id — + you'll use this in the next step.

            +
          4. +
          5. Create a new AVD using your selected deployment target: +
            android create avd --name <your_avd_name> --target <targetID>
            +
          6. 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, + press return to use all default values ("no" is the default).
          7. + +
          +
        10. + +
        11. Launch an emulator
        12. +

          From your SDK's tools/ directory, launch an emulator + using an existing AVD (created above): +

          emulator -avd <your_avd_name>
          +

          An instance of the emulator will now launch, running the target and configuration + defined by your AVD.

          + + +
        13. Install your application +

          From your SDK's tools/ directory, install the .apk on the emulator: +

          adb install /path/to/your/application.apk
          +

          If there is more than one emulator running, you must specify the emulator upon which to install + the application, by its serial number, with the -s option. For example:

          +
          adb -s emulator-5554 install /my/project/path/myapp.apk
          +
        14. +
        15. Open your application +

          In the emulator, open the list of available applications to find + and open your application.

          +
        -

        Note: When you install an Activity for the - first time, you might have to restart the emulator before it shows up in the - application launcher, or other applications can call it. This is because - the package manager usually only examines manifests completely on emulator - startup.

        -

        Attaching a Debugger to Your Application

        +

        If you don't see your application on the emulator. Try restarting the emulator +(with the same AVD). Sometimes when you install an Activity for the +first time, it won't show up in the application launcher or be accessible by other +applications. This is because the package manager usually examines manifests +completely only on emulator startup.

        + +

        Tip: If you have only one emulator running, +you can build your application and install it on the emulator in one simple step. +Navigate to the root of your project directory and use Ant to compile the project +with install mode: +ant install. This will build your application, sign it with the debug key, +and install it on the currently running emulator. +If there is more than one emulator currently running +when using the install command, it will fail — it can't select between the +multiple emulators.

        + +

        For more information on the tools used above, please see the following documents:

        + + + +

        Attaching a Debugger to Your Application

        +

        This section describes how to display debug information on the screen (such as CPU usage), as well as how to hook up your IDE to debug running applications on the emulator.

        Attaching a debugger is automated using the Eclipse plugin, but you can configure other IDEs to listen on a debugging port to receive debugging - information.

        + information:

          -
        1. Start the Dalvik Debug Monitor Server (DDMS) - tool , which +
        2. Start the Dalvik Debug Monitor + Server (DDMS) tool, which acts as a port forwarding service between your IDE and the emulator.
        3. Set optional debugging configurations on - your emulator, such as blocking application startup for an activity + your emulator, such as blocking application startup for an Activity until a debugger is attached. Note that many of these debugging options can be used without DDMS, such as displaying CPU usage or screen refresh rate on the emulator.
        4. -
        5. Configure your IDE to attach to port 8700 for debugging. We - include information on - how to set up Eclipse to debug your project.
        6. - +
        7. Configure your IDE to attach to port 8700 for debugging. Read + about + Configuring Your IDE to Attach to the Debugging Port.
        -- cgit v1.2.3-59-g8ed1b From 9d8dd806d90bd7bdcc0272f2312f334914921e0b Mon Sep 17 00:00:00 2001 From: Scott Main <> Date: Tue, 21 Apr 2009 19:17:59 -0700 Subject: AI 147311: update eclipse docs to include necessary AVD procedures and discuss relevant target facilities BUG=1796104 Automated import of CL 147311 --- docs/html/guide/developing/eclipse-adt.jd | 500 +++++++++++++++++++++--------- 1 file changed, 350 insertions(+), 150 deletions(-) diff --git a/docs/html/guide/developing/eclipse-adt.jd b/docs/html/guide/developing/eclipse-adt.jd index 8c482ee40ce5..4f332b13e8cb 100644 --- a/docs/html/guide/developing/eclipse-adt.jd +++ b/docs/html/guide/developing/eclipse-adt.jd @@ -1,193 +1,393 @@ -page.title=In Eclipse, with ADT +page.title=Developing In Eclipse, with ADT @jd:body -

        The Android Development Tools (ADT) plugin for Eclipse adds powerful extensions to the Eclipse integrated development environment. It allows you to create and debug Android applications easier and faster. If you use Eclipse, the ADT plugin gives you an incredible boost in developing Android applications:

        + + + +

        The Android Development Tools (ADT) plugin for Eclipse adds powerful extensions to the Eclipse +integrated development environment. It allows you to create and debug Android applications easier +and faster. If you use Eclipse, the ADT plugin gives you an incredible boost in developing Android +applications:

          -
        • It gives you access to other Android development tools from inside the Eclipse IDE. For example, ADT lets you access the many capabilities of the DDMS tool: take screenshots, manage port-forwarding, set breakpoints, and view thread and process informationd irectly from Eclipse.
        • -
        • It provides a New Project Wizard, which helps you quickly create and set up all of the basic files you'll need for a new Android application.
        • +
        • It gives you access to other Android development tools from inside the Eclipse IDE. For +example, ADT lets you access the many capabilities of the DDMS tool: take screenshots, manage +port-forwarding, set breakpoints, and view thread and process informationd irectly from Eclipse.
        • +
        • It provides a New Project Wizard, which helps you quickly create and set up all of the +basic files you'll need for a new Android application.
        • It automates and simplifies the process of building your Android application.
        • -
        • It provides an Android code editor that helps you write valid XML for your Android manifest and resource files.
        • +
        • It provides an Android code editor that helps you write valid XML for your Android +manifest and resource files.
        • +
        • It will even export your project into a signed APK, which can be distributed to users.
        -

        To begin developing Android applications in the Eclipse IDE with ADT, you first need to download the Eclipse IDE and then download and install the ADT plugin. To do so, follow the steps given in Installing the ADT Plugin, in the installation documentation included with your SDK package.

        - -

        Once you've installed the ADT plugin, you begin by creating an Android -project and then set up a launch configuration. After that, you can write, run, and debug -your application.

        +

        To begin developing Android applications in the Eclipse IDE with ADT, you first need to +download the Eclipse IDE and then download and install the ADT plugin. To do so, follow the +steps given in Installing +the ADT Plugin.

        -

        The sections below provide instructions assuming that you have installed the ADT plugin -in your Eclipse environment. If you haven't installed the ADT plugin, you should do that -before using the instructions below.

        +

        If you are already developing applications using a version of ADT earlier than 0.9, make +sure to upgrade to the latest version before continuing. See the guide to +Update Your Eclipse ADT Plugin.

        - +

        Note: This guide assumes you are using the latest version of +the ADT plugin (0.9). While most of the information covered also applies to previous +versions, if you are using an older version, you may want to consult this document from +the set of documentation included in your SDK package (instead of the online version).

        -

        Creating an Android Project

        -

        The ADT plugin provides a New Project Wizard that you can use to quickly create an -Eclipse project for new or existing code. To create the project, follow these steps:

        +

        Creating an Android Project

        - +

        The ADT plugin provides a New Project Wizard that you can use to quickly create a new +Android project (or a project from existing code). To create a new project:

          -
        1. Select File > New > Project
        2. -
        3. Select Android > Android Project, and press Next
        4. -
        5. Select the contents for the project: -
            -
          • Select Create new project in workspace to start a project for new code. -

            Enter the project name, the base package name, the name of a single Activity class to create as a stub .java file, and a name to use for your application.

          • -
          • Select Create project from existing source to start a project from existing code. Use this option if you want to build and run any of the sample applications included with the SDK. The sample applications are located in the samples/ directory in the SDK. -

            Browse to the directory containing the existing source code and click OK. If the directory contains a valid Android manifest file, the ADT plugin fills in the package, activity, and application names for you.

            -
          • -
          -
        6. -
        7. Press Finish.
        8. -
        - -

        The ADT plugin creates the these folders and - files for you as appropriate for the type of project:

        - +
      • Select File > New > Project.
      • +
      • Select Android > Android Project, and click + Next.
      • +
      • Select the contents for the project: +
          +
        • Enter a Project Name. This will be the name of the folder where your + project is created.
        • +
        • Under Contents, select Create new project in workspace. + Select your project workspace location.
        • +
        • Under Target, select an Android target to be used as the project's Build Target. + The Build Target + specifies which Android platform you'd like your application built against. +

          Unless you know that you'll be using new APIs introduced in the latest SDK, you should + select a target with the lowest platform version possible, such as Android 1.1.

          +

          Note: You can change your the Build Target for your + project at any time: Right-click the project in the Package Explorer, select + Properties, select Android and then check + the desired Project Target.

          +
        • +
        • Under Properties, fill in all necessary fields.
            -
          • src/   A - folder that includes your stub .java Activity file.
          • -
          • res/   A folder for your - resources.
          • -
          • AndroidManifest.xml   The - manifest for your project.
          • +
          • Enter an Application name. This is the human-readable title for your + application — the name that will appear on the Android device.
          • +
          • Enter a Package name. This is the package namespace (following the same rules + as for packages in the Java programming language) where all your source code + will reside.
          • +
          • Select Create Activity (optional, of course, but common) and enter a name + for your main Activity class.
          • +
          • Enter a Min SDK Version. This is an integer that indicates + the minimum API Level required to properly run your application. + Entering this here automatically sets the minSdkVersion attribute in the + <uses-sdk> + of your Android Manifest file. If you're unsure of the appropriate API Level to use, + copy the API Level listed for the Build Target you selected in the Target tab.
          - +
        • +
        +
      • +
      • Click Finish.
      • - +

        Tip: +You can also start the New Project Wizard from the New icon in the toolbar.

        + +

        Once you complete the New Project Wizard, ADT creates the following +folders and files in your new project:

        +
        +
        src/
        +
        Includes your stub Activity Java file. All other Java files for your application + go here.
        +
        <Android Version>/ (e.g., Android 1.1/)
        +
        Includes the android.jar file that your application will build against. + This is determined by the build target that you have chosen in the New Project + Wizard.
        +
        gen/
        +
        This contains the Java files generated by ADT, such as your R.java file + and interfaces created from AIDL files.
        +
        assets/
        +
        This is empty. You can use it to store raw asset files. See + Resources and Assets.
        +
        res/
        +
        A folder for your application resources, such as drawable files, layout files, string + values, etc. See + Resources and Assets.
        +
        AndroidManifest.xml
        +
        The Android Manifest for your project. See + The AndroidManifest.xml + File.
        +
        default.properties
        +
        This file contains project settings, such as the build target. This files is integral + to the project, as such, it should be maintained in a Source Revision Control system. + It should never be edited manually — to edit project properties, + right-click the project folder and select "Properties".
        +
        + + +

        Running Your Application

        + +

        Wait! Before you can run your application on the Android Emulator, +you must create an Android Virtual Device (AVD). +An AVD is a configuration that specifies the Android platform to be used on the emulator. +You can read more about AVDs in the Developing +Overview, but if you just want to get started, follow the simple guide below to create +an AVD.

        + +

        If you will be running your applications only on actual device hardware, you do not +need an AVD — see +Developing On a Device for information +on running your applicaiton.

        + +

        Creating an AVD

        + +

        To avoid some explanation that's beyond the scope of this document, here's the +basic procedure to create an AVD:

        -

        Creating a Launch Configuration

        +
          +
        1. Open a command-line (e.g.,"Command Prompt" application on Windows, or "Terminal" + on Mac/Linux) and navigate to your SDK package's + tools/ directory.
        2. +
        3. First, you need to select a Deployment Target. To view available targets, execute: +
          android list targets
          +

          This will output a list of available Android targets, such as:

          +
          +id:1
          +    Name: Android 1.1
          +    Type: platform
          +    API level: 2
          +    Skins: HVGA (default), HVGA-L, HVGA-P, QVGA-L, QVGA-P
          +id:2
          +    Name: Android 1.5
          +    Type: platform
          +    API level: 3
          +    Skins: HVGA (default), HVGA-L, HVGA-P, QVGA-L, QVGA-P
          +
          +

          Find the target that matches the Android platform upon which you'd like + to run your application. Note the integer value of the id — + you'll use this in the next step.

          +
        4. +
        5. Create a new AVD using your selected Deployment Target. Execute: +
          android create avd --name <your_avd_name> --target <targetID>
          +
        6. 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, + press return to use all default values ("no" is the default).
        7. + +
        -

        Before you can run and debug your application in Eclipse, you must create a launch configuration for it. A launch configuration specifies the project to launch, the Activity to start, the emulator options to use, and so on.

        +

        That's it; your AVD is ready. In the next section, you'll see how the AVD is used +when launching your application on an emulator.

        -

        To create a launch configuration for the application, follow these steps as appropriate for your Eclipse version:

        +

        To learn more about creating and managing AVDs, please read the +Developing Overview +and android Tool documentation.

        -
          -
        1. Open the launch configuration manager. -
            -
          • In Eclipse 3.3 (Europa), select Run > - Open Run Dialog... or Run > - Open Debug Dialog... as appropriate. -
          • -
          • In Eclipse 3.4 (Ganymede), select Run > - Run Configurations... or Run > - Debug Configurations... as appropriate. -
          • -
          -
        2. -
        3. In the project type list on the left, locate the Android Application item and double-click it (or right-click > New), to create a new launch configuration.
        4. -
        5. Enter a name for your configuration.
        6. -
        7. On the Android tab, browse for the project and Activity to start.
        8. -
        9. On the Target tab, set the desired screen and network properties, as well as any other emulator startup options.
        10. -
        11. You can set additional options on the Common tab as desired.
        12. -
        13. Press Apply to save the launch configuration, or press Run or Debug (as appropriate).
        14. +

          Running your application

          -
        +

        Note: Before you can run your application, be sure that +you have created an AVD with a target that satisfies your application's Build Target. +If an AVD cannot be found that meets the requirements of your Build Target, you will see +a console error telling you so and the launch will be aborted.

        +

        To run (or debug) your application, select Run > Run (or +Run > Debug) from the Eclipse main menu. The ADT plugin +will automatically create a default launch configuration for the project.

        -

        Setting Up Application Signing

        +

        When you choose to run or debug your application, Eclipse will perform the following:

        -

        As you begin developing Android applications, you should understand that all -Android applications must be digitally signed before the system will install -them on the emulator or an actual device.

        +
          +
        1. Compile the project (if there have been changes since the last build).
        2. +
        3. Create a default launch configuration (if one does not already exist for the project).
        4. +
        5. Install and start the application on an emulator or device (based on the Deployment Target + defined by the run configuration). +

          By default, Android application run configurations use an "automatic target" mode for + selecting a device target. For information on how automatic target mode selects a + deployment target, see Automatic and manual + target modes below.

          +
        6. +
        -

        The ADT plugin helps you get started quickly by signing your .apk files with -a debug key, prior to installing them on the emulator. This means that you can -compile your application and install it on the emulator without having to -generate your own private key. However, please note that if you intend to -publish your application, you must sign the application with your own -private key, rather than the debug key generated by the SDK tools.

        +

        If debugging, the application will start in the "Waiting For Debugger" mode. Once the +debugger is attached, Eclipse will open the Debug perspective.

        + +

        To set or change the launch configuration used for your project, use the launch configuration manager. +See Creating a Launch Configuration for information.

        -

        To sign your applications, the ADT plugin requires the Keytool utility -included in the JDK. To set up your development environment for -signing, you need to make sure that Keytool is available on your -machine that the ADT plugin knows how to find it.

        -

        In most cases, you can tell the SDK build tools how to find Keytool by making -sure that your JAVA_HOME environment variable is set and that it references a -suitable JDK. Alternatively, you can add the JDK version of Keytool to your -PATH variable.

        +

        Creating a Run Configuration

        -

        If you are developing on a version of Linux that originally came with Gnu -Compiler for Java, make sure that the system is using the JDK version of -Keytool, rather than the gcj version. If keytool is already in your PATH, it -might be pointing to a symlink at /usr/bin/keytool. In this case, check the -symlink target to make sure that it points to the keytool in the JDK.

        +

        The run configuration specifies the project to run, the Activity +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 +customize the launch configuration or even create a new.

        -

        In all cases, please read and understand Signing Your -Applications, which provides an overview of application signing on Android -and what it means to you as an Android application developer.

        +

        To create or modify a launch configuration, follow these steps as appropriate +for your Eclipse version:

        +
          +
        1. Open the run configuration manager. +
            +
          • In Eclipse 3.3 (Europa), select Run > + Open Run Dialog (or Open Debug Dialog) +
          • +
          • In Eclipse 3.4 (Ganymede), select Run > + Run Configurations (or + Debug Configurations) +
          • +
          +
        2. +
        3. Expand the Android Application item and create a new + configuration or open an existing one. +
            +
          • To create a new configuration: +
              +
            1. Select Android Application and click the New launch configuration + icon above the list (or, right-click Android Application and click + New).
            2. +
            3. Enter a Name for your configuration.
            4. +
            5. In the Android tab, browse and select the project you'd like to run with the + configuration.
            6. +
            +
          • To open an existing configuration, select the configuration name from the list + nested below Android Application.
          • +
          +
        4. +
        5. Adjust your desired launch configuration settings. +

          In the Target tab, consider whether you'd like to use Manual or Automatic mode + when selecting an AVD to run your application. + See the following section on Automatic and manual target + modes).

          +
        6. +
        - -

        Running and Debugging an Application

        +

        Automatic and manual target modes

        -

        Once you've set up the project and launch configuration for your application, you can run or debug it as described below.

        +

        By default, a run configuration uses the automatic target mode in order to select +an AVD. In this mode, ADT will select an AVD for the application in the following manner:

        -From the Eclipse main menu, select Run > Run or Run > Debug as appropriate, to run or debug the active launch configuration. +
          +
        1. If there's a device or emulator already running and its AVD configuration + meets the requirements of the application's build target, the application is installed + and run upon it.
        2. +
        3. If there's more than one device or emulator running, each of which meets the requirements + of the build target, a "device chooser" is shown to let you select which device to use.
        4. +
        5. If there are no devices or emulators running that meet the requirements of the build target, + ADT looks at the available AVDs. If one meets the requirements of the build target, + the AVD is used to launch a new emulator, upon which the application is installed and run.
        6. +
        7. If all else fails, the application will not be run and you will see a console error warning + you that there is no existing AVD that meets the build target requirements.
        8. +
        -

        Note that the active launch configuration is the one most recently selected in the Run configuration manager. It does not necessarily correspond to the application that is selected in the Eclipse Navigation pane (if any).

        +

        However, if a "preferred AVD" is selected in the run configuration, then the application +will always be deployed to that AVD. If it's not already running, then a new emulator +will be launched.

        -

        To set or change the active launch configuration, use the launch configuration manager. See Creating a Launch Configuration for information about how to access the launch configuration manager..

        +

        If your run configuration uses manual mode, then the "device chooser" +is presented every time that your application is run, so that you can select which AVD to use.

        -

        Running or debugging the application triggers these actions:

        -
        • Starts the emulator, if it is not already running.
        • -
        • Compiles the project, if there have been changes since the last build, and installs the application on the emulator.
        • -
        • Run starts the application.
        • -
        • Debug starts the application in "Wait for debugger" mode, then opens the Debug perspective and attaches the Eclipse Java debugger to the application.
        • -
        +

        Signing your Applications

        +

        As you begin developing Android applications, understand that all +Android applications must be digitally signed before the system will install +them on an emulator or an actual device. There are two ways to do this: +with a debug key (for immediate testing on an emulator or development device) +or with a private key (for application distribution).

        -

        Eclipse Tips

        -

        Executing arbitrary Java expressions in Eclipse

        -

        You can execute arbitrary code when paused at a breakpoint in Eclipse. For example, - when in a function with a String argument called "zip", you can get - information about packages and call class methods. You can also invoke arbitrary - static methods: for example, entering android.os.Debug.startMethodTracing() will - start dmTrace.

        -

        Open a code execution window, select Window>Show - View>Display from the main menu to open the - Display window, a simple text editor. Type your expression, highlight the - text, and click the 'J' icon (or CTRL + SHIFT + D) to run your - code. The code runs in the context of the selected thread, which must be - stopped at a breakpoint or single-step point. (If you suspend the thread - manually, you have to single-step once; this doesn't work if the thread is - in Object.wait().)

        -

        If you are currently paused on a breakpoint, you can simply highlight and execute - a piece of source code by pressing CTRL + SHIFT + D.

        -

        You can highlight a block of text within the same scope by pressing ALT +SHIFT - + UP ARROW to select larger and larger enclosing blocks, or DOWN ARROW to select - smaller blocks.

        -

        Here are a few sample inputs and responses in Eclipse using the Display window.

        - - - - - - - - - - - - - - - - - -
        InputResponse
        zip(java.lang.String) /work/device/out/linux-x86-debug/android/app/android_sdk.zip
        zip.endsWith(".zip")(boolean) true
        zip.endsWith(".jar")(boolean) false
        -

        You can also execute arbitrary code when not debugging by using a scrapbook page. - Search the Eclipse documentation for "scrapbook".

        - -

        Running DDMS Manually

        - -

        Although the recommended way to debug is to use the ADT plugin, you can manually run DDMS and configure Eclipse to debug on port 8700. (Note: Be sure that you have first started DDMS).

        +

        The ADT plugin helps you get started quickly by signing your .apk files with +a debug key, prior to installing them on an emulator or development device. This means that you can +quickly run your application from Eclipse without having to +generate your own private key. No specific action on your part is needed, +provided ADT has access to Keytool.However, please note that if you intend +to publish your application, you must sign the application with your +own private key, rather than the debug key generated by the SDK tools.

        + +

        Please read Signing Your +Applications, which provides a thorough guide to application signing on Android +and what it means to you as an Android application developer. The document also includes +a guide to exporting and signing your application with the ADT's Export Wizard.

        + + +

        Eclipse Tips

        + +

        Executing arbitrary Java expressions in Eclipse

        + +

        You can execute arbitrary code when paused at a breakpoint in Eclipse. For example, + when in a function with a String argument called "zip", you can get + information about packages and call class methods. You can also invoke arbitrary + static methods: for example, entering android.os.Debug.startMethodTracing() will + start dmTrace.

        +

        Open a code execution window, select Window>Show + View>Display from the main menu to open the + Display window, a simple text editor. Type your expression, highlight the + text, and click the 'J' icon (or CTRL + SHIFT + D) to run your + code. The code runs in the context of the selected thread, which must be + stopped at a breakpoint or single-step point. (If you suspend the thread + manually, you have to single-step once; this doesn't work if the thread is + in Object.wait().)

        +

        If you are currently paused on a breakpoint, you can simply highlight and execute + a piece of source code by pressing CTRL + SHIFT + D.

        +

        You can highlight a block of text within the same scope by pressing ALT +SHIFT + + UP ARROW to select larger and larger enclosing blocks, or DOWN ARROW to select + smaller blocks.

        +

        Here are a few sample inputs and responses in Eclipse using the Display window.

        + + + + + + + + + + + + + + + + + + +
        InputResponse
        zip(java.lang.String) + /work/device/out/linux-x86-debug/android/app/android_sdk.zip
        zip.endsWith(".zip")(boolean) true
        zip.endsWith(".jar")(boolean) false
        +

        You can also execute arbitrary code when not debugging by using a scrapbook page. + Search the Eclipse documentation for "scrapbook".

        + + +

        Running DDMS Manually

        + +

        Although the recommended way to debug is to use the ADT plugin, you can manually run +DDMS and configure Eclipse to debug on port 8700. (Note: Be sure that you +have first started DDMS).

        + + + -- cgit v1.2.3-59-g8ed1b From 2b52aa0b68769c6d64ead210208969515c7a8af8 Mon Sep 17 00:00:00 2001 From: Scott Main <> Date: Tue, 21 Apr 2009 19:22:40 -0700 Subject: AI 147314: change carousel SDK to 1.5; revise Google IO info BUG=1800649 Automated import of CL 147314 --- docs/html/index.jd | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/html/index.jd b/docs/html/index.jd index bd681e2c6d97..aea229923ae1 100644 --- a/docs/html/index.jd +++ b/docs/html/index.jd @@ -12,7 +12,7 @@ home=true Google I/O Developer Conference 2009
        -

        Google I/O is a two-day developer event that will take place May 27-28 at Moscone Center, San Francisco.

        +

        Google I/O is a two-day developer event that will take place May 27-28 at Moscone Center, San Francisco. The agenda includes a number of great sessions on Android topics by team engineers and other developers.

        Learn more »

    @@ -116,10 +116,10 @@ home=true 'sdk': { 'layout':"imgLeft", 'icon':"sdk-small.png", - 'name':"SDK 1.1 r1", + 'name':"SDK 1.5 r1", 'img':"sdk-large.png", - 'title':"Android 1.1 SDK r1", - 'desc': "

    A new Android SDK is available for download. The new SDK includes minor API changes, new UI localizations, bug fixes and some new application features.

    Download Android 1.1 SDK r1

    " + 'title':"Android 1.5 SDK r1", + 'desc': "

    The final version of the 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

    " }, 'mapskey': { -- cgit v1.2.3-59-g8ed1b From 7774462ac4fcb0423101655a204fee6698219e4a Mon Sep 17 00:00:00 2001 From: Scott Main <> Date: Tue, 21 Apr 2009 19:44:01 -0700 Subject: AI 147325: update the installing and upgrading docs for cupcake BUG=1793249 Automated import of CL 147325 --- docs/html/sdk/1.5_r1/installing.jd | 324 ++++++++++++++++++++++++++++- docs/html/sdk/1.5_r1/upgrading.jd | 414 ++++++++++++++++++++++++++----------- 2 files changed, 618 insertions(+), 120 deletions(-) diff --git a/docs/html/sdk/1.5_r1/installing.jd b/docs/html/sdk/1.5_r1/installing.jd index a1f7cffb0576..bd366ff1add9 100644 --- a/docs/html/sdk/1.5_r1/installing.jd +++ b/docs/html/sdk/1.5_r1/installing.jd @@ -5,6 +5,328 @@ sdk.date=April 2009 page.title=Installing the Android SDK @jd:body -

    See the Download page for more information.

    + +

    This page describes how to install the Android SDK and set up your +development environment. If you haven't downloaded the SDK, you can +do so from the +Download page. Once you've downloaded +the SDK, return here.

    + +

    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 SDK, please read +Upgrading the +SDK, instead. +

    + + +

    Preparing 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.3 or newer). 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.

    + +

    Installing the SDK

    + +

    After downloading the SDK, unpack the .zip archive to a suitable location on your machine. +By default, the SDK files are unpacked into a directory named +android_sdk_<platform>_<release>. +The directory contains a local copy of the documentation (accessible by opening +documentation.html in your browser) and the subdirectories +tools/, add-ons/, platforms/, and others. Inside +each subdirectory of platforms/ you'll find samples/, which includes +code samples that are specific to each version of the platform.

    + +

    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 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).

    + + +

    Installing 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.)

    + +

    Once you have Eclipse 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.3 (Europa)Eclipse 3.4 (Ganymede)
    + +
      +
    1. Start Eclipse, then select Help > Software Updates +> Find and Install....
    2. +
    3. In the dialog that appears, select Search for new features to install +and click Next.
    4. +
    5. Click New Remote Site.
    6. +
    7. In the resulting dialog box, enter a name for the remote site (e.g. "Android Plugin") and + enter the URL: +
      https://dl-ssl.google.com/android/eclipse/
      +

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

      +

      Click OK.

    8. +
    9. You should now see the new site added to the search list (and checked). + Click Finish.
    10. +
    11. In the subsequent Search Results dialog box, select the checkbox for the + Android Plugin. + This will select the nested tools: "Android DDMS" and "Android Developer Tools". + Click Next.
    12. +
    13. Read and accept the license agreement, then click Next.
    14. +
    15. On the following Installation window, click Finish.
    16. +
    17. The ADT plugin is not digitally signed. Accept the installation anyway + by clicking Install All.
    18. +
    19. Restart Eclipse.
    20. +
    + +
    + + +
      +
    1. Start Eclipse, then select Help > Software Updates....
    2. +
    3. In the dialog that appears, click the Available Software tab.
    4. +
    5. Click Add Site...
    6. +
    7. Enter the Location: +
      https://dl-ssl.google.com/android/eclipse/
      +

      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.

    8. +
    9. 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...
    10. +
    11. On the subsequent Install window, "Android DDMS" and "Android Developer Tools" + should both be checked. Click Next.
    12. +
    13. Read and accept the license agreement, then click Finish.
    14. +
    15. Restart Eclipse.
    16. +
    + +
    + +

    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.

    + + +

    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 the it: +

    +
      +
    1. Download the ADT zip file (do not unpack it).
    2. +
    3. Follow steps 1 and 2 in the default install instructions (above).
    4. +
    5. In Eclipse 3.3, click New Archive Site....
      + In Eclipse 3.4, click Add Site..., then Archive...
    6. +
    7. Browse and select the downloaded zip file.
    8. +
    9. Follow the remaining procedures, above, starting from steps 5.
    10. +
    +

    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.

    + + +

    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/<platfrom>/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.
    • +
    + diff --git a/docs/html/sdk/1.5_r1/upgrading.jd b/docs/html/sdk/1.5_r1/upgrading.jd index 532313110cb3..0b7312b3166f 100644 --- a/docs/html/sdk/1.5_r1/upgrading.jd +++ b/docs/html/sdk/1.5_r1/upgrading.jd @@ -2,175 +2,351 @@ page.title=Upgrading the SDK sdk.version=1.5_r1 @jd:body - +
  • UI +framework changes in Android 1.5 »
  • + -
      -
    • Overview of Changes -

      A high-level look at what's changed in Android, with - discussion of how the changes may affect your apps.

    • - -
    • API Diff Report -

      A detailed report that lists all the specific changes in the latest SDK.

    • - -
    • Release Notes -

      Version details, known issues, and resolved issues.

    • - -
    • Android Developers Group -

      A forum where you can discuss migration issues and learn from other Android developers.

    • - -
    • Android Issue Tracker -

      If you think you may have found a bug, use the issue tracker to report it.

    • -
    - -
    ---> + +

    This document describes how to move your development environment and existing +Android applications from an Android 1.0 or 1.1 SDK to the Android 1.5 SDK. +If you are migrating applications from an SDK older than 1.0, please also read the upgrading +document available in the Android 1.0 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 +Android 1.5 platform.

    -

    Upgrading quickview

    -
      -
    • The Android 1.5 SDK uses a new project structure and a new ADT plugin (ADT 0.9).
    • -
    • To move existing projects into the SDK, you must make some minor changes in your development environment.
    • -
    • The new ADT plugin (ADT 0.9) is not compatible with projects created in previous SDKs.
    • -
    • You need to uninstall your existing ADT plugin, before installing ADT 0.9.
    • +

      The Android 1.5 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 breakage 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 Android 1.5.

      -
    +

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

    - -
    -
    -

    See the Download page for more information.

    +

    Install the SDK

    -
      -
    1. Select Help > Software Updates > Find and Install....
    2. -
    3. Select Search for updates of the currently installed features and click Finish.
    4. -
    5. If any update for ADT is available, select and install.
    6. -
    7. Restart Eclipse.
    8. +
    9. Select Help > Software Updates > + Manage Configuration.
    10. +
    11. Expand the list in the left panel to reveal the installed tools.
    12. +
    13. Right-click "Android Editors" and click Uninstall. Click OK + to confirm.
    14. +
    15. Restart Eclipse. +

      (Do not uninstall "Android Development Tools".)

    -

    Alternatively,

    + + +
      -
    1. Select Help > Software Updates > Manage Configuration.
    2. +
    3. Select Help > Software Updates.
    4. +
    5. Select the Installed Software tab.
    6. +
    7. Select "Android Editors". Click Uninstall.
    8. +
    9. In the next window, be sure "Android Editors" is checked, then click Finish + to uninstall.
    10. +
    11. Restart Eclipse. +

      (Do not uninstall "Android Development Tools".)

    12. +
    + + + + + +

    Install the 0.9 ADT plugin

    -
  • Navigate down the tree and select Android Development Tools <version>
  • -
  • Select Scan for Updates under Available Tasks.
  • +

    Only install the new plugin once you've completed the procedure to +Uninstall your previous ADT plugin.

    + + + + +
    Eclipse 3.3 (Europa)Eclipse 3.4 (Ganymede)
    + +
      +
    1. Select Help > Software Updates > + Find and Install.
    2. +
    3. Select Search for new features to install.
    4. +
    5. Select the Android plugin entry by checking the box next to it, + then click Finish. +

      (Your original entry for the plugin should still be here. If not, see the guide + to Installing the ADT Plugin.) +

    6. +
    7. In the results, be sure that "Developer Tools" is checked, then click Next.
    8. +
    9. Read and accept the license agreement, then click Next. +
    10. In the next window, click Finish to start installation.
    11. +
    12. The ADT plugin is not digitally signed. Accept the installation anyway by clicking + Install All.
    13. +
    14. Restart Eclipse.
    +
      -
    1. Select Help > Software Updates...
    2. -
    3. Select the Installed Software tab.
    4. -
    5. Click Update...
    6. -
    7. If an update for ADT is available, select it and click Finish.
    8. +
    9. Select Help > Software Updates.
    10. +
    11. Select the Available Software tab.
    12. +
    13. Expand the entry for the Andriod plugin (may be listed as the location URL) + and select "Developer Tools" by checking the box next to it, then click Install. +
    14. On the next window, "Android DDMS" and "Android Developer Tools" + should both be checked. Click Next. +
    15. Read and accept the license agreement, then click Finish.
    16. Restart Eclipse.
    -

    Update your Eclipse SDK Preferences

    +

    If you encounter problems, ensure your ADT is fully uninstalled 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 OSX: Eclipse > Preferences)
    2. +
    3. Select Window > Preferences to open the Preferences + panel (Mac: Eclipse > Preferences).
    4. Select Android from the left panel.
    5. -
    6. For the SDK Location in the main panel, click Browse... and locate the SDK directory.
    7. +
    8. For the SDK Location in the main panel, click Browse + and locate your SDK directory.
    9. Click Apply, then OK.
    -

    Migrate Your Applications, if Necessary

    -

    If (and only if) you have written apps in an SDK released previous to -the Android 1.0 SDK, you will need to migrate your applications. After -installing the new SDK and updating the ADT Plugin (if applicable), you -may encounter breakages in your application code, due to -framework and API changes. You'll need to update your code to match the -latest APIs.

    +

    Update Your Projects

    + +

    You will now need to update any and all Android projects that you have +developed using a previous version of the Android SDK.

    + + +

    Eclipse users

    + +

    If you use Eclipse to develop applications, use the following procedure to +update each project:

    + +
      +
    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 "build target" to compile + against. This SDK offers the Android 1.1 and Android 1.5 platforms to choose from. When + you are initially updating your projects to the new SDK, we recommend that you select a build + target with the Android 1.1 platform. Click Apply, then + OK.
    4. +
    + +

    The new plugin creates a gen/ folder in your project, in which it puts the +R.java file +and all automatically generated AIDL java files. If you get an error such as +The type R is already defined, +then you probably need to delete your old R.java or your old auto-generated +AIDL Java files in the src/ folder. +(This does not apply to your own hand-crafted parcelable AIDL java files.)

    + +

    Note that, with the Android 1.5 SDK, there is a new process for running +applications in the Android Emulator. +Specifically, you must create an Android Virtual Device (AVD) before you can launch an instance +of the Emulator. Before attempting to run your applications with the new SDK, +please continue with the section below to +Migrate Your Applications.

    + + +

    Ant users

    + +

    If you build your projects using the Ant tool (rather than with Eclipse), note the +following changes with the new SDK tools.

    + +

    build.xml has changed

    + +

    You must re-create your build.xml file.

    + +

    If you had customized your build.xml, first make a copy of it:

    + +
    +$ cd my-project
    +$ cp build.xml build.xml.old
    +
    -

    One way to start is to open your project in Eclipse and see where the ADT -identifies errors in your application. You can also look up -specific changes in the Android APIs in the -android-1.5.html#api-changes -Android 1.5 Version Notes +

    Now use the new android tool (located in your_sdk/tools/) +to create a new build.xml that references +a specific platform target:

    -document.

    +
    $ android update project --path /path/to/my-project --target 1
    + +

    The "target" corresponds to an Android platform library (including any add-ons, such as +Google APIs) that you would like to build your project against. You can view a list of available +targets (and their corresponding integer ID) with the command, android list targets. +When you are initially updating your projects to the new SDK, we recommend that you select the +first target ("1"), which uses the Android 1.1 platform library.

    + +

    A gen/ folder will be created the first time you build and your R.java and +your AIDL Java files will be generated in here. You must remove +the old R.java and old auto-generated AIDL java files from the +src/ folder. (This +does not apply to your own hand-crafted parcelabe AIDL java files.)

    + +

    Note: The "activitycreator" tool has been replaced +by the new "android" tool. For information on creating new projects with the android tool, +see the documentation about Developing +In Other IDEs.

    + +

    Note that, with the Android 1.5 SDK, there is a new process for running +applications in the Android Emulator. +Specifically, you must create an Android Virtual Device (AVD) before you can launch an instance +of the Emulator. Before attempting to run your applications with the new SDK, +please continue with the section below to +Migrate Your Applications.

    + + +

    Migrate Your Applications

    + +

    After you have completed the process above to Update Your +Projects, you are strongly encouraged to run each of your applications in an instance +of the emulator running the Android 1.5 system image. It's possible (however, unlikely) +that you'll encounter some breakage in your application when you run your applications on +the Android 1.5 system image. Whether you believe your application will be affected by +platform changes or not, it's very important that you test the application's +forward-compatibility on Android 1.5.

    + +

    To test forward-compatibility, simply run your existing application (as-is) on an Android +Emulator that's running the Android 1.5 system image. The following procedure will guide +you through the process to running your existing applications on an emulator. Please read +the following guide completely before you begin.

    + +

    To test your application on an emulator running Android 1.5:

    +
      +
    1. Update Your Project (you should have done this + already, in the section above).
    2. +
    3. Run your existing project, as-is, on an emulator running the Android 1.5 system image. +

      As mentioned in the guide to Update Your Projects, + you should have selected a "build + target" of "1", which compiles your application against the Android 1.1 system image, so there + should be no new errors in your code.

      +

      Eclipse users: follow the + Eclipse guide to + Running Your Application.

      +

      Ant users: follow the + Ant guide to + Running Your Application +

      During the procedure to Running Your Application, select a "deployment target" + for the AVD that includes the Android 1.5 platform. + If your application utilizes the Google Maps APIs (i.e., + MapView), be certain to select a target that includes the Google APIs.

      +

      Once you complete the procedures to run your application in your respective environment, + linked above, return here.

      +
    4. +
    5. With your application running in the emulator, perform all regular testing on the application + to ensure that it functions normally (in both landscape and portrait orientations).
    6. +
    + +

    Chances are, your application runs just fine on the Android 1.5 platform — +new devices will be able to safely install and run your application and +current users who update their devices will be able to continue using your application as usual. +However, if something doesn't work the way you expect, then you might need to revisit +your project and make any necessary changes to your code.

    + +

    You can check for code breakages caused by API changes by opening your project +in Eclipse, changing the "build target" to one using the Android 1.5 platform, +and see where the ADT identifies errors in your code.

    + +

    There have been several API additions made for this release, but there have been +very few actual API changes. Only a couple (relatively unused) elements +have been removed and a few have been deprecated, so your applications written with the +Android 1.1 system library should work just fine. +Your application will be at highest risk of breakage if it uses Android APIs +that are not available in the public API documentation +or if it explicitly depends on system bugs. For information +about changes made to Android 1.5, refer to the following documents:

    +

    If you have additional trouble updating your code, visit the Android Developers Group to seek help from other Android developers.

    - -

    If you have modified one of the ApiDemos applications and would like to migrate it -to the new SDK, note that you will need to uninstall the version of ApiDemos that comes -preinstalled in the emulator. For more information, or if you encounter an "reinstallation" -error when running or installing ApiDemos, see the troubleshooting topic -I can't install ApiDemos -apps in my IDE because of a signing error for information about how to solve the problem.

    ---> \ No newline at end of file -- cgit v1.2.3-59-g8ed1b From 61fc286e8f7e33d0dd2a1e72ae9ef73ed3f42a00 Mon Sep 17 00:00:00 2001 From: Mike Lockwood Date: Tue, 21 Apr 2009 20:02:52 -0700 Subject: location: Remove unnecessary code that monitors the screen on/off state. Signed-off-by: Mike Lockwood --- .../com/android/server/LocationManagerService.java | 38 ++++++---------------- 1 file changed, 10 insertions(+), 28 deletions(-) diff --git a/services/java/com/android/server/LocationManagerService.java b/services/java/com/android/server/LocationManagerService.java index 5238c58d990d..ed5ae68dd035 100644 --- a/services/java/com/android/server/LocationManagerService.java +++ b/services/java/com/android/server/LocationManagerService.java @@ -138,7 +138,6 @@ public class LocationManagerService extends ILocationManager.Stub { private final static String WAKELOCK_KEY = "LocationManagerService"; private AlarmManager mAlarmManager; private long mAlarmInterval = 0; - private boolean mScreenOn = true; private PowerManager.WakeLock mWakeLock = null; private long mWakeLockAcquireTime = 0; private boolean mWakeLockGpsReceived = true; @@ -537,8 +536,6 @@ public class LocationManagerService extends ILocationManager.Stub { PowerStateBroadcastReceiver powerStateReceiver = new PowerStateBroadcastReceiver(); IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(ALARM_INTENT); - intentFilter.addAction(Intent.ACTION_SCREEN_OFF); - intentFilter.addAction(Intent.ACTION_SCREEN_ON); intentFilter.addAction(Intent.ACTION_PACKAGE_REMOVED); intentFilter.addAction(Intent.ACTION_PACKAGE_RESTARTED); context.registerReceiver(powerStateReceiver, intentFilter); @@ -765,12 +762,12 @@ public class LocationManagerService extends ILocationManager.Stub { if (listeners > 0) { p.setMinTime(getMinTimeLocked(provider)); p.enableLocationTracking(true); - updateWakelockStatusLocked(mScreenOn); + updateWakelockStatusLocked(); } } else { p.enableLocationTracking(false); p.disable(); - updateWakelockStatusLocked(mScreenOn); + updateWakelockStatusLocked(); } } @@ -960,7 +957,7 @@ public class LocationManagerService extends ILocationManager.Stub { long minTimeForProvider = getMinTimeLocked(provider); impl.setMinTime(minTimeForProvider); impl.enableLocationTracking(true); - updateWakelockStatusLocked(mScreenOn); + updateWakelockStatusLocked(); } else { try { // Notify the listener that updates are currently disabled @@ -1058,7 +1055,7 @@ public class LocationManagerService extends ILocationManager.Stub { } } - updateWakelockStatusLocked(mScreenOn); + updateWakelockStatusLocked(); } finally { Binder.restoreCallingIdentity(identity); } @@ -1588,8 +1585,8 @@ public class LocationManagerService extends ILocationManager.Stub { return; } - // Process the location fix if the screen is on or we're holding a wakelock - if (mScreenOn || (mWakeLockAcquireTime != 0)) { + // Process the location fix if we're holding a wakelock + if (mWakeLockAcquireTime != 0) { handleLocationChangedLocked(location); } @@ -1627,7 +1624,7 @@ public class LocationManagerService extends ILocationManager.Stub { // Update wakelock status so the next alarm is set before releasing wakelock synchronized (mLock) { - updateWakelockStatusLocked(mScreenOn); + updateWakelockStatusLocked(); releaseWakeLockLocked(); } } @@ -1652,18 +1649,6 @@ public class LocationManagerService extends ILocationManager.Stub { // is finished. acquireWakeLockLocked(); } - - } else if (action.equals(Intent.ACTION_SCREEN_OFF)) { - log("PowerStateBroadcastReceiver: Screen off"); - synchronized (mLock) { - updateWakelockStatusLocked(false); - } - - } else if (action.equals(Intent.ACTION_SCREEN_ON)) { - log("PowerStateBroadcastReceiver: Screen on"); - synchronized (mLock) { - updateWakelockStatusLocked(true); - } } else if (action.equals(Intent.ACTION_PACKAGE_REMOVED) || action.equals(Intent.ACTION_PACKAGE_RESTARTED)) { synchronized (mLock) { @@ -1750,8 +1735,8 @@ public class LocationManagerService extends ILocationManager.Stub { // Wake locks - private void updateWakelockStatusLocked(boolean screenOn) { - log("updateWakelockStatus(): " + screenOn); + private void updateWakelockStatusLocked() { + log("updateWakelockStatus()"); long callerId = Binder.clearCallingIdentity(); @@ -1768,8 +1753,6 @@ public class LocationManagerService extends ILocationManager.Stub { minTime = Math.min(mGpsLocationProvider.getMinTime(), minTime); } - mScreenOn = screenOn; - PendingIntent sender = PendingIntent.getBroadcast(mContext, 0, new Intent(ALARM_INTENT), 0); @@ -1777,7 +1760,7 @@ public class LocationManagerService extends ILocationManager.Stub { log("Cancelling existing alarm"); mAlarmManager.cancel(sender); - if (needsLock && !mScreenOn) { + if (needsLock) { long now = SystemClock.elapsedRealtime(); mAlarmManager.set( AlarmManager.ELAPSED_REALTIME_WAKEUP, now + minTime, sender); @@ -2046,7 +2029,6 @@ public class LocationManagerService extends ILocationManager.Stub { pw.println(" mNetworkLocationProvider=" + mNetworkLocationProvider); pw.println(" mCollector=" + mCollector); pw.println(" mAlarmInterval=" + mAlarmInterval - + " mScreenOn=" + mScreenOn + " mWakeLockAcquireTime=" + mWakeLockAcquireTime); pw.println(" mWakeLockGpsReceived=" + mWakeLockGpsReceived + " mWakeLockNetworkReceived=" + mWakeLockNetworkReceived); -- cgit v1.2.3-59-g8ed1b From 9ce7217c8eb4141bda68b85641814958da58a7ab Mon Sep 17 00:00:00 2001 From: Mike Lockwood Date: Tue, 21 Apr 2009 20:18:41 -0700 Subject: location: Remove support for a message that never actually gets sent. Signed-off-by: Mike Lockwood --- .../java/com/android/server/LocationManagerService.java | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/services/java/com/android/server/LocationManagerService.java b/services/java/com/android/server/LocationManagerService.java index ed5ae68dd035..83108f87c12e 100644 --- a/services/java/com/android/server/LocationManagerService.java +++ b/services/java/com/android/server/LocationManagerService.java @@ -130,8 +130,7 @@ public class LocationManagerService extends ILocationManager.Stub { // Handler messages private static final int MESSAGE_LOCATION_CHANGED = 1; - private static final int MESSAGE_ACQUIRE_WAKE_LOCK = 2; - private static final int MESSAGE_RELEASE_WAKE_LOCK = 3; + private static final int MESSAGE_RELEASE_WAKE_LOCK = 2; // Alarm manager and wakelock variables private final static String ALARM_INTENT = "com.android.location.ALARM_INTENT"; @@ -1594,7 +1593,6 @@ public class LocationManagerService extends ILocationManager.Stub { (SystemClock.elapsedRealtime() - mWakeLockAcquireTime > MAX_TIME_FOR_WAKE_LOCK)) { - removeMessages(MESSAGE_ACQUIRE_WAKE_LOCK); removeMessages(MESSAGE_RELEASE_WAKE_LOCK); log("LocationWorkerHandler: Exceeded max time for wake lock"); @@ -1604,7 +1602,6 @@ public class LocationManagerService extends ILocationManager.Stub { } else if (mWakeLockAcquireTime != 0 && mWakeLockGpsReceived && mWakeLockNetworkReceived) { - removeMessages(MESSAGE_ACQUIRE_WAKE_LOCK); removeMessages(MESSAGE_RELEASE_WAKE_LOCK); log("LocationWorkerHandler: Locations received."); @@ -1613,12 +1610,6 @@ public class LocationManagerService extends ILocationManager.Stub { sendMessageDelayed(m, TIME_AFTER_WAKE_LOCK); } } - - } else if (msg.what == MESSAGE_ACQUIRE_WAKE_LOCK) { - log("LocationWorkerHandler: Acquire"); - synchronized (mLock) { - acquireWakeLockLocked(); - } } else if (msg.what == MESSAGE_RELEASE_WAKE_LOCK) { log("LocationWorkerHandler: Release"); @@ -1642,7 +1633,6 @@ public class LocationManagerService extends ILocationManager.Stub { if (action.equals(ALARM_INTENT)) { synchronized (mLock) { log("PowerStateBroadcastReceiver: Alarm received"); - mLocationHandler.removeMessages(MESSAGE_ACQUIRE_WAKE_LOCK); // Have to do this immediately, rather than posting a // message, so we execute our code while the system // is holding a wake lock until the alarm broadcast @@ -1771,7 +1761,6 @@ public class LocationManagerService extends ILocationManager.Stub { mAlarmInterval = -1; // Clear out existing wakelocks - mLocationHandler.removeMessages(MESSAGE_ACQUIRE_WAKE_LOCK); mLocationHandler.removeMessages(MESSAGE_RELEASE_WAKE_LOCK); releaseWakeLockLocked(); } -- cgit v1.2.3-59-g8ed1b From 6565a5a3002410583b7bdaa5147879032bc3bfb2 Mon Sep 17 00:00:00 2001 From: Dirk Dougherty <> Date: Tue, 21 Apr 2009 20:25:36 -0700 Subject: AI 147332: Miscellaneous doc changes for cupcake SDK BUG=1790234 Automated import of CL 147332 --- docs/html/community/index.jd | 2 +- docs/html/guide/appendix/faq/framework.jd | 17 +- docs/html/guide/appendix/faq/troubleshooting.jd | 48 +-- docs/html/guide/developing/app-signing.jd | 428 ------------------------ docs/html/guide/developing/tools/avd.jd | 12 +- docs/html/guide/topics/media/index.jd | 2 +- docs/html/guide/topics/media/media.jd | 172 ---------- 7 files changed, 20 insertions(+), 661 deletions(-) delete mode 100644 docs/html/guide/developing/app-signing.jd delete mode 100644 docs/html/guide/topics/media/media.jd diff --git a/docs/html/community/index.jd b/docs/html/community/index.jd index 2df4c01d946b..ad3a199aa998 100644 --- a/docs/html/community/index.jd +++ b/docs/html/community/index.jd @@ -77,7 +77,7 @@ phrasing your questions, read android-security-discuss -
  • Subscribe via email: android-secuirty-discuss@googlegroups.com +
  • Subscribe via email: android-security-discuss@googlegroups.com
  • diff --git a/docs/html/guide/appendix/faq/framework.jd b/docs/html/guide/appendix/faq/framework.jd index 76a19c56d19d..33b69acf2150 100644 --- a/docs/html/guide/appendix/faq/framework.jd +++ b/docs/html/guide/appendix/faq/framework.jd @@ -12,7 +12,7 @@ parent.link=index.html from one Activity/Service to another?
  • How can I check if an Activity is already running before starting it?
  • -
  • If an Activity starts a remote service,is +
  • If an Activity starts a remote service, is there any way for the Service to pass a message back to the Activity?
  • How to avoid getting the Application not responding dialog?
  • @@ -20,7 +20,6 @@ parent.link=index.html added or removed? - @@ -32,7 +31,7 @@ default. If needed, you can declare an android:process attribute in your manifest file, to explicitly place a component (Activity/Service) in another process.

    - + @@ -47,7 +46,7 @@ separate pool of transaction threads in each process to dispatch all incoming IPC calls. The developer should create separate threads for any long-running code, to avoid blocking the main UI thread.

    - + @@ -128,7 +127,7 @@ the Data Storage for further details on how to use these components.

    - + @@ -140,7 +139,7 @@ or to bring the activity stack to the front if is already running in the background— is the to use the NEW_TASK_LAUNCH flag in the startActivity() call.

    - + @@ -156,7 +155,7 @@ messages.

    The sample code for remote service callbacks is given in ApiDemos/RemoteService

    - + @@ -166,7 +165,7 @@ href="{@docRoot}guide/samples/ApiDemos/src/com/example/android/apis/app/RemoteSe document.

    - + @@ -194,5 +193,5 @@ removed.

    - + diff --git a/docs/html/guide/appendix/faq/troubleshooting.jd b/docs/html/guide/appendix/faq/troubleshooting.jd index 7c703e6d07f3..0cf1ab006d1e 100644 --- a/docs/html/guide/appendix/faq/troubleshooting.jd +++ b/docs/html/guide/appendix/faq/troubleshooting.jd @@ -23,7 +23,6 @@ parent.link=index.html
  • When I go to preferences in Eclipse and select "Android", I get the following error message: Unsupported major.minor version 49.0.
  • I can't install ApiDemos apps in my IDE because of a signing error
  • I can't compile my app because the build tools generated an expired debug certificate
  • -
  • I can't run a JUnit test class in Eclipse/ADT
  • ADT Installation Error: "requires plug-in org.eclipse.wst.sse.ui".

    @@ -245,8 +244,8 @@ documentation.

    1. First, delete the debug keystore/key already generated by the Android build tools. Specifically, delete the debug.keystore file. On Linux/Mac OSX, the file is stored in ~/.android. On Windows XP, the file is stored in -C:\Documents and Settings\<user>\Local Settings\Application Data\Android. On Windows Vista, the file is stored in -C:\Users\<user>\AppData\Local\Android
    2. +C:\Documents and Settings\<user>\.android. On Windows Vista, the file is stored in +C:\Users\<user>\.android
    3. Next, you can either
      • Temporarily change your development machine's locale (date and time) to one that uses a Gregorian calendar, for example, United States. Once the locale is changed, use the Android build tools to compile and install your app. The build tools will regenerate a new keystore and debug key with valid dates. Once the new debug key is generated, you can reset your development machine to the original locale.
      • @@ -260,46 +259,3 @@ C:\Users\<user>\AppData\Local\Android

        For general information about signing Android applications, see Signing Your Applications.

        -

        I can't run a JUnit test class in Eclipse/ADT

        - -

        If you are developing on Eclipse/ADT, you can add JUnit test classes to your application. However, you may get an error when trying to run such a class as a JUnit test:

        - -
        Error occurred during initialization of VM
        -java/lang/NoClassDefFoundError: java/lang/ref/FinalReference
        - -

        This error occurs because android.jar does not include complete Junit.* class implementations, but includes stub classes only.

        - -

        To add a JUnit class, you have to set up a JUnit configuration:. - -

          -
        1. In the Package Explorer view, select your project.
        2. -
        3. Open the launch configuration manager. -
            -
          • In Eclipse 3.3 (Europa), select Run > - Open Run Dialog... or Run > - Open Debug Dialog... . -
          • - -
          • In Eclipse 3.4 (Ganymede), select Run > - Run Configurations... or Run > - Debug Configurations... . -
          • -
          -
        4. -
        5. In the configuration manager, right-click the "JUnit" configuration type and select New
        6. -
        7. In the new configuration's Test tab, specify the project and test class, as well as any options for running the test.
        8. -
        9. In the new configuration's Classpath tab, find "Android Library" under Bootstrap Entries and remove it.
        10. -
        11. Still in the Classpath tab, select Bootstrap Entries and click the Advanced button.
        12. -
            -
          1. Choose Add Library and click OK.
          2. -
          3. Select JRE System Library and click Next.
          4. -
          5. Select Workspace Default JRE and click Finish.
          6. -
          -
        13. Select Bootstrap Entries again and click Advanced.
        14. -
            -
          1. Choose Add Library and click OK.
          2. -
          3. Select JUnit 3 and click Finish.
          4. -
          -
        -

        When configured in this way, your JUnit test class should now run properly.

        - diff --git a/docs/html/guide/developing/app-signing.jd b/docs/html/guide/developing/app-signing.jd deleted file mode 100644 index 582dfb267b6f..000000000000 --- a/docs/html/guide/developing/app-signing.jd +++ /dev/null @@ -1,428 +0,0 @@ -page.title=Signing Your Applications -@jd:body - -

        The Android system requires that all installed applications be digitally -signed with a certificate whose private key is held by the application's -developer. The system uses the certificate as a means of identifying the author of -an application and establishing trust relationships between applications, rather -than for controlling which applications the user can install. The certificate -does not need to be signed by a certificate authority: it is perfectly -allowable, and typical, for Android applications to use self-signed -certificates.

        - -

        The important points to understand about signing Android applications are:

        - -
          -
        • All applications must be signed. The system will not install an application -that is not signed.
        • -
        • You can use self-signed certificates to sign your applications. No certificate authority -is needed.
        • -
        • When you are ready to publish your application, you must sign it with a suitable private -key. You can not publish an application that is signed with the default key generated -by the SDK tools. -
        • -
        • The system tests a signer certificate's expiration date only at install time. If an -application's signer certificate expires after the application is installed, the application -will continue to function normally.
        • -
        • You can use standard tools — Keytool and Jarsigner — to generate keys and -sign your application .apk files.
        • -
        - -

        The Android system will not install or run an application that is not signed appropriately. This -applies wherever the Android system is run, whether on an actual device or on the emulator. -For this reason, you must set up signing for your application before you will be able to -run or debug it on an emulator or device.

        - -

        The Android SDK tools assist you in signing your applications when debugging. Both the ADT Plugin -for Eclipse and the Ant build tool offer two signing modes — debug mode and release mode. - -

          -
        • In debug mode, the build tools use the Keytool utility, included in the JDK, to create -a keystore and key with a known alias and password. At each compilation, the tools then use -the debug key to sign the application .apk file. Because the password is known, the tools -don't need to prompt you for the keystore/key password each time you compile.
        • - -
        • When your application is ready for release, you compile it in release signing mode. -In this mode, the tools compile your .apk without signing it. You must then sign -the .apk manually — with your private key — -using Jarsigner (or similar tool). If you do not have a suitable private key already, -you can run Keytool manually to generate your own keystore/key and then sign your -application with Jarsigner.
        • -
        - -

        Signing Strategies

        - -

        Some aspects of application signing may affect how you approach the development -of your application, especially if you are planning to release multiple -applications.

        - -

        In general, the recommended strategy for all developers is to sign -all of your applications with the same certificate, throughout the expected -lifespan of your applications. There are several reasons why you should do so:

        - -
          -
        • Application upgrade — As you release upgrades to your -application, you will want to sign the upgrades with the same certificate, if you -want users to upgrade seamlessly to the new version. When the system is -installing an update to an application, if any of the certificates in the -new version match any of the certificates in the old version, then the -system allows the update. If you sign the version without using a matching -certificate, you will also need to assign a different package name to the -application — in this case, the user installs the new version as a -completely new application. - -
        • Application modularity — The Android system allows applications that -are signed by the same certificate to run in the same process, if the -applications so request, so that the system treats them as a single application. -In this way you can deploy your application in modules, and users can update -each of the modules independently if needed.
        • - -
        • Code/data sharing through permissions — The Android system provides -signature-based permissions enforcement, so that an application can expose -functionality to another application that is signed with a specified -certificate. By signing multiple applications with the same certificate and -using signature-based permissions checks, your applications can share code and -data in a secure manner.
        • - - - -
        - -

        Another important consideration in determining your signing strategy is -how to set the validity period of the key that you will use to sign your -applications.

        - -
          -
        • If you plan to support upgrades for a single application, you should ensure -that your key has a validity period that exceeds the expected lifespan of -that application. A validity period of 25 years or more is recommended. -When your key's validity period expires, users will no longer be -able to seamlessly upgrade to new versions of your application.
        • - -
        • If you will sign multiple distinct applications with the same key, -you should ensure that your key's validity period exceeds the expected -lifespan of all versions of all of the applications, including -dependent applications that may be added to the suite in the future.
        • - -
        • If you plan to publish your application(s) on Android Market, the -key you use to sign the application(s) must have a validity period -ending after 22 October 2033. The Market server enforces this requirement -to ensure that users can seamlessly upgrade Market applications when -new versions are available.
        • -
        - -

        As you design your application, keep these points in mind and make sure to -use a suitable certificate to sign your applications.

        - -

        Basic Setup for Signing

        - -

        To support the generation of a keystore and debug key, you should first make sure that -Keytool is available to the SDK build -tools. In most cases, you can tell the SDK build tools how to find Keytool by making sure -that your JAVA_HOME environment variable is set and that it references a suitable JDK. -Alternatively, you can add the JDK version of Keytool to your PATH variable.

        - -

        If you are developing on a version of Linux that originally came with GNU Compiler for -Java, make sure that the system is using the JDK version of Keytool, rather than the gcj -version. If Keytool is already in your PATH, it might be pointing to a symlink at -/usr/bin/keytool. In this case, check the symlink target to make sure that it points -to the Keytool in the JDK.

        - -

        If you will release your application to the public, you will also need to have -the Jarsigner tool available on your machine. Both Jarsigner and Keytool are included -in the JDK.

        - -

        Signing in Debug Mode

        - -

        The Android build tools provide a debug signing mode that makes it easier for you -to develop and debug your application, while still meeting the Android system -requirement for signing your .apk when it is installed in the emulator or a device.

        - -

        If you are developing in Eclipse/ADT and have set up Keytool as described -above, signing in debug mode is enabled by default. When you run or debug your -application, ADT signs the .apk for you and installs it on the emulator. No -specific action on your part is needed, provided ADT has access to Keytool.

        - -

        If you use Ant to build your .apk files, debug signing mode -is enabled by default, assuming that you are using a build.xml file generated by the -activitycreator tool included in the latest SDK. When you run Ant against build.xml to -compile your app, the build script generates a keystore/key and signs the .apk for you. -No specific action on your part is needed.

        - -

        Note that you can not release your application to the public if it is signed only with -the debug key.

        - -

        Signing for Public Release

        - -

        When your application is ready for release to other users, you must:

        -
          -
        1. Compile the application in release mode
        2. -
        3. Obtain a suitable private key, and then
        4. -
        5. Sign the application with your private key
        6. -
        7. Secure your private key
        8. -
        - -

        The sections below provide information about these steps.

        - -

        Compiling for Release

        - -

        To prepare your application for release, you must first compile it in release mode. -In release mode, the Android build tools compile your application as usual, -but without signing it with the debug key.

        - -

        If you are developing in Eclipse/ADT, right-click the project in the Package -pane and select Android Tools > Export Application -Package. You can then specify the file location for the unsigned .apk. -Alternatively, you can follow the "Exporting the unsigned .apk" -link in the Manifest Editor overview page.

        - -

        If you are using Ant, all you need to do is specify the build target -"release" in the Ant command. For example, if you are running Ant from the -directory containing your build.xml file, the command would look like this:

        - -
        $ ant release
        - -

        The build script compiles the application .apk without signing it. - -

        Note that you can not release your application unsigned, or signed with the debug key.

        - -

        Obtaining a Suitable Private Key

        - -

        In preparation for signing your application, you must first ensure that -you have a suitable private key with which to sign. A suitable private -key is one that:

        - -
          -
        • Is in your possession
        • -
        • Represents the personal, corporate, or organizational entity to be identified -with the application
        • -
        • Has a validity period that exceeds the expected lifespan of the application -or application suite. A validity period of more than 25 years is recommended. -

          If you plan to publish your application(s) on Android Market, note that a -validity period ending after 22 October 2033 is a requirement. You can not upload an -application if it is signed with a key whose validity expires before that date. -

        • -
        • Is not the debug key generated by the Android SDK tools.
        • -
        - -

        The key may be self-signed. If you do not have a suitable key, you must -generate one using Keytool. Make sure that you have Keytool available, as described -in Basic Setup.

        - -

        To generate a self-signed key with Keytool, use the keytool -command and pass any of the options listed below (and any others, as -needed).

        - -

        Before you run Keytool, make sure to read Securing Your Key for a discussion of how to keep your -key secure and why doing so is critically important to you and to users. In -particular, when you are generating your key, you should select strong -passwords for both the keystore and key.

        - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        Keytool OptionDescription
        -genkeyGenerate a key pair (public and private -keys)
        -vEnable verbose output.
        -keystore <keystore-name>.keystoreA name -for the keystore containing the private key.
        -storepass <password>

        A password for the -keystore.

        As a security precaution, do not include this option -in your command line unless you are working at a secure computer. -If not supplied, Keytool prompts you to enter the password. In this -way, your password is not stored in your shell history.

        -alias <alias_name>An alias for the key.
        -keyalg <alg>The encryption algorithm to use -when generating the key.
        -dname <name>

        A Distinguished Name that describes -who created the key. The value is used as the issuer and subject fields in the -self-signed certificate.

        Note that you do not need to specify this option -in the command line. If not supplied, Jarsigner prompts you to enter each -of the Distinguished Name fields (CN, OU, and so on).

        -validity <valdays>

        The validity period for the -key, in days.

        Note: A value of 9500 or greater is recommended.

        -keypass <password>

        The password for the key.

        -

        As a security precaution, do not include this option -in your command line unless you are working at a secure computer. -If not supplied, Keytool prompts you to enter the password. In this -way, your password is not stored in your shell history.

        - - -

        Here's an example of a Keytool command that generates a private key:

        - -
        $ keytool -genkey -v -keystore my-release-key.keystore 
        --alias alias_name -keyalg RSA -validity 9500
        - -

        Running the example command above, Keytool prompts you to provide -passwords for the keystore and key, and to provide the Distinguished -Name fields for your key. It then generates the keystore as a file called -my-release-key.keystore. The keystore and key are -protected by the passwords you entered. The keystore contains -a single key, valid for 9500 days. The alias is a name that you — -will use later, to refer to this keystore when signing your application.

        - -

        For more information about Keytool, see the documentation at - -http://java.sun.com/j2se/1.5.0/docs/tooldocs/#security

        - -

        Signing Your Application

        - -

        When you are ready to actually sign your .apk for release, you can do so -using the Jarsigner tool. Make sure that you have Jarsigner available on your -machine, as described in Basic Setup. Also, make sure that -the keystore containing your private key is available.

        - -

        To sign your application, you run Jarsigner, referencing both the -application's .apk and the keystore containing the private key with which to -sign the .apk. The table below shows the options you could use.

        - - - - - - - - - - - - - - - - - - -
        Jarsigner OptionDescription
        -keystore <keystore-name>.keystoreThe name of -the keystore containing your private key.
        -verboseEnable verbose output.
        -storepass <password>

        The password for the -keystore.

        As a security precaution, do not include this option -in your command line unless you are working at a secure computer. -If not supplied, Jarsigner prompts you to enter the password. In this -way, your password is not stored in your shell history.

        -keypass <password>

        The password for the private -key.

        As a security precaution, do not include this option -in your command line unless you are working at a secure computer. -If not supplied, Jarsigner prompts you to enter the password. In this -way, your password is not stored in your shell history.

        - -

        Here's how you would use Jarsigner to sign an application package called -my_application.apk, using the example keystore created above. -

        - -
        $ jarsigner -verbose -keystore my-release-key.keystore 
        -my_application.apk alias_name
        - -

        Running the example command above, Jarsigner prompts you to provide -passwords for the keystore and key. It then modifies the APK -in-place, meaning the .apk is now signed. Note that you can sign an -APK multiple times with different keys.

        - -

        To verify that your .apk is signed, you can use a command like this:

        - -
        $ jarsigner -verify my_signed.apk
        - -

        If the .apk is signed properly, Jarsigner prints "jar verified". -If you want more details, you can try one of these commands:

        - -
        $ jarsigner -verify -verbose my_application.apk
        - -

        or

        - -
        $ jarsigner -verify -verbose -certs my_application.apk
        - -

        The command above, with the -certs option added, will show you the -"CN=" line that describes who created the key.

        - -

        Note: if you see "CN=Android Debug", this means the .apk was -signed with the debug key generated by the Android SDK. If you intend to release -your application, you must sign it with your private key instead of the debug -key.

        - -

        For more information about Jarsigner, see the documentation at - -http://java.sun.com/j2se/1.5.0/docs/tooldocs/#security

        - -

        Securing Your Private Key

        - -

        Maintaining the security of your private key is of critical importance, both -to you and to the user. If you allow someone to use your key, or if you leave -your keystore and passwords in an unsecured location such that a third-party -could find and use them, your authoring identity and the trust of the user -are compromised.

        - -

        If a third party should manage to take your key without your knowledge or -permission, that person could sign and distribute applications that maliciously -replace your authentic applications or corrupt them. Such a person could also -sign and distribute applications under your identity that attack other -applications or the system itself, or corrupt or steal user data.

        - -

        Your reputation as a developer entity depends on your securing your private -key properly, at all times, until the key is expired. Here are some tips for -keeping your key secure:

        - -
          -
        • Select strong passwords for the keystore and key.
        • -
        • When you generate your key with Keytool, do not supply the --storepass and -keypass options at the command line. -If you do so, your passwords will be available in your shell history, -which any user on your computer could access.
        • -
        • Similarly, when signing your applications with Jarsigner, -do not supply the -storepass and -keypass -options at the command line.
        • -
        • Do not give or lend anyone your private key, and do not let unauthorized -persons know your keystore and key passwords.
        • -
        - -

        In general, if you follow common-sense precautions when generating, using, -and storing your key, it will remain secure.

        - -

        Expiry of the Debug Certificate

        - -

        The self-signed certificate used to sign your application in debug mode (the default on -Eclipse/ADT and Ant builds) will have an expiration date of 365 days from its creation date.

        - -

        When the certificate expires, you will get a build error. On Ant builds, the error -looks like this:

        - -
        debug:
        -[echo] Packaging bin/samples-debug.apk, and signing it with a debug key...
        -[exec] Debug Certificate expired on 8/4/08 3:43 PM
        - -

        In Eclipse/ADT, you will see a similar error in the Android console.

        - -

        To fix this problem, simply delete the debug.keystore file. On Linux/Mac OSX, -the file is stored in ~/.android. OOn Windows XP, the file is stored in -C:\Documents and Settings\<user>\Local Settings\Application Data\Android. -On Windows Vista, the file is stored in -C:\Users\<user>\AppData\Local\Android.

        - -

        The next time you build, the build tools will regenerate a new keystore and debug key.

        - -

        Note that, if your development machine is using a non-Gregorian locale, the build -tools may erroneously generate an already-expired debug certificate, so that you get an -error when trying to compile your application. For workaround information, see the -troubleshooting topic -I can't compile my app because the build tools generated an expired debug -certificate.

        \ No newline at end of file diff --git a/docs/html/guide/developing/tools/avd.jd b/docs/html/guide/developing/tools/avd.jd index 7ba79685eef7..1e13ace551f7 100644 --- a/docs/html/guide/developing/tools/avd.jd +++ b/docs/html/guide/developing/tools/avd.jd @@ -21,13 +21,12 @@ page.title=Android Virtual Devices
      • Creating the AVD
      • Setting hardware emulation options
      • Default location of the AVD files
      • -
      • Command-line options, create avd
  • Managing AVDs
    1. Moving an AVD
    2. -
    3. Deleting an AVD
    4. +
    5. Updating an AVD
    6. Deleting an AVD
  • @@ -35,7 +34,8 @@ page.title=Android Virtual Devices

    See Also

      -
    1. Android Emulator
    2. +
    3. Android + Emulator
    @@ -366,6 +366,10 @@ the -p option to place the AVD directory in another location. The AVD's .ini file remains in the .android directory on the network drive, regardless of the location of the AVD directory.

    +

    Managing AVDs

    + +

    The sections below provide more information about how to manage AVDs once you've created them.

    +

    Moving an AVD

    If you want to move or rename an AVD, you can do so using this command:

    @@ -455,7 +459,7 @@ files. -s <name> or
    - -s <dimensions> + -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 skins/ directory of the target referenced in the -t diff --git a/docs/html/guide/topics/media/index.jd b/docs/html/guide/topics/media/index.jd index 4541024111b9..fd7d2da021d8 100644 --- a/docs/html/guide/topics/media/index.jd +++ b/docs/html/guide/topics/media/index.jd @@ -9,7 +9,7 @@ page.title=Audio and Video
  • Audio playback and record
  • Video playback
  • Handles data from raw resources, files, streams
  • -
  • Built-in codecs for a variety of media. See Android 1.0 Media Formats
  • +
  • Built-in codecs for a variety of media. See Android Supported Media Formats
  • Key classes

    diff --git a/docs/html/guide/topics/media/media.jd b/docs/html/guide/topics/media/media.jd deleted file mode 100644 index 463686d367ae..000000000000 --- a/docs/html/guide/topics/media/media.jd +++ /dev/null @@ -1,172 +0,0 @@ -page.title=Media Capabilities -@jd:body - - - -

    The Android platform offers built-in encoding/decoding for a variety of common media types, -so that you can easily integrate audio, video, and images into your applications. Accessing the platform's media -capabilities is fairly straightforward &mdash you do so using the same intents and -activities mechanism that the rest of Android uses.

    - -

    Android lets you play audio and video from several types of data sources. You can play audio or video from media files stored in the application's resources (raw resources), from standalone files in the filesystem, or from a data stream arriving over a network connection. To play audio or video from your application, use the {@link android.media.MediaPlayer} class.

    - -

    The platform also lets you record audio, where supported by the mobile device hardware. Recording of video is not currently supported, but is planned for a future release. To record audio, use the -{@link android.media.MediaRecorder} class. Note that the emulator doesn't have hardware to capture audio, but actual mobile devices are likely to provide these capabilities that you can access through MediaRecorder.

    - -

    For a list of the media formats for which Android offers built-in support, see the Android Media Formats appendix.

    - -

    Playing Audio and Video

    -

    Media can be played from anywhere: from a raw resource, from a file from the system, -or from an available network (URL).

    - -

    You can play back the audio data only to the standard -output device; currently, that is the mobile device speaker or Bluetooth headset. You -cannot play sound files in the conversation audio.

    - -

    Playing from a Raw Resource

    -

    Perhaps the most common thing to want to do is play back media (notably sound) -within your own applications. Doing this is easy:

    -
      -
    1. Put the sound (or other media resource) file into the res/raw - folder of your project, where the Eclipse plugin (or aapt) will find it and - make it into a resource that can be referenced from your R class
    2. -
    3. Create an instance of MediaPlayer, referencing that resource using - {@link android.media.MediaPlayer#create MediaPlayer.create}, and then call - {@link android.media.MediaPlayer#start() start()} on the instance:

    4. -
    -
    -    MediaPlayer mp = MediaPlayer.create(context, R.raw.sound_file_1);
    -    mp.start();
    -
    -

    To stop playback, call {@link android.media.MediaPlayer#stop() stop()}. If -you wish to later replay the media, then you must -{@link android.media.MediaPlayer#reset() reset()} and -{@link android.media.MediaPlayer#prepare() prepare()} the MediaPlayer object -before calling {@link android.media.MediaPlayer#start() start()} again. -(create() calls prepare() the first time.)

    -

    To pause playback, call {@link android.media.MediaPlayer#pause() pause()}. -Resume playback from where you paused with -{@link android.media.MediaPlayer#start() start()}.

    - -

    Playing from a File or Stream

    -

    You can play back media files from the filesystem or a web URL:

    -
      -
    1. Create an instance of the MediaPlayer using new
    2. -
    3. Call {@link android.media.MediaPlayer#setDataSource setDataSource()} - with a String containing the path (local filesystem or URL) - to the file you want to play
    4. -
    5. First {@link android.media.MediaPlayer#prepare prepare()} then - {@link android.media.MediaPlayer#start() start()} on the instance:

    6. -
    -
    -    MediaPlayer mp = new MediaPlayer();
    -    mp.setDataSource(PATH_TO_FILE);
    -    mp.prepare();
    -    mp.start();
    -
    -

    {@link android.media.MediaPlayer#stop() stop()} and -{@link android.media.MediaPlayer#pause() pause()} work the same as discussed -above.

    -

    Note: It is possible that mp could be - null, so good code should null check after the new. - Also, IllegalArgumentException and IOException either - need to be caught or passed on when using setDataSource(), since - the file you are referencing may not exist.

    -

    Note: -If you're passing a URL to an online media file, the file must be capable of -progressive download.

    - -

    Recording Media Resources

    -

    Recording media is a little more involved than playing it back, as you would -probably expect, but it is still fairly simple. There is just a little more set -up to do

    -
      -
    1. Create a new instance of {@link android.media.MediaRecorder - android.media.MediaRecorder} using new
    2. -
    3. Create a new instance of {@link android.content.ContentValues - android.content.ContentValues} and put in some standard properties like - TITLE, TIMESTAMP, and the all important - MIME_TYPE
    4. -
    5. Create a file path for the data to go to (you can use {@link - android.content.ContentResolver android.content.ContentResolver} to - create an entry in the Content database and get it to assign a path - automatically which you can then use)
    6. -
    7. Set the audio source using {@link android.media.MediaRecorder#setAudioSource - MediaRecorder.setAudioSource()}. You will probably want to use - MediaRecorder.AudioSource.MIC
    8. -
    9. Set output file format using {@link - android.media.MediaRecorder#setOutputFormat MediaRecorder.setOutputFormat()} -
    10. -
    11. Set the audio encoder using - {@link android.media.MediaRecorder#setAudioEncoder MediaRecorder.setAudioEncoder()} -
    12. -
    13. Finally, {@link android.media.MediaRecorder#prepare prepare()} and - {@link android.media.MediaRecorder#start start()} the recording. - {@link android.media.MediaRecorder#stop stop()} and - {@link android.media.MediaRecorder#release release()} when you are done
    14. -
    -

    Here is a code example that will hopefully help fill in the gaps:

    -

    Start Recording

    -
    -    recorder = new MediaRecorder();
    -    ContentValues values = new ContentValues(3);
    -
    -    values.put(MediaStore.MediaColumns.TITLE, SOME_NAME_HERE);
    -    values.put(MediaStore.MediaColumns.TIMESTAMP, System.currentTimeMillis());
    -    values.put(MediaStore.MediaColumns.MIME_TYPE, recorder.getMimeContentType());
    -    
    -    ContentResolver contentResolver = new ContentResolver();
    -    
    -    Uri base = MediaStore.Audio.INTERNAL_CONTENT_URI;
    -    Uri newUri = contentResolver.insert(base, values);
    -    
    -    if (newUri == null) {
    -        // need to handle exception here - we were not able to create a new
    -        // content entry
    -    }
    -    
    -    String path = contentResolver.getDataFilePath(newUri);
    -
    -    // could use setPreviewDisplay() to display a preview to suitable View here
    -    
    -    recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    -    recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
    -    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
    -    recorder.setOutputFile(path);
    -    
    -    recorder.prepare();
    -    recorder.start();
    -
    -

    Stop Recording

    -
    -    recorder.stop();
    -    recorder.release();
    -
    - -- cgit v1.2.3-59-g8ed1b From e1d9b55f807f0972ca35c5f24786b1ab27d1d876 Mon Sep 17 00:00:00 2001 From: Dirk Dougherty <> Date: Tue, 21 Apr 2009 20:39:18 -0700 Subject: AI 147336: Remove stuff relating to the Maps ext library from the docs. Leave a pointer over to code.google.com. BUG=1790234 Automated import of CL 147336 --- docs/html/guide/topics/location/geo/mapkey.jd | 210 ------------- docs/html/guide/topics/location/index.jd | 134 ++++---- docs/html/guide/tutorials/views/hello-mapview.jd | 26 ++ docs/html/index.jd | 2 +- docs/html/maps-api-signup.html | 369 ----------------------- docs/html/maps-api-tos.pdf | Bin 97303 -> 0 bytes 6 files changed, 110 insertions(+), 631 deletions(-) delete mode 100644 docs/html/guide/topics/location/geo/mapkey.jd delete mode 100644 docs/html/maps-api-signup.html delete mode 100644 docs/html/maps-api-tos.pdf diff --git a/docs/html/guide/topics/location/geo/mapkey.jd b/docs/html/guide/topics/location/geo/mapkey.jd deleted file mode 100644 index 9aa824c1d61b..000000000000 --- a/docs/html/guide/topics/location/geo/mapkey.jd +++ /dev/null @@ -1,210 +0,0 @@ -page.title=Obtaining a Maps API Key -@jd:body - - - -

    com.google.android.maps.MapView is a very useful class that lets you easily integrate Google Maps into your application. It provides built-in map downloading, rendering, and caching of Maps tiles, as well as a variety of display options and controls. It provides a wrapper around the Google Maps API that lets your application request and manipulate Google Maps data through class methods, and it lets you work with Maps data as you would other types of Views.

    - -

    Because MapView gives you access to Google Maps data, you need to register with the Google Maps service and agree to the applicable Terms of Service before your MapView will be able to obtain data from Google Maps. This will apply whether you are developing your application on the emulator or preparing your application for deployment to mobile devices.

    - -

    Registering for a Maps API Key is simple, free, and has two parts:

    - -
      -
    1. Registering the MD5 fingerprint of the certificate that you will use to sign your application. The Maps registration service then provides you a Maps API Key that is associated with your application's signer certificate.
    2. -
    3. Adding a reference to the Maps API Key in each MapView, whether declared in XML or instantiated directly from code. You can use the same Maps API Key for any MapView in any Android application, provided that the application is signed with the certificate whose fingerprint you registered with the service.
    4. -
    - -

    During registration, you also need to agree to the Maps API Terms of Service, which describe how your application can use the Maps data. In general, the terms of service are permissive and place few restrictions on how you can use the data. For example, the terms allow you to build "friend finder" type applications.

    - -

    The sections below describe how to obtain your Maps API Key and how to reference it from your MapView elements.

    - - - -

    Overview

    - -

    MapView objects are views that display Maps tiles downloaded from the Google Maps service. To ensure that applications use Maps data in an appropriate manner, the Google Maps service requires application developers to register with the service, agreeing to the Terms of Service and supplying an MD5 fingerprint of the certificate(s) that they will use to sign applications. For each registered certificate fingerprint, the service then provides the developer with a Maps API Key — an alphanumeric string that uniquely identifies the certificate and developer registered with the service.

    - -

    The Google Maps service also requires that each MapView identify itself to the service using a Maps API Key. Before providing Maps tiles to a MapView, the service checks the Maps API Key supplied by the MapView to ensure that it:

    -
      -
    • References a certificate/developer registered with the service, and
    • -
    • References a certificate that matches the certificate with which the application (containing the MapView) was signed.
    • -
    - -

    Unless both conditions are met, the service does not provide Maps tiles to the MapView.

    - -

    Each MapView object in your application must reference a Maps API Key. Since the Key is associated with a certificate, all Mapview elements in an application should reference the same Key. Going a step further, all MapView elements in all applications that you sign with the same certificate should reference the same Key.

    - -

    On the other hand, you can register for multiple Maps API Keys, each being associated with a specific certificate. You would want to do this if, for example, you were developing several independent applications that you will sign using different certificates. In this case, note that all MapView elements in a given application can reference the same Maps API Key, but must reference the Key that is associated with the certificate used to sign the application.

    - -

    Because MapView elements must refer to a Maps API Key, you need to register your certificate and receive a Key before you can make use of MapView elements in your application. To make it easier for you to get started using MapView elements, you are welcome to register the debug certificate generated by the SDK tools and receive a temporary Maps API Key. The details of how to do that are given below.

    - -

    When you are preparing to release your application, however, note that you must sign your application with a suitable cryptographic key, rather than the SDK debug key. That means that you will also need to register your application's release certificate with the Google Maps service. After you've done so, you will receive a new Maps API Key that is uniquely associated with your release certificate. To enable the MapView elements in your application to work after release, you must remember to change the Maps API Key for all MapViews in your application so that they refer to the Key associated with your release certificate (rather than your debug certificate).

    - -

    To summarize, the important points to understand about MapViews and the Maps API Key are:

    - -
      -
    • To display Maps data in a MapView, you need to register for a Maps API Key
    • -
    • Each Maps API Key is uniquely associated with a specific certificate, based on an MD5 fingerprint of the certificate
    • -
    • Each MapView must reference a Maps API Key, and the Key referenced must be registered to the certificate used to sign the application
    • -
    • All MapView elements in an application can reference the same Maps API Key
    • -
    • You can register multiple certificates under your developer identity
    • -
    • You can get a temporary Maps API Key based on your debug certificate, but before you publish your application, you must register for a new Key based on your release certificate and update references in your MapViews accordingly
    • -
    - -

    Getting the MD5 Fingerprint of Your Signing Certificate

    - - - -

    To register for a Maps API Key, you need to provide an MD5 fingerprint of the certificate that you will use to sign your application.

    - -

    Before you visit the registration page, use Keytool to generate the fingerprint of the appropriate certificate. - -

    First, determine which key you will use to sign your application at release and make sure of the path to the keystore that contains it.

    - -

    Next, run Keytool with the -list option, against the target keystore and key alias. The table below lists the options you should use.

    - - - - - - - - - - - - - - - - - - - - - -
    Keytool OptionDescription
    -listPrint an MD5 fingerprint of a certificate.
    -keystore <keystore-name>.keystoreThe name of the keystore containing the target key.
    -storepass <password>

    A password for the -keystore.

    As a security precaution, do not include this option -in your command line unless you are working at a secure computer. -If not supplied, Keytool prompts you to enter the password. In this -way, your password is not stored in your shell history.

    -alias <alias_name>The alias for the key for which to generate the MD5 certificate fingerprint.
    -keypass <password>

    The password for the key.

    -

    As a security precaution, do not include this option -in your command line unless you are working at a secure computer. -If not supplied, Keytool prompts you to enter the password. In this -way, your password is not stored in your shell history.

    - -

    Here's an example of a Keytool command that generates an MD5 certificate fingerprint for the key alias_name in the keystore my-release-key.keystore:

    - -
    $ keytool -list -alias alias_name -keystore my-release-key.keystore
    - -

    Keytool will prompt you to enter passwords for the keystore and key. As output of the command, Keytool prints the fingerprint to the shell. For example:

    - -
    Certificate fingerprint (MD5): 94:1E:43:49:87:73:BB:E6:A6:88:D7:20:F1:8E:B5:98
    - -

    Note that, if you happen to forget your Maps API Key, you can repeat the process described above and register the fingerprint again. The server will give you the same key for the specified certificate fingerprint.

    - -

    Once you have the fingerprint, you can go to the Maps API registration site, described next.

    - -

    Getting the MD5 Fingerprint of the SDK Debug Certificate

    - -

    While you are developing and debugging your application, you will likely be -sigining your application in debug mode — that is, the SDK build tools -will automatically sign your application using the debug certificate. To let -your MapView elements properly display Maps data during this period, you should -obtain a temporary Maps API Key registered to the debug certificate. To do so, -you first need to get the MD5 fingerprint of the debug certificate. When -you are ready to release your application, you must register your release -certificate with the Google Maps service and obtain a new Maps API Key. You must -then change the MapView elements in your application to reference the new API -key.

    - -

    To generate an MD5 fingerprint of the debug certificate, first locate the debug keystore. The location at which the SDK tools create the default debug keystore varies by platform:

    - -
      -
    • Windows Vista: C:\Users\<user>\AppData\Local\Android\debug.keystore
    • -
    • Windows XP: C:\Documents and Settings\<user>\Local Settings\Application Data\Android\debug.keystore
    • -
    • OS X and Linux: ~/.android/debug.keystore
    • -
    - -

    If you are using Eclipse/ADT and are unsure where the debug keystore is located, you can select Windows > Prefs > Android > Build to check the full path, which you can then paste into a file explorer to locate the directory containing the keystore.

    - -

    Once you have located the keystore, use this Keytool command to get the MD5 fingerprint of the debug certificate:

    - -
    $ keytool -list -alias androiddebugkey \
    --keystore <path_to_debug_keystore>.keystore \
    --storepass android -keypass android
    - -

    Registering the Certificate Fingerprint with the Google Maps Service

    - -

    When you are ready to register for a Maps API Key, load this page in a browser:

    - -

    http://code.google.com/android/maps-api-signup.html

    - -

    To register for a Maps API Key, follow these steps:

    - -
      -
    1. If you don't have a Google account, use the link on the page to set one up.
    2. -
    3. Read the Android Maps API Terms of Service carefully. If you agree to the terms, indicate so using the checkbox on the screen.
    4. -
    5. Paste the MD5 certificate fingerprint of the certificate that you are registering into the appropriate form field.
    6. -
    7. Click "Generate API Key"
    8. -
    - -

    The server will handle your request, associating the fingerprint with your developer identity and generating a unique Maps API Key, then returning a results page that gives you your Key string.

    - -

    To use the Maps API Key string, copy and paste it into your code as described in the next section.

    - -

    Adding the Maps API Key to your Application

    - -

    Once you've registered with the Google Maps service and have obtained a Maps API Key, you must add it to your application's MapView objects, so that the Maps server will allow them to download Maps tiles.

    - -

    For <MapView> elements declared in XML layout files, add the Maps API Key as the value of a special attribute — android:apiKey. For example: - -

    <com.google.android.maps.MapView
    - android:layout_width="fill_parent"
    - android:layout_height="fill_parent"
    - android:enabled="true"
    - android:clickable="true"
    - android:apiKey="example_Maps_ApiKey_String"
    - />
    - - -

    For MapView objects instantiated directly from code, pass the Maps API Key string as a parameter in the constructor. For example:

    - -
    mMapView = new MapView(this, "example_Maps_ApiKey_String");
    - -

    For more information about MapView, see the MapView class Documentation.

    - -

    Final Steps to Enable MapView Elements

    - -

    If you've added the Maps API Key to the MapViews in your application, here are the final steps to enable the MapView elements to run properly:

    - -
      -
    • Make sure that you added a <uses-library> element referencing the external com.google.android.maps library. The element must be a child of the <application> element in the application's manifest. For example: - -

      <manifest xmlns:android="http://schemas.android.com/apk/res/android"
      - package="com.example.package.name">
      - ...
      - <application android:name="MyApplication" >
      -   <uses-library android:name="com.google.android.maps" />
      - ...
      - </application>

    • - -
    • Sign your application with the certificate that corresponds to the Maps API Key referenced in your MapView elements.
    • - -
    - -

    Note that, when you are ready to publish your application, you must get a Maps API Key that is based on the certificate that you will use to sign the application for release. You must then change the Maps API Key string referenced by all of your MapView elements, so that they reference the new Key.

    - - - diff --git a/docs/html/guide/topics/location/index.jd b/docs/html/guide/topics/location/index.jd index 53f1d290ba64..d7a8ff27585f 100644 --- a/docs/html/guide/topics/location/index.jd +++ b/docs/html/guide/topics/location/index.jd @@ -1,35 +1,43 @@ -page.title=Location +page.title=Location and Maps @jd:body
    +

    Location and Maps quickview

    +
      +
    • Android provides a location framework that your application can use to determine the device's location and bearing and register for updates.
    • +
    • A Google Maps external library is available that lets you display and manage Maps data.
    • +

    In this document

      -
    1. android.location
    2. -
    3. com.google.android.maps
    4. +
    5. Location Services
    6. +
    7. Google Maps External Library
    8. +
    +

    See Also

    +
      +
    1. Google APIs add-on download»
    -

    The Android SDK includes two packages that provide Android's primary support -for building location-based services: -{@link android.location} and {@link-fixme com.google.android.maps}. -Please read on below for a brief introduction to each package.

    +

    Location- and maps-based applications and services are compelling for mobile device users. You can build these capabilities into your applications using the classes of the {@link android.location} package and the Google Maps external library. The sections below provide details.

    + +

    Location Services

    -

    android.location

    +

    Android gives your applications access to the location services supported by +the device through the classes in the android.location package. The +central component of the location framework is the +{@link android.location.LocationManager} system service, which provides an API to +determine location and bearing if the underlying device (if it supports location +capabilities).

    -

    This package contains several classes related to -location services in the Android platform. Most importantly, it introduces the -{@link android.location.LocationManager} -service, which provides an API to determine location and bearing if the -underlying device (if it supports the service). The LocationManager -should not be -instantiated directly; rather, a handle to it should be retrieved via -{@link android.content.Context#getSystemService(String) -getSystemService(Context.LOCATION_SERVICE)}.

    +

    As with other system services, you do not instantiate a LocationManager directly. +Rather, you request an LocationManager instance from the system by calling +{@link android.content.Context#getSystemService(String) getSystemService(Context.LOCATION_SERVICE)}. +The method returns a handle to a new LocationManager instance.

    -

    Once your application has a handle to the LocationManager, your application +

    Once your application has a handle to a LocationManager instance, your application will be able to do three things:

      @@ -42,20 +50,20 @@ will be able to do three things:

      lat/long.
    -

    However, during initial development, you may not have access to real -data from a real location provider (Network or GPS). So it may be necessary to -spoof some data for your application, with some mock location data.

    +

    However, during initial development in the emulator, you may not have access to real +data from a real location provider (Network or GPS). In that case, it may be necessary to +spoof some data for your application using a mock location provider.

    Note: If you've used mock LocationProviders in -previous versions of the SDK (m3/m5), you can no longer provide canned LocationProviders +previous versions of the SDK, you can no longer provide canned LocationProviders in the /system/etc/location directory. These directories will be wiped during boot-up. -Please follow the new procedures below.

    - +Please follow the new procedures outlined below.

    Providing Mock Location Data

    When testing your application on the Android emulator, there are a couple different -ways to send it some spoof location data: with the DDMS tool or the "geo" command.

    +ways to send it some mock location data: you can use the DDMS tool or the "geo" command +option in the emulator console.

    Using DDMS

    With the DDMS tool, you can simulate location data a few different ways:

    @@ -67,9 +75,9 @@ ways to send it some spoof location data: with the DDMS tool or the "geo" comman

    For more information on using DDMS to spoof location data, see the Using DDMS guide. -

    Using the "geo" command

    +

    Using the "geo" command in the emulator console

    Launch your application in the Android emulator and open a terminal/console in -your SDK's /tools directory. Now you can use:

    +your SDK's /tools directory. Connect to the emulator console. Now you can use:

    • geo fix to send a fixed geo-location.

      This command accepts a longitude and latitude in decimal degrees, and an optional altitude in meters. For example:

      @@ -82,28 +90,52 @@ your SDK's /tools directory. Now you can use:

    - -

    com.google.android.maps

    - -

    This package introduces a number of classes related to -rendering, controlling, and overlaying customized information on your own -Google Mapified Activity. The most important of which is the -{@link-fixme com.google.android.maps.MapView} class, which automagically draws you a -basic Google Map when you add a MapView to your layout. Note that, if you -want to do so, then your Activity that handles the -MapView must extend {@link-fixme com.google.android.maps.MapActivity}.

    - -

    Also note that you must obtain a MapView API Key from the Google Maps -service, before your MapView can load maps data. For more information, see -Obtaining a MapView API Key.

    - -

    Once you've created a MapView, you'll probably want to use -{@link-fixme com.google.android.maps.MapView#getController()} to -retrieve a {@link-fixme com.google.android.maps.MapController}, for controlling and -animating the map, and {@link-fixme com.google.android.maps.ItemizedOverlay} to -draw {@link-fixme com.google.android.maps.Overlay}s and other information on the Map.

    - -

    This is not a standard package in the Android library. In order to use it, you must add the following node to your Android Manifest file, as a child of the -<application> element:

    -
    <uses-library android:name="com.google.android.maps" />
    +

    For information about how to connect to the emulator console, see +Using the Emulator Console.

    + +

    Google Maps External Library

    + +

    To make it easier for you to add powerful mapping capabilities to your +application, Google provides a Maps external library that includes the +com.google.android.maps package. The classes of the com.google.android.maps +package offer built-in downloading, rendering, and caching of Maps tiles, as +well as a variety of display options and controls.

    + +

    The key class in the Maps package is +com.google.android.maps.MapView, a subclass of +{@link android.view.ViewGroup ViewGroup}. A MapView displays a map with data obtained +from the Google Maps service. When the MapView has focus, it will capture +keypresses and touch gestures to pan and zoom the map automatically, including +handling network requests for additional maps tiles. It also provides all of the +UI elements necessary for users to control the map. Your application can also +use MapView class methods to control the MapView programmatically and draw a +number of Overlay types on top of the map.

    + +

    In general, the MapView class provides a wrapper around the Google Maps API +that lets your application manipulate Google Maps data through class methods, +and it lets you work with Maps data as you would other types of Views.

    + +

    The Maps external library is not part of the standard Android library, so it +may not be present on some compliant Android-powered devices (although it is +likely to be present on most devices). Similarly, the Maps external library is +not included in the standard Android library provided in the SDK. So that you +can develop using the classes of the com.google.android.maps package, the Maps +external library is made available to you as part of the Google APIs add-on for +the Android SDK.

    + +

    To learn more about the Maps external library and how to download and use the +Google APIs add-on, visit

    + +

    http://code.google.com/android/add-ons/google-apis

    + +

    For your convenience, the Google APIs add-on is also included in the Android +SDK.

    + +

    Note: In order to display Google Maps data in a +MapView, you must register with the Google Maps service and obtain a Maps API +Key. For information about how to get a Maps API Key, see Obtaining +a Maps API Key.

    diff --git a/docs/html/guide/tutorials/views/hello-mapview.jd b/docs/html/guide/tutorials/views/hello-mapview.jd index 976b8ab42e50..30b92c46eee9 100644 --- a/docs/html/guide/tutorials/views/hello-mapview.jd +++ b/docs/html/guide/tutorials/views/hello-mapview.jd @@ -3,6 +3,32 @@ parent.title=Hello, Views parent.link=index.html @jd:body +
    +

    This tutorial requires that you have the Google Maps external library +installed in your SDK environment. By default the Android 1.5 SDK includes the +Google APIs add-on, which in turn includes the Maps external library. If you +don't have the Google APIs SDK add-on, you can download it from this +location:

    + +

    http://code.google.com/android/add-ons/google-apis

    + +

    The Google APIs add-on requires Android 1.5 SDK or later release. After +installing the add-on in your SDK, set your project properties to use the build +target called "Google APIs Add-on". See the instructions for setting a build +target in Developing in +Eclipse with ADT or Developing in Other IDEs, +as appropriate for your environment.

    + +

    You will also need to use the android tool to set up an AVD that uses the +Google APIs deployment target. See Android Virtual Devices for +more information. Once you have set up your environment, you will be able to +build and run the project described in this tutorial

    + +
    +

    A MapView allows you to create your own map-viewing Activity. First, we'll create a simple Activity that can view and navigate a map. Then we will add some overlay items.

    diff --git a/docs/html/index.jd b/docs/html/index.jd index aea229923ae1..cc609a3d681b 100644 --- a/docs/html/index.jd +++ b/docs/html/index.jd @@ -128,7 +128,7 @@ home=true 'name':"Maps API Key", 'img':"maps-large.png", 'title':"Maps API Key", - 'desc':"

    If you're writing an Android application that uses Google Maps (with MapView), you must register your application to obtain a Maps API Key. Without the key, your maps application will not work on Android devices. Obtaining a key requires just a couple of steps.

    Learn how to get a Maps API Key

    " + 'desc':"

    If you're writing an Android application that uses Google Maps (with MapView), you must register your application to obtain a Maps API Key. Without the key, your maps application will not work on Android devices. Obtaining a key requires just a couple of steps.

    Learn more...

    " }, 'market': { diff --git a/docs/html/maps-api-signup.html b/docs/html/maps-api-signup.html deleted file mode 100644 index a604b2ad0eb5..000000000000 --- a/docs/html/maps-api-signup.html +++ /dev/null @@ -1,369 +0,0 @@ - - - - - -Sign Up for the Android Maps API - Android Maps API - Google Code - - - - - - - - - - - -
    - - -
    - - -
    - - -
    - - -
    -

    Android Maps API Key Signup

    - -
    - - -
    - - - -
    -

    Sign Up for the Android Maps API

    - -

    The Android Maps API lets you embed -Google -Maps in your own Android applications. A single Maps API key is -valid for all applications signed by a single certificate. See -this documentation -page for more information about application signing. To get a -Maps API key for your certificate, you will need to provide its the certificate's -fingerprint. This can be obtained using Keytool. For example, on -Linux or Mac OSX, you would examine your debug keystore like this: -

    $ keytool -list -keystore ~/.android/debug.keystore
    -...
    -Certificate fingerprint (MD5): 94:1E:43:49:87:73:BB:E6:A6:88:D7:20:F1:8E:B5:98
    -
    - -

    If you use different keys for signing development builds and -release builds, you will need to obtain a separate Maps API key for -each certificate. Each key will only work in applications signed by -the corresponding certificate.

    - -

    You also need a Google Account -to get a Maps API key, and your API key will be connected to your Google Account.

    -
    -
    - -
    - -
    -
    - - - - - - - - - - - - - -
    I have read and agree with the terms and conditions (printable version)
    - My certificate's MD5 fingerprint: - -
    -
    -
    - - - - -
    -
    - -
    - - - - - diff --git a/docs/html/maps-api-tos.pdf b/docs/html/maps-api-tos.pdf deleted file mode 100644 index 80c28363a021..000000000000 Binary files a/docs/html/maps-api-tos.pdf and /dev/null differ -- cgit v1.2.3-59-g8ed1b From badb11354a6e5ff0fba1d29853a40275242bcc6b Mon Sep 17 00:00:00 2001 From: Tammo Spalink Date: Tue, 21 Apr 2009 14:54:18 +0800 Subject: remove superfluous lines --- .../android/internal/telephony/cdma/CdmaDataConnectionTracker.java | 1 - .../android/internal/telephony/gsm/GsmDataConnectionTracker.java | 7 ------- 2 files changed, 8 deletions(-) diff --git a/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java b/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java index 87e8b6207d37..e0a84abb52e0 100644 --- a/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java +++ b/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java @@ -825,7 +825,6 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker { private void destroyAllDataConnectionList() { if(dataConnectionList != null) { - CdmaDataConnection pdp; dataConnectionList.removeAll(dataConnectionList); } } diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java index 9ca46108dcd5..b889704102be 100644 --- a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java +++ b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java @@ -154,13 +154,6 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker { private static final String INTENT_RECONNECT_ALARM = "com.android.internal.telephony.gprs-reconnect"; private static final String INTENT_RECONNECT_ALARM_EXTRA_REASON = "reason"; - //***** Tag IDs for EventLog - private static final int EVENT_LOG_RADIO_RESET_COUNTDOWN_TRIGGERED = 50101; - private static final int EVENT_LOG_RADIO_RESET = 50102; - private static final int EVENT_LOG_PDP_RESET = 50103; - private static final int EVENT_LOG_REREGISTER_NETWORK = 50104; - private static final int EVENT_LOG_RADIO_PDP_SETUP_FAIL = 50105; - static final Uri PREFERAPN_URI = Uri.parse("content://telephony/carriers/preferapn"); static final String APN_ID = "apn_id"; private boolean canSetPreferApn = false; -- cgit v1.2.3-59-g8ed1b From e290ed0f610422fa0420b1fbbf37bb1afd04ab82 Mon Sep 17 00:00:00 2001 From: Tammo Spalink Date: Tue, 21 Apr 2009 15:14:49 +0800 Subject: normalize the DATA_STATE_RADIO_OFF event log id definition Was this different intentionally? It looks internal, and with very limited usage, and so easy to bring in line with the others... --- telephony/java/com/android/internal/telephony/ServiceStateTracker.java | 2 -- telephony/java/com/android/internal/telephony/TelephonyEventLog.java | 2 +- .../com/android/internal/telephony/cdma/CdmaServiceStateTracker.java | 2 +- .../java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java | 2 +- 4 files changed, 3 insertions(+), 5 deletions(-) diff --git a/telephony/java/com/android/internal/telephony/ServiceStateTracker.java b/telephony/java/com/android/internal/telephony/ServiceStateTracker.java index a4bf0dd7ce24..28a996870149 100644 --- a/telephony/java/com/android/internal/telephony/ServiceStateTracker.java +++ b/telephony/java/com/android/internal/telephony/ServiceStateTracker.java @@ -114,7 +114,6 @@ public abstract class ServiceStateTracker extends Handler { // Event Log Tags protected static final int EVENT_LOG_CGREG_FAIL = 50107; - protected static final int EVENT_DATA_STATE_RADIO_OFF = 50108; //***** Time Zones protected static final String TIMEZONE_PROPERTY = "persist.sys.timezone"; @@ -241,4 +240,3 @@ public abstract class ServiceStateTracker extends Handler { pollingContext = new int[1]; } } - diff --git a/telephony/java/com/android/internal/telephony/TelephonyEventLog.java b/telephony/java/com/android/internal/telephony/TelephonyEventLog.java index 1ef3c6cb1106..97f9d7d450cf 100644 --- a/telephony/java/com/android/internal/telephony/TelephonyEventLog.java +++ b/telephony/java/com/android/internal/telephony/TelephonyEventLog.java @@ -28,6 +28,6 @@ public final class TelephonyEventLog { public static final int EVENT_LOG_RADIO_PDP_SETUP_FAIL = 50105; public static final int EVENT_LOG_CALL_DROP = 50106; public static final int EVENT_LOG_CGREG_FAIL = 50107; - public static final int EVENT_DATA_STATE_RADIO_OFF = 50108; + public static final int EVENT_LOG_DATA_STATE_RADIO_OFF = 50108; public static final int EVENT_LOG_PDP_NETWORK_DROP = 50109; } diff --git a/telephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java b/telephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java index ca40e762a9f4..6f344b99b79b 100644 --- a/telephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java +++ b/telephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java @@ -388,7 +388,7 @@ final class CdmaServiceStateTracker extends ServiceStateTracker { EventLog.List val = new EventLog.List( dcTracker.getStateInString(), (dcTracker.getAnyDataEnabled() ? 1 : 0) ); - EventLog.writeEvent(TelephonyEventLog.EVENT_DATA_STATE_RADIO_OFF, val); + EventLog.writeEvent(TelephonyEventLog.EVENT_LOG_DATA_STATE_RADIO_OFF, val); } dcTracker.cleanConnectionBeforeRadioOff(); diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java b/telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java index 8ecf2454cab9..9ab1002d646f 100644 --- a/telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java +++ b/telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java @@ -539,7 +539,7 @@ final class GsmServiceStateTracker extends ServiceStateTracker { EventLog.List val = new EventLog.List( dcTracker.getStateInString(), (dcTracker.getAnyDataEnabled() ? 1 : 0) ); - EventLog.writeEvent(TelephonyEventLog.EVENT_DATA_STATE_RADIO_OFF, val); + EventLog.writeEvent(TelephonyEventLog.EVENT_LOG_DATA_STATE_RADIO_OFF, val); } dcTracker.cleanConnectionBeforeRadioOff(); -- cgit v1.2.3-59-g8ed1b From a0e3cd3853da1d14da4918c49d25128622cf0610 Mon Sep 17 00:00:00 2001 From: Mike Lockwood Date: Tue, 21 Apr 2009 21:27:33 -0700 Subject: Fix timing problem that was introduced when we removed location provider polling The wake lock was not being held until after we enabled location tracking, so the check to see if the wake lock was held before propogating a new location prevented us from receiving a network location as soon as we enabled the provider. This check is not necessary anyway, so this change removes it. Signed-off-by: Mike Lockwood --- services/java/com/android/server/LocationManagerService.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/services/java/com/android/server/LocationManagerService.java b/services/java/com/android/server/LocationManagerService.java index 83108f87c12e..5e079d46f7c6 100644 --- a/services/java/com/android/server/LocationManagerService.java +++ b/services/java/com/android/server/LocationManagerService.java @@ -1584,10 +1584,7 @@ public class LocationManagerService extends ILocationManager.Stub { return; } - // Process the location fix if we're holding a wakelock - if (mWakeLockAcquireTime != 0) { - handleLocationChangedLocked(location); - } + handleLocationChangedLocked(location); if ((mWakeLockAcquireTime != 0) && (SystemClock.elapsedRealtime() - mWakeLockAcquireTime -- cgit v1.2.3-59-g8ed1b From 1876edb291591d54702f6a9b52581efdd7350ecd Mon Sep 17 00:00:00 2001 From: Dirk Dougherty <> Date: Wed, 22 Apr 2009 00:46:36 -0700 Subject: AI 147305: am: CL 147303 am: CL 147297 Update Android 1.5 SDK Download, Release Notes, Version Notes, Highlights Please let me know if you have other "known issues", "resolved issues", or "highlights". Also, note that the installing and upgrading docs are being updated in a different CL, so the new version is not displayed on my staging server. Original author: ddougherty Merged from: //branches/cupcake/... Original author: android-build Automated import of CL 147305 --- docs/html/sdk/1.5_r1/index.jd | 45 ++++-- docs/html/sdk/RELEASENOTES.jd | 229 +++++++++++++++++++++++++++-- docs/html/sdk/adt_download.jd | 17 ++- docs/html/sdk/android-1.5-highlights.jd | 205 ++++++++++++++++++++++++++ docs/html/sdk/android-1.5.jd | 245 +++++++++++++++++++++++++++++++- docs/html/sdk/sdk_toc.cs | 17 +-- 6 files changed, 717 insertions(+), 41 deletions(-) create mode 100644 docs/html/sdk/android-1.5-highlights.jd diff --git a/docs/html/sdk/1.5_r1/index.jd b/docs/html/sdk/1.5_r1/index.jd index 412887a95257..834ab7991959 100644 --- a/docs/html/sdk/1.5_r1/index.jd +++ b/docs/html/sdk/1.5_r1/index.jd @@ -2,51 +2,72 @@ sdk.version=1.5 sdk.rel.id=1 sdk.date=April 2009 -sdk.win_download= +sdk.win_download=android-sdk-windows-1.5_r1.zip sdk.win_bytes= sdk.win_checksum= -sdk.mac_download= +sdk.mac_download=android-sdk-mac_x86-1.5_r1.zip sdk.mac_bytes= sdk.mac_checksum= -sdk.linux_download= +sdk.linux_download=android-sdk-linux_x86-1.5_r1.zip sdk.linux_bytes= sdk.linux_checksum= -page.title=Download Android SDK +page.title=Android 1.5 SDK, Release 1 @jd:body

    SDK Contents

    Development tools

    -

    The SDK includes a variety of tools for developing and debugging application code and designing an application UI. You can read about the tools in the +

    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 included in this SDK includes many updates from that provided in the previous SDK and requires you to migrate your applications to the new development environment. For details, see the Upgrading the SDK document.

    +

    The tools package in this SDK includes updates from those provided in the previous SDK. The tools also require a different project structure. To use the new tools, you need to migrate your applications to the new development environment. For more information about how to migrate, see Upgrading the SDK. -

    System Images

    +

    For more information about the new tools features, see the SDK Release Notes. -

    The Android system images listed below are included in this SDK. For more information about a system image — features, applications included, localizations, API changes, and so on — see its Version Notes.

    +

    Android Platforms

    + +

    This SDK includes multiple Android platform versions that you 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.

    - + - + - + + + +
    System ImageAPI LevelNotesDescriptionPlatformAPI LevelNotesDescription
    Android 1.5 3 Version NotesIncludes a set of standard development applications. Includes 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).
    Android 1.1 2 Version NotesIncludes a set of standard development applications. Includes a compliant Android 1.1 library and system image with a set of development applications. Also includes the Maps external library (due to legacy build system issues). +external library.
    + +

    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-on listed below. The Android system API Level required by the add-on is noted.

    + + + + + + + + +
    Add-OnAPI LevelNotesDescription
    Google APIs3 Includes the com.google.android.maps external library, a compliant +system image, a {@link android.location.Geocoder Geocoder} +backend service implementation, documentation, and sample code.
    @@ -55,7 +76,6 @@ page.title=Download Android SDK

    You can look at a variety of tutorials and samples in the Dev Guide and access the sample code itself in the <sdk>/platforms/android-1.5/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.

    - diff --git a/docs/html/sdk/RELEASENOTES.jd b/docs/html/sdk/RELEASENOTES.jd index bad71a2a59da..c6a887a44662 100644 --- a/docs/html/sdk/RELEASENOTES.jd +++ b/docs/html/sdk/RELEASENOTES.jd @@ -1,21 +1,209 @@ page.title=SDK Release Notes @jd:body -

    This document provides version-specific information about Android SDK releases. For the latest known issues, please ensure that you're viewing this page at: http://developer.android.com/sdk/RELEASENOTES.html.

    +

    This document provides version-specific information about Android SDK +releases. For the latest known issues, please ensure that you're viewing this +page at: +http://developer.android.com/sdk/RELEASENOTES.html.

    + +

    Android 1.5 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 many new features for developers. Highlights of the +changes include:

    + +
      +
    • Multiple versions of the Android platform are included (Android 1.1, +Android 1.5). The tools are updated to let you deploy your application +on any platform in the SDK, which helps you ensure forward-compitility and, +if applicable, backward-compatibility.
    • +
    • Introduces Android +Virtual Devices — (AVD) configurations of options that you +run in the emulator to better model actual devices. Each AVD gets its +own dedicated storage area, making it much easier to work with multiple emulators +that are running concurrently.
    • +
    • Support for SDK add-ons, which extend the +Android SDK to give you access to one or more external Android libraries and/or +a customized (but compliant) system image that can run in the emulator.
    • +
    • The new Eclipse ADT plugin (version 0.9.0) offers new Wizards to let you +create projects targetted for specific Android configurations, generate XML +resources (such as layouts, animations, and menus), generate alternate layouts, +and export and sign your application for publishing.
    • +
    • Improved JUnit support in ADT
    • +
    • Easier profiling of performance
    • +
    • Easier management of localized applications. You can now include or +exclude locale resources when building your APK from a single +Android project.
    • +
    • A new tool called "android" replaces the activitycreator script.
    • +
    + +

    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.

    + +

    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. + +

    SDK Add-Ons

    + +

    This version of the SDK introduces support for SDK add-ons, which extend the +Android SDK to give you access to one or more external Android libraries and/or +a customized (but compliant) system image that can run in the emulator. The +purpose of an SDK add-on is to give you a way to develop applications for a +specific actual device (or family of devices) that extends the APIs available to +Android applications through external libraries or system customizations.

    + +

    From the perspective of your Android development environment, an SDK add-on +is similar to any of the Android platform targets included in the SDK — it +includes an external library, a system image, as well as custom emulator skins +and system properties. The add-on differs in that the Android platform it +provides may include customized UI, resources, or behaviors, a different set of +preinstalled applications, or other similar modifications. + +

    The SDK includes a single SDK add-on — the Google APIs add-on. The +Google APIs add-on gives your application access to the com.google.android.maps +external library that is included on many (if not most) Android-powered devices. +The Google APIs add-on also includes a {@link android.location.Geocoder Geocoder} +backend service implementation. For more information, see the "Maps External +Library" section below.

    + +

    Android Virtual Devices (AVDs)

    + +

    The SDK now gives you the capability to compile an application against any +one of several system targets, then run it in the emulator on top of any +compatible system image. There are two types of targets:

    +
      +
    • Targets that represent core Android platform versions.
    • +
    • Targets that are SDK add-ons, which typically provide application access to +one or more external libraries and/or a customized (but compliant) system image +that can run in the emulator. +
    + +

    A new tool called "android" lets you discover what targets and AVDs are +available to use.

    + +

    For more information about AVDs, see Android Virtual Devices + +

    Other Notes

    + +

    Maps External Library

    + +

    In previous versions of the SDK, the com.google.android.maps package was +included in the standard Android library and system image. In the Android 1.5 +SDK, that is not the case. The Android 1.5 library and system image do not +include the Maps external library (com.google.android.maps). However, the Maps +external library is available as part of the Google APIs add-on for the Android +SDK, downloadable from this location:

    + +

    http://code.google.com +/android/add-ons/google-apis

    + +

    For your convenience, the Google APIs add-on is included in the SDK.

    + +

    For information about how to register for a Maps API Key, see + +Obtaining a Maps API Key.

    + +

    USB Drivers 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. For your convenience, the Windows version of the Android SDK includes +these USB drivers that you can install, to let you develop on the device:

    + +
      +
    • USB driver for 32-bit XP and Vista
    • +
    • USB driver for 64-bit Vista only
    • +
    + +

    The USB driver files are located in the +<SDK>/usb_driver directory. For details and +installation instructions, see Setting Up a +Device for Development.

    +

    + +

    Resolved Issues, Changes

    + +

    Media

    +
      +
    • Updated documentation for {@link android.media.SoundPool +android.media.SoundPool}
    • +
    • {@link android.webkit.WebView} objects no longer automatically save +thumbnails. The {@link android.webkit.WebView#capturePicture() capturePicture()} +method will need to be called manually.
    • +
    + +

    Known Issues

    + +

    Sensor problems in Emulator

    + +
      +
    • If your application uses the Sensor API and you are running it in the +emulator on the Android 1.5 system image, you may experience problems. Your +application may generate ANR messages or crash when using the sensors. The +problem is being investigated.
    • +
    + +

    Other

    + +
      +
    • We regret to inform developers that Android 1.5 will not include support for +the Zilog Z80 processor architecture.
    • +
    +

    Android 1.1 SDK, Release 1

    -

    This SDK provides the development tools and Android system image you need to create applications for Android-powered devices. Applications developed on this SDK will be compatible with mobile devices running the Android 1.1 platform.

    +

    This SDK provides the development tools and Android system image you need to +create applications for Android-powered devices. Applications developed on this +SDK will be compatible with mobile devices running the Android 1.1 platform. +

    -

    This release provides an updated system image (Android 1.1), updated documentation, and the same set of development tools provided in the Android 1.0 r2 SDK. The updated system image includes bug fixes and some smaller features, as well as a few minor API changes from the 1.0 version.

    +

    This release provides an updated system image (Android 1.1), updated +documentation, and the same set of development tools provided in the Android 1.0 +r2 SDK. The updated system image includes bug fixes and some smaller features, +as well as a few minor API changes from the 1.0 version.

    -

    For details about the Android 1.1 system image included in the SDK — including bug fixes, features, and API changes — please read the Android 1.1 Version Notes.

    +

    For details about the Android 1.1 system image included in the SDK — +including bug fixes, features, and API changes — please read the Android 1.1 Version Notes.

    App Versioning for Android 1.1

    -

    If you are using this SDK to build an application that is compatible only with Android-powered devices running the Android 1.1 platform, please note that you must set the the android:minSdkVersion attribute in the application's manifest to the API Level of Android 1.1 — "2".

    +

    If you are using this SDK to build an application that is compatible +only with Android-powered devices running the Android 1.1 platform, +please note that you must set the the +android:minSdkVersion attribute in the application's manifest to +the API Level of Android 1.1 — "2".

    -

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

    +

    Specifically, you specify the android:minSdkVersion attribute in +a <uses-sdk> element as a child of +<manifest> in the manifest file. When set, the attribute +looks like this:

    <manifest>
       ...
    @@ -24,13 +212,29 @@ page.title=SDK Release Notes
     </manifest>
     
    -

    By setting android:minSdkVersion in this way, you ensure that users will only be able to install your application if their devices are running the Android 1.1 platform. In turn, this ensures that your application will function properly on their devices, especially if it uses APIs introduced in Android 1.1.

    +

    By setting android:minSdkVersion in this way, you ensure that +users will only be able to install your application if their devices are running +the Android 1.1 platform. In turn, this ensures that your application will +function properly on their devices, especially if it uses APIs introduced in +Android 1.1.

    -

    If your application uses APIs introduced in Android 1.1 but does not declare <uses-sdk minSdkVersion="2" />, then it will run properly on Android 1.1 devices but not on Android 1.0 devices.

    +

    If your application uses APIs introduced in Android 1.1 but does not declare +<uses-sdk minSdkVersion="2" />, then it will run properly on +Android 1.1 devices but not on Android 1.0 devices.

    -

    If your application does not use any new APIs introduced in Android 1.1, you can indicate Android 1.0 compatibility by removing minSdkVersion or setting the attribute to "1". However, before publishing your application, you must make sure to compile your application against the Android 1.0 system image (available in the Android 1.0 SDK), to ensure that it builds and functions properly for Android 1.0 devices. You should test the application against system images corresponding to the API Levels that the application is designed to be compatible with.

    +

    If your application does not use any new APIs introduced in Android 1.1, you +can indicate Android 1.0 compatibility by removing minSdkVersion or +setting the attribute to "1". However, before publishing your application, you +must make sure to compile your application against the Android 1.0 system image +(available in the Android 1.0 SDK), to ensure that it builds and functions +properly for Android 1.0 devices. You should test the application against system +images corresponding to the API Levels that the application is designed to be +compatible with.

    -

    If you are sure your application is not using Android 1.1 APIs and has no need to use them, you might find it easier to keep working in the Android 1.0 SDK, rather than migrating to the Android 1.1 SDK and having to do additional testing.

    +

    If you are sure your application is not using Android 1.1 APIs and has no +need to use them, you might find it easier to keep working in the Android 1.0 +SDK, rather than migrating to the Android 1.1 SDK and having to do additional +testing.

    ADT Plugin Compatibility

    @@ -52,7 +256,7 @@ application on the Android 1.1 emulator for the first time.

    If you're installing the Android SDK for the first time, please see the instructions in Installing the SDK. +href="{@docRoot}sdk/1.5_r1/installing.html">Installing the SDK.

    Other Notes

    @@ -136,9 +340,6 @@ are not working in this release. - - -

    Android 1.0 SDK, Release 2

    This SDK release includes the Android 1.0 platform and application API. diff --git a/docs/html/sdk/adt_download.jd b/docs/html/sdk/adt_download.jd index 6e9eec4a2b73..6d46297830e8 100644 --- a/docs/html/sdk/adt_download.jd +++ b/docs/html/sdk/adt_download.jd @@ -26,11 +26,18 @@ page. - 0.8.0 - ADT-0.8.0.zip - 23 September 2008 - Android 1.1 SDK, Release 1
    Android 1.0 SDK, Release 1
    - Required for users of Android 1.1 SDK, Release 1 and Android 1.0 SDK, Release 1
    + 0.9.0 + ADT-0.9.0.zip +
    27 April 2009 + Android 1.5 SDK + Required for users of Android 1.5 SDK (and later releases)
    + + + 0.8.0 + ADT-0.8.0.zip +
    23 September 2008 + Android 1.1 SDK
    Android 1.0 SDK
    +
    Required for users of Android 1.1 SDK and Android 1.0 SDK
    0.7.1 diff --git a/docs/html/sdk/android-1.5-highlights.jd b/docs/html/sdk/android-1.5-highlights.jd new file mode 100644 index 000000000000..46022d159d22 --- /dev/null +++ b/docs/html/sdk/android-1.5-highlights.jd @@ -0,0 +1,205 @@ +page.title=Android 1.5 Platform Highlights +sdk.version=1.5_r1 +@jd:body + +

    +April 2009 +

    + + +

    The Android 1.5 platform introduces many new features for users and developers. +The list below provides an overview of the changes.

    + + + +

    User interface refinements

    +
      +
    • System-wide: +
        +
      • Refinement of all core UI elements
      • +
      • Animated window transitions (off by default)
      • +
      • Accelerometer-based application rotations
      • +
      +
    • +
    • UI polish for: +
        +
      • In-call experience
      • +
      • Contacts, Call log, and Favorites
      • +
      • SMS & MMS
      • +
      • Browser
      • +
      • Gmail
      • +
      • Calendar
      • +
      • Email
      • +
      • Camera & Gallery
      • +
      • Application management
      • +
      +
    • +
    + +

    Performance improvements

    + +
      +
    • Faster Camera start-up and image capture
    • +
    • Much faster acquisition of GPS location (powered by SUPL AGPS)
    • +
    • Smoother page scrolling in Browser
    • +
    • Speedier GMail conversation list scrolling
    • +
    + +

    New features

    + +
      +
    • On-screen soft keyboard +
        +
      • Works in both portrait and landscape orientation
      • +
      • Support for user installation of 3rd party keyboards
      • +
      • User dictionary for custom words
      • +
      +
    • + +
    • Home screen +
        +
      • Widgets +
          +
        • Bundled home screen widgets include: analog clock, calendar, + music player, picture frame, and search
        • +
      • +
      • Live folders
      • +
      +
    • + +
    • Camera & Gallery +
        +
      • Video recording
      • +
      • Video playback (MPEG-4 & 3GP formats)
      • +
      +
    • + +
    • Bluetooth  +
        +
      • Stereo Bluetooth support (A2DP and AVCRP profiles)
      • +
      • Auto-pairing
      • +
      • Improved handsfree experience
      • +
      +
    • + +
    • Browser +
        +
      • Updated with latest Webkit browser & Squirrelfish Javascript engines
      • +
      • Copy 'n paste in browser
      • +
      • Search within a page
      • +
      • User-selectable text-encoding
      • +
      • UI changes include: +
          +
        • Unified Go and Search box
        • +
        • Tabbed bookmarks/history/most-visited screen
        • +
        +
      • +
      +
    • + +
    • Contacts +
        +
      • Shows user picture for Favorites
      • +
      • Specific date/time stamp for events in call log
      • +
      • One-touch access to a contact card from call log event
      • +
      +
    • + +
    • System +
        +
      • New Linux kernel (version 2.6.27)
      • +
      • SD card filesystem auto-checking and repair
      • +
      • SIM Application Toolkit 1.0
      • +
      +
    • + +
    • Google applications (not available in the Android 1.5 System Image that is +included in the Android SDK) +
        +
      • View Google Talk friends' status in Contacts, SMS, MMS, GMail, and + Email applications
      • +
      • Batch actions such as archive, delete, and label on Gmail messages
      • +
      • Upload videos to Youtube
      • +
      • Upload photos on Picasa
      • +
      +
    • +
    + +

    New APIs and manifest elements

    + + diff --git a/docs/html/sdk/android-1.5.jd b/docs/html/sdk/android-1.5.jd index fff911e29096..c9ab42e01e9e 100644 --- a/docs/html/sdk/android-1.5.jd +++ b/docs/html/sdk/android-1.5.jd @@ -8,7 +8,250 @@ sys.date=April 2009 API Level: 3

    -

    Please see Download the Android 1.5 Early Look SDK for more information.

    +

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

    + + + +

    Overview

    + +

    The Android 1.5 system delivered in the SDK (as library and system image) is +the development counterpart to the Android 1.5 production system image, +deployable to Android-powered handsets starting in May 2009. The system is fully +compliant and includes no external libraries. This is the first version of the +Android SDK that does not include the Maps external library.

    + +

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

    + +

    Applications can reference a specific API Level value in their +manifest files, to indicate the minimum version of the Android system +required to run the application. To reference a minimum API Level, applications +can add a minSdkVersion attribute in their manifest files. +The value of the attribute is an integer corresponding to an API Level +identifier. Prior to installing an application, the system then checks the value of +minSdkVersion and allows the install only +if the referenced integer is less than or equal to the API Level integer stored +in the system itself.

    + +

    When you migrate your application to the new SDK, you will need to choose +the platform version against which you will compile your application. In +general, you should compile your application against the lowest possible +version of the platform that your application can support. After you determine +the lowest version, you should ensure that your application's manifest file +defines the API Level of the lowest compatible platform version in the +minSdkVersion attribute. + +

    After compiling your application, you should make sure to test it on the +platform specified in the application's minSdkVersion attribute. To +ensure forward-compatibility, you should also run the application on platforms +using a higher API Level than that used by your application. To run your +application against different platform versions in the emulator, you 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.

    + +

    If you build an application using the Android 1.5 library and your +application makes use of any APIs introduced in API Level 3, you must set the +android:minSdkVersion attribute in the application's manifest to +"3".

    + +

    Specifically, you define the android:minSdkVersion +attribute in a <uses-sdk> element as a child of +<manifest> in the manifest file. When set, the +attribute looks like this:

    + +
    <manifest>
    +  ...
    +  <uses-sdk minSdkVersion="3" />
    +  ...
    +</manifest>
    + +

    By setting android:minSdkVersion in this way, you ensure 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 will function properly on their devices. This is especially +important if your application uses APIs or system features +introduced in Android 1.5.

    + +

    If your application uses APIs introduced in Android 1.5 but does not +declare <uses-sdk minSdkVersion="3" />, then it will +run properly on Android 1.5 devices but not on Android 1.0 +devices. In the latter case, the application will crash at runtime when +it tries to use the Android 1.5 APIs.

    + +

    Conversely, if your application does not use any new APIs introduced in +Android 1.5, the application will in most cases function normally on devices +running a later version of the platform. However, if you have published +the application, you are strongly encouraged to install and test your +application on the Android 1.5 system image included in the SDK. This will +ensure a smooth transition for users, as they upgrade their devices to +the new version of the Android platform.

    + +

    Finally, if your application does not use any new APIs introduced since +Android 1.1, you can indicate general Android 1.1 compatibility by +setting the attribute to "2". If your application does not use any +new APIs introduced since Android 1.0, you can remove the attribute or +set it to "1". However, +before publishing your application, you must make sure to compile your +application against the Android library that corresponds to the application's +minSdkVeresion value.

    + +

    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
    • +
    • 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.5 system image are listed below (with +language_country/region locale descriptor).

    + +
    +
      +
    • Chinese, PRC (zh_CN)
    • +
    • Chinese, Taiwan (zh_TW)
    • +
    • Czech (cs_CZ)
    • +
    • 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, New Zealand (en_NZ)
    • +
    • English, Singapore(en_SG)
    • +
    • 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)
  • +
  • Italian, Italy (it_IT)
  • +
  • Italian, Switzerland (it_CH)
  • +
  • Japanese (ja_JP)
  • +
  • Korean (ko_KR)
  • +
  • Polish (pl_PL)
  • +
  • Russian (ru_RU)
  • +
  • Spanish (es_ES)
  • + +
    + +

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

    + + + +

    New Features

    + +

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

    + +

    API Changes

    + +

    Overview

    + +
      +
    • UI framework
    • +
        +
      • Framework for easier background/UI thread interaction
      • +
      • New SlidingDrawer widget
      • +
      • Horizontal ScrollView widget
      • +
      + +
    • Home Screen framework
    • +
        +
      • APIs for creating secure home screen widgets
      • +
      • APIs for populating live folders with custom content
      • +
      + +
    • Media framework
    • +
        +
      • Raw audio recording and playback APIs
      • +
      • Interactive MIDI playback engine
      • +
      • Video recording APIs for developers (3GP format)
      • +
      • Video and photo sharing Intents
      • +
      • Media search Intent
      • +
      +
    • Input Method framework
    • +
        +
      • Text prediction engine
      • +
      • Ability to provide downloadable IMEs to users
      • +
      +
    • Application-defined hardware requirements +

      Applications can now use a new element in their manifest files, +<uses-configuration> to indicate to the Android system what hardware +features they require in order to function properly. For example, an application +might use the element to specify that it requires a physical keyboard or a +particular navigation device, such as a trackball. Prior to installing the +application, the Android system checks the attributes defined for the +<uses-configuration> element and allows the installation to +continue only if the required hardware is present.

    • +
    • Speech recognition framework
    • +
        +
      • Support for using speech recognition libraries via Intent
      • +
      +
    • Misc API additions
    • +
        +
      • LocationManager - Applications can get location change updates via +Intent
      • +
      • WebView - Touch start/end/move/cancel DOM event support
      • +
      • SensorManager - redesigned sensor APIs
      • +
      • GLSurfaceView - convenience framework for creating OpenGL +applications
      • +
      • Broadcast Intent for app update install succeeded - for smoother app +upgrade experience
      • +
      + +
    + +

    API Change Details

    + +

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

    diff --git a/docs/html/sdk/sdk_toc.cs b/docs/html/sdk/sdk_toc.cs index 8c7a0a764fe6..1e5122ffb644 100644 --- a/docs/html/sdk/sdk_toc.cs +++ b/docs/html/sdk/sdk_toc.cs @@ -2,17 +2,17 @@
    • -

      Android 1.5 SDK, r1

      Android SDK, r

      Current SDK Release

    • -

      Android System Images

      +

      System Image Version Notes

      • Android 1.5 Version Notes
      • Android 1.1 Version Notes
      • @@ -29,8 +29,9 @@
      • Previous SDK Releases

      • Date: Wed, 22 Apr 2009 00:49:29 -0700 Subject: AI 147309: am: CL 147308 am: CL 147306 re-write the Developing in Other IDEs doc with updated information for 1.5 Original author: smain Merged from: //branches/cupcake/... Original author: android-build Automated import of CL 147309 --- docs/html/guide/developing/other-ide.jd | 487 ++++++++++++++++++++++++-------- 1 file changed, 364 insertions(+), 123 deletions(-) diff --git a/docs/html/guide/developing/other-ide.jd b/docs/html/guide/developing/other-ide.jd index 7bcb509a4f4e..5db4f8d19b22 100644 --- a/docs/html/guide/developing/other-ide.jd +++ b/docs/html/guide/developing/other-ide.jd @@ -1,167 +1,408 @@ -page.title=In Other IDEs +page.title=Developing In Other IDEs @jd:body + +

        The recommended way to develop an Android application is to use - Eclipse with the Android - Development Tools (ADT) plugin, provided in the SDK. The ADT plugin - provides editing, building,and debugging functionality integrated right into the IDE.

        +Eclipse with the ADT plugin. +The ADT plugin provides editing, building, debugging, and .apk packaging and signing functionality +integrated right into the IDE.

        -

        However, if you'd rather develop your application in another IDE, such as IntelliJ, - or use Eclipse without the ADT plugin, you can do that instead. The SDK - provides the tools you need to set up, build, and debug your application. -

        +

        However, if you'd rather develop your application in another IDE, such as IntelliJ, +or in a basic editor, such as Emacs, you can do that instead. The SDK +includes all the tools you need to set up an Android project, build it, debug it and then +package it for distribution. This document is your guide to using these tools.

        -

        Creating an Android Project

        +

        Essential Tools

        -

        The Android SDK includes activityCreator, a program that generates a number of stub files for your project, as well as a build file. You can use the program to create an Android project for new code or from existing code, such as the sample applications included in the SDK. For Linux and Mac, the SDK provides activitycreator and for Windows, activityCreator.bat, a batch script. Regardless of platform, you can use activitycreator in the same way.

        +

        When developing in IDEs or editors other than Eclipse, you'll require +familiarity with the following Android SDK tools:

        -

        To run activityCreator and create an Android project, follow these steps:

        +
        +
        android
        +
        To create/update Android projects and to create/move/delete AVDs.
        +
        Android Emulator
        +
        To run your Android applications on an emulated Android platform.
        +
        Android Debug Bridge
        +
        To interface with your emulator or connected device (install apps, + shell the device, issue commands, etc.). +
        +
        + +

        In addition to the above tools, included with the SDK, you'll use the following +open source and third-party tools:

        + +
        +
        Ant
        +
        To compile and build your Android project into an installable .apk file.
        +
        Keytool
        +
        To generate a keystore and private key, used to sign your .apk file.
        +
        Jarsigner (or similar signing tool)
        +
        To sign your .apk file with a private key generated by keytool.
        +
        + +

        In the topics that follow, you'll be introduced to each of these tools as necessary. +For more advanced operations, please read the respective documentation for each tool.

        + + +

        Creating an Android Project

        + +

        To create an Android project, you must use the android tool. When you create +a new project with android, it will generate a project directory +with some default application files, stub files, configuration files and a build file.

        -
          -
        1. In the command line, change to the tools/ directory of the SDK and create a new directory for your project files. If you are creating a project from existing code, change to the root folder of your application instead.
        2. -
        3. Run activityCreator. In the command, you must specify a fully-qualified class name as an argument. If you are creating a project for new code, the class represents the name of a stub class that the script will create. If you are creating a project from existing code, you must specify the name of one Activity class in the package. Command options for the script include: +

          Creating a new Project

          + +

          If you're starting a new project, use the android create project +command to generate all the necessary files and folders.

          + +

          To create a new Android project, open a command-line, +navigate to the tools/ directory of your SDK and run:

          +
          +android create project \
          +--target <targetID> \
          +--path /path/to/your/project \
          +--activity <your_activity_name> \
          +--package <your_package_namespace>
          +
          +
            -
          • --out <folder> which sets the output directory. By default, the output directory is the current directory. If you created a new directory for your project files, use this option to point to it.
          • -
          • --ide intellij, which generates IntelliJ IDEA project files in the newly created project
          • +
          • target is the "build target" for your application. It corresponds + 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.
          • +
          • 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 + will be created for you inside + <path_to_your_project>/src/<your_package_namespace_path>/.
          • +
          • package is the package namespace for your project, following the same rules as for + packages in the Java programming language.
          -
        4. -
        -

        Here's an example:

        +

        Here's an example:

        -~/android_linux_sdk/tools $ ./activityCreator.py --out myproject your.package.name.ActivityName
        -package: your.package.name
        -out_dir: myproject
        -activity_name: ActivityName
        -~/android_linux_sdk/tools $ 
        +android create project \ +--target 1 \ +--path ./myProject \ +--activity MyActivity \ +--package com.example.myproject + -

        The activityCreator script generates the following files and directories (but will not overwrite existing ones):

        +

        The tool generates the following files and directories:

          -
        • AndroidManifest.xml The application manifest file, synced to the specified Activity class for the project.
        • -
        • build.xml An Ant file that you can use to build/package the application.
        • -
        • src/your/package/name/ActivityName.java The Activity class you specified on input.
        • -
        • your_activity.iml, your_activity.ipr, - your_activity.iws    [only - with the -ide intelliJ flag] intelliJ project - files.
        • -
        • res/   A directory to hold resources.
        • -
        • src/    The source directory. -
        • bin/    The output directory for the build script.
        • +
        • AndroidManifest.xml - The application manifest file, + synced to the specified Activity class for the project.
        • +
        • build.xml - Build file for Ant.
        • +
        • 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.
        • +
        • src/your/package/namespace/ActivityName.java - The Activity class + you specified during project creation.
        • +
        • bin/ - Output directory for the build script.
        • +
        • gen/ - Holds Ant-generated files, such as R.java.
        • +
        • libs/ - Holds private libraries.
        • +
        • res/ - Holds project resources.
        • +
        • src/ - Holds source code.
        • +
        • tests/ - Holds a duplicate of all-of-the-above, for testing purposes.
        -

        You can now move your folder wherever you want for development, but keep in mind - that you'll have to use the adb program in the tools/ folder to - send files to the emulator, so you'll need access between your solution and - the tools/ folder.

        - -

        Also, you should refrain from moving the - location of the SDK directory, since this will break the build scripts (they - will need to be manually updated to reflect the new SDK location before they will - work again).

        - -

        Building the Application with Ant

        -

        Use the Ant build.xml file generated by - activityCreator to build your application.

        -
          -
        1. If you don't have it, you can obtain Ant from the - Apache Ant home page. Install it and make - sure it is on your executable path.
        2. -
        3. Before calling Ant, you need to declare the JAVA_HOME environment variable to specify the path to where the JDK is installed. -

          Note: When installing JDK on Windows, the default is to install in the "Program Files" directory. This location will cause ant to fail, because of the space. To fix the problem, you can specify the JAVA_HOME variable like this: set JAVA_HOME=c:\Prora~1\Java\. The easiest solution, however, is to install JDK in a non-space directory, for example: c:\java\jdk1.6.0_02.

          -
        4. - - -
        5. If you have not done so already, follow the instructions for Creating a - New Project above to set up the project.
        6. -
        7. You can now run the Ant build file by simply typing ant in the same folder - as the build.xml file for your project. Each time you change - a source file or resource, you should run ant again and it will package up the - latest version of the application for you to deploy.
        8. -
        +

        Once you've created your project, you're ready to begin development. +You can move your project folder wherever you want for development, but keep in mind +that you must use the Android Debug Bridge +(adb) — located in the SDK tools/ directory — to send your application +to the emulator (discussed later). So you need access between your project solution and +the tools/ folder.

        + +

        Note: 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.)

        + -

        Setting Up Application Signing

        +

        Updating a project

        -

        As you begin developing Android applications, you should understand that all +

        If you're upgrading a project from an older version of the Android SDK or want to create +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 +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/
        +
        + +
          +
        • target is the "build target" for your application. It corresponds 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.
        • +
        • path is the location of your project directory.
        • +
        + +

        Here's an example:

        +
        +android update project --target 2 --path ./myProject
        +
        + + +

        Preparing to Sign Your Application

        + +

        As you begin developing Android applications, understand that all Android applications must be digitally signed before the system will install -them on the emulator or an actual device.

        +them on an emulator or device. There are two ways to do this: +with a debug key (for immediate testing on an emulator or development device) +or with a private key (for application distribution).

        -

        The Android build tools help you get started quickly by signing your .apk -files with a debug key, prior to installing them on the emulator. This means +

        The Android build tools help you get started by automatically signing your .apk +files with a debug key at build time. This means that you can compile your application and install it on the emulator without having to generate your own private key. However, please note that if you intend -to publish your application, you must sign the application with your +to publish your application, you must sign the application with your own private key, rather than the debug key generated by the SDK tools.

        -

        To sign your applications, the ADT plugin requires the Keytool utility -included in the JDK. To set up your development environment for -signing, all you need to do is make sure that Keytool is available on your -machine that the build tools know how to find it.

        - -

        In most cases, you can tell the SDK build tools how to find Keytool by making -sure that -your JAVA_HOME environment variable is set and that it references a suitable -JDK. Alternatively, -you can add the JDK version of Keytool to your PATH variable.

        - -

        If you are developing on a version of Linux that originally came with Gnu -Compiler for Java, -make sure that the system is using the JDK version of Keytool, rather than the -gcj version. -If keytool is already in your PATH, it might be pointing to a symlink at -/usr/bin/keytool. -In this case, check the symlink target to make sure that it points to the -keytool in the JDK.

        - -

        In all cases, please read and understand Signing Your -Applications, which provides an overview of application signing on Android -and what it means to you as an Android application developer.

        - - -

        Running an Android Application

        -

        To run a compiled - application, you will upload the .apk file to the /data/app/ directory - in the emulator using the adb tool as described here:

        +

        Please read Signing Your +Applications, which provides a thorough guide to application signing on Android +and what it means to you as an Android application developer.

        + + + +

        Building Your Application

        + +

        There are two ways to build your application: one for testing/debugging your application +— debug mode — and one for building your final package for release — +release mode. As described in the previous +section, your application must be signed before it can be installed on an emulator +or device.

        + +

        Whether you're building in debug mode or release mode, you +need to use the Ant tool to compile and build your project. This will create the .apk file +that is installed onto the emulator or device. When you build in debug mode, the .apk +file is automatically signed by the SDK tools with a debug key, so it's instantly ready for installation +(but only onto an emulator or attached development device). +When you build in release mode, the .apk file is unsigned, so you must manually +sign it with your own private key, using Keytool and Jarsigner.

        + +

        It's important that you read and understand +Signing Your Applications, particularly +once you're ready to release your application and share it with end-users. That document describes +the procedure for generating a private key and then using it to sign your .apk file. +If you're just getting started, however, +you can quickly run your applications on an emulator or your own development device by building in +debug mode.

        + +

        If you don't have Ant, you can obtain it from the +Apache Ant home page. Install it and make +sure it is in your executable PATH. Before calling Ant, you need to declare the JAVA_HOME +environment variable to specify the path to where the JDK is installed.

        + +

        Note: When installing JDK on Windows, the default is to install +in the "Program Files" directory. This location will cause ant to fail, because of +the space. To fix the problem, you can specify the JAVA_HOME variable like this: +set JAVA_HOME=c:\Prora~1\Java\. The easiest solution, however, is to +install JDK in a non-space directory, for example: c:\java\jdk1.6.0_02.

        + + +

        Building 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 +application in release mode. Debug mode simply allows you to run your application without +manually signing the application.

        + +

        To build in debug mode:

        + +
          +
        1. Open a command-line and navigate to the root of your project directory.
        2. +
        3. 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.

          +
        4. +
        + +

        Each time you change a source file or resource, you must run Ant +again in order to package up the latest version of the application.

        + +

        To install and run your application on an emulator, see the following section +about Running Your Application.

        + + +

        Building in release mode

        + +

        When you're ready to release and distribute your application to end-users, you must build +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:

        + +
          +
        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
          +

          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.

          +
        4. +
        + +

        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, +read Signing Your Applications.

        + +

        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. +You can also try installing it onto a device from a web server. +Simply upload the signed APK to a web site, then load the .apk URL in your Android web browser to +download the application and begin installation. +(On your device, be sure you have enabled Settings > Applications > Unknown sources.)

        + + +

        Running Your Application

        + +

        Unless you'll be running your application on device hardware, +you need to launch an emulator upon which you will install your application. +An instance of the Android emulator runs a specific Android platform with specific device configuration +settings. The platform and configuration is defined with an Android Virtual Device (AVD). +So before you can launch your emulator, you must define an AVD.

        + +

        If you'll be running your application on device hardware, please read about +Developing On a Device instead.

        +
          -
        1. Start the emulator (run <your_sdk_dir>/tools/emulator from the command line)
        2. -
        3. On the emulator, navigate to the home screen (it is best not to have that - application running when you reinstall it on the emulator; press the Home key - to navigate away from that application).
        4. -
        5. Run adb install myproject/bin/<appname>.apk to upload - the executable. So, for example, to install the Lunar Lander sample, navigate - in the command line to <your_sdk_dir>/sample/LunarLander and type ../../tools/adb install bin/LunarLander.apk
        6. -
        7. In the emulator, open the list of available applications, and scroll down to - select and start your application.
        8. +
        9. Create an AVD +
            +
          1. Open a command-line and navigate to your SDK package's + tools/ directory.
          2. +
          3. First, you need to select a "deployment target." To view available targets, execute: +
            android list targets
            +

            This will output a list of available Android targets, such as:

            +
            +id:1
            +    Name: Android 1.1
            +    Type: platform
            +    API level: 2
            +    Skins: HVGA (default), HVGA-L, HVGA-P, QVGA-L, QVGA-P
            +id:2
            +    Name: Android 1.5
            +    Type: platform
            +    API level: 3
            +    Skins: HVGA (default), HVGA-L, HVGA-P, QVGA-L, QVGA-P
            +
            +

            Find the target that matches the Android platform upon which you'd like + to run your application. Note the integer value of the id — + you'll use this in the next step.

            +
          4. +
          5. Create a new AVD using your selected deployment target: +
            android create avd --name <your_avd_name> --target <targetID>
            +
          6. 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, + press return to use all default values ("no" is the default).
          7. + +
          +
        10. + +
        11. Launch an emulator
        12. +

          From your SDK's tools/ directory, launch an emulator + using an existing AVD (created above): +

          emulator -avd <your_avd_name>
          +

          An instance of the emulator will now launch, running the target and configuration + defined by your AVD.

          + + +
        13. Install your application +

          From your SDK's tools/ directory, install the .apk on the emulator: +

          adb install /path/to/your/application.apk
          +

          If there is more than one emulator running, you must specify the emulator upon which to install + the application, by its serial number, with the -s option. For example:

          +
          adb -s emulator-5554 install /my/project/path/myapp.apk
          +
        14. +
        15. Open your application +

          In the emulator, open the list of available applications to find + and open your application.

          +
        -

        Note: When you install an Activity for the - first time, you might have to restart the emulator before it shows up in the - application launcher, or other applications can call it. This is because - the package manager usually only examines manifests completely on emulator - startup.

        -

        Attaching a Debugger to Your Application

        +

        If you don't see your application on the emulator. Try restarting the emulator +(with the same AVD). Sometimes when you install an Activity for the +first time, it won't show up in the application launcher or be accessible by other +applications. This is because the package manager usually examines manifests +completely only on emulator startup.

        + +

        Tip: If you have only one emulator running, +you can build your application and install it on the emulator in one simple step. +Navigate to the root of your project directory and use Ant to compile the project +with install mode: +ant install. This will build your application, sign it with the debug key, +and install it on the currently running emulator. +If there is more than one emulator currently running +when using the install command, it will fail — it can't select between the +multiple emulators.

        + +

        For more information on the tools used above, please see the following documents:

        + + + +

        Attaching a Debugger to Your Application

        +

        This section describes how to display debug information on the screen (such as CPU usage), as well as how to hook up your IDE to debug running applications on the emulator.

        Attaching a debugger is automated using the Eclipse plugin, but you can configure other IDEs to listen on a debugging port to receive debugging - information.

        + information:

          -
        1. Start the Dalvik Debug Monitor Server (DDMS) - tool , which +
        2. Start the Dalvik Debug Monitor + Server (DDMS) tool, which acts as a port forwarding service between your IDE and the emulator.
        3. Set optional debugging configurations on - your emulator, such as blocking application startup for an activity + your emulator, such as blocking application startup for an Activity until a debugger is attached. Note that many of these debugging options can be used without DDMS, such as displaying CPU usage or screen refresh rate on the emulator.
        4. -
        5. Configure your IDE to attach to port 8700 for debugging. We - include information on - how to set up Eclipse to debug your project.
        6. - +
        7. Configure your IDE to attach to port 8700 for debugging. Read + about + Configuring Your IDE to Attach to the Debugging Port.
        -- cgit v1.2.3-59-g8ed1b From d108c3003b7e205ea24c1ddadd20c71bd222673c Mon Sep 17 00:00:00 2001 From: Scott Main <> Date: Wed, 22 Apr 2009 00:52:20 -0700 Subject: AI 147316: am: CL 147313 am: CL 147311 update eclipse docs to include necessary AVD procedures and discuss relevant target facilities Original author: smain Merged from: //branches/cupcake/... Original author: android-build Automated import of CL 147316 --- docs/html/guide/developing/eclipse-adt.jd | 500 +++++++++++++++++++++--------- 1 file changed, 350 insertions(+), 150 deletions(-) diff --git a/docs/html/guide/developing/eclipse-adt.jd b/docs/html/guide/developing/eclipse-adt.jd index 8c482ee40ce5..4f332b13e8cb 100644 --- a/docs/html/guide/developing/eclipse-adt.jd +++ b/docs/html/guide/developing/eclipse-adt.jd @@ -1,193 +1,393 @@ -page.title=In Eclipse, with ADT +page.title=Developing In Eclipse, with ADT @jd:body -

        The Android Development Tools (ADT) plugin for Eclipse adds powerful extensions to the Eclipse integrated development environment. It allows you to create and debug Android applications easier and faster. If you use Eclipse, the ADT plugin gives you an incredible boost in developing Android applications:

        + + + +

        The Android Development Tools (ADT) plugin for Eclipse adds powerful extensions to the Eclipse +integrated development environment. It allows you to create and debug Android applications easier +and faster. If you use Eclipse, the ADT plugin gives you an incredible boost in developing Android +applications:

          -
        • It gives you access to other Android development tools from inside the Eclipse IDE. For example, ADT lets you access the many capabilities of the DDMS tool: take screenshots, manage port-forwarding, set breakpoints, and view thread and process informationd irectly from Eclipse.
        • -
        • It provides a New Project Wizard, which helps you quickly create and set up all of the basic files you'll need for a new Android application.
        • +
        • It gives you access to other Android development tools from inside the Eclipse IDE. For +example, ADT lets you access the many capabilities of the DDMS tool: take screenshots, manage +port-forwarding, set breakpoints, and view thread and process informationd irectly from Eclipse.
        • +
        • It provides a New Project Wizard, which helps you quickly create and set up all of the +basic files you'll need for a new Android application.
        • It automates and simplifies the process of building your Android application.
        • -
        • It provides an Android code editor that helps you write valid XML for your Android manifest and resource files.
        • +
        • It provides an Android code editor that helps you write valid XML for your Android +manifest and resource files.
        • +
        • It will even export your project into a signed APK, which can be distributed to users.
        -

        To begin developing Android applications in the Eclipse IDE with ADT, you first need to download the Eclipse IDE and then download and install the ADT plugin. To do so, follow the steps given in Installing the ADT Plugin, in the installation documentation included with your SDK package.

        - -

        Once you've installed the ADT plugin, you begin by creating an Android -project and then set up a launch configuration. After that, you can write, run, and debug -your application.

        +

        To begin developing Android applications in the Eclipse IDE with ADT, you first need to +download the Eclipse IDE and then download and install the ADT plugin. To do so, follow the +steps given in Installing +the ADT Plugin.

        -

        The sections below provide instructions assuming that you have installed the ADT plugin -in your Eclipse environment. If you haven't installed the ADT plugin, you should do that -before using the instructions below.

        +

        If you are already developing applications using a version of ADT earlier than 0.9, make +sure to upgrade to the latest version before continuing. See the guide to +Update Your Eclipse ADT Plugin.

        - +

        Note: This guide assumes you are using the latest version of +the ADT plugin (0.9). While most of the information covered also applies to previous +versions, if you are using an older version, you may want to consult this document from +the set of documentation included in your SDK package (instead of the online version).

        -

        Creating an Android Project

        -

        The ADT plugin provides a New Project Wizard that you can use to quickly create an -Eclipse project for new or existing code. To create the project, follow these steps:

        +

        Creating an Android Project

        - +

        The ADT plugin provides a New Project Wizard that you can use to quickly create a new +Android project (or a project from existing code). To create a new project:

          -
        1. Select File > New > Project
        2. -
        3. Select Android > Android Project, and press Next
        4. -
        5. Select the contents for the project: -
            -
          • Select Create new project in workspace to start a project for new code. -

            Enter the project name, the base package name, the name of a single Activity class to create as a stub .java file, and a name to use for your application.

          • -
          • Select Create project from existing source to start a project from existing code. Use this option if you want to build and run any of the sample applications included with the SDK. The sample applications are located in the samples/ directory in the SDK. -

            Browse to the directory containing the existing source code and click OK. If the directory contains a valid Android manifest file, the ADT plugin fills in the package, activity, and application names for you.

            -
          • -
          -
        6. -
        7. Press Finish.
        8. -
        - -

        The ADT plugin creates the these folders and - files for you as appropriate for the type of project:

        - +
      • Select File > New > Project.
      • +
      • Select Android > Android Project, and click + Next.
      • +
      • Select the contents for the project: +
          +
        • Enter a Project Name. This will be the name of the folder where your + project is created.
        • +
        • Under Contents, select Create new project in workspace. + Select your project workspace location.
        • +
        • Under Target, select an Android target to be used as the project's Build Target. + The Build Target + specifies which Android platform you'd like your application built against. +

          Unless you know that you'll be using new APIs introduced in the latest SDK, you should + select a target with the lowest platform version possible, such as Android 1.1.

          +

          Note: You can change your the Build Target for your + project at any time: Right-click the project in the Package Explorer, select + Properties, select Android and then check + the desired Project Target.

          +
        • +
        • Under Properties, fill in all necessary fields.
            -
          • src/   A - folder that includes your stub .java Activity file.
          • -
          • res/   A folder for your - resources.
          • -
          • AndroidManifest.xml   The - manifest for your project.
          • +
          • Enter an Application name. This is the human-readable title for your + application — the name that will appear on the Android device.
          • +
          • Enter a Package name. This is the package namespace (following the same rules + as for packages in the Java programming language) where all your source code + will reside.
          • +
          • Select Create Activity (optional, of course, but common) and enter a name + for your main Activity class.
          • +
          • Enter a Min SDK Version. This is an integer that indicates + the minimum API Level required to properly run your application. + Entering this here automatically sets the minSdkVersion attribute in the + <uses-sdk> + of your Android Manifest file. If you're unsure of the appropriate API Level to use, + copy the API Level listed for the Build Target you selected in the Target tab.
          - +
        • +
        +
      • +
      • Click Finish.
      • - +

        Tip: +You can also start the New Project Wizard from the New icon in the toolbar.

        + +

        Once you complete the New Project Wizard, ADT creates the following +folders and files in your new project:

        +
        +
        src/
        +
        Includes your stub Activity Java file. All other Java files for your application + go here.
        +
        <Android Version>/ (e.g., Android 1.1/)
        +
        Includes the android.jar file that your application will build against. + This is determined by the build target that you have chosen in the New Project + Wizard.
        +
        gen/
        +
        This contains the Java files generated by ADT, such as your R.java file + and interfaces created from AIDL files.
        +
        assets/
        +
        This is empty. You can use it to store raw asset files. See + Resources and Assets.
        +
        res/
        +
        A folder for your application resources, such as drawable files, layout files, string + values, etc. See + Resources and Assets.
        +
        AndroidManifest.xml
        +
        The Android Manifest for your project. See + The AndroidManifest.xml + File.
        +
        default.properties
        +
        This file contains project settings, such as the build target. This files is integral + to the project, as such, it should be maintained in a Source Revision Control system. + It should never be edited manually — to edit project properties, + right-click the project folder and select "Properties".
        +
        + + +

        Running Your Application

        + +

        Wait! Before you can run your application on the Android Emulator, +you must create an Android Virtual Device (AVD). +An AVD is a configuration that specifies the Android platform to be used on the emulator. +You can read more about AVDs in the Developing +Overview, but if you just want to get started, follow the simple guide below to create +an AVD.

        + +

        If you will be running your applications only on actual device hardware, you do not +need an AVD — see +Developing On a Device for information +on running your applicaiton.

        + +

        Creating an AVD

        + +

        To avoid some explanation that's beyond the scope of this document, here's the +basic procedure to create an AVD:

        -

        Creating a Launch Configuration

        +
          +
        1. Open a command-line (e.g.,"Command Prompt" application on Windows, or "Terminal" + on Mac/Linux) and navigate to your SDK package's + tools/ directory.
        2. +
        3. First, you need to select a Deployment Target. To view available targets, execute: +
          android list targets
          +

          This will output a list of available Android targets, such as:

          +
          +id:1
          +    Name: Android 1.1
          +    Type: platform
          +    API level: 2
          +    Skins: HVGA (default), HVGA-L, HVGA-P, QVGA-L, QVGA-P
          +id:2
          +    Name: Android 1.5
          +    Type: platform
          +    API level: 3
          +    Skins: HVGA (default), HVGA-L, HVGA-P, QVGA-L, QVGA-P
          +
          +

          Find the target that matches the Android platform upon which you'd like + to run your application. Note the integer value of the id — + you'll use this in the next step.

          +
        4. +
        5. Create a new AVD using your selected Deployment Target. Execute: +
          android create avd --name <your_avd_name> --target <targetID>
          +
        6. 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, + press return to use all default values ("no" is the default).
        7. + +
        -

        Before you can run and debug your application in Eclipse, you must create a launch configuration for it. A launch configuration specifies the project to launch, the Activity to start, the emulator options to use, and so on.

        +

        That's it; your AVD is ready. In the next section, you'll see how the AVD is used +when launching your application on an emulator.

        -

        To create a launch configuration for the application, follow these steps as appropriate for your Eclipse version:

        +

        To learn more about creating and managing AVDs, please read the +Developing Overview +and android Tool documentation.

        -
          -
        1. Open the launch configuration manager. -
            -
          • In Eclipse 3.3 (Europa), select Run > - Open Run Dialog... or Run > - Open Debug Dialog... as appropriate. -
          • -
          • In Eclipse 3.4 (Ganymede), select Run > - Run Configurations... or Run > - Debug Configurations... as appropriate. -
          • -
          -
        2. -
        3. In the project type list on the left, locate the Android Application item and double-click it (or right-click > New), to create a new launch configuration.
        4. -
        5. Enter a name for your configuration.
        6. -
        7. On the Android tab, browse for the project and Activity to start.
        8. -
        9. On the Target tab, set the desired screen and network properties, as well as any other emulator startup options.
        10. -
        11. You can set additional options on the Common tab as desired.
        12. -
        13. Press Apply to save the launch configuration, or press Run or Debug (as appropriate).
        14. +

          Running your application

          -
        +

        Note: Before you can run your application, be sure that +you have created an AVD with a target that satisfies your application's Build Target. +If an AVD cannot be found that meets the requirements of your Build Target, you will see +a console error telling you so and the launch will be aborted.

        +

        To run (or debug) your application, select Run > Run (or +Run > Debug) from the Eclipse main menu. The ADT plugin +will automatically create a default launch configuration for the project.

        -

        Setting Up Application Signing

        +

        When you choose to run or debug your application, Eclipse will perform the following:

        -

        As you begin developing Android applications, you should understand that all -Android applications must be digitally signed before the system will install -them on the emulator or an actual device.

        +
          +
        1. Compile the project (if there have been changes since the last build).
        2. +
        3. Create a default launch configuration (if one does not already exist for the project).
        4. +
        5. Install and start the application on an emulator or device (based on the Deployment Target + defined by the run configuration). +

          By default, Android application run configurations use an "automatic target" mode for + selecting a device target. For information on how automatic target mode selects a + deployment target, see Automatic and manual + target modes below.

          +
        6. +
        -

        The ADT plugin helps you get started quickly by signing your .apk files with -a debug key, prior to installing them on the emulator. This means that you can -compile your application and install it on the emulator without having to -generate your own private key. However, please note that if you intend to -publish your application, you must sign the application with your own -private key, rather than the debug key generated by the SDK tools.

        +

        If debugging, the application will start in the "Waiting For Debugger" mode. Once the +debugger is attached, Eclipse will open the Debug perspective.

        + +

        To set or change the launch configuration used for your project, use the launch configuration manager. +See Creating a Launch Configuration for information.

        -

        To sign your applications, the ADT plugin requires the Keytool utility -included in the JDK. To set up your development environment for -signing, you need to make sure that Keytool is available on your -machine that the ADT plugin knows how to find it.

        -

        In most cases, you can tell the SDK build tools how to find Keytool by making -sure that your JAVA_HOME environment variable is set and that it references a -suitable JDK. Alternatively, you can add the JDK version of Keytool to your -PATH variable.

        +

        Creating a Run Configuration

        -

        If you are developing on a version of Linux that originally came with Gnu -Compiler for Java, make sure that the system is using the JDK version of -Keytool, rather than the gcj version. If keytool is already in your PATH, it -might be pointing to a symlink at /usr/bin/keytool. In this case, check the -symlink target to make sure that it points to the keytool in the JDK.

        +

        The run configuration specifies the project to run, the Activity +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 +customize the launch configuration or even create a new.

        -

        In all cases, please read and understand Signing Your -Applications, which provides an overview of application signing on Android -and what it means to you as an Android application developer.

        +

        To create or modify a launch configuration, follow these steps as appropriate +for your Eclipse version:

        +
          +
        1. Open the run configuration manager. +
            +
          • In Eclipse 3.3 (Europa), select Run > + Open Run Dialog (or Open Debug Dialog) +
          • +
          • In Eclipse 3.4 (Ganymede), select Run > + Run Configurations (or + Debug Configurations) +
          • +
          +
        2. +
        3. Expand the Android Application item and create a new + configuration or open an existing one. +
            +
          • To create a new configuration: +
              +
            1. Select Android Application and click the New launch configuration + icon above the list (or, right-click Android Application and click + New).
            2. +
            3. Enter a Name for your configuration.
            4. +
            5. In the Android tab, browse and select the project you'd like to run with the + configuration.
            6. +
            +
          • To open an existing configuration, select the configuration name from the list + nested below Android Application.
          • +
          +
        4. +
        5. Adjust your desired launch configuration settings. +

          In the Target tab, consider whether you'd like to use Manual or Automatic mode + when selecting an AVD to run your application. + See the following section on Automatic and manual target + modes).

          +
        6. +
        - -

        Running and Debugging an Application

        +

        Automatic and manual target modes

        -

        Once you've set up the project and launch configuration for your application, you can run or debug it as described below.

        +

        By default, a run configuration uses the automatic target mode in order to select +an AVD. In this mode, ADT will select an AVD for the application in the following manner:

        -From the Eclipse main menu, select Run > Run or Run > Debug as appropriate, to run or debug the active launch configuration. +
          +
        1. If there's a device or emulator already running and its AVD configuration + meets the requirements of the application's build target, the application is installed + and run upon it.
        2. +
        3. If there's more than one device or emulator running, each of which meets the requirements + of the build target, a "device chooser" is shown to let you select which device to use.
        4. +
        5. If there are no devices or emulators running that meet the requirements of the build target, + ADT looks at the available AVDs. If one meets the requirements of the build target, + the AVD is used to launch a new emulator, upon which the application is installed and run.
        6. +
        7. If all else fails, the application will not be run and you will see a console error warning + you that there is no existing AVD that meets the build target requirements.
        8. +
        -

        Note that the active launch configuration is the one most recently selected in the Run configuration manager. It does not necessarily correspond to the application that is selected in the Eclipse Navigation pane (if any).

        +

        However, if a "preferred AVD" is selected in the run configuration, then the application +will always be deployed to that AVD. If it's not already running, then a new emulator +will be launched.

        -

        To set or change the active launch configuration, use the launch configuration manager. See Creating a Launch Configuration for information about how to access the launch configuration manager..

        +

        If your run configuration uses manual mode, then the "device chooser" +is presented every time that your application is run, so that you can select which AVD to use.

        -

        Running or debugging the application triggers these actions:

        -
        • Starts the emulator, if it is not already running.
        • -
        • Compiles the project, if there have been changes since the last build, and installs the application on the emulator.
        • -
        • Run starts the application.
        • -
        • Debug starts the application in "Wait for debugger" mode, then opens the Debug perspective and attaches the Eclipse Java debugger to the application.
        • -
        +

        Signing your Applications

        +

        As you begin developing Android applications, understand that all +Android applications must be digitally signed before the system will install +them on an emulator or an actual device. There are two ways to do this: +with a debug key (for immediate testing on an emulator or development device) +or with a private key (for application distribution).

        -

        Eclipse Tips

        -

        Executing arbitrary Java expressions in Eclipse

        -

        You can execute arbitrary code when paused at a breakpoint in Eclipse. For example, - when in a function with a String argument called "zip", you can get - information about packages and call class methods. You can also invoke arbitrary - static methods: for example, entering android.os.Debug.startMethodTracing() will - start dmTrace.

        -

        Open a code execution window, select Window>Show - View>Display from the main menu to open the - Display window, a simple text editor. Type your expression, highlight the - text, and click the 'J' icon (or CTRL + SHIFT + D) to run your - code. The code runs in the context of the selected thread, which must be - stopped at a breakpoint or single-step point. (If you suspend the thread - manually, you have to single-step once; this doesn't work if the thread is - in Object.wait().)

        -

        If you are currently paused on a breakpoint, you can simply highlight and execute - a piece of source code by pressing CTRL + SHIFT + D.

        -

        You can highlight a block of text within the same scope by pressing ALT +SHIFT - + UP ARROW to select larger and larger enclosing blocks, or DOWN ARROW to select - smaller blocks.

        -

        Here are a few sample inputs and responses in Eclipse using the Display window.

        - - - - - - - - - - - - - - - - - -
        InputResponse
        zip(java.lang.String) /work/device/out/linux-x86-debug/android/app/android_sdk.zip
        zip.endsWith(".zip")(boolean) true
        zip.endsWith(".jar")(boolean) false
        -

        You can also execute arbitrary code when not debugging by using a scrapbook page. - Search the Eclipse documentation for "scrapbook".

        - -

        Running DDMS Manually

        - -

        Although the recommended way to debug is to use the ADT plugin, you can manually run DDMS and configure Eclipse to debug on port 8700. (Note: Be sure that you have first started DDMS).

        +

        The ADT plugin helps you get started quickly by signing your .apk files with +a debug key, prior to installing them on an emulator or development device. This means that you can +quickly run your application from Eclipse without having to +generate your own private key. No specific action on your part is needed, +provided ADT has access to Keytool.However, please note that if you intend +to publish your application, you must sign the application with your +own private key, rather than the debug key generated by the SDK tools.

        + +

        Please read Signing Your +Applications, which provides a thorough guide to application signing on Android +and what it means to you as an Android application developer. The document also includes +a guide to exporting and signing your application with the ADT's Export Wizard.

        + + +

        Eclipse Tips

        + +

        Executing arbitrary Java expressions in Eclipse

        + +

        You can execute arbitrary code when paused at a breakpoint in Eclipse. For example, + when in a function with a String argument called "zip", you can get + information about packages and call class methods. You can also invoke arbitrary + static methods: for example, entering android.os.Debug.startMethodTracing() will + start dmTrace.

        +

        Open a code execution window, select Window>Show + View>Display from the main menu to open the + Display window, a simple text editor. Type your expression, highlight the + text, and click the 'J' icon (or CTRL + SHIFT + D) to run your + code. The code runs in the context of the selected thread, which must be + stopped at a breakpoint or single-step point. (If you suspend the thread + manually, you have to single-step once; this doesn't work if the thread is + in Object.wait().)

        +

        If you are currently paused on a breakpoint, you can simply highlight and execute + a piece of source code by pressing CTRL + SHIFT + D.

        +

        You can highlight a block of text within the same scope by pressing ALT +SHIFT + + UP ARROW to select larger and larger enclosing blocks, or DOWN ARROW to select + smaller blocks.

        +

        Here are a few sample inputs and responses in Eclipse using the Display window.

        + + + + + + + + + + + + + + + + + + +
        InputResponse
        zip(java.lang.String) + /work/device/out/linux-x86-debug/android/app/android_sdk.zip
        zip.endsWith(".zip")(boolean) true
        zip.endsWith(".jar")(boolean) false
        +

        You can also execute arbitrary code when not debugging by using a scrapbook page. + Search the Eclipse documentation for "scrapbook".

        + + +

        Running DDMS Manually

        + +

        Although the recommended way to debug is to use the ADT plugin, you can manually run +DDMS and configure Eclipse to debug on port 8700. (Note: Be sure that you +have first started DDMS).

        + + + -- cgit v1.2.3-59-g8ed1b From 0af345c3b8cf1526ad238fab9d5ce90e3f058e58 Mon Sep 17 00:00:00 2001 From: Scott Main <> Date: Wed, 22 Apr 2009 00:55:10 -0700 Subject: AI 147318: am: CL 147317 am: CL 147314 change carousel SDK to 1.5; revise Google IO info Original author: smain Merged from: //branches/cupcake/... Original author: android-build Automated import of CL 147318 --- docs/html/index.jd | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/html/index.jd b/docs/html/index.jd index bd681e2c6d97..aea229923ae1 100644 --- a/docs/html/index.jd +++ b/docs/html/index.jd @@ -12,7 +12,7 @@ home=true Google I/O Developer Conference 2009
        -

        Google I/O is a two-day developer event that will take place May 27-28 at Moscone Center, San Francisco.

        +

        Google I/O is a two-day developer event that will take place May 27-28 at Moscone Center, San Francisco. The agenda includes a number of great sessions on Android topics by team engineers and other developers.

        Learn more »

    @@ -116,10 +116,10 @@ home=true 'sdk': { 'layout':"imgLeft", 'icon':"sdk-small.png", - 'name':"SDK 1.1 r1", + 'name':"SDK 1.5 r1", 'img':"sdk-large.png", - 'title':"Android 1.1 SDK r1", - 'desc': "

    A new Android SDK is available for download. The new SDK includes minor API changes, new UI localizations, bug fixes and some new application features.

    Download Android 1.1 SDK r1

    " + 'title':"Android 1.5 SDK r1", + 'desc': "

    The final version of the 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

    " }, 'mapskey': { -- cgit v1.2.3-59-g8ed1b From 4b0d2f61f0e888b83eac43f219a0497242a65a9e Mon Sep 17 00:00:00 2001 From: Scott Main <> Date: Wed, 22 Apr 2009 01:00:55 -0700 Subject: AI 147328: am: CL 147327 am: CL 147325 update the installing and upgrading docs for cupcake Original author: smain Merged from: //branches/cupcake/... Original author: android-build Automated import of CL 147328 --- docs/html/sdk/1.5_r1/installing.jd | 324 ++++++++++++++++++++++++++++- docs/html/sdk/1.5_r1/upgrading.jd | 414 ++++++++++++++++++++++++++----------- 2 files changed, 618 insertions(+), 120 deletions(-) diff --git a/docs/html/sdk/1.5_r1/installing.jd b/docs/html/sdk/1.5_r1/installing.jd index a1f7cffb0576..bd366ff1add9 100644 --- a/docs/html/sdk/1.5_r1/installing.jd +++ b/docs/html/sdk/1.5_r1/installing.jd @@ -5,6 +5,328 @@ sdk.date=April 2009 page.title=Installing the Android SDK @jd:body -

    See the Download page for more information.

    + +

    This page describes how to install the Android SDK and set up your +development environment. If you haven't downloaded the SDK, you can +do so from the +Download page. Once you've downloaded +the SDK, return here.

    + +

    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 SDK, please read +Upgrading the +SDK, instead. +

    + + +

    Preparing 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.3 or newer). 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.

    + +

    Installing the SDK

    + +

    After downloading the SDK, unpack the .zip archive to a suitable location on your machine. +By default, the SDK files are unpacked into a directory named +android_sdk_<platform>_<release>. +The directory contains a local copy of the documentation (accessible by opening +documentation.html in your browser) and the subdirectories +tools/, add-ons/, platforms/, and others. Inside +each subdirectory of platforms/ you'll find samples/, which includes +code samples that are specific to each version of the platform.

    + +

    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 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).

    + + +

    Installing 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.)

    + +

    Once you have Eclipse 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.3 (Europa)Eclipse 3.4 (Ganymede)
    + +
      +
    1. Start Eclipse, then select Help > Software Updates +> Find and Install....
    2. +
    3. In the dialog that appears, select Search for new features to install +and click Next.
    4. +
    5. Click New Remote Site.
    6. +
    7. In the resulting dialog box, enter a name for the remote site (e.g. "Android Plugin") and + enter the URL: +
      https://dl-ssl.google.com/android/eclipse/
      +

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

      +

      Click OK.

    8. +
    9. You should now see the new site added to the search list (and checked). + Click Finish.
    10. +
    11. In the subsequent Search Results dialog box, select the checkbox for the + Android Plugin. + This will select the nested tools: "Android DDMS" and "Android Developer Tools". + Click Next.
    12. +
    13. Read and accept the license agreement, then click Next.
    14. +
    15. On the following Installation window, click Finish.
    16. +
    17. The ADT plugin is not digitally signed. Accept the installation anyway + by clicking Install All.
    18. +
    19. Restart Eclipse.
    20. +
    + +
    + + +
      +
    1. Start Eclipse, then select Help > Software Updates....
    2. +
    3. In the dialog that appears, click the Available Software tab.
    4. +
    5. Click Add Site...
    6. +
    7. Enter the Location: +
      https://dl-ssl.google.com/android/eclipse/
      +

      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.

    8. +
    9. 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...
    10. +
    11. On the subsequent Install window, "Android DDMS" and "Android Developer Tools" + should both be checked. Click Next.
    12. +
    13. Read and accept the license agreement, then click Finish.
    14. +
    15. Restart Eclipse.
    16. +
    + +
    + +

    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.

    + + +

    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 the it: +

    +
      +
    1. Download the ADT zip file (do not unpack it).
    2. +
    3. Follow steps 1 and 2 in the default install instructions (above).
    4. +
    5. In Eclipse 3.3, click New Archive Site....
      + In Eclipse 3.4, click Add Site..., then Archive...
    6. +
    7. Browse and select the downloaded zip file.
    8. +
    9. Follow the remaining procedures, above, starting from steps 5.
    10. +
    +

    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.

    + + +

    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/<platfrom>/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.
    • +
    + diff --git a/docs/html/sdk/1.5_r1/upgrading.jd b/docs/html/sdk/1.5_r1/upgrading.jd index 532313110cb3..0b7312b3166f 100644 --- a/docs/html/sdk/1.5_r1/upgrading.jd +++ b/docs/html/sdk/1.5_r1/upgrading.jd @@ -2,175 +2,351 @@ page.title=Upgrading the SDK sdk.version=1.5_r1 @jd:body - +
  • UI +framework changes in Android 1.5 »
  • + -
      -
    • Overview of Changes -

      A high-level look at what's changed in Android, with - discussion of how the changes may affect your apps.

    • - -
    • API Diff Report -

      A detailed report that lists all the specific changes in the latest SDK.

    • - -
    • Release Notes -

      Version details, known issues, and resolved issues.

    • - -
    • Android Developers Group -

      A forum where you can discuss migration issues and learn from other Android developers.

    • - -
    • Android Issue Tracker -

      If you think you may have found a bug, use the issue tracker to report it.

    • -
    - - ---> + +

    This document describes how to move your development environment and existing +Android applications from an Android 1.0 or 1.1 SDK to the Android 1.5 SDK. +If you are migrating applications from an SDK older than 1.0, please also read the upgrading +document available in the Android 1.0 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 +Android 1.5 platform.

    -

    Upgrading quickview

    -
      -
    • The Android 1.5 SDK uses a new project structure and a new ADT plugin (ADT 0.9).
    • -
    • To move existing projects into the SDK, you must make some minor changes in your development environment.
    • -
    • The new ADT plugin (ADT 0.9) is not compatible with projects created in previous SDKs.
    • -
    • You need to uninstall your existing ADT plugin, before installing ADT 0.9.
    • +

      The Android 1.5 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 breakage 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 Android 1.5.

      -
    +

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

    - -
    -
    -

    See the Download page for more information.

    +

    Install the SDK

    -
      -
    1. Select Help > Software Updates > Find and Install....
    2. -
    3. Select Search for updates of the currently installed features and click Finish.
    4. -
    5. If any update for ADT is available, select and install.
    6. -
    7. Restart Eclipse.
    8. +
    9. Select Help > Software Updates > + Manage Configuration.
    10. +
    11. Expand the list in the left panel to reveal the installed tools.
    12. +
    13. Right-click "Android Editors" and click Uninstall. Click OK + to confirm.
    14. +
    15. Restart Eclipse. +

      (Do not uninstall "Android Development Tools".)

    -

    Alternatively,

    + + +
      -
    1. Select Help > Software Updates > Manage Configuration.
    2. +
    3. Select Help > Software Updates.
    4. +
    5. Select the Installed Software tab.
    6. +
    7. Select "Android Editors". Click Uninstall.
    8. +
    9. In the next window, be sure "Android Editors" is checked, then click Finish + to uninstall.
    10. +
    11. Restart Eclipse. +

      (Do not uninstall "Android Development Tools".)

    12. +
    + + + + + +

    Install the 0.9 ADT plugin

    -
  • Navigate down the tree and select Android Development Tools <version>
  • -
  • Select Scan for Updates under Available Tasks.
  • +

    Only install the new plugin once you've completed the procedure to +Uninstall your previous ADT plugin.

    + + + + +
    Eclipse 3.3 (Europa)Eclipse 3.4 (Ganymede)
    + +
      +
    1. Select Help > Software Updates > + Find and Install.
    2. +
    3. Select Search for new features to install.
    4. +
    5. Select the Android plugin entry by checking the box next to it, + then click Finish. +

      (Your original entry for the plugin should still be here. If not, see the guide + to Installing the ADT Plugin.) +

    6. +
    7. In the results, be sure that "Developer Tools" is checked, then click Next.
    8. +
    9. Read and accept the license agreement, then click Next. +
    10. In the next window, click Finish to start installation.
    11. +
    12. The ADT plugin is not digitally signed. Accept the installation anyway by clicking + Install All.
    13. +
    14. Restart Eclipse.
    +
      -
    1. Select Help > Software Updates...
    2. -
    3. Select the Installed Software tab.
    4. -
    5. Click Update...
    6. -
    7. If an update for ADT is available, select it and click Finish.
    8. +
    9. Select Help > Software Updates.
    10. +
    11. Select the Available Software tab.
    12. +
    13. Expand the entry for the Andriod plugin (may be listed as the location URL) + and select "Developer Tools" by checking the box next to it, then click Install. +
    14. On the next window, "Android DDMS" and "Android Developer Tools" + should both be checked. Click Next. +
    15. Read and accept the license agreement, then click Finish.
    16. Restart Eclipse.
    -

    Update your Eclipse SDK Preferences

    +

    If you encounter problems, ensure your ADT is fully uninstalled 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 OSX: Eclipse > Preferences)
    2. +
    3. Select Window > Preferences to open the Preferences + panel (Mac: Eclipse > Preferences).
    4. Select Android from the left panel.
    5. -
    6. For the SDK Location in the main panel, click Browse... and locate the SDK directory.
    7. +
    8. For the SDK Location in the main panel, click Browse + and locate your SDK directory.
    9. Click Apply, then OK.
    -

    Migrate Your Applications, if Necessary

    -

    If (and only if) you have written apps in an SDK released previous to -the Android 1.0 SDK, you will need to migrate your applications. After -installing the new SDK and updating the ADT Plugin (if applicable), you -may encounter breakages in your application code, due to -framework and API changes. You'll need to update your code to match the -latest APIs.

    +

    Update Your Projects

    + +

    You will now need to update any and all Android projects that you have +developed using a previous version of the Android SDK.

    + + +

    Eclipse users

    + +

    If you use Eclipse to develop applications, use the following procedure to +update each project:

    + +
      +
    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 "build target" to compile + against. This SDK offers the Android 1.1 and Android 1.5 platforms to choose from. When + you are initially updating your projects to the new SDK, we recommend that you select a build + target with the Android 1.1 platform. Click Apply, then + OK.
    4. +
    + +

    The new plugin creates a gen/ folder in your project, in which it puts the +R.java file +and all automatically generated AIDL java files. If you get an error such as +The type R is already defined, +then you probably need to delete your old R.java or your old auto-generated +AIDL Java files in the src/ folder. +(This does not apply to your own hand-crafted parcelable AIDL java files.)

    + +

    Note that, with the Android 1.5 SDK, there is a new process for running +applications in the Android Emulator. +Specifically, you must create an Android Virtual Device (AVD) before you can launch an instance +of the Emulator. Before attempting to run your applications with the new SDK, +please continue with the section below to +Migrate Your Applications.

    + + +

    Ant users

    + +

    If you build your projects using the Ant tool (rather than with Eclipse), note the +following changes with the new SDK tools.

    + +

    build.xml has changed

    + +

    You must re-create your build.xml file.

    + +

    If you had customized your build.xml, first make a copy of it:

    + +
    +$ cd my-project
    +$ cp build.xml build.xml.old
    +
    -

    One way to start is to open your project in Eclipse and see where the ADT -identifies errors in your application. You can also look up -specific changes in the Android APIs in the -android-1.5.html#api-changes -Android 1.5 Version Notes +

    Now use the new android tool (located in your_sdk/tools/) +to create a new build.xml that references +a specific platform target:

    -document.

    +
    $ android update project --path /path/to/my-project --target 1
    + +

    The "target" corresponds to an Android platform library (including any add-ons, such as +Google APIs) that you would like to build your project against. You can view a list of available +targets (and their corresponding integer ID) with the command, android list targets. +When you are initially updating your projects to the new SDK, we recommend that you select the +first target ("1"), which uses the Android 1.1 platform library.

    + +

    A gen/ folder will be created the first time you build and your R.java and +your AIDL Java files will be generated in here. You must remove +the old R.java and old auto-generated AIDL java files from the +src/ folder. (This +does not apply to your own hand-crafted parcelabe AIDL java files.)

    + +

    Note: The "activitycreator" tool has been replaced +by the new "android" tool. For information on creating new projects with the android tool, +see the documentation about Developing +In Other IDEs.

    + +

    Note that, with the Android 1.5 SDK, there is a new process for running +applications in the Android Emulator. +Specifically, you must create an Android Virtual Device (AVD) before you can launch an instance +of the Emulator. Before attempting to run your applications with the new SDK, +please continue with the section below to +Migrate Your Applications.

    + + +

    Migrate Your Applications

    + +

    After you have completed the process above to Update Your +Projects, you are strongly encouraged to run each of your applications in an instance +of the emulator running the Android 1.5 system image. It's possible (however, unlikely) +that you'll encounter some breakage in your application when you run your applications on +the Android 1.5 system image. Whether you believe your application will be affected by +platform changes or not, it's very important that you test the application's +forward-compatibility on Android 1.5.

    + +

    To test forward-compatibility, simply run your existing application (as-is) on an Android +Emulator that's running the Android 1.5 system image. The following procedure will guide +you through the process to running your existing applications on an emulator. Please read +the following guide completely before you begin.

    + +

    To test your application on an emulator running Android 1.5:

    +
      +
    1. Update Your Project (you should have done this + already, in the section above).
    2. +
    3. Run your existing project, as-is, on an emulator running the Android 1.5 system image. +

      As mentioned in the guide to Update Your Projects, + you should have selected a "build + target" of "1", which compiles your application against the Android 1.1 system image, so there + should be no new errors in your code.

      +

      Eclipse users: follow the + Eclipse guide to + Running Your Application.

      +

      Ant users: follow the + Ant guide to + Running Your Application +

      During the procedure to Running Your Application, select a "deployment target" + for the AVD that includes the Android 1.5 platform. + If your application utilizes the Google Maps APIs (i.e., + MapView), be certain to select a target that includes the Google APIs.

      +

      Once you complete the procedures to run your application in your respective environment, + linked above, return here.

      +
    4. +
    5. With your application running in the emulator, perform all regular testing on the application + to ensure that it functions normally (in both landscape and portrait orientations).
    6. +
    + +

    Chances are, your application runs just fine on the Android 1.5 platform — +new devices will be able to safely install and run your application and +current users who update their devices will be able to continue using your application as usual. +However, if something doesn't work the way you expect, then you might need to revisit +your project and make any necessary changes to your code.

    + +

    You can check for code breakages caused by API changes by opening your project +in Eclipse, changing the "build target" to one using the Android 1.5 platform, +and see where the ADT identifies errors in your code.

    + +

    There have been several API additions made for this release, but there have been +very few actual API changes. Only a couple (relatively unused) elements +have been removed and a few have been deprecated, so your applications written with the +Android 1.1 system library should work just fine. +Your application will be at highest risk of breakage if it uses Android APIs +that are not available in the public API documentation +or if it explicitly depends on system bugs. For information +about changes made to Android 1.5, refer to the following documents:

    +

    If you have additional trouble updating your code, visit the Android Developers Group to seek help from other Android developers.

    - -

    If you have modified one of the ApiDemos applications and would like to migrate it -to the new SDK, note that you will need to uninstall the version of ApiDemos that comes -preinstalled in the emulator. For more information, or if you encounter an "reinstallation" -error when running or installing ApiDemos, see the troubleshooting topic -I can't install ApiDemos -apps in my IDE because of a signing error for information about how to solve the problem.

    ---> \ No newline at end of file -- cgit v1.2.3-59-g8ed1b From 8aef7a7a0a54e8ec75d7cb632b20aad23951b9bb Mon Sep 17 00:00:00 2001 From: Dirk Dougherty <> Date: Wed, 22 Apr 2009 01:03:47 -0700 Subject: AI 147335: am: CL 147334 am: CL 147332 Miscellaneous doc changes for cupcake SDK Original author: ddougherty Merged from: //branches/cupcake/... Original author: android-build Automated import of CL 147335 --- docs/html/community/index.jd | 2 +- docs/html/guide/appendix/faq/framework.jd | 17 +- docs/html/guide/appendix/faq/troubleshooting.jd | 48 +-- docs/html/guide/developing/app-signing.jd | 428 ------------------------ docs/html/guide/developing/tools/avd.jd | 12 +- docs/html/guide/topics/media/index.jd | 2 +- docs/html/guide/topics/media/media.jd | 172 ---------- 7 files changed, 20 insertions(+), 661 deletions(-) delete mode 100644 docs/html/guide/developing/app-signing.jd delete mode 100644 docs/html/guide/topics/media/media.jd diff --git a/docs/html/community/index.jd b/docs/html/community/index.jd index 2df4c01d946b..ad3a199aa998 100644 --- a/docs/html/community/index.jd +++ b/docs/html/community/index.jd @@ -77,7 +77,7 @@ phrasing your questions, read android-security-discuss -
  • Subscribe via email: android-secuirty-discuss@googlegroups.com +
  • Subscribe via email: android-security-discuss@googlegroups.com
  • diff --git a/docs/html/guide/appendix/faq/framework.jd b/docs/html/guide/appendix/faq/framework.jd index 76a19c56d19d..33b69acf2150 100644 --- a/docs/html/guide/appendix/faq/framework.jd +++ b/docs/html/guide/appendix/faq/framework.jd @@ -12,7 +12,7 @@ parent.link=index.html from one Activity/Service to another?
  • How can I check if an Activity is already running before starting it?
  • -
  • If an Activity starts a remote service,is +
  • If an Activity starts a remote service, is there any way for the Service to pass a message back to the Activity?
  • How to avoid getting the Application not responding dialog?
  • @@ -20,7 +20,6 @@ parent.link=index.html added or removed? - @@ -32,7 +31,7 @@ default. If needed, you can declare an android:process attribute in your manifest file, to explicitly place a component (Activity/Service) in another process.

    - + @@ -47,7 +46,7 @@ separate pool of transaction threads in each process to dispatch all incoming IPC calls. The developer should create separate threads for any long-running code, to avoid blocking the main UI thread.

    - + @@ -128,7 +127,7 @@ the Data Storage for further details on how to use these components.

    - + @@ -140,7 +139,7 @@ or to bring the activity stack to the front if is already running in the background— is the to use the NEW_TASK_LAUNCH flag in the startActivity() call.

    - + @@ -156,7 +155,7 @@ messages.

    The sample code for remote service callbacks is given in ApiDemos/RemoteService

    - + @@ -166,7 +165,7 @@ href="{@docRoot}guide/samples/ApiDemos/src/com/example/android/apis/app/RemoteSe document.

    - + @@ -194,5 +193,5 @@ removed.

    - + diff --git a/docs/html/guide/appendix/faq/troubleshooting.jd b/docs/html/guide/appendix/faq/troubleshooting.jd index 7c703e6d07f3..0cf1ab006d1e 100644 --- a/docs/html/guide/appendix/faq/troubleshooting.jd +++ b/docs/html/guide/appendix/faq/troubleshooting.jd @@ -23,7 +23,6 @@ parent.link=index.html
  • When I go to preferences in Eclipse and select "Android", I get the following error message: Unsupported major.minor version 49.0.
  • I can't install ApiDemos apps in my IDE because of a signing error
  • I can't compile my app because the build tools generated an expired debug certificate
  • -
  • I can't run a JUnit test class in Eclipse/ADT
  • ADT Installation Error: "requires plug-in org.eclipse.wst.sse.ui".

    @@ -245,8 +244,8 @@ documentation.

    1. First, delete the debug keystore/key already generated by the Android build tools. Specifically, delete the debug.keystore file. On Linux/Mac OSX, the file is stored in ~/.android. On Windows XP, the file is stored in -C:\Documents and Settings\<user>\Local Settings\Application Data\Android. On Windows Vista, the file is stored in -C:\Users\<user>\AppData\Local\Android
    2. +C:\Documents and Settings\<user>\.android
      . On Windows Vista, the file is stored in +C:\Users\<user>\.android
    3. Next, you can either
      • Temporarily change your development machine's locale (date and time) to one that uses a Gregorian calendar, for example, United States. Once the locale is changed, use the Android build tools to compile and install your app. The build tools will regenerate a new keystore and debug key with valid dates. Once the new debug key is generated, you can reset your development machine to the original locale.
      • @@ -260,46 +259,3 @@ C:\Users\<user>\AppData\Local\Android

        For general information about signing Android applications, see Signing Your Applications.

        -

        I can't run a JUnit test class in Eclipse/ADT

        - -

        If you are developing on Eclipse/ADT, you can add JUnit test classes to your application. However, you may get an error when trying to run such a class as a JUnit test:

        - -
        Error occurred during initialization of VM
        -java/lang/NoClassDefFoundError: java/lang/ref/FinalReference
        - -

        This error occurs because android.jar does not include complete Junit.* class implementations, but includes stub classes only.

        - -

        To add a JUnit class, you have to set up a JUnit configuration:. - -

          -
        1. In the Package Explorer view, select your project.
        2. -
        3. Open the launch configuration manager. -
            -
          • In Eclipse 3.3 (Europa), select Run > - Open Run Dialog... or Run > - Open Debug Dialog... . -
          • - -
          • In Eclipse 3.4 (Ganymede), select Run > - Run Configurations... or Run > - Debug Configurations... . -
          • -
          -
        4. -
        5. In the configuration manager, right-click the "JUnit" configuration type and select New
        6. -
        7. In the new configuration's Test tab, specify the project and test class, as well as any options for running the test.
        8. -
        9. In the new configuration's Classpath tab, find "Android Library" under Bootstrap Entries and remove it.
        10. -
        11. Still in the Classpath tab, select Bootstrap Entries and click the Advanced button.
        12. -
            -
          1. Choose Add Library and click OK.
          2. -
          3. Select JRE System Library and click Next.
          4. -
          5. Select Workspace Default JRE and click Finish.
          6. -
          -
        13. Select Bootstrap Entries again and click Advanced.
        14. -
            -
          1. Choose Add Library and click OK.
          2. -
          3. Select JUnit 3 and click Finish.
          4. -
          -
        -

        When configured in this way, your JUnit test class should now run properly.

        - diff --git a/docs/html/guide/developing/app-signing.jd b/docs/html/guide/developing/app-signing.jd deleted file mode 100644 index 582dfb267b6f..000000000000 --- a/docs/html/guide/developing/app-signing.jd +++ /dev/null @@ -1,428 +0,0 @@ -page.title=Signing Your Applications -@jd:body - -

        The Android system requires that all installed applications be digitally -signed with a certificate whose private key is held by the application's -developer. The system uses the certificate as a means of identifying the author of -an application and establishing trust relationships between applications, rather -than for controlling which applications the user can install. The certificate -does not need to be signed by a certificate authority: it is perfectly -allowable, and typical, for Android applications to use self-signed -certificates.

        - -

        The important points to understand about signing Android applications are:

        - -
          -
        • All applications must be signed. The system will not install an application -that is not signed.
        • -
        • You can use self-signed certificates to sign your applications. No certificate authority -is needed.
        • -
        • When you are ready to publish your application, you must sign it with a suitable private -key. You can not publish an application that is signed with the default key generated -by the SDK tools. -
        • -
        • The system tests a signer certificate's expiration date only at install time. If an -application's signer certificate expires after the application is installed, the application -will continue to function normally.
        • -
        • You can use standard tools — Keytool and Jarsigner — to generate keys and -sign your application .apk files.
        • -
        - -

        The Android system will not install or run an application that is not signed appropriately. This -applies wherever the Android system is run, whether on an actual device or on the emulator. -For this reason, you must set up signing for your application before you will be able to -run or debug it on an emulator or device.

        - -

        The Android SDK tools assist you in signing your applications when debugging. Both the ADT Plugin -for Eclipse and the Ant build tool offer two signing modes — debug mode and release mode. - -

          -
        • In debug mode, the build tools use the Keytool utility, included in the JDK, to create -a keystore and key with a known alias and password. At each compilation, the tools then use -the debug key to sign the application .apk file. Because the password is known, the tools -don't need to prompt you for the keystore/key password each time you compile.
        • - -
        • When your application is ready for release, you compile it in release signing mode. -In this mode, the tools compile your .apk without signing it. You must then sign -the .apk manually — with your private key — -using Jarsigner (or similar tool). If you do not have a suitable private key already, -you can run Keytool manually to generate your own keystore/key and then sign your -application with Jarsigner.
        • -
        - -

        Signing Strategies

        - -

        Some aspects of application signing may affect how you approach the development -of your application, especially if you are planning to release multiple -applications.

        - -

        In general, the recommended strategy for all developers is to sign -all of your applications with the same certificate, throughout the expected -lifespan of your applications. There are several reasons why you should do so:

        - -
          -
        • Application upgrade — As you release upgrades to your -application, you will want to sign the upgrades with the same certificate, if you -want users to upgrade seamlessly to the new version. When the system is -installing an update to an application, if any of the certificates in the -new version match any of the certificates in the old version, then the -system allows the update. If you sign the version without using a matching -certificate, you will also need to assign a different package name to the -application — in this case, the user installs the new version as a -completely new application. - -
        • Application modularity — The Android system allows applications that -are signed by the same certificate to run in the same process, if the -applications so request, so that the system treats them as a single application. -In this way you can deploy your application in modules, and users can update -each of the modules independently if needed.
        • - -
        • Code/data sharing through permissions — The Android system provides -signature-based permissions enforcement, so that an application can expose -functionality to another application that is signed with a specified -certificate. By signing multiple applications with the same certificate and -using signature-based permissions checks, your applications can share code and -data in a secure manner.
        • - - - -
        - -

        Another important consideration in determining your signing strategy is -how to set the validity period of the key that you will use to sign your -applications.

        - -
          -
        • If you plan to support upgrades for a single application, you should ensure -that your key has a validity period that exceeds the expected lifespan of -that application. A validity period of 25 years or more is recommended. -When your key's validity period expires, users will no longer be -able to seamlessly upgrade to new versions of your application.
        • - -
        • If you will sign multiple distinct applications with the same key, -you should ensure that your key's validity period exceeds the expected -lifespan of all versions of all of the applications, including -dependent applications that may be added to the suite in the future.
        • - -
        • If you plan to publish your application(s) on Android Market, the -key you use to sign the application(s) must have a validity period -ending after 22 October 2033. The Market server enforces this requirement -to ensure that users can seamlessly upgrade Market applications when -new versions are available.
        • -
        - -

        As you design your application, keep these points in mind and make sure to -use a suitable certificate to sign your applications.

        - -

        Basic Setup for Signing

        - -

        To support the generation of a keystore and debug key, you should first make sure that -Keytool is available to the SDK build -tools. In most cases, you can tell the SDK build tools how to find Keytool by making sure -that your JAVA_HOME environment variable is set and that it references a suitable JDK. -Alternatively, you can add the JDK version of Keytool to your PATH variable.

        - -

        If you are developing on a version of Linux that originally came with GNU Compiler for -Java, make sure that the system is using the JDK version of Keytool, rather than the gcj -version. If Keytool is already in your PATH, it might be pointing to a symlink at -/usr/bin/keytool. In this case, check the symlink target to make sure that it points -to the Keytool in the JDK.

        - -

        If you will release your application to the public, you will also need to have -the Jarsigner tool available on your machine. Both Jarsigner and Keytool are included -in the JDK.

        - -

        Signing in Debug Mode

        - -

        The Android build tools provide a debug signing mode that makes it easier for you -to develop and debug your application, while still meeting the Android system -requirement for signing your .apk when it is installed in the emulator or a device.

        - -

        If you are developing in Eclipse/ADT and have set up Keytool as described -above, signing in debug mode is enabled by default. When you run or debug your -application, ADT signs the .apk for you and installs it on the emulator. No -specific action on your part is needed, provided ADT has access to Keytool.

        - -

        If you use Ant to build your .apk files, debug signing mode -is enabled by default, assuming that you are using a build.xml file generated by the -activitycreator tool included in the latest SDK. When you run Ant against build.xml to -compile your app, the build script generates a keystore/key and signs the .apk for you. -No specific action on your part is needed.

        - -

        Note that you can not release your application to the public if it is signed only with -the debug key.

        - -

        Signing for Public Release

        - -

        When your application is ready for release to other users, you must:

        -
          -
        1. Compile the application in release mode
        2. -
        3. Obtain a suitable private key, and then
        4. -
        5. Sign the application with your private key
        6. -
        7. Secure your private key
        8. -
        - -

        The sections below provide information about these steps.

        - -

        Compiling for Release

        - -

        To prepare your application for release, you must first compile it in release mode. -In release mode, the Android build tools compile your application as usual, -but without signing it with the debug key.

        - -

        If you are developing in Eclipse/ADT, right-click the project in the Package -pane and select Android Tools > Export Application -Package. You can then specify the file location for the unsigned .apk. -Alternatively, you can follow the "Exporting the unsigned .apk" -link in the Manifest Editor overview page.

        - -

        If you are using Ant, all you need to do is specify the build target -"release" in the Ant command. For example, if you are running Ant from the -directory containing your build.xml file, the command would look like this:

        - -
        $ ant release
        - -

        The build script compiles the application .apk without signing it. - -

        Note that you can not release your application unsigned, or signed with the debug key.

        - -

        Obtaining a Suitable Private Key

        - -

        In preparation for signing your application, you must first ensure that -you have a suitable private key with which to sign. A suitable private -key is one that:

        - -
          -
        • Is in your possession
        • -
        • Represents the personal, corporate, or organizational entity to be identified -with the application
        • -
        • Has a validity period that exceeds the expected lifespan of the application -or application suite. A validity period of more than 25 years is recommended. -

          If you plan to publish your application(s) on Android Market, note that a -validity period ending after 22 October 2033 is a requirement. You can not upload an -application if it is signed with a key whose validity expires before that date. -

        • -
        • Is not the debug key generated by the Android SDK tools.
        • -
        - -

        The key may be self-signed. If you do not have a suitable key, you must -generate one using Keytool. Make sure that you have Keytool available, as described -in Basic Setup.

        - -

        To generate a self-signed key with Keytool, use the keytool -command and pass any of the options listed below (and any others, as -needed).

        - -

        Before you run Keytool, make sure to read Securing Your Key for a discussion of how to keep your -key secure and why doing so is critically important to you and to users. In -particular, when you are generating your key, you should select strong -passwords for both the keystore and key.

        - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        Keytool OptionDescription
        -genkeyGenerate a key pair (public and private -keys)
        -vEnable verbose output.
        -keystore <keystore-name>.keystoreA name -for the keystore containing the private key.
        -storepass <password>

        A password for the -keystore.

        As a security precaution, do not include this option -in your command line unless you are working at a secure computer. -If not supplied, Keytool prompts you to enter the password. In this -way, your password is not stored in your shell history.

        -alias <alias_name>An alias for the key.
        -keyalg <alg>The encryption algorithm to use -when generating the key.
        -dname <name>

        A Distinguished Name that describes -who created the key. The value is used as the issuer and subject fields in the -self-signed certificate.

        Note that you do not need to specify this option -in the command line. If not supplied, Jarsigner prompts you to enter each -of the Distinguished Name fields (CN, OU, and so on).

        -validity <valdays>

        The validity period for the -key, in days.

        Note: A value of 9500 or greater is recommended.

        -keypass <password>

        The password for the key.

        -

        As a security precaution, do not include this option -in your command line unless you are working at a secure computer. -If not supplied, Keytool prompts you to enter the password. In this -way, your password is not stored in your shell history.

        - - -

        Here's an example of a Keytool command that generates a private key:

        - -
        $ keytool -genkey -v -keystore my-release-key.keystore 
        --alias alias_name -keyalg RSA -validity 9500
        - -

        Running the example command above, Keytool prompts you to provide -passwords for the keystore and key, and to provide the Distinguished -Name fields for your key. It then generates the keystore as a file called -my-release-key.keystore. The keystore and key are -protected by the passwords you entered. The keystore contains -a single key, valid for 9500 days. The alias is a name that you — -will use later, to refer to this keystore when signing your application.

        - -

        For more information about Keytool, see the documentation at - -http://java.sun.com/j2se/1.5.0/docs/tooldocs/#security

        - -

        Signing Your Application

        - -

        When you are ready to actually sign your .apk for release, you can do so -using the Jarsigner tool. Make sure that you have Jarsigner available on your -machine, as described in Basic Setup. Also, make sure that -the keystore containing your private key is available.

        - -

        To sign your application, you run Jarsigner, referencing both the -application's .apk and the keystore containing the private key with which to -sign the .apk. The table below shows the options you could use.

        - - - - - - - - - - - - - - - - - - -
        Jarsigner OptionDescription
        -keystore <keystore-name>.keystoreThe name of -the keystore containing your private key.
        -verboseEnable verbose output.
        -storepass <password>

        The password for the -keystore.

        As a security precaution, do not include this option -in your command line unless you are working at a secure computer. -If not supplied, Jarsigner prompts you to enter the password. In this -way, your password is not stored in your shell history.

        -keypass <password>

        The password for the private -key.

        As a security precaution, do not include this option -in your command line unless you are working at a secure computer. -If not supplied, Jarsigner prompts you to enter the password. In this -way, your password is not stored in your shell history.

        - -

        Here's how you would use Jarsigner to sign an application package called -my_application.apk, using the example keystore created above. -

        - -
        $ jarsigner -verbose -keystore my-release-key.keystore 
        -my_application.apk alias_name
        - -

        Running the example command above, Jarsigner prompts you to provide -passwords for the keystore and key. It then modifies the APK -in-place, meaning the .apk is now signed. Note that you can sign an -APK multiple times with different keys.

        - -

        To verify that your .apk is signed, you can use a command like this:

        - -
        $ jarsigner -verify my_signed.apk
        - -

        If the .apk is signed properly, Jarsigner prints "jar verified". -If you want more details, you can try one of these commands:

        - -
        $ jarsigner -verify -verbose my_application.apk
        - -

        or

        - -
        $ jarsigner -verify -verbose -certs my_application.apk
        - -

        The command above, with the -certs option added, will show you the -"CN=" line that describes who created the key.

        - -

        Note: if you see "CN=Android Debug", this means the .apk was -signed with the debug key generated by the Android SDK. If you intend to release -your application, you must sign it with your private key instead of the debug -key.

        - -

        For more information about Jarsigner, see the documentation at - -http://java.sun.com/j2se/1.5.0/docs/tooldocs/#security

        - -

        Securing Your Private Key

        - -

        Maintaining the security of your private key is of critical importance, both -to you and to the user. If you allow someone to use your key, or if you leave -your keystore and passwords in an unsecured location such that a third-party -could find and use them, your authoring identity and the trust of the user -are compromised.

        - -

        If a third party should manage to take your key without your knowledge or -permission, that person could sign and distribute applications that maliciously -replace your authentic applications or corrupt them. Such a person could also -sign and distribute applications under your identity that attack other -applications or the system itself, or corrupt or steal user data.

        - -

        Your reputation as a developer entity depends on your securing your private -key properly, at all times, until the key is expired. Here are some tips for -keeping your key secure:

        - -
          -
        • Select strong passwords for the keystore and key.
        • -
        • When you generate your key with Keytool, do not supply the --storepass and -keypass options at the command line. -If you do so, your passwords will be available in your shell history, -which any user on your computer could access.
        • -
        • Similarly, when signing your applications with Jarsigner, -do not supply the -storepass and -keypass -options at the command line.
        • -
        • Do not give or lend anyone your private key, and do not let unauthorized -persons know your keystore and key passwords.
        • -
        - -

        In general, if you follow common-sense precautions when generating, using, -and storing your key, it will remain secure.

        - -

        Expiry of the Debug Certificate

        - -

        The self-signed certificate used to sign your application in debug mode (the default on -Eclipse/ADT and Ant builds) will have an expiration date of 365 days from its creation date.

        - -

        When the certificate expires, you will get a build error. On Ant builds, the error -looks like this:

        - -
        debug:
        -[echo] Packaging bin/samples-debug.apk, and signing it with a debug key...
        -[exec] Debug Certificate expired on 8/4/08 3:43 PM
        - -

        In Eclipse/ADT, you will see a similar error in the Android console.

        - -

        To fix this problem, simply delete the debug.keystore file. On Linux/Mac OSX, -the file is stored in ~/.android. OOn Windows XP, the file is stored in -C:\Documents and Settings\<user>\Local Settings\Application Data\Android. -On Windows Vista, the file is stored in -C:\Users\<user>\AppData\Local\Android.

        - -

        The next time you build, the build tools will regenerate a new keystore and debug key.

        - -

        Note that, if your development machine is using a non-Gregorian locale, the build -tools may erroneously generate an already-expired debug certificate, so that you get an -error when trying to compile your application. For workaround information, see the -troubleshooting topic -I can't compile my app because the build tools generated an expired debug -certificate.

        \ No newline at end of file diff --git a/docs/html/guide/developing/tools/avd.jd b/docs/html/guide/developing/tools/avd.jd index 7ba79685eef7..1e13ace551f7 100644 --- a/docs/html/guide/developing/tools/avd.jd +++ b/docs/html/guide/developing/tools/avd.jd @@ -21,13 +21,12 @@ page.title=Android Virtual Devices
      • Creating the AVD
      • Setting hardware emulation options
      • Default location of the AVD files
      • -
      • Command-line options, create avd
  • Managing AVDs
    1. Moving an AVD
    2. -
    3. Deleting an AVD
    4. +
    5. Updating an AVD
    6. Deleting an AVD
  • @@ -35,7 +34,8 @@ page.title=Android Virtual Devices

    See Also

      -
    1. Android Emulator
    2. +
    3. Android + Emulator
    @@ -366,6 +366,10 @@ the -p option to place the AVD directory in another location. The AVD's .ini file remains in the .android directory on the network drive, regardless of the location of the AVD directory.

    +

    Managing AVDs

    + +

    The sections below provide more information about how to manage AVDs once you've created them.

    +

    Moving an AVD

    If you want to move or rename an AVD, you can do so using this command:

    @@ -455,7 +459,7 @@ files. -s <name> or
    - -s <dimensions> + -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 skins/ directory of the target referenced in the -t diff --git a/docs/html/guide/topics/media/index.jd b/docs/html/guide/topics/media/index.jd index 4541024111b9..fd7d2da021d8 100644 --- a/docs/html/guide/topics/media/index.jd +++ b/docs/html/guide/topics/media/index.jd @@ -9,7 +9,7 @@ page.title=Audio and Video
  • Audio playback and record
  • Video playback
  • Handles data from raw resources, files, streams
  • -
  • Built-in codecs for a variety of media. See Android 1.0 Media Formats
  • +
  • Built-in codecs for a variety of media. See Android Supported Media Formats
  • Key classes

    diff --git a/docs/html/guide/topics/media/media.jd b/docs/html/guide/topics/media/media.jd deleted file mode 100644 index 463686d367ae..000000000000 --- a/docs/html/guide/topics/media/media.jd +++ /dev/null @@ -1,172 +0,0 @@ -page.title=Media Capabilities -@jd:body - - - -

    The Android platform offers built-in encoding/decoding for a variety of common media types, -so that you can easily integrate audio, video, and images into your applications. Accessing the platform's media -capabilities is fairly straightforward &mdash you do so using the same intents and -activities mechanism that the rest of Android uses.

    - -

    Android lets you play audio and video from several types of data sources. You can play audio or video from media files stored in the application's resources (raw resources), from standalone files in the filesystem, or from a data stream arriving over a network connection. To play audio or video from your application, use the {@link android.media.MediaPlayer} class.

    - -

    The platform also lets you record audio, where supported by the mobile device hardware. Recording of video is not currently supported, but is planned for a future release. To record audio, use the -{@link android.media.MediaRecorder} class. Note that the emulator doesn't have hardware to capture audio, but actual mobile devices are likely to provide these capabilities that you can access through MediaRecorder.

    - -

    For a list of the media formats for which Android offers built-in support, see the Android Media Formats appendix.

    - -

    Playing Audio and Video

    -

    Media can be played from anywhere: from a raw resource, from a file from the system, -or from an available network (URL).

    - -

    You can play back the audio data only to the standard -output device; currently, that is the mobile device speaker or Bluetooth headset. You -cannot play sound files in the conversation audio.

    - -

    Playing from a Raw Resource

    -

    Perhaps the most common thing to want to do is play back media (notably sound) -within your own applications. Doing this is easy:

    -
      -
    1. Put the sound (or other media resource) file into the res/raw - folder of your project, where the Eclipse plugin (or aapt) will find it and - make it into a resource that can be referenced from your R class
    2. -
    3. Create an instance of MediaPlayer, referencing that resource using - {@link android.media.MediaPlayer#create MediaPlayer.create}, and then call - {@link android.media.MediaPlayer#start() start()} on the instance:

    4. -
    -
    -    MediaPlayer mp = MediaPlayer.create(context, R.raw.sound_file_1);
    -    mp.start();
    -
    -

    To stop playback, call {@link android.media.MediaPlayer#stop() stop()}. If -you wish to later replay the media, then you must -{@link android.media.MediaPlayer#reset() reset()} and -{@link android.media.MediaPlayer#prepare() prepare()} the MediaPlayer object -before calling {@link android.media.MediaPlayer#start() start()} again. -(create() calls prepare() the first time.)

    -

    To pause playback, call {@link android.media.MediaPlayer#pause() pause()}. -Resume playback from where you paused with -{@link android.media.MediaPlayer#start() start()}.

    - -

    Playing from a File or Stream

    -

    You can play back media files from the filesystem or a web URL:

    -
      -
    1. Create an instance of the MediaPlayer using new
    2. -
    3. Call {@link android.media.MediaPlayer#setDataSource setDataSource()} - with a String containing the path (local filesystem or URL) - to the file you want to play
    4. -
    5. First {@link android.media.MediaPlayer#prepare prepare()} then - {@link android.media.MediaPlayer#start() start()} on the instance:

    6. -
    -
    -    MediaPlayer mp = new MediaPlayer();
    -    mp.setDataSource(PATH_TO_FILE);
    -    mp.prepare();
    -    mp.start();
    -
    -

    {@link android.media.MediaPlayer#stop() stop()} and -{@link android.media.MediaPlayer#pause() pause()} work the same as discussed -above.

    -

    Note: It is possible that mp could be - null, so good code should null check after the new. - Also, IllegalArgumentException and IOException either - need to be caught or passed on when using setDataSource(), since - the file you are referencing may not exist.

    -

    Note: -If you're passing a URL to an online media file, the file must be capable of -progressive download.

    - -

    Recording Media Resources

    -

    Recording media is a little more involved than playing it back, as you would -probably expect, but it is still fairly simple. There is just a little more set -up to do

    -
      -
    1. Create a new instance of {@link android.media.MediaRecorder - android.media.MediaRecorder} using new
    2. -
    3. Create a new instance of {@link android.content.ContentValues - android.content.ContentValues} and put in some standard properties like - TITLE, TIMESTAMP, and the all important - MIME_TYPE
    4. -
    5. Create a file path for the data to go to (you can use {@link - android.content.ContentResolver android.content.ContentResolver} to - create an entry in the Content database and get it to assign a path - automatically which you can then use)
    6. -
    7. Set the audio source using {@link android.media.MediaRecorder#setAudioSource - MediaRecorder.setAudioSource()}. You will probably want to use - MediaRecorder.AudioSource.MIC
    8. -
    9. Set output file format using {@link - android.media.MediaRecorder#setOutputFormat MediaRecorder.setOutputFormat()} -
    10. -
    11. Set the audio encoder using - {@link android.media.MediaRecorder#setAudioEncoder MediaRecorder.setAudioEncoder()} -
    12. -
    13. Finally, {@link android.media.MediaRecorder#prepare prepare()} and - {@link android.media.MediaRecorder#start start()} the recording. - {@link android.media.MediaRecorder#stop stop()} and - {@link android.media.MediaRecorder#release release()} when you are done
    14. -
    -

    Here is a code example that will hopefully help fill in the gaps:

    -

    Start Recording

    -
    -    recorder = new MediaRecorder();
    -    ContentValues values = new ContentValues(3);
    -
    -    values.put(MediaStore.MediaColumns.TITLE, SOME_NAME_HERE);
    -    values.put(MediaStore.MediaColumns.TIMESTAMP, System.currentTimeMillis());
    -    values.put(MediaStore.MediaColumns.MIME_TYPE, recorder.getMimeContentType());
    -    
    -    ContentResolver contentResolver = new ContentResolver();
    -    
    -    Uri base = MediaStore.Audio.INTERNAL_CONTENT_URI;
    -    Uri newUri = contentResolver.insert(base, values);
    -    
    -    if (newUri == null) {
    -        // need to handle exception here - we were not able to create a new
    -        // content entry
    -    }
    -    
    -    String path = contentResolver.getDataFilePath(newUri);
    -
    -    // could use setPreviewDisplay() to display a preview to suitable View here
    -    
    -    recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    -    recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
    -    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
    -    recorder.setOutputFile(path);
    -    
    -    recorder.prepare();
    -    recorder.start();
    -
    -

    Stop Recording

    -
    -    recorder.stop();
    -    recorder.release();
    -
    - -- cgit v1.2.3-59-g8ed1b From 7fd4e448282fc3ee4b6c793f80ae8fb59c235169 Mon Sep 17 00:00:00 2001 From: Dirk Dougherty <> Date: Wed, 22 Apr 2009 01:06:41 -0700 Subject: AI 147339: am: CL 147338 am: CL 147336 Remove stuff relating to the Maps ext library from the docs. Leave a pointer over to code.google.com. Original author: ddougherty Merged from: //branches/cupcake/... Original author: android-build Automated import of CL 147339 --- docs/html/guide/topics/location/geo/mapkey.jd | 210 ------------- docs/html/guide/topics/location/index.jd | 134 ++++---- docs/html/guide/tutorials/views/hello-mapview.jd | 26 ++ docs/html/index.jd | 2 +- docs/html/maps-api-signup.html | 369 ----------------------- docs/html/maps-api-tos.pdf | Bin 97303 -> 0 bytes 6 files changed, 110 insertions(+), 631 deletions(-) delete mode 100644 docs/html/guide/topics/location/geo/mapkey.jd delete mode 100644 docs/html/maps-api-signup.html delete mode 100644 docs/html/maps-api-tos.pdf diff --git a/docs/html/guide/topics/location/geo/mapkey.jd b/docs/html/guide/topics/location/geo/mapkey.jd deleted file mode 100644 index 9aa824c1d61b..000000000000 --- a/docs/html/guide/topics/location/geo/mapkey.jd +++ /dev/null @@ -1,210 +0,0 @@ -page.title=Obtaining a Maps API Key -@jd:body - - - -

    com.google.android.maps.MapView is a very useful class that lets you easily integrate Google Maps into your application. It provides built-in map downloading, rendering, and caching of Maps tiles, as well as a variety of display options and controls. It provides a wrapper around the Google Maps API that lets your application request and manipulate Google Maps data through class methods, and it lets you work with Maps data as you would other types of Views.

    - -

    Because MapView gives you access to Google Maps data, you need to register with the Google Maps service and agree to the applicable Terms of Service before your MapView will be able to obtain data from Google Maps. This will apply whether you are developing your application on the emulator or preparing your application for deployment to mobile devices.

    - -

    Registering for a Maps API Key is simple, free, and has two parts:

    - -
      -
    1. Registering the MD5 fingerprint of the certificate that you will use to sign your application. The Maps registration service then provides you a Maps API Key that is associated with your application's signer certificate.
    2. -
    3. Adding a reference to the Maps API Key in each MapView, whether declared in XML or instantiated directly from code. You can use the same Maps API Key for any MapView in any Android application, provided that the application is signed with the certificate whose fingerprint you registered with the service.
    4. -
    - -

    During registration, you also need to agree to the Maps API Terms of Service, which describe how your application can use the Maps data. In general, the terms of service are permissive and place few restrictions on how you can use the data. For example, the terms allow you to build "friend finder" type applications.

    - -

    The sections below describe how to obtain your Maps API Key and how to reference it from your MapView elements.

    - - - -

    Overview

    - -

    MapView objects are views that display Maps tiles downloaded from the Google Maps service. To ensure that applications use Maps data in an appropriate manner, the Google Maps service requires application developers to register with the service, agreeing to the Terms of Service and supplying an MD5 fingerprint of the certificate(s) that they will use to sign applications. For each registered certificate fingerprint, the service then provides the developer with a Maps API Key — an alphanumeric string that uniquely identifies the certificate and developer registered with the service.

    - -

    The Google Maps service also requires that each MapView identify itself to the service using a Maps API Key. Before providing Maps tiles to a MapView, the service checks the Maps API Key supplied by the MapView to ensure that it:

    -
      -
    • References a certificate/developer registered with the service, and
    • -
    • References a certificate that matches the certificate with which the application (containing the MapView) was signed.
    • -
    - -

    Unless both conditions are met, the service does not provide Maps tiles to the MapView.

    - -

    Each MapView object in your application must reference a Maps API Key. Since the Key is associated with a certificate, all Mapview elements in an application should reference the same Key. Going a step further, all MapView elements in all applications that you sign with the same certificate should reference the same Key.

    - -

    On the other hand, you can register for multiple Maps API Keys, each being associated with a specific certificate. You would want to do this if, for example, you were developing several independent applications that you will sign using different certificates. In this case, note that all MapView elements in a given application can reference the same Maps API Key, but must reference the Key that is associated with the certificate used to sign the application.

    - -

    Because MapView elements must refer to a Maps API Key, you need to register your certificate and receive a Key before you can make use of MapView elements in your application. To make it easier for you to get started using MapView elements, you are welcome to register the debug certificate generated by the SDK tools and receive a temporary Maps API Key. The details of how to do that are given below.

    - -

    When you are preparing to release your application, however, note that you must sign your application with a suitable cryptographic key, rather than the SDK debug key. That means that you will also need to register your application's release certificate with the Google Maps service. After you've done so, you will receive a new Maps API Key that is uniquely associated with your release certificate. To enable the MapView elements in your application to work after release, you must remember to change the Maps API Key for all MapViews in your application so that they refer to the Key associated with your release certificate (rather than your debug certificate).

    - -

    To summarize, the important points to understand about MapViews and the Maps API Key are:

    - -
      -
    • To display Maps data in a MapView, you need to register for a Maps API Key
    • -
    • Each Maps API Key is uniquely associated with a specific certificate, based on an MD5 fingerprint of the certificate
    • -
    • Each MapView must reference a Maps API Key, and the Key referenced must be registered to the certificate used to sign the application
    • -
    • All MapView elements in an application can reference the same Maps API Key
    • -
    • You can register multiple certificates under your developer identity
    • -
    • You can get a temporary Maps API Key based on your debug certificate, but before you publish your application, you must register for a new Key based on your release certificate and update references in your MapViews accordingly
    • -
    - -

    Getting the MD5 Fingerprint of Your Signing Certificate

    - - - -

    To register for a Maps API Key, you need to provide an MD5 fingerprint of the certificate that you will use to sign your application.

    - -

    Before you visit the registration page, use Keytool to generate the fingerprint of the appropriate certificate. - -

    First, determine which key you will use to sign your application at release and make sure of the path to the keystore that contains it.

    - -

    Next, run Keytool with the -list option, against the target keystore and key alias. The table below lists the options you should use.

    - - - - - - - - - - - - - - - - - - - - - -
    Keytool OptionDescription
    -listPrint an MD5 fingerprint of a certificate.
    -keystore <keystore-name>.keystoreThe name of the keystore containing the target key.
    -storepass <password>

    A password for the -keystore.

    As a security precaution, do not include this option -in your command line unless you are working at a secure computer. -If not supplied, Keytool prompts you to enter the password. In this -way, your password is not stored in your shell history.

    -alias <alias_name>The alias for the key for which to generate the MD5 certificate fingerprint.
    -keypass <password>

    The password for the key.

    -

    As a security precaution, do not include this option -in your command line unless you are working at a secure computer. -If not supplied, Keytool prompts you to enter the password. In this -way, your password is not stored in your shell history.

    - -

    Here's an example of a Keytool command that generates an MD5 certificate fingerprint for the key alias_name in the keystore my-release-key.keystore:

    - -
    $ keytool -list -alias alias_name -keystore my-release-key.keystore
    - -

    Keytool will prompt you to enter passwords for the keystore and key. As output of the command, Keytool prints the fingerprint to the shell. For example:

    - -
    Certificate fingerprint (MD5): 94:1E:43:49:87:73:BB:E6:A6:88:D7:20:F1:8E:B5:98
    - -

    Note that, if you happen to forget your Maps API Key, you can repeat the process described above and register the fingerprint again. The server will give you the same key for the specified certificate fingerprint.

    - -

    Once you have the fingerprint, you can go to the Maps API registration site, described next.

    - -

    Getting the MD5 Fingerprint of the SDK Debug Certificate

    - -

    While you are developing and debugging your application, you will likely be -sigining your application in debug mode — that is, the SDK build tools -will automatically sign your application using the debug certificate. To let -your MapView elements properly display Maps data during this period, you should -obtain a temporary Maps API Key registered to the debug certificate. To do so, -you first need to get the MD5 fingerprint of the debug certificate. When -you are ready to release your application, you must register your release -certificate with the Google Maps service and obtain a new Maps API Key. You must -then change the MapView elements in your application to reference the new API -key.

    - -

    To generate an MD5 fingerprint of the debug certificate, first locate the debug keystore. The location at which the SDK tools create the default debug keystore varies by platform:

    - -
      -
    • Windows Vista: C:\Users\<user>\AppData\Local\Android\debug.keystore
    • -
    • Windows XP: C:\Documents and Settings\<user>\Local Settings\Application Data\Android\debug.keystore
    • -
    • OS X and Linux: ~/.android/debug.keystore
    • -
    - -

    If you are using Eclipse/ADT and are unsure where the debug keystore is located, you can select Windows > Prefs > Android > Build to check the full path, which you can then paste into a file explorer to locate the directory containing the keystore.

    - -

    Once you have located the keystore, use this Keytool command to get the MD5 fingerprint of the debug certificate:

    - -
    $ keytool -list -alias androiddebugkey \
    --keystore <path_to_debug_keystore>.keystore \
    --storepass android -keypass android
    - -

    Registering the Certificate Fingerprint with the Google Maps Service

    - -

    When you are ready to register for a Maps API Key, load this page in a browser:

    - -

    http://code.google.com/android/maps-api-signup.html

    - -

    To register for a Maps API Key, follow these steps:

    - -
      -
    1. If you don't have a Google account, use the link on the page to set one up.
    2. -
    3. Read the Android Maps API Terms of Service carefully. If you agree to the terms, indicate so using the checkbox on the screen.
    4. -
    5. Paste the MD5 certificate fingerprint of the certificate that you are registering into the appropriate form field.
    6. -
    7. Click "Generate API Key"
    8. -
    - -

    The server will handle your request, associating the fingerprint with your developer identity and generating a unique Maps API Key, then returning a results page that gives you your Key string.

    - -

    To use the Maps API Key string, copy and paste it into your code as described in the next section.

    - -

    Adding the Maps API Key to your Application

    - -

    Once you've registered with the Google Maps service and have obtained a Maps API Key, you must add it to your application's MapView objects, so that the Maps server will allow them to download Maps tiles.

    - -

    For <MapView> elements declared in XML layout files, add the Maps API Key as the value of a special attribute — android:apiKey. For example: - -

    <com.google.android.maps.MapView
    - android:layout_width="fill_parent"
    - android:layout_height="fill_parent"
    - android:enabled="true"
    - android:clickable="true"
    - android:apiKey="example_Maps_ApiKey_String"
    - />
    - - -

    For MapView objects instantiated directly from code, pass the Maps API Key string as a parameter in the constructor. For example:

    - -
    mMapView = new MapView(this, "example_Maps_ApiKey_String");
    - -

    For more information about MapView, see the MapView class Documentation.

    - -

    Final Steps to Enable MapView Elements

    - -

    If you've added the Maps API Key to the MapViews in your application, here are the final steps to enable the MapView elements to run properly:

    - -
      -
    • Make sure that you added a <uses-library> element referencing the external com.google.android.maps library. The element must be a child of the <application> element in the application's manifest. For example: - -

      <manifest xmlns:android="http://schemas.android.com/apk/res/android"
      - package="com.example.package.name">
      - ...
      - <application android:name="MyApplication" >
      -   <uses-library android:name="com.google.android.maps" />
      - ...
      - </application>

    • - -
    • Sign your application with the certificate that corresponds to the Maps API Key referenced in your MapView elements.
    • - -
    - -

    Note that, when you are ready to publish your application, you must get a Maps API Key that is based on the certificate that you will use to sign the application for release. You must then change the Maps API Key string referenced by all of your MapView elements, so that they reference the new Key.

    - - - diff --git a/docs/html/guide/topics/location/index.jd b/docs/html/guide/topics/location/index.jd index 53f1d290ba64..d7a8ff27585f 100644 --- a/docs/html/guide/topics/location/index.jd +++ b/docs/html/guide/topics/location/index.jd @@ -1,35 +1,43 @@ -page.title=Location +page.title=Location and Maps @jd:body
    +

    Location and Maps quickview

    +
      +
    • Android provides a location framework that your application can use to determine the device's location and bearing and register for updates.
    • +
    • A Google Maps external library is available that lets you display and manage Maps data.
    • +

    In this document

      -
    1. android.location
    2. -
    3. com.google.android.maps
    4. +
    5. Location Services
    6. +
    7. Google Maps External Library
    8. +
    +

    See Also

    +
      +
    1. Google APIs add-on download»
    -

    The Android SDK includes two packages that provide Android's primary support -for building location-based services: -{@link android.location} and {@link-fixme com.google.android.maps}. -Please read on below for a brief introduction to each package.

    +

    Location- and maps-based applications and services are compelling for mobile device users. You can build these capabilities into your applications using the classes of the {@link android.location} package and the Google Maps external library. The sections below provide details.

    + +

    Location Services

    -

    android.location

    +

    Android gives your applications access to the location services supported by +the device through the classes in the android.location package. The +central component of the location framework is the +{@link android.location.LocationManager} system service, which provides an API to +determine location and bearing if the underlying device (if it supports location +capabilities).

    -

    This package contains several classes related to -location services in the Android platform. Most importantly, it introduces the -{@link android.location.LocationManager} -service, which provides an API to determine location and bearing if the -underlying device (if it supports the service). The LocationManager -should not be -instantiated directly; rather, a handle to it should be retrieved via -{@link android.content.Context#getSystemService(String) -getSystemService(Context.LOCATION_SERVICE)}.

    +

    As with other system services, you do not instantiate a LocationManager directly. +Rather, you request an LocationManager instance from the system by calling +{@link android.content.Context#getSystemService(String) getSystemService(Context.LOCATION_SERVICE)}. +The method returns a handle to a new LocationManager instance.

    -

    Once your application has a handle to the LocationManager, your application +

    Once your application has a handle to a LocationManager instance, your application will be able to do three things:

      @@ -42,20 +50,20 @@ will be able to do three things:

      lat/long.
    -

    However, during initial development, you may not have access to real -data from a real location provider (Network or GPS). So it may be necessary to -spoof some data for your application, with some mock location data.

    +

    However, during initial development in the emulator, you may not have access to real +data from a real location provider (Network or GPS). In that case, it may be necessary to +spoof some data for your application using a mock location provider.

    Note: If you've used mock LocationProviders in -previous versions of the SDK (m3/m5), you can no longer provide canned LocationProviders +previous versions of the SDK, you can no longer provide canned LocationProviders in the /system/etc/location directory. These directories will be wiped during boot-up. -Please follow the new procedures below.

    - +Please follow the new procedures outlined below.

    Providing Mock Location Data

    When testing your application on the Android emulator, there are a couple different -ways to send it some spoof location data: with the DDMS tool or the "geo" command.

    +ways to send it some mock location data: you can use the DDMS tool or the "geo" command +option in the emulator console.

    Using DDMS

    With the DDMS tool, you can simulate location data a few different ways:

    @@ -67,9 +75,9 @@ ways to send it some spoof location data: with the DDMS tool or the "geo" comman

    For more information on using DDMS to spoof location data, see the Using DDMS guide. -

    Using the "geo" command

    +

    Using the "geo" command in the emulator console

    Launch your application in the Android emulator and open a terminal/console in -your SDK's /tools directory. Now you can use:

    +your SDK's /tools directory. Connect to the emulator console. Now you can use:

    • geo fix to send a fixed geo-location.

      This command accepts a longitude and latitude in decimal degrees, and an optional altitude in meters. For example:

      @@ -82,28 +90,52 @@ your SDK's /tools directory. Now you can use:

    - -

    com.google.android.maps

    - -

    This package introduces a number of classes related to -rendering, controlling, and overlaying customized information on your own -Google Mapified Activity. The most important of which is the -{@link-fixme com.google.android.maps.MapView} class, which automagically draws you a -basic Google Map when you add a MapView to your layout. Note that, if you -want to do so, then your Activity that handles the -MapView must extend {@link-fixme com.google.android.maps.MapActivity}.

    - -

    Also note that you must obtain a MapView API Key from the Google Maps -service, before your MapView can load maps data. For more information, see -Obtaining a MapView API Key.

    - -

    Once you've created a MapView, you'll probably want to use -{@link-fixme com.google.android.maps.MapView#getController()} to -retrieve a {@link-fixme com.google.android.maps.MapController}, for controlling and -animating the map, and {@link-fixme com.google.android.maps.ItemizedOverlay} to -draw {@link-fixme com.google.android.maps.Overlay}s and other information on the Map.

    - -

    This is not a standard package in the Android library. In order to use it, you must add the following node to your Android Manifest file, as a child of the -<application> element:

    -
    <uses-library android:name="com.google.android.maps" />
    +

    For information about how to connect to the emulator console, see +Using the Emulator Console.

    + +

    Google Maps External Library

    + +

    To make it easier for you to add powerful mapping capabilities to your +application, Google provides a Maps external library that includes the +com.google.android.maps package. The classes of the com.google.android.maps +package offer built-in downloading, rendering, and caching of Maps tiles, as +well as a variety of display options and controls.

    + +

    The key class in the Maps package is +com.google.android.maps.MapView, a subclass of +{@link android.view.ViewGroup ViewGroup}. A MapView displays a map with data obtained +from the Google Maps service. When the MapView has focus, it will capture +keypresses and touch gestures to pan and zoom the map automatically, including +handling network requests for additional maps tiles. It also provides all of the +UI elements necessary for users to control the map. Your application can also +use MapView class methods to control the MapView programmatically and draw a +number of Overlay types on top of the map.

    + +

    In general, the MapView class provides a wrapper around the Google Maps API +that lets your application manipulate Google Maps data through class methods, +and it lets you work with Maps data as you would other types of Views.

    + +

    The Maps external library is not part of the standard Android library, so it +may not be present on some compliant Android-powered devices (although it is +likely to be present on most devices). Similarly, the Maps external library is +not included in the standard Android library provided in the SDK. So that you +can develop using the classes of the com.google.android.maps package, the Maps +external library is made available to you as part of the Google APIs add-on for +the Android SDK.

    + +

    To learn more about the Maps external library and how to download and use the +Google APIs add-on, visit

    + +

    http://code.google.com/android/add-ons/google-apis

    + +

    For your convenience, the Google APIs add-on is also included in the Android +SDK.

    + +

    Note: In order to display Google Maps data in a +MapView, you must register with the Google Maps service and obtain a Maps API +Key. For information about how to get a Maps API Key, see Obtaining +a Maps API Key.

    diff --git a/docs/html/guide/tutorials/views/hello-mapview.jd b/docs/html/guide/tutorials/views/hello-mapview.jd index 976b8ab42e50..30b92c46eee9 100644 --- a/docs/html/guide/tutorials/views/hello-mapview.jd +++ b/docs/html/guide/tutorials/views/hello-mapview.jd @@ -3,6 +3,32 @@ parent.title=Hello, Views parent.link=index.html @jd:body +
    +

    This tutorial requires that you have the Google Maps external library +installed in your SDK environment. By default the Android 1.5 SDK includes the +Google APIs add-on, which in turn includes the Maps external library. If you +don't have the Google APIs SDK add-on, you can download it from this +location:

    + +

    http://code.google.com/android/add-ons/google-apis

    + +

    The Google APIs add-on requires Android 1.5 SDK or later release. After +installing the add-on in your SDK, set your project properties to use the build +target called "Google APIs Add-on". See the instructions for setting a build +target in Developing in +Eclipse with ADT or Developing in Other IDEs, +as appropriate for your environment.

    + +

    You will also need to use the android tool to set up an AVD that uses the +Google APIs deployment target. See Android Virtual Devices for +more information. Once you have set up your environment, you will be able to +build and run the project described in this tutorial

    + +
    +

    A MapView allows you to create your own map-viewing Activity. First, we'll create a simple Activity that can view and navigate a map. Then we will add some overlay items.

    diff --git a/docs/html/index.jd b/docs/html/index.jd index aea229923ae1..cc609a3d681b 100644 --- a/docs/html/index.jd +++ b/docs/html/index.jd @@ -128,7 +128,7 @@ home=true 'name':"Maps API Key", 'img':"maps-large.png", 'title':"Maps API Key", - 'desc':"

    If you're writing an Android application that uses Google Maps (with MapView), you must register your application to obtain a Maps API Key. Without the key, your maps application will not work on Android devices. Obtaining a key requires just a couple of steps.

    Learn how to get a Maps API Key

    " + 'desc':"

    If you're writing an Android application that uses Google Maps (with MapView), you must register your application to obtain a Maps API Key. Without the key, your maps application will not work on Android devices. Obtaining a key requires just a couple of steps.

    Learn more...

    " }, 'market': { diff --git a/docs/html/maps-api-signup.html b/docs/html/maps-api-signup.html deleted file mode 100644 index a604b2ad0eb5..000000000000 --- a/docs/html/maps-api-signup.html +++ /dev/null @@ -1,369 +0,0 @@ - - - - - -Sign Up for the Android Maps API - Android Maps API - Google Code - - - - - - - - - - - -
    - - -
    - - -
    - - -
    - - -
    -

    Android Maps API Key Signup

    - -
    - - -
    - - - -
    -

    Sign Up for the Android Maps API

    - -

    The Android Maps API lets you embed -Google -Maps in your own Android applications. A single Maps API key is -valid for all applications signed by a single certificate. See -this documentation -page for more information about application signing. To get a -Maps API key for your certificate, you will need to provide its the certificate's -fingerprint. This can be obtained using Keytool. For example, on -Linux or Mac OSX, you would examine your debug keystore like this: -

    $ keytool -list -keystore ~/.android/debug.keystore
    -...
    -Certificate fingerprint (MD5): 94:1E:43:49:87:73:BB:E6:A6:88:D7:20:F1:8E:B5:98
    -
    - -

    If you use different keys for signing development builds and -release builds, you will need to obtain a separate Maps API key for -each certificate. Each key will only work in applications signed by -the corresponding certificate.

    - -

    You also need a Google Account -to get a Maps API key, and your API key will be connected to your Google Account.

    -
    -
    - -
    - -
    -
    - - - - - - - - - - - - - -
    I have read and agree with the terms and conditions (printable version)
    - My certificate's MD5 fingerprint: - -
    -
    -
    - - - - -
    -
    - -
    - - - - - diff --git a/docs/html/maps-api-tos.pdf b/docs/html/maps-api-tos.pdf deleted file mode 100644 index 80c28363a021..000000000000 Binary files a/docs/html/maps-api-tos.pdf and /dev/null differ -- cgit v1.2.3-59-g8ed1b From ab5b424db30b478570d83a30497319a72e91068c Mon Sep 17 00:00:00 2001 From: Wu-cheng Li Date: Wed, 22 Apr 2009 16:21:26 +0800 Subject: Remove debug messages. modified: core/java/android/hardware/Camera.java modified: camera/libcameraservice/CameraService.cpp --- camera/libcameraservice/CameraService.cpp | 6 +++--- core/java/android/hardware/Camera.java | 3 --- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/camera/libcameraservice/CameraService.cpp b/camera/libcameraservice/CameraService.cpp index 701259e6774c..96ee5022415e 100644 --- a/camera/libcameraservice/CameraService.cpp +++ b/camera/libcameraservice/CameraService.cpp @@ -900,8 +900,6 @@ status_t CameraService::Client::setParameters(const String8& params) // get preview/capture parameters - key/value pairs String8 CameraService::Client::getParameters() const { - LOGD("getParameters"); - Mutex::Autolock lock(mLock); if (mHardware == 0) { @@ -909,7 +907,9 @@ String8 CameraService::Client::getParameters() const return String8(); } - return mHardware->getParameters().flatten(); + String8 params(mHardware->getParameters().flatten()); + LOGD("getParameters(%s)", params.string()); + return params; } void CameraService::Client::postAutoFocus(bool focused) diff --git a/core/java/android/hardware/Camera.java b/core/java/android/hardware/Camera.java index 106c9200b680..ca579b6b501b 100644 --- a/core/java/android/hardware/Camera.java +++ b/core/java/android/hardware/Camera.java @@ -405,8 +405,6 @@ public class Camera { * @param params the Parameters to use for this Camera service */ public void setParameters(Parameters params) { - Log.e(TAG, "setParameters()"); - //params.dump(); native_setParameters(params.flatten()); } @@ -416,7 +414,6 @@ public class Camera { public Parameters getParameters() { Parameters p = new Parameters(); String s = native_getParameters(); - Log.e(TAG, "_getParameters: " + s); p.unflatten(s); return p; } -- cgit v1.2.3-59-g8ed1b From 9f0b1a48506af8e18162f62570561135b65a4ed1 Mon Sep 17 00:00:00 2001 From: Marco Nelissen Date: Wed, 22 Apr 2009 10:34:12 -0700 Subject: Do case-insensitive matching when determining whether something is music, an alarm sound, notification sound, etc. --- media/java/android/media/MediaScanner.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/media/java/android/media/MediaScanner.java b/media/java/android/media/MediaScanner.java index fc8476d4ae83..ae3e181041d6 100644 --- a/media/java/android/media/MediaScanner.java +++ b/media/java/android/media/MediaScanner.java @@ -453,11 +453,12 @@ public class MediaScanner FileCacheEntry entry = beginFile(path, mimeType, lastModified, fileSize); // rescan for metadata if file was modified since last scan if (entry != null && (entry.mLastModifiedChanged || scanAlways)) { - boolean ringtones = (path.indexOf(RINGTONES_DIR) > 0); - boolean notifications = (path.indexOf(NOTIFICATIONS_DIR) > 0); - boolean alarms = (path.indexOf(ALARMS_DIR) > 0); - boolean podcasts = (path.indexOf(PODCAST_DIR) > 0); - boolean music = (path.indexOf(MUSIC_DIR) > 0) || + String lowpath = path.toLowerCase(); + boolean ringtones = (lowpath.indexOf(RINGTONES_DIR) > 0); + boolean notifications = (lowpath.indexOf(NOTIFICATIONS_DIR) > 0); + boolean alarms = (lowpath.indexOf(ALARMS_DIR) > 0); + boolean podcasts = (lowpath.indexOf(PODCAST_DIR) > 0); + boolean music = (lowpath.indexOf(MUSIC_DIR) > 0) || (!ringtones && !notifications && !alarms && !podcasts); if (mFileType == MediaFile.FILE_TYPE_MP3 || -- cgit v1.2.3-59-g8ed1b From 309f464807fcf7e3055657e6f6d2de7882218fba Mon Sep 17 00:00:00 2001 From: Guang Zhu Date: Wed, 22 Apr 2009 09:58:25 -0700 Subject: package run_page_cycler.py into apk and add code for extraction --- tests/DumpRenderTree/assets/run_page_cycler.py | 102 +++++++++++++++++++++ tests/DumpRenderTree/run_page_cycler.py | 102 --------------------- .../dumprendertree/LayoutTestsAutoTest.java | 2 +- .../android/dumprendertree/LoadTestsAutoTest.java | 34 ++++++- 4 files changed, 136 insertions(+), 104 deletions(-) create mode 100755 tests/DumpRenderTree/assets/run_page_cycler.py delete mode 100755 tests/DumpRenderTree/run_page_cycler.py diff --git a/tests/DumpRenderTree/assets/run_page_cycler.py b/tests/DumpRenderTree/assets/run_page_cycler.py new file mode 100755 index 000000000000..2325047a1840 --- /dev/null +++ b/tests/DumpRenderTree/assets/run_page_cycler.py @@ -0,0 +1,102 @@ +#!/usr/bin/python + +"""Run page cycler tests using Android instrumentation. + + First, you need to get an SD card or sdcard image that has page cycler tests. + + Usage: + Run a single page cycler test: + run_page_cycler.py "file:///sdcard/android/page_cycler/moz/start.html?auto=1\&iterations=10" +""" + +import logging +import optparse +import os +import subprocess +import sys +import time + + + +def main(options, args): + """Run the tests. Will call sys.exit when complete. + + """ + + # Set up logging format. + log_level = logging.INFO + if options.verbose: + log_level = logging.DEBUG + logging.basicConfig(level=log_level, + format='%(message)s') + + # Include all tests if none are specified. + if not args: + print "need a URL, e.g. file:///sdcard/android/page_cycler/moz/start.html" + sys.exit(1) + else: + path = ' '.join(args); + + adb_cmd = "adb "; + if options.adb_options: + adb_cmd += options.adb_options + + logging.info("Running the test ...") + + # Count crashed tests. + crashed_tests = [] + + timeout_ms = '0' + if options.time_out_ms: + timeout_ms = options.time_out_ms + + # Run test until it's done + + run_load_test_cmd_prefix = adb_cmd + " shell am instrument" + run_load_test_cmd_postfix = " -w com.android.dumprendertree/.LayoutTestsAutoRunner" + + # Call LoadTestsAutoTest::runTest. + run_load_test_cmd = run_load_test_cmd_prefix + " -e class com.android.dumprendertree.LoadTestsAutoTest#runPageCyclerTest -e path \"" + path + "\" -e timeout " + timeout_ms + run_load_test_cmd_postfix + + (adb_output, adb_error) = subprocess.Popen(run_load_test_cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate() + if adb_output.find('INSTRUMENTATION_FAILED') != -1 or \ + adb_output.find('Process crashed.') != -1: + logging.error("Error happened : " + adb_output) + sys.exit(1) + + logging.info(adb_output); + logging.info(adb_error); + logging.info("Done\n"); + + # Pull results from /sdcard/load_test_result.txt + results_dir = options.results_directory + if not os.path.exists(results_dir): + os.makedirs(results_dir) + if not os.path.isdir(results_dir): + logging.error("Cannot create results dir: " + results_dir) + sys.exit(1) + + result_file = "/sdcard/load_test_result.txt" + shell_cmd_str = adb_cmd + " pull " + result_file + " " + results_dir + adb_output = subprocess.Popen(shell_cmd_str, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()[0] + logging.info(adb_output) + + logging.info("Results are stored under: " + results_dir + "/load_test_result.txt\n") + +if '__main__' == __name__: + option_parser = optparse.OptionParser() + option_parser.add_option("", "--time-out-ms", + default=None, + help="set the timeout for each test") + option_parser.add_option("", "--verbose", action="store_true", + default=False, + help="include debug-level logging") + option_parser.add_option("", "--adb-options", + default=None, + help="pass options to adb, such as -d -e, etc"); + option_parser.add_option("", "--results-directory", + default="layout-test-results", + help="directory which results are stored.") + + options, args = option_parser.parse_args(); + main(options, args) diff --git a/tests/DumpRenderTree/run_page_cycler.py b/tests/DumpRenderTree/run_page_cycler.py deleted file mode 100755 index 7f728a38245a..000000000000 --- a/tests/DumpRenderTree/run_page_cycler.py +++ /dev/null @@ -1,102 +0,0 @@ -#!/usr/bin/python - -"""Run page cycler tests using Android instrumentation. - - First, you need to get an SD card or sdcard image that has page cycler tests. - - Usage: - Run a single page cycler test: - run_page_cycler.py "file:///sdcard/android/page_cycler/moz/start.html?auto=1\&iterations=10" -""" - -import logging -import optparse -import os -import subprocess -import sys -import time - - - -def main(options, args): - """Run the tests. Will call sys.exit when complete. - - """ - - # Set up logging format. - log_level = logging.INFO - if options.verbose: - log_level = logging.DEBUG - logging.basicConfig(level=log_level, - format='%(message)s') - - # Include all tests if none are specified. - if not args: - print "need a URL, e.g. file:///sdcard/android/page_cycler/moz/start.html" - sys.exit(1) - else: - path = ' '.join(args); - - adb_cmd = "adb "; - if options.adb_options: - adb_cmd += options.adb_options - - logging.info("Running the test ...") - - # Count crashed tests. - crashed_tests = [] - - timeout_ms = '0' - if options.time_out_ms: - timeout_ms = options.time_out_ms - - # Run test until it's done - - run_load_test_cmd_prefix = adb_cmd + " shell am instrument" - run_load_test_cmd_postfix = " -w com.android.dumprendertree/.LayoutTestsAutoRunner" - - # Call LoadTestsAutoTest::runTest. - run_load_test_cmd = run_load_test_cmd_prefix + " -e class com.android.dumprendertree.LoadTestsAutoTest#runTest -e path \"" + path + "\" -e timeout " + timeout_ms + run_load_test_cmd_postfix - - (adb_output, adb_error) = subprocess.Popen(run_load_test_cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate() - if adb_output.find('INSTRUMENTATION_FAILED') != -1 or \ - adb_output.find('Process crashed.') != -1: - logging.error("Error happened : " + adb_output) - sys.exit(1) - - logging.info(adb_output); - logging.info(adb_error); - logging.info("Done\n"); - - # Pull results from /sdcard/load_test_result.txt - results_dir = options.results_directory - if not os.path.exists(results_dir): - os.makedirs(results_dir) - if not os.path.isdir(results_dir): - logging.error("Cannot create results dir: " + results_dir) - sys.exit(1) - - result_file = "/sdcard/load_test_result.txt" - shell_cmd_str = adb_cmd + " pull " + result_file + " " + results_dir - adb_output = subprocess.Popen(shell_cmd_str, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()[0] - logging.info(adb_output) - - logging.info("Results are stored under: " + results_dir + "/load_test_result.txt\n") - -if '__main__' == __name__: - option_parser = optparse.OptionParser() - option_parser.add_option("", "--time-out-ms", - default=None, - help="set the timeout for each test") - option_parser.add_option("", "--verbose", action="store_true", - default=False, - help="include debug-level logging") - option_parser.add_option("", "--adb-options", - default=None, - help="pass options to adb, such as -d -e, etc"); - option_parser.add_option("", "--results-directory", - default="layout-test-results", - help="directory which results are stored.") - - options, args = option_parser.parse_args(); - main(options, args) diff --git a/tests/DumpRenderTree/src/com/android/dumprendertree/LayoutTestsAutoTest.java b/tests/DumpRenderTree/src/com/android/dumprendertree/LayoutTestsAutoTest.java index 910cb8dedcd7..562b1f32aaca 100644 --- a/tests/DumpRenderTree/src/com/android/dumprendertree/LayoutTestsAutoTest.java +++ b/tests/DumpRenderTree/src/com/android/dumprendertree/LayoutTestsAutoTest.java @@ -470,7 +470,7 @@ public class LayoutTestsAutoTest extends ActivityInstrumentationTestCase2 0 ) { + while ((len = in.read(buf)) >= 0 ) { out.write(buf, 0, len); } out.close(); diff --git a/tests/DumpRenderTree/src/com/android/dumprendertree/LoadTestsAutoTest.java b/tests/DumpRenderTree/src/com/android/dumprendertree/LoadTestsAutoTest.java index e793ed4d3f99..5cb51554abfc 100644 --- a/tests/DumpRenderTree/src/com/android/dumprendertree/LoadTestsAutoTest.java +++ b/tests/DumpRenderTree/src/com/android/dumprendertree/LoadTestsAutoTest.java @@ -31,6 +31,8 @@ import com.android.dumprendertree.TestShellCallback; import java.io.FileOutputStream; import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; import java.io.PrintStream; public class LoadTestsAutoTest extends ActivityInstrumentationTestCase2 { @@ -38,6 +40,9 @@ public class LoadTestsAutoTest extends ActivityInstrumentationTestCase2= 0 ) { + out.write(buf, 0, len); + } + out.close(); + in.close(); + } + }catch (IOException e) { + e.printStackTrace(); + } + + } + } -- cgit v1.2.3-59-g8ed1b From a4f01520b95b7d8781233dffb6330a9ad57e3871 Mon Sep 17 00:00:00 2001 From: Eric Fischer <> Date: Wed, 22 Apr 2009 12:33:55 -0700 Subject: AI 147406: Import revised translations. Automated import of CL 147406 --- core/res/res/values-es/strings.xml | 2 +- core/res/res/values-pl/strings.xml | 110 ++++++++++++++++++------------------- 2 files changed, 56 insertions(+), 56 deletions(-) diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml index b2294f3267a6..cf1811bd791c 100644 --- a/core/res/res/values-es/strings.xml +++ b/core/res/res/values-es/strings.xml @@ -406,7 +406,7 @@ "Bloqueada para la red" "La tarjeta SIM está bloqueada con el código PUK." "Consulta la guía del usuario o ponte en contacto con el servicio de atención al cliente." - "Introduzca código PIN." + "Introduce el código PIN." "Desbloqueando tarjeta SIM..." "Has realizado %d intentos fallidos de creación de un patrón de desbloqueo. "\n\n"Inténtalo de nuevo dentro de %d segundos." "Has realizado %d intentos fallidos de creación del patrón de desbloqueo. Si realizas %d intentos fallidos más, se te pedirá que desbloquees el teléfono con tus credenciales de acceso de Google."\n\n" Espera %d segundos e inténtalo de nuevo." diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml index fc7d53e94366..560bd5aa65f2 100644 --- a/core/res/res/values-pl/strings.xml +++ b/core/res/res/values-pl/strings.xml @@ -311,7 +311,7 @@ "Pozwala aplikacji na pobranie listy kont zapisanych w telefonie." "wyświetlanie stanu sieci" "Pozwala aplikacji na wyświetlanie stanu wszystkich sieci." - "pełen dostęp do Internetu" + "pełen dostęp do internetu" "Pozwala aplikacji na tworzenie gniazd sieciowych." "zapisywanie ustawień nazwy punktu dostępowego (APN, Access Point Name)" "Pozwala aplikacji na zmianę ustawień APN, takich jak serwer proxy oraz port dowolnego APN." @@ -566,10 +566,10 @@ "%1$s, %2$s" "%1$s, %2$s" "%1$s, %2$s" - "MMMM' 'd', 'yyyy" - "d' 'MMMM', 'yyyy" - "MMM' 'd', 'yyyy" - "d' 'MMM', 'yyyy" + "d' 'MMMM' 'yyyy" + "d' 'MMMM' 'yyyy" + "d' 'MMM' 'yyyy" + "d' 'MMM' 'yyyy" "h':'mm' 'a" "HH':'mm" "południe" @@ -582,34 +582,34 @@ "%-d %B %Y" "%B %Y" "%H:%M:%S" - "%H:%M:%S %B %-d, %Y" - "%2$s %3$s – %7$s %8$s" - "%1$s, %2$s %3$s – %6$s, %7$s %8$s" - "%2$s %3$s – %7$s %8$s, %9$s" - "%1$s, %2$s %3$s – %6$s, %7$s %8$s, %9$s" - "%2$s %3$s, %5$s – %7$s %8$s, %10$s" - "%1$s, %2$s %3$s, %5$s – %6$s, %7$s %8$s, %10$s" - "%2$s %3$s, %4$s, %5$s – %7$s %8$s, %9$s, %10$s" - "%1$s, %2$s %3$s, %4$s, %5$s – %6$s, %7$s %8$s, %9$s, %10$s" - "%2$s/%3$s – %7$s/%8$s" - "%1$s, %2$s/%3$s – %6$s, %7$s/%8$s" - "%2$s/%3$s/%4$s – %7$s/%8$s/%9$s" - "%1$s, %2$s/%3$s/%4$s – %6$s, %7$s/%8$s/%9$s" - "%2$s/%3$s, %5$s – %7$s/%8$s, %10$s" - "%1$s, %2$s/%3$s, %5$s – %6$s, %7$s/%8$s, %10$s" - "%2$s/%3$s/%4$s, %5$s – %7$s/%8$s/%9$s, %10$s" - "%1$s, %2$s/%3$s/%4$s, %5$s – %6$s, %7$s/%8$s/%9$s, %10$s" - "%2$s %3$s – %8$s" - "%1$s, %2$s %3$s – %6$s, %7$s %8$s" - "%2$s %3$s – %8$s, %9$s" - "%1$s, %2$s %3$s, %4$s – %6$s, %7$s %8$s, %9$s" - "%2$s %3$s, %5$s – %7$s %8$s, %10$s" - "%1$s, %2$s %3$s, %5$s – %6$s, %7$s %8$s, %10$s" - "%2$s %3$s, %4$s, %5$s – %7$s %8$s, %9$s, %10$s" - "%1$s, %2$s %3$s, %4$s, %5$s – %6$s, %7$s %8$s, %9$s, %10$s" + "%H:%M:%S, %-d %B %Y" + "%3$s %2$s – %8$s %7$s" + "%1$s, %3$s %2$s – %6$s, %8$s %7$s" + "%3$s %2$s – %8$s %7$s %9$s" + "%1$s, %3$s %2$s – %6$s, %8$s %7$s %9$s" + "%3$s %2$s, %5$s – %8$s %7$s, %10$s" + "%1$s, %3$s %2$s, %5$s – %6$s, %8$s %7$s, %10$s" + "%3$s %2$s %4$s, %5$s – %8$s %7$s %9$s, %10$s" + "%1$s, %3$s %2$s %4$s, %5$s – %6$s, %8$s %7$s %9$s, %10$s" + "%3$s/%2$s – %8$s/%7$s" + "%1$s, %3$s/%2$s – %6$s, %8$s/%7$s" + "%3$s/%2$s/%4$s – %8$s/%7$s/%9$s" + "%1$s, %3$s/%2$s/%4$s – %6$s, %8$s/%7$s/%9$s" + "%3$s/%2$s, %5$s – %8$s/%7$s, %10$s" + "%1$s, %3$s/%2$s, %5$s – %6$s, %8$s/%7$s, %10$s" + "%3$s/%2$s/%4$s, %5$s – %8$s/%7$s/%9$s, %10$s" + "%1$s, %3$s/%2$s/%4$s, %5$s – %6$s, %8$s/%7$s/%9$s, %10$s" + "%3$s – %8$s %2$s" + "%1$s, %3$s %2$s – %6$s, %8$s %7$s" + "%3$s – %8$s %2$s %9$s" + "%1$s, %3$s %2$s %4$s – %6$s, %8$s %7$s %9$s" + "%3$s %2$s, %5$s – %8$s %7$s, %10$s" + "%1$s, %3$s %2$s, %5$s – %6$s, %8$s %7$s, %10$s" + "%3$s %2$s %4$s, %5$s – %8$s %7$s %9$s, %10$s" + "%1$s, %3$s %2$s %4$s, %5$s – %6$s, %8$s %7$s %9$s, %10$s" "%-d %b %Y" "%b %Y" - "%b %-d" + "%-d %b" "niedziela" @@ -659,30 +659,30 @@ "Październik" "Listopad" "Grudzień" - "Sty" - "Lut" - "Mar" - "Kwi" - "Maj" - "Cze" - "Lip" - "Sie" - "Wrz" - "Paź" - "Lis" - "Gru" - "Sty" - "Lut" - "Pon" - "Kwi" - "Maj" - "Cze" - "Lip" - "Sie" - "Wrz" - "Paź" - "Lis" - "Gru" + "sty" + "lut" + "mar" + "kwi" + "maj" + "cze" + "lip" + "sie" + "wrz" + "paź" + "lis" + "gru" + "sty" + "lut" + "mar" + "kwi" + "maj" + "cze" + "lip" + "sie" + "wrz" + "paź" + "lis" + "gru" "%1$02d:%2$02d" "%1$d:%2$02d:%3$02d" "Zaznacz wszystko" -- cgit v1.2.3-59-g8ed1b From 9db5e1d0abedf4573773f8244d4e4ff61a2429e3 Mon Sep 17 00:00:00 2001 From: Dirk Dougherty <> Date: Wed, 22 Apr 2009 13:19:30 -0700 Subject: AI 147303: am: CL 147297 Update Android 1.5 SDK Download, Release Notes, Version Notes, Highlights Please let me know if you have other "known issues", "resolved issues", or "highlights". Also, note that the installing and upgrading docs are being updated in a different CL, so the new version is not displayed on my staging server. Original author: ddougherty Merged from: //branches/cupcake/... Automated import of CL 147303 --- docs/html/sdk/1.5_r1/index.jd | 45 ++++-- docs/html/sdk/RELEASENOTES.jd | 229 +++++++++++++++++++++++++++-- docs/html/sdk/adt_download.jd | 17 ++- docs/html/sdk/android-1.5-highlights.jd | 205 ++++++++++++++++++++++++++ docs/html/sdk/android-1.5.jd | 245 +++++++++++++++++++++++++++++++- docs/html/sdk/sdk_toc.cs | 17 +-- 6 files changed, 717 insertions(+), 41 deletions(-) create mode 100644 docs/html/sdk/android-1.5-highlights.jd diff --git a/docs/html/sdk/1.5_r1/index.jd b/docs/html/sdk/1.5_r1/index.jd index 412887a95257..834ab7991959 100644 --- a/docs/html/sdk/1.5_r1/index.jd +++ b/docs/html/sdk/1.5_r1/index.jd @@ -2,51 +2,72 @@ sdk.version=1.5 sdk.rel.id=1 sdk.date=April 2009 -sdk.win_download= +sdk.win_download=android-sdk-windows-1.5_r1.zip sdk.win_bytes= sdk.win_checksum= -sdk.mac_download= +sdk.mac_download=android-sdk-mac_x86-1.5_r1.zip sdk.mac_bytes= sdk.mac_checksum= -sdk.linux_download= +sdk.linux_download=android-sdk-linux_x86-1.5_r1.zip sdk.linux_bytes= sdk.linux_checksum= -page.title=Download Android SDK +page.title=Android 1.5 SDK, Release 1 @jd:body

    SDK Contents

    Development tools

    -

    The SDK includes a variety of tools for developing and debugging application code and designing an application UI. You can read about the tools in the +

    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 included in this SDK includes many updates from that provided in the previous SDK and requires you to migrate your applications to the new development environment. For details, see the Upgrading the SDK document.

    +

    The tools package in this SDK includes updates from those provided in the previous SDK. The tools also require a different project structure. To use the new tools, you need to migrate your applications to the new development environment. For more information about how to migrate, see Upgrading the SDK. -

    System Images

    +

    For more information about the new tools features, see the SDK Release Notes. -

    The Android system images listed below are included in this SDK. For more information about a system image — features, applications included, localizations, API changes, and so on — see its Version Notes.

    +

    Android Platforms

    + +

    This SDK includes multiple Android platform versions that you 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.

    - + - + - + + + +
    System ImageAPI LevelNotesDescriptionPlatformAPI LevelNotesDescription
    Android 1.5 3 Version NotesIncludes a set of standard development applications. Includes 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).
    Android 1.1 2 Version NotesIncludes a set of standard development applications. Includes a compliant Android 1.1 library and system image with a set of development applications. Also includes the Maps external library (due to legacy build system issues). +external library.
    + +

    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-on listed below. The Android system API Level required by the add-on is noted.

    + + + + + + + + +
    Add-OnAPI LevelNotesDescription
    Google APIs3 Includes the com.google.android.maps external library, a compliant +system image, a {@link android.location.Geocoder Geocoder} +backend service implementation, documentation, and sample code.
    @@ -55,7 +76,6 @@ page.title=Download Android SDK

    You can look at a variety of tutorials and samples in the Dev Guide and access the sample code itself in the <sdk>/platforms/android-1.5/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.

    - diff --git a/docs/html/sdk/RELEASENOTES.jd b/docs/html/sdk/RELEASENOTES.jd index bad71a2a59da..c6a887a44662 100644 --- a/docs/html/sdk/RELEASENOTES.jd +++ b/docs/html/sdk/RELEASENOTES.jd @@ -1,21 +1,209 @@ page.title=SDK Release Notes @jd:body -

    This document provides version-specific information about Android SDK releases. For the latest known issues, please ensure that you're viewing this page at: http://developer.android.com/sdk/RELEASENOTES.html.

    +

    This document provides version-specific information about Android SDK +releases. For the latest known issues, please ensure that you're viewing this +page at: +http://developer.android.com/sdk/RELEASENOTES.html.

    + +

    Android 1.5 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 many new features for developers. Highlights of the +changes include:

    + +
      +
    • Multiple versions of the Android platform are included (Android 1.1, +Android 1.5). The tools are updated to let you deploy your application +on any platform in the SDK, which helps you ensure forward-compitility and, +if applicable, backward-compatibility.
    • +
    • Introduces Android +Virtual Devices — (AVD) configurations of options that you +run in the emulator to better model actual devices. Each AVD gets its +own dedicated storage area, making it much easier to work with multiple emulators +that are running concurrently.
    • +
    • Support for SDK add-ons, which extend the +Android SDK to give you access to one or more external Android libraries and/or +a customized (but compliant) system image that can run in the emulator.
    • +
    • The new Eclipse ADT plugin (version 0.9.0) offers new Wizards to let you +create projects targetted for specific Android configurations, generate XML +resources (such as layouts, animations, and menus), generate alternate layouts, +and export and sign your application for publishing.
    • +
    • Improved JUnit support in ADT
    • +
    • Easier profiling of performance
    • +
    • Easier management of localized applications. You can now include or +exclude locale resources when building your APK from a single +Android project.
    • +
    • A new tool called "android" replaces the activitycreator script.
    • +
    + +

    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.

    + +

    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. + +

    SDK Add-Ons

    + +

    This version of the SDK introduces support for SDK add-ons, which extend the +Android SDK to give you access to one or more external Android libraries and/or +a customized (but compliant) system image that can run in the emulator. The +purpose of an SDK add-on is to give you a way to develop applications for a +specific actual device (or family of devices) that extends the APIs available to +Android applications through external libraries or system customizations.

    + +

    From the perspective of your Android development environment, an SDK add-on +is similar to any of the Android platform targets included in the SDK — it +includes an external library, a system image, as well as custom emulator skins +and system properties. The add-on differs in that the Android platform it +provides may include customized UI, resources, or behaviors, a different set of +preinstalled applications, or other similar modifications. + +

    The SDK includes a single SDK add-on — the Google APIs add-on. The +Google APIs add-on gives your application access to the com.google.android.maps +external library that is included on many (if not most) Android-powered devices. +The Google APIs add-on also includes a {@link android.location.Geocoder Geocoder} +backend service implementation. For more information, see the "Maps External +Library" section below.

    + +

    Android Virtual Devices (AVDs)

    + +

    The SDK now gives you the capability to compile an application against any +one of several system targets, then run it in the emulator on top of any +compatible system image. There are two types of targets:

    +
      +
    • Targets that represent core Android platform versions.
    • +
    • Targets that are SDK add-ons, which typically provide application access to +one or more external libraries and/or a customized (but compliant) system image +that can run in the emulator. +
    + +

    A new tool called "android" lets you discover what targets and AVDs are +available to use.

    + +

    For more information about AVDs, see Android Virtual Devices + +

    Other Notes

    + +

    Maps External Library

    + +

    In previous versions of the SDK, the com.google.android.maps package was +included in the standard Android library and system image. In the Android 1.5 +SDK, that is not the case. The Android 1.5 library and system image do not +include the Maps external library (com.google.android.maps). However, the Maps +external library is available as part of the Google APIs add-on for the Android +SDK, downloadable from this location:

    + +

    http://code.google.com +/android/add-ons/google-apis

    + +

    For your convenience, the Google APIs add-on is included in the SDK.

    + +

    For information about how to register for a Maps API Key, see + +Obtaining a Maps API Key.

    + +

    USB Drivers 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. For your convenience, the Windows version of the Android SDK includes +these USB drivers that you can install, to let you develop on the device:

    + +
      +
    • USB driver for 32-bit XP and Vista
    • +
    • USB driver for 64-bit Vista only
    • +
    + +

    The USB driver files are located in the +<SDK>/usb_driver directory. For details and +installation instructions, see Setting Up a +Device for Development.

    +

    + +

    Resolved Issues, Changes

    + +

    Media

    +
      +
    • Updated documentation for {@link android.media.SoundPool +android.media.SoundPool}
    • +
    • {@link android.webkit.WebView} objects no longer automatically save +thumbnails. The {@link android.webkit.WebView#capturePicture() capturePicture()} +method will need to be called manually.
    • +
    + +

    Known Issues

    + +

    Sensor problems in Emulator

    + +
      +
    • If your application uses the Sensor API and you are running it in the +emulator on the Android 1.5 system image, you may experience problems. Your +application may generate ANR messages or crash when using the sensors. The +problem is being investigated.
    • +
    + +

    Other

    + +
      +
    • We regret to inform developers that Android 1.5 will not include support for +the Zilog Z80 processor architecture.
    • +
    +

    Android 1.1 SDK, Release 1

    -

    This SDK provides the development tools and Android system image you need to create applications for Android-powered devices. Applications developed on this SDK will be compatible with mobile devices running the Android 1.1 platform.

    +

    This SDK provides the development tools and Android system image you need to +create applications for Android-powered devices. Applications developed on this +SDK will be compatible with mobile devices running the Android 1.1 platform. +

    -

    This release provides an updated system image (Android 1.1), updated documentation, and the same set of development tools provided in the Android 1.0 r2 SDK. The updated system image includes bug fixes and some smaller features, as well as a few minor API changes from the 1.0 version.

    +

    This release provides an updated system image (Android 1.1), updated +documentation, and the same set of development tools provided in the Android 1.0 +r2 SDK. The updated system image includes bug fixes and some smaller features, +as well as a few minor API changes from the 1.0 version.

    -

    For details about the Android 1.1 system image included in the SDK — including bug fixes, features, and API changes — please read the Android 1.1 Version Notes.

    +

    For details about the Android 1.1 system image included in the SDK — +including bug fixes, features, and API changes — please read the Android 1.1 Version Notes.

    App Versioning for Android 1.1

    -

    If you are using this SDK to build an application that is compatible only with Android-powered devices running the Android 1.1 platform, please note that you must set the the android:minSdkVersion attribute in the application's manifest to the API Level of Android 1.1 — "2".

    +

    If you are using this SDK to build an application that is compatible +only with Android-powered devices running the Android 1.1 platform, +please note that you must set the the +android:minSdkVersion attribute in the application's manifest to +the API Level of Android 1.1 — "2".

    -

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

    +

    Specifically, you specify the android:minSdkVersion attribute in +a <uses-sdk> element as a child of +<manifest> in the manifest file. When set, the attribute +looks like this:

    <manifest>
       ...
    @@ -24,13 +212,29 @@ page.title=SDK Release Notes
     </manifest>
     
    -

    By setting android:minSdkVersion in this way, you ensure that users will only be able to install your application if their devices are running the Android 1.1 platform. In turn, this ensures that your application will function properly on their devices, especially if it uses APIs introduced in Android 1.1.

    +

    By setting android:minSdkVersion in this way, you ensure that +users will only be able to install your application if their devices are running +the Android 1.1 platform. In turn, this ensures that your application will +function properly on their devices, especially if it uses APIs introduced in +Android 1.1.

    -

    If your application uses APIs introduced in Android 1.1 but does not declare <uses-sdk minSdkVersion="2" />, then it will run properly on Android 1.1 devices but not on Android 1.0 devices.

    +

    If your application uses APIs introduced in Android 1.1 but does not declare +<uses-sdk minSdkVersion="2" />, then it will run properly on +Android 1.1 devices but not on Android 1.0 devices.

    -

    If your application does not use any new APIs introduced in Android 1.1, you can indicate Android 1.0 compatibility by removing minSdkVersion or setting the attribute to "1". However, before publishing your application, you must make sure to compile your application against the Android 1.0 system image (available in the Android 1.0 SDK), to ensure that it builds and functions properly for Android 1.0 devices. You should test the application against system images corresponding to the API Levels that the application is designed to be compatible with.

    +

    If your application does not use any new APIs introduced in Android 1.1, you +can indicate Android 1.0 compatibility by removing minSdkVersion or +setting the attribute to "1". However, before publishing your application, you +must make sure to compile your application against the Android 1.0 system image +(available in the Android 1.0 SDK), to ensure that it builds and functions +properly for Android 1.0 devices. You should test the application against system +images corresponding to the API Levels that the application is designed to be +compatible with.

    -

    If you are sure your application is not using Android 1.1 APIs and has no need to use them, you might find it easier to keep working in the Android 1.0 SDK, rather than migrating to the Android 1.1 SDK and having to do additional testing.

    +

    If you are sure your application is not using Android 1.1 APIs and has no +need to use them, you might find it easier to keep working in the Android 1.0 +SDK, rather than migrating to the Android 1.1 SDK and having to do additional +testing.

    ADT Plugin Compatibility

    @@ -52,7 +256,7 @@ application on the Android 1.1 emulator for the first time.

    If you're installing the Android SDK for the first time, please see the instructions in Installing the SDK. +href="{@docRoot}sdk/1.5_r1/installing.html">Installing the SDK.

    Other Notes

    @@ -136,9 +340,6 @@ are not working in this release. - - -

    Android 1.0 SDK, Release 2

    This SDK release includes the Android 1.0 platform and application API. diff --git a/docs/html/sdk/adt_download.jd b/docs/html/sdk/adt_download.jd index 6e9eec4a2b73..6d46297830e8 100644 --- a/docs/html/sdk/adt_download.jd +++ b/docs/html/sdk/adt_download.jd @@ -26,11 +26,18 @@ page. - 0.8.0 - ADT-0.8.0.zip - 23 September 2008 - Android 1.1 SDK, Release 1
    Android 1.0 SDK, Release 1
    - Required for users of Android 1.1 SDK, Release 1 and Android 1.0 SDK, Release 1
    + 0.9.0 + ADT-0.9.0.zip +
    27 April 2009 + Android 1.5 SDK + Required for users of Android 1.5 SDK (and later releases)
    + + + 0.8.0 + ADT-0.8.0.zip +
    23 September 2008 + Android 1.1 SDK
    Android 1.0 SDK
    +
    Required for users of Android 1.1 SDK and Android 1.0 SDK
    0.7.1 diff --git a/docs/html/sdk/android-1.5-highlights.jd b/docs/html/sdk/android-1.5-highlights.jd new file mode 100644 index 000000000000..46022d159d22 --- /dev/null +++ b/docs/html/sdk/android-1.5-highlights.jd @@ -0,0 +1,205 @@ +page.title=Android 1.5 Platform Highlights +sdk.version=1.5_r1 +@jd:body + +

    +April 2009 +

    + + +

    The Android 1.5 platform introduces many new features for users and developers. +The list below provides an overview of the changes.

    + + + +

    User interface refinements

    +
      +
    • System-wide: +
        +
      • Refinement of all core UI elements
      • +
      • Animated window transitions (off by default)
      • +
      • Accelerometer-based application rotations
      • +
      +
    • +
    • UI polish for: +
        +
      • In-call experience
      • +
      • Contacts, Call log, and Favorites
      • +
      • SMS & MMS
      • +
      • Browser
      • +
      • Gmail
      • +
      • Calendar
      • +
      • Email
      • +
      • Camera & Gallery
      • +
      • Application management
      • +
      +
    • +
    + +

    Performance improvements

    + +
      +
    • Faster Camera start-up and image capture
    • +
    • Much faster acquisition of GPS location (powered by SUPL AGPS)
    • +
    • Smoother page scrolling in Browser
    • +
    • Speedier GMail conversation list scrolling
    • +
    + +

    New features

    + +
      +
    • On-screen soft keyboard +
        +
      • Works in both portrait and landscape orientation
      • +
      • Support for user installation of 3rd party keyboards
      • +
      • User dictionary for custom words
      • +
      +
    • + +
    • Home screen +
        +
      • Widgets +
          +
        • Bundled home screen widgets include: analog clock, calendar, + music player, picture frame, and search
        • +
      • +
      • Live folders
      • +
      +
    • + +
    • Camera & Gallery +
        +
      • Video recording
      • +
      • Video playback (MPEG-4 & 3GP formats)
      • +
      +
    • + +
    • Bluetooth  +
        +
      • Stereo Bluetooth support (A2DP and AVCRP profiles)
      • +
      • Auto-pairing
      • +
      • Improved handsfree experience
      • +
      +
    • + +
    • Browser +
        +
      • Updated with latest Webkit browser & Squirrelfish Javascript engines
      • +
      • Copy 'n paste in browser
      • +
      • Search within a page
      • +
      • User-selectable text-encoding
      • +
      • UI changes include: +
          +
        • Unified Go and Search box
        • +
        • Tabbed bookmarks/history/most-visited screen
        • +
        +
      • +
      +
    • + +
    • Contacts +
        +
      • Shows user picture for Favorites
      • +
      • Specific date/time stamp for events in call log
      • +
      • One-touch access to a contact card from call log event
      • +
      +
    • + +
    • System +
        +
      • New Linux kernel (version 2.6.27)
      • +
      • SD card filesystem auto-checking and repair
      • +
      • SIM Application Toolkit 1.0
      • +
      +
    • + +
    • Google applications (not available in the Android 1.5 System Image that is +included in the Android SDK) +
        +
      • View Google Talk friends' status in Contacts, SMS, MMS, GMail, and + Email applications
      • +
      • Batch actions such as archive, delete, and label on Gmail messages
      • +
      • Upload videos to Youtube
      • +
      • Upload photos on Picasa
      • +
      +
    • +
    + +

    New APIs and manifest elements

    + + diff --git a/docs/html/sdk/android-1.5.jd b/docs/html/sdk/android-1.5.jd index fff911e29096..c9ab42e01e9e 100644 --- a/docs/html/sdk/android-1.5.jd +++ b/docs/html/sdk/android-1.5.jd @@ -8,7 +8,250 @@ sys.date=April 2009 API Level: 3

    -

    Please see Download the Android 1.5 Early Look SDK for more information.

    +

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

    + + + +

    Overview

    + +

    The Android 1.5 system delivered in the SDK (as library and system image) is +the development counterpart to the Android 1.5 production system image, +deployable to Android-powered handsets starting in May 2009. The system is fully +compliant and includes no external libraries. This is the first version of the +Android SDK that does not include the Maps external library.

    + +

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

    + +

    Applications can reference a specific API Level value in their +manifest files, to indicate the minimum version of the Android system +required to run the application. To reference a minimum API Level, applications +can add a minSdkVersion attribute in their manifest files. +The value of the attribute is an integer corresponding to an API Level +identifier. Prior to installing an application, the system then checks the value of +minSdkVersion and allows the install only +if the referenced integer is less than or equal to the API Level integer stored +in the system itself.

    + +

    When you migrate your application to the new SDK, you will need to choose +the platform version against which you will compile your application. In +general, you should compile your application against the lowest possible +version of the platform that your application can support. After you determine +the lowest version, you should ensure that your application's manifest file +defines the API Level of the lowest compatible platform version in the +minSdkVersion attribute. + +

    After compiling your application, you should make sure to test it on the +platform specified in the application's minSdkVersion attribute. To +ensure forward-compatibility, you should also run the application on platforms +using a higher API Level than that used by your application. To run your +application against different platform versions in the emulator, you 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.

    + +

    If you build an application using the Android 1.5 library and your +application makes use of any APIs introduced in API Level 3, you must set the +android:minSdkVersion attribute in the application's manifest to +"3".

    + +

    Specifically, you define the android:minSdkVersion +attribute in a <uses-sdk> element as a child of +<manifest> in the manifest file. When set, the +attribute looks like this:

    + +
    <manifest>
    +  ...
    +  <uses-sdk minSdkVersion="3" />
    +  ...
    +</manifest>
    + +

    By setting android:minSdkVersion in this way, you ensure 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 will function properly on their devices. This is especially +important if your application uses APIs or system features +introduced in Android 1.5.

    + +

    If your application uses APIs introduced in Android 1.5 but does not +declare <uses-sdk minSdkVersion="3" />, then it will +run properly on Android 1.5 devices but not on Android 1.0 +devices. In the latter case, the application will crash at runtime when +it tries to use the Android 1.5 APIs.

    + +

    Conversely, if your application does not use any new APIs introduced in +Android 1.5, the application will in most cases function normally on devices +running a later version of the platform. However, if you have published +the application, you are strongly encouraged to install and test your +application on the Android 1.5 system image included in the SDK. This will +ensure a smooth transition for users, as they upgrade their devices to +the new version of the Android platform.

    + +

    Finally, if your application does not use any new APIs introduced since +Android 1.1, you can indicate general Android 1.1 compatibility by +setting the attribute to "2". If your application does not use any +new APIs introduced since Android 1.0, you can remove the attribute or +set it to "1". However, +before publishing your application, you must make sure to compile your +application against the Android library that corresponds to the application's +minSdkVeresion value.

    + +

    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
    • +
    • 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.5 system image are listed below (with +language_country/region locale descriptor).

    + +
    +
      +
    • Chinese, PRC (zh_CN)
    • +
    • Chinese, Taiwan (zh_TW)
    • +
    • Czech (cs_CZ)
    • +
    • 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, New Zealand (en_NZ)
    • +
    • English, Singapore(en_SG)
    • +
    • 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)
  • +
  • Italian, Italy (it_IT)
  • +
  • Italian, Switzerland (it_CH)
  • +
  • Japanese (ja_JP)
  • +
  • Korean (ko_KR)
  • +
  • Polish (pl_PL)
  • +
  • Russian (ru_RU)
  • +
  • Spanish (es_ES)
  • + +
    + +

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

    + + + +

    New Features

    + +

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

    + +

    API Changes

    + +

    Overview

    + +
      +
    • UI framework
    • +
        +
      • Framework for easier background/UI thread interaction
      • +
      • New SlidingDrawer widget
      • +
      • Horizontal ScrollView widget
      • +
      + +
    • Home Screen framework
    • +
        +
      • APIs for creating secure home screen widgets
      • +
      • APIs for populating live folders with custom content
      • +
      + +
    • Media framework
    • +
        +
      • Raw audio recording and playback APIs
      • +
      • Interactive MIDI playback engine
      • +
      • Video recording APIs for developers (3GP format)
      • +
      • Video and photo sharing Intents
      • +
      • Media search Intent
      • +
      +
    • Input Method framework
    • +
        +
      • Text prediction engine
      • +
      • Ability to provide downloadable IMEs to users
      • +
      +
    • Application-defined hardware requirements +

      Applications can now use a new element in their manifest files, +<uses-configuration> to indicate to the Android system what hardware +features they require in order to function properly. For example, an application +might use the element to specify that it requires a physical keyboard or a +particular navigation device, such as a trackball. Prior to installing the +application, the Android system checks the attributes defined for the +<uses-configuration> element and allows the installation to +continue only if the required hardware is present.

    • +
    • Speech recognition framework
    • +
        +
      • Support for using speech recognition libraries via Intent
      • +
      +
    • Misc API additions
    • +
        +
      • LocationManager - Applications can get location change updates via +Intent
      • +
      • WebView - Touch start/end/move/cancel DOM event support
      • +
      • SensorManager - redesigned sensor APIs
      • +
      • GLSurfaceView - convenience framework for creating OpenGL +applications
      • +
      • Broadcast Intent for app update install succeeded - for smoother app +upgrade experience
      • +
      + +
    + +

    API Change Details

    + +

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

    diff --git a/docs/html/sdk/sdk_toc.cs b/docs/html/sdk/sdk_toc.cs index 8c7a0a764fe6..1e5122ffb644 100644 --- a/docs/html/sdk/sdk_toc.cs +++ b/docs/html/sdk/sdk_toc.cs @@ -2,17 +2,17 @@
    • -

      Android 1.5 SDK, r1

      Android SDK, r

      Current SDK Release

    • -

      Android System Images

      +

      System Image Version Notes

      • Android 1.5 Version Notes
      • Android 1.1 Version Notes
      • @@ -29,8 +29,9 @@
      • Previous SDK Releases

      • Date: Wed, 22 Apr 2009 13:22:17 -0700 Subject: AI 147308: am: CL 147306 re-write the Developing in Other IDEs doc with updated information for 1.5 Original author: smain Merged from: //branches/cupcake/... Automated import of CL 147308 --- docs/html/guide/developing/other-ide.jd | 487 ++++++++++++++++++++++++-------- 1 file changed, 364 insertions(+), 123 deletions(-) diff --git a/docs/html/guide/developing/other-ide.jd b/docs/html/guide/developing/other-ide.jd index 7bcb509a4f4e..5db4f8d19b22 100644 --- a/docs/html/guide/developing/other-ide.jd +++ b/docs/html/guide/developing/other-ide.jd @@ -1,167 +1,408 @@ -page.title=In Other IDEs +page.title=Developing In Other IDEs @jd:body + +

        The recommended way to develop an Android application is to use - Eclipse with the Android - Development Tools (ADT) plugin, provided in the SDK. The ADT plugin - provides editing, building,and debugging functionality integrated right into the IDE.

        +Eclipse with the ADT plugin. +The ADT plugin provides editing, building, debugging, and .apk packaging and signing functionality +integrated right into the IDE.

        -

        However, if you'd rather develop your application in another IDE, such as IntelliJ, - or use Eclipse without the ADT plugin, you can do that instead. The SDK - provides the tools you need to set up, build, and debug your application. -

        +

        However, if you'd rather develop your application in another IDE, such as IntelliJ, +or in a basic editor, such as Emacs, you can do that instead. The SDK +includes all the tools you need to set up an Android project, build it, debug it and then +package it for distribution. This document is your guide to using these tools.

        -

        Creating an Android Project

        +

        Essential Tools

        -

        The Android SDK includes activityCreator, a program that generates a number of stub files for your project, as well as a build file. You can use the program to create an Android project for new code or from existing code, such as the sample applications included in the SDK. For Linux and Mac, the SDK provides activitycreator and for Windows, activityCreator.bat, a batch script. Regardless of platform, you can use activitycreator in the same way.

        +

        When developing in IDEs or editors other than Eclipse, you'll require +familiarity with the following Android SDK tools:

        -

        To run activityCreator and create an Android project, follow these steps:

        +
        +
        android
        +
        To create/update Android projects and to create/move/delete AVDs.
        +
        Android Emulator
        +
        To run your Android applications on an emulated Android platform.
        +
        Android Debug Bridge
        +
        To interface with your emulator or connected device (install apps, + shell the device, issue commands, etc.). +
        +
        + +

        In addition to the above tools, included with the SDK, you'll use the following +open source and third-party tools:

        + +
        +
        Ant
        +
        To compile and build your Android project into an installable .apk file.
        +
        Keytool
        +
        To generate a keystore and private key, used to sign your .apk file.
        +
        Jarsigner (or similar signing tool)
        +
        To sign your .apk file with a private key generated by keytool.
        +
        + +

        In the topics that follow, you'll be introduced to each of these tools as necessary. +For more advanced operations, please read the respective documentation for each tool.

        + + +

        Creating an Android Project

        + +

        To create an Android project, you must use the android tool. When you create +a new project with android, it will generate a project directory +with some default application files, stub files, configuration files and a build file.

        -
          -
        1. In the command line, change to the tools/ directory of the SDK and create a new directory for your project files. If you are creating a project from existing code, change to the root folder of your application instead.
        2. -
        3. Run activityCreator. In the command, you must specify a fully-qualified class name as an argument. If you are creating a project for new code, the class represents the name of a stub class that the script will create. If you are creating a project from existing code, you must specify the name of one Activity class in the package. Command options for the script include: +

          Creating a new Project

          + +

          If you're starting a new project, use the android create project +command to generate all the necessary files and folders.

          + +

          To create a new Android project, open a command-line, +navigate to the tools/ directory of your SDK and run:

          +
          +android create project \
          +--target <targetID> \
          +--path /path/to/your/project \
          +--activity <your_activity_name> \
          +--package <your_package_namespace>
          +
          +
            -
          • --out <folder> which sets the output directory. By default, the output directory is the current directory. If you created a new directory for your project files, use this option to point to it.
          • -
          • --ide intellij, which generates IntelliJ IDEA project files in the newly created project
          • +
          • target is the "build target" for your application. It corresponds + 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.
          • +
          • 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 + will be created for you inside + <path_to_your_project>/src/<your_package_namespace_path>/.
          • +
          • package is the package namespace for your project, following the same rules as for + packages in the Java programming language.
          -
        4. -
        -

        Here's an example:

        +

        Here's an example:

        -~/android_linux_sdk/tools $ ./activityCreator.py --out myproject your.package.name.ActivityName
        -package: your.package.name
        -out_dir: myproject
        -activity_name: ActivityName
        -~/android_linux_sdk/tools $ 
        +android create project \ +--target 1 \ +--path ./myProject \ +--activity MyActivity \ +--package com.example.myproject + -

        The activityCreator script generates the following files and directories (but will not overwrite existing ones):

        +

        The tool generates the following files and directories:

          -
        • AndroidManifest.xml The application manifest file, synced to the specified Activity class for the project.
        • -
        • build.xml An Ant file that you can use to build/package the application.
        • -
        • src/your/package/name/ActivityName.java The Activity class you specified on input.
        • -
        • your_activity.iml, your_activity.ipr, - your_activity.iws    [only - with the -ide intelliJ flag] intelliJ project - files.
        • -
        • res/   A directory to hold resources.
        • -
        • src/    The source directory. -
        • bin/    The output directory for the build script.
        • +
        • AndroidManifest.xml - The application manifest file, + synced to the specified Activity class for the project.
        • +
        • build.xml - Build file for Ant.
        • +
        • 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.
        • +
        • src/your/package/namespace/ActivityName.java - The Activity class + you specified during project creation.
        • +
        • bin/ - Output directory for the build script.
        • +
        • gen/ - Holds Ant-generated files, such as R.java.
        • +
        • libs/ - Holds private libraries.
        • +
        • res/ - Holds project resources.
        • +
        • src/ - Holds source code.
        • +
        • tests/ - Holds a duplicate of all-of-the-above, for testing purposes.
        -

        You can now move your folder wherever you want for development, but keep in mind - that you'll have to use the adb program in the tools/ folder to - send files to the emulator, so you'll need access between your solution and - the tools/ folder.

        - -

        Also, you should refrain from moving the - location of the SDK directory, since this will break the build scripts (they - will need to be manually updated to reflect the new SDK location before they will - work again).

        - -

        Building the Application with Ant

        -

        Use the Ant build.xml file generated by - activityCreator to build your application.

        -
          -
        1. If you don't have it, you can obtain Ant from the - Apache Ant home page. Install it and make - sure it is on your executable path.
        2. -
        3. Before calling Ant, you need to declare the JAVA_HOME environment variable to specify the path to where the JDK is installed. -

          Note: When installing JDK on Windows, the default is to install in the "Program Files" directory. This location will cause ant to fail, because of the space. To fix the problem, you can specify the JAVA_HOME variable like this: set JAVA_HOME=c:\Prora~1\Java\. The easiest solution, however, is to install JDK in a non-space directory, for example: c:\java\jdk1.6.0_02.

          -
        4. - - -
        5. If you have not done so already, follow the instructions for Creating a - New Project above to set up the project.
        6. -
        7. You can now run the Ant build file by simply typing ant in the same folder - as the build.xml file for your project. Each time you change - a source file or resource, you should run ant again and it will package up the - latest version of the application for you to deploy.
        8. -
        +

        Once you've created your project, you're ready to begin development. +You can move your project folder wherever you want for development, but keep in mind +that you must use the Android Debug Bridge +(adb) — located in the SDK tools/ directory — to send your application +to the emulator (discussed later). So you need access between your project solution and +the tools/ folder.

        + +

        Note: 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.)

        + -

        Setting Up Application Signing

        +

        Updating a project

        -

        As you begin developing Android applications, you should understand that all +

        If you're upgrading a project from an older version of the Android SDK or want to create +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 +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/
        +
        + +
          +
        • target is the "build target" for your application. It corresponds 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.
        • +
        • path is the location of your project directory.
        • +
        + +

        Here's an example:

        +
        +android update project --target 2 --path ./myProject
        +
        + + +

        Preparing to Sign Your Application

        + +

        As you begin developing Android applications, understand that all Android applications must be digitally signed before the system will install -them on the emulator or an actual device.

        +them on an emulator or device. There are two ways to do this: +with a debug key (for immediate testing on an emulator or development device) +or with a private key (for application distribution).

        -

        The Android build tools help you get started quickly by signing your .apk -files with a debug key, prior to installing them on the emulator. This means +

        The Android build tools help you get started by automatically signing your .apk +files with a debug key at build time. This means that you can compile your application and install it on the emulator without having to generate your own private key. However, please note that if you intend -to publish your application, you must sign the application with your +to publish your application, you must sign the application with your own private key, rather than the debug key generated by the SDK tools.

        -

        To sign your applications, the ADT plugin requires the Keytool utility -included in the JDK. To set up your development environment for -signing, all you need to do is make sure that Keytool is available on your -machine that the build tools know how to find it.

        - -

        In most cases, you can tell the SDK build tools how to find Keytool by making -sure that -your JAVA_HOME environment variable is set and that it references a suitable -JDK. Alternatively, -you can add the JDK version of Keytool to your PATH variable.

        - -

        If you are developing on a version of Linux that originally came with Gnu -Compiler for Java, -make sure that the system is using the JDK version of Keytool, rather than the -gcj version. -If keytool is already in your PATH, it might be pointing to a symlink at -/usr/bin/keytool. -In this case, check the symlink target to make sure that it points to the -keytool in the JDK.

        - -

        In all cases, please read and understand Signing Your -Applications, which provides an overview of application signing on Android -and what it means to you as an Android application developer.

        - - -

        Running an Android Application

        -

        To run a compiled - application, you will upload the .apk file to the /data/app/ directory - in the emulator using the adb tool as described here:

        +

        Please read Signing Your +Applications, which provides a thorough guide to application signing on Android +and what it means to you as an Android application developer.

        + + + +

        Building Your Application

        + +

        There are two ways to build your application: one for testing/debugging your application +— debug mode — and one for building your final package for release — +release mode. As described in the previous +section, your application must be signed before it can be installed on an emulator +or device.

        + +

        Whether you're building in debug mode or release mode, you +need to use the Ant tool to compile and build your project. This will create the .apk file +that is installed onto the emulator or device. When you build in debug mode, the .apk +file is automatically signed by the SDK tools with a debug key, so it's instantly ready for installation +(but only onto an emulator or attached development device). +When you build in release mode, the .apk file is unsigned, so you must manually +sign it with your own private key, using Keytool and Jarsigner.

        + +

        It's important that you read and understand +Signing Your Applications, particularly +once you're ready to release your application and share it with end-users. That document describes +the procedure for generating a private key and then using it to sign your .apk file. +If you're just getting started, however, +you can quickly run your applications on an emulator or your own development device by building in +debug mode.

        + +

        If you don't have Ant, you can obtain it from the +Apache Ant home page. Install it and make +sure it is in your executable PATH. Before calling Ant, you need to declare the JAVA_HOME +environment variable to specify the path to where the JDK is installed.

        + +

        Note: When installing JDK on Windows, the default is to install +in the "Program Files" directory. This location will cause ant to fail, because of +the space. To fix the problem, you can specify the JAVA_HOME variable like this: +set JAVA_HOME=c:\Prora~1\Java\. The easiest solution, however, is to +install JDK in a non-space directory, for example: c:\java\jdk1.6.0_02.

        + + +

        Building 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 +application in release mode. Debug mode simply allows you to run your application without +manually signing the application.

        + +

        To build in debug mode:

        + +
          +
        1. Open a command-line and navigate to the root of your project directory.
        2. +
        3. 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.

          +
        4. +
        + +

        Each time you change a source file or resource, you must run Ant +again in order to package up the latest version of the application.

        + +

        To install and run your application on an emulator, see the following section +about Running Your Application.

        + + +

        Building in release mode

        + +

        When you're ready to release and distribute your application to end-users, you must build +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:

        + +
          +
        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
          +

          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.

          +
        4. +
        + +

        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, +read Signing Your Applications.

        + +

        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. +You can also try installing it onto a device from a web server. +Simply upload the signed APK to a web site, then load the .apk URL in your Android web browser to +download the application and begin installation. +(On your device, be sure you have enabled Settings > Applications > Unknown sources.)

        + + +

        Running Your Application

        + +

        Unless you'll be running your application on device hardware, +you need to launch an emulator upon which you will install your application. +An instance of the Android emulator runs a specific Android platform with specific device configuration +settings. The platform and configuration is defined with an Android Virtual Device (AVD). +So before you can launch your emulator, you must define an AVD.

        + +

        If you'll be running your application on device hardware, please read about +Developing On a Device instead.

        +
          -
        1. Start the emulator (run <your_sdk_dir>/tools/emulator from the command line)
        2. -
        3. On the emulator, navigate to the home screen (it is best not to have that - application running when you reinstall it on the emulator; press the Home key - to navigate away from that application).
        4. -
        5. Run adb install myproject/bin/<appname>.apk to upload - the executable. So, for example, to install the Lunar Lander sample, navigate - in the command line to <your_sdk_dir>/sample/LunarLander and type ../../tools/adb install bin/LunarLander.apk
        6. -
        7. In the emulator, open the list of available applications, and scroll down to - select and start your application.
        8. +
        9. Create an AVD +
            +
          1. Open a command-line and navigate to your SDK package's + tools/ directory.
          2. +
          3. First, you need to select a "deployment target." To view available targets, execute: +
            android list targets
            +

            This will output a list of available Android targets, such as:

            +
            +id:1
            +    Name: Android 1.1
            +    Type: platform
            +    API level: 2
            +    Skins: HVGA (default), HVGA-L, HVGA-P, QVGA-L, QVGA-P
            +id:2
            +    Name: Android 1.5
            +    Type: platform
            +    API level: 3
            +    Skins: HVGA (default), HVGA-L, HVGA-P, QVGA-L, QVGA-P
            +
            +

            Find the target that matches the Android platform upon which you'd like + to run your application. Note the integer value of the id — + you'll use this in the next step.

            +
          4. +
          5. Create a new AVD using your selected deployment target: +
            android create avd --name <your_avd_name> --target <targetID>
            +
          6. 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, + press return to use all default values ("no" is the default).
          7. + +
          +
        10. + +
        11. Launch an emulator
        12. +

          From your SDK's tools/ directory, launch an emulator + using an existing AVD (created above): +

          emulator -avd <your_avd_name>
          +

          An instance of the emulator will now launch, running the target and configuration + defined by your AVD.

          + + +
        13. Install your application +

          From your SDK's tools/ directory, install the .apk on the emulator: +

          adb install /path/to/your/application.apk
          +

          If there is more than one emulator running, you must specify the emulator upon which to install + the application, by its serial number, with the -s option. For example:

          +
          adb -s emulator-5554 install /my/project/path/myapp.apk
          +
        14. +
        15. Open your application +

          In the emulator, open the list of available applications to find + and open your application.

          +
        -

        Note: When you install an Activity for the - first time, you might have to restart the emulator before it shows up in the - application launcher, or other applications can call it. This is because - the package manager usually only examines manifests completely on emulator - startup.

        -

        Attaching a Debugger to Your Application

        +

        If you don't see your application on the emulator. Try restarting the emulator +(with the same AVD). Sometimes when you install an Activity for the +first time, it won't show up in the application launcher or be accessible by other +applications. This is because the package manager usually examines manifests +completely only on emulator startup.

        + +

        Tip: If you have only one emulator running, +you can build your application and install it on the emulator in one simple step. +Navigate to the root of your project directory and use Ant to compile the project +with install mode: +ant install. This will build your application, sign it with the debug key, +and install it on the currently running emulator. +If there is more than one emulator currently running +when using the install command, it will fail — it can't select between the +multiple emulators.

        + +

        For more information on the tools used above, please see the following documents:

        + + + +

        Attaching a Debugger to Your Application

        +

        This section describes how to display debug information on the screen (such as CPU usage), as well as how to hook up your IDE to debug running applications on the emulator.

        Attaching a debugger is automated using the Eclipse plugin, but you can configure other IDEs to listen on a debugging port to receive debugging - information.

        + information:

          -
        1. Start the Dalvik Debug Monitor Server (DDMS) - tool , which +
        2. Start the Dalvik Debug Monitor + Server (DDMS) tool, which acts as a port forwarding service between your IDE and the emulator.
        3. Set optional debugging configurations on - your emulator, such as blocking application startup for an activity + your emulator, such as blocking application startup for an Activity until a debugger is attached. Note that many of these debugging options can be used without DDMS, such as displaying CPU usage or screen refresh rate on the emulator.
        4. -
        5. Configure your IDE to attach to port 8700 for debugging. We - include information on - how to set up Eclipse to debug your project.
        6. - +
        7. Configure your IDE to attach to port 8700 for debugging. Read + about + Configuring Your IDE to Attach to the Debugging Port.
        -- cgit v1.2.3-59-g8ed1b From 3aa6511539808303946698eb000b5bdfcca6111f Mon Sep 17 00:00:00 2001 From: Scott Main <> Date: Wed, 22 Apr 2009 13:24:58 -0700 Subject: AI 147313: am: CL 147311 update eclipse docs to include necessary AVD procedures and discuss relevant target facilities Original author: smain Merged from: //branches/cupcake/... Automated import of CL 147313 --- docs/html/guide/developing/eclipse-adt.jd | 500 +++++++++++++++++++++--------- 1 file changed, 350 insertions(+), 150 deletions(-) diff --git a/docs/html/guide/developing/eclipse-adt.jd b/docs/html/guide/developing/eclipse-adt.jd index 8c482ee40ce5..4f332b13e8cb 100644 --- a/docs/html/guide/developing/eclipse-adt.jd +++ b/docs/html/guide/developing/eclipse-adt.jd @@ -1,193 +1,393 @@ -page.title=In Eclipse, with ADT +page.title=Developing In Eclipse, with ADT @jd:body -

        The Android Development Tools (ADT) plugin for Eclipse adds powerful extensions to the Eclipse integrated development environment. It allows you to create and debug Android applications easier and faster. If you use Eclipse, the ADT plugin gives you an incredible boost in developing Android applications:

        + + + +

        The Android Development Tools (ADT) plugin for Eclipse adds powerful extensions to the Eclipse +integrated development environment. It allows you to create and debug Android applications easier +and faster. If you use Eclipse, the ADT plugin gives you an incredible boost in developing Android +applications:

          -
        • It gives you access to other Android development tools from inside the Eclipse IDE. For example, ADT lets you access the many capabilities of the DDMS tool: take screenshots, manage port-forwarding, set breakpoints, and view thread and process informationd irectly from Eclipse.
        • -
        • It provides a New Project Wizard, which helps you quickly create and set up all of the basic files you'll need for a new Android application.
        • +
        • It gives you access to other Android development tools from inside the Eclipse IDE. For +example, ADT lets you access the many capabilities of the DDMS tool: take screenshots, manage +port-forwarding, set breakpoints, and view thread and process informationd irectly from Eclipse.
        • +
        • It provides a New Project Wizard, which helps you quickly create and set up all of the +basic files you'll need for a new Android application.
        • It automates and simplifies the process of building your Android application.
        • -
        • It provides an Android code editor that helps you write valid XML for your Android manifest and resource files.
        • +
        • It provides an Android code editor that helps you write valid XML for your Android +manifest and resource files.
        • +
        • It will even export your project into a signed APK, which can be distributed to users.
        -

        To begin developing Android applications in the Eclipse IDE with ADT, you first need to download the Eclipse IDE and then download and install the ADT plugin. To do so, follow the steps given in Installing the ADT Plugin, in the installation documentation included with your SDK package.

        - -

        Once you've installed the ADT plugin, you begin by creating an Android -project and then set up a launch configuration. After that, you can write, run, and debug -your application.

        +

        To begin developing Android applications in the Eclipse IDE with ADT, you first need to +download the Eclipse IDE and then download and install the ADT plugin. To do so, follow the +steps given in Installing +the ADT Plugin.

        -

        The sections below provide instructions assuming that you have installed the ADT plugin -in your Eclipse environment. If you haven't installed the ADT plugin, you should do that -before using the instructions below.

        +

        If you are already developing applications using a version of ADT earlier than 0.9, make +sure to upgrade to the latest version before continuing. See the guide to +Update Your Eclipse ADT Plugin.

        - +

        Note: This guide assumes you are using the latest version of +the ADT plugin (0.9). While most of the information covered also applies to previous +versions, if you are using an older version, you may want to consult this document from +the set of documentation included in your SDK package (instead of the online version).

        -

        Creating an Android Project

        -

        The ADT plugin provides a New Project Wizard that you can use to quickly create an -Eclipse project for new or existing code. To create the project, follow these steps:

        +

        Creating an Android Project

        - +

        The ADT plugin provides a New Project Wizard that you can use to quickly create a new +Android project (or a project from existing code). To create a new project:

          -
        1. Select File > New > Project
        2. -
        3. Select Android > Android Project, and press Next
        4. -
        5. Select the contents for the project: -
            -
          • Select Create new project in workspace to start a project for new code. -

            Enter the project name, the base package name, the name of a single Activity class to create as a stub .java file, and a name to use for your application.

          • -
          • Select Create project from existing source to start a project from existing code. Use this option if you want to build and run any of the sample applications included with the SDK. The sample applications are located in the samples/ directory in the SDK. -

            Browse to the directory containing the existing source code and click OK. If the directory contains a valid Android manifest file, the ADT plugin fills in the package, activity, and application names for you.

            -
          • -
          -
        6. -
        7. Press Finish.
        8. -
        - -

        The ADT plugin creates the these folders and - files for you as appropriate for the type of project:

        - +
      • Select File > New > Project.
      • +
      • Select Android > Android Project, and click + Next.
      • +
      • Select the contents for the project: +
          +
        • Enter a Project Name. This will be the name of the folder where your + project is created.
        • +
        • Under Contents, select Create new project in workspace. + Select your project workspace location.
        • +
        • Under Target, select an Android target to be used as the project's Build Target. + The Build Target + specifies which Android platform you'd like your application built against. +

          Unless you know that you'll be using new APIs introduced in the latest SDK, you should + select a target with the lowest platform version possible, such as Android 1.1.

          +

          Note: You can change your the Build Target for your + project at any time: Right-click the project in the Package Explorer, select + Properties, select Android and then check + the desired Project Target.

          +
        • +
        • Under Properties, fill in all necessary fields.
            -
          • src/   A - folder that includes your stub .java Activity file.
          • -
          • res/   A folder for your - resources.
          • -
          • AndroidManifest.xml   The - manifest for your project.
          • +
          • Enter an Application name. This is the human-readable title for your + application — the name that will appear on the Android device.
          • +
          • Enter a Package name. This is the package namespace (following the same rules + as for packages in the Java programming language) where all your source code + will reside.
          • +
          • Select Create Activity (optional, of course, but common) and enter a name + for your main Activity class.
          • +
          • Enter a Min SDK Version. This is an integer that indicates + the minimum API Level required to properly run your application. + Entering this here automatically sets the minSdkVersion attribute in the + <uses-sdk> + of your Android Manifest file. If you're unsure of the appropriate API Level to use, + copy the API Level listed for the Build Target you selected in the Target tab.
          - +
        • +
        +
      • +
      • Click Finish.
      • - +

        Tip: +You can also start the New Project Wizard from the New icon in the toolbar.

        + +

        Once you complete the New Project Wizard, ADT creates the following +folders and files in your new project:

        +
        +
        src/
        +
        Includes your stub Activity Java file. All other Java files for your application + go here.
        +
        <Android Version>/ (e.g., Android 1.1/)
        +
        Includes the android.jar file that your application will build against. + This is determined by the build target that you have chosen in the New Project + Wizard.
        +
        gen/
        +
        This contains the Java files generated by ADT, such as your R.java file + and interfaces created from AIDL files.
        +
        assets/
        +
        This is empty. You can use it to store raw asset files. See + Resources and Assets.
        +
        res/
        +
        A folder for your application resources, such as drawable files, layout files, string + values, etc. See + Resources and Assets.
        +
        AndroidManifest.xml
        +
        The Android Manifest for your project. See + The AndroidManifest.xml + File.
        +
        default.properties
        +
        This file contains project settings, such as the build target. This files is integral + to the project, as such, it should be maintained in a Source Revision Control system. + It should never be edited manually — to edit project properties, + right-click the project folder and select "Properties".
        +
        + + +

        Running Your Application

        + +

        Wait! Before you can run your application on the Android Emulator, +you must create an Android Virtual Device (AVD). +An AVD is a configuration that specifies the Android platform to be used on the emulator. +You can read more about AVDs in the Developing +Overview, but if you just want to get started, follow the simple guide below to create +an AVD.

        + +

        If you will be running your applications only on actual device hardware, you do not +need an AVD — see +Developing On a Device for information +on running your applicaiton.

        + +

        Creating an AVD

        + +

        To avoid some explanation that's beyond the scope of this document, here's the +basic procedure to create an AVD:

        -

        Creating a Launch Configuration

        +
          +
        1. Open a command-line (e.g.,"Command Prompt" application on Windows, or "Terminal" + on Mac/Linux) and navigate to your SDK package's + tools/ directory.
        2. +
        3. First, you need to select a Deployment Target. To view available targets, execute: +
          android list targets
          +

          This will output a list of available Android targets, such as:

          +
          +id:1
          +    Name: Android 1.1
          +    Type: platform
          +    API level: 2
          +    Skins: HVGA (default), HVGA-L, HVGA-P, QVGA-L, QVGA-P
          +id:2
          +    Name: Android 1.5
          +    Type: platform
          +    API level: 3
          +    Skins: HVGA (default), HVGA-L, HVGA-P, QVGA-L, QVGA-P
          +
          +

          Find the target that matches the Android platform upon which you'd like + to run your application. Note the integer value of the id — + you'll use this in the next step.

          +
        4. +
        5. Create a new AVD using your selected Deployment Target. Execute: +
          android create avd --name <your_avd_name> --target <targetID>
          +
        6. 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, + press return to use all default values ("no" is the default).
        7. + +
        -

        Before you can run and debug your application in Eclipse, you must create a launch configuration for it. A launch configuration specifies the project to launch, the Activity to start, the emulator options to use, and so on.

        +

        That's it; your AVD is ready. In the next section, you'll see how the AVD is used +when launching your application on an emulator.

        -

        To create a launch configuration for the application, follow these steps as appropriate for your Eclipse version:

        +

        To learn more about creating and managing AVDs, please read the +Developing Overview +and android Tool documentation.

        -
          -
        1. Open the launch configuration manager. -
            -
          • In Eclipse 3.3 (Europa), select Run > - Open Run Dialog... or Run > - Open Debug Dialog... as appropriate. -
          • -
          • In Eclipse 3.4 (Ganymede), select Run > - Run Configurations... or Run > - Debug Configurations... as appropriate. -
          • -
          -
        2. -
        3. In the project type list on the left, locate the Android Application item and double-click it (or right-click > New), to create a new launch configuration.
        4. -
        5. Enter a name for your configuration.
        6. -
        7. On the Android tab, browse for the project and Activity to start.
        8. -
        9. On the Target tab, set the desired screen and network properties, as well as any other emulator startup options.
        10. -
        11. You can set additional options on the Common tab as desired.
        12. -
        13. Press Apply to save the launch configuration, or press Run or Debug (as appropriate).
        14. +

          Running your application

          -
        +

        Note: Before you can run your application, be sure that +you have created an AVD with a target that satisfies your application's Build Target. +If an AVD cannot be found that meets the requirements of your Build Target, you will see +a console error telling you so and the launch will be aborted.

        +

        To run (or debug) your application, select Run > Run (or +Run > Debug) from the Eclipse main menu. The ADT plugin +will automatically create a default launch configuration for the project.

        -

        Setting Up Application Signing

        +

        When you choose to run or debug your application, Eclipse will perform the following:

        -

        As you begin developing Android applications, you should understand that all -Android applications must be digitally signed before the system will install -them on the emulator or an actual device.

        +
          +
        1. Compile the project (if there have been changes since the last build).
        2. +
        3. Create a default launch configuration (if one does not already exist for the project).
        4. +
        5. Install and start the application on an emulator or device (based on the Deployment Target + defined by the run configuration). +

          By default, Android application run configurations use an "automatic target" mode for + selecting a device target. For information on how automatic target mode selects a + deployment target, see Automatic and manual + target modes below.

          +
        6. +
        -

        The ADT plugin helps you get started quickly by signing your .apk files with -a debug key, prior to installing them on the emulator. This means that you can -compile your application and install it on the emulator without having to -generate your own private key. However, please note that if you intend to -publish your application, you must sign the application with your own -private key, rather than the debug key generated by the SDK tools.

        +

        If debugging, the application will start in the "Waiting For Debugger" mode. Once the +debugger is attached, Eclipse will open the Debug perspective.

        + +

        To set or change the launch configuration used for your project, use the launch configuration manager. +See Creating a Launch Configuration for information.

        -

        To sign your applications, the ADT plugin requires the Keytool utility -included in the JDK. To set up your development environment for -signing, you need to make sure that Keytool is available on your -machine that the ADT plugin knows how to find it.

        -

        In most cases, you can tell the SDK build tools how to find Keytool by making -sure that your JAVA_HOME environment variable is set and that it references a -suitable JDK. Alternatively, you can add the JDK version of Keytool to your -PATH variable.

        +

        Creating a Run Configuration

        -

        If you are developing on a version of Linux that originally came with Gnu -Compiler for Java, make sure that the system is using the JDK version of -Keytool, rather than the gcj version. If keytool is already in your PATH, it -might be pointing to a symlink at /usr/bin/keytool. In this case, check the -symlink target to make sure that it points to the keytool in the JDK.

        +

        The run configuration specifies the project to run, the Activity +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 +customize the launch configuration or even create a new.

        -

        In all cases, please read and understand Signing Your -Applications, which provides an overview of application signing on Android -and what it means to you as an Android application developer.

        +

        To create or modify a launch configuration, follow these steps as appropriate +for your Eclipse version:

        +
          +
        1. Open the run configuration manager. +
            +
          • In Eclipse 3.3 (Europa), select Run > + Open Run Dialog (or Open Debug Dialog) +
          • +
          • In Eclipse 3.4 (Ganymede), select Run > + Run Configurations (or + Debug Configurations) +
          • +
          +
        2. +
        3. Expand the Android Application item and create a new + configuration or open an existing one. +
            +
          • To create a new configuration: +
              +
            1. Select Android Application and click the New launch configuration + icon above the list (or, right-click Android Application and click + New).
            2. +
            3. Enter a Name for your configuration.
            4. +
            5. In the Android tab, browse and select the project you'd like to run with the + configuration.
            6. +
            +
          • To open an existing configuration, select the configuration name from the list + nested below Android Application.
          • +
          +
        4. +
        5. Adjust your desired launch configuration settings. +

          In the Target tab, consider whether you'd like to use Manual or Automatic mode + when selecting an AVD to run your application. + See the following section on Automatic and manual target + modes).

          +
        6. +
        - -

        Running and Debugging an Application

        +

        Automatic and manual target modes

        -

        Once you've set up the project and launch configuration for your application, you can run or debug it as described below.

        +

        By default, a run configuration uses the automatic target mode in order to select +an AVD. In this mode, ADT will select an AVD for the application in the following manner:

        -From the Eclipse main menu, select Run > Run or Run > Debug as appropriate, to run or debug the active launch configuration. +
          +
        1. If there's a device or emulator already running and its AVD configuration + meets the requirements of the application's build target, the application is installed + and run upon it.
        2. +
        3. If there's more than one device or emulator running, each of which meets the requirements + of the build target, a "device chooser" is shown to let you select which device to use.
        4. +
        5. If there are no devices or emulators running that meet the requirements of the build target, + ADT looks at the available AVDs. If one meets the requirements of the build target, + the AVD is used to launch a new emulator, upon which the application is installed and run.
        6. +
        7. If all else fails, the application will not be run and you will see a console error warning + you that there is no existing AVD that meets the build target requirements.
        8. +
        -

        Note that the active launch configuration is the one most recently selected in the Run configuration manager. It does not necessarily correspond to the application that is selected in the Eclipse Navigation pane (if any).

        +

        However, if a "preferred AVD" is selected in the run configuration, then the application +will always be deployed to that AVD. If it's not already running, then a new emulator +will be launched.

        -

        To set or change the active launch configuration, use the launch configuration manager. See Creating a Launch Configuration for information about how to access the launch configuration manager..

        +

        If your run configuration uses manual mode, then the "device chooser" +is presented every time that your application is run, so that you can select which AVD to use.

        -

        Running or debugging the application triggers these actions:

        -
        • Starts the emulator, if it is not already running.
        • -
        • Compiles the project, if there have been changes since the last build, and installs the application on the emulator.
        • -
        • Run starts the application.
        • -
        • Debug starts the application in "Wait for debugger" mode, then opens the Debug perspective and attaches the Eclipse Java debugger to the application.
        • -
        +

        Signing your Applications

        +

        As you begin developing Android applications, understand that all +Android applications must be digitally signed before the system will install +them on an emulator or an actual device. There are two ways to do this: +with a debug key (for immediate testing on an emulator or development device) +or with a private key (for application distribution).

        -

        Eclipse Tips

        -

        Executing arbitrary Java expressions in Eclipse

        -

        You can execute arbitrary code when paused at a breakpoint in Eclipse. For example, - when in a function with a String argument called "zip", you can get - information about packages and call class methods. You can also invoke arbitrary - static methods: for example, entering android.os.Debug.startMethodTracing() will - start dmTrace.

        -

        Open a code execution window, select Window>Show - View>Display from the main menu to open the - Display window, a simple text editor. Type your expression, highlight the - text, and click the 'J' icon (or CTRL + SHIFT + D) to run your - code. The code runs in the context of the selected thread, which must be - stopped at a breakpoint or single-step point. (If you suspend the thread - manually, you have to single-step once; this doesn't work if the thread is - in Object.wait().)

        -

        If you are currently paused on a breakpoint, you can simply highlight and execute - a piece of source code by pressing CTRL + SHIFT + D.

        -

        You can highlight a block of text within the same scope by pressing ALT +SHIFT - + UP ARROW to select larger and larger enclosing blocks, or DOWN ARROW to select - smaller blocks.

        -

        Here are a few sample inputs and responses in Eclipse using the Display window.

        - - - - - - - - - - - - - - - - - -
        InputResponse
        zip(java.lang.String) /work/device/out/linux-x86-debug/android/app/android_sdk.zip
        zip.endsWith(".zip")(boolean) true
        zip.endsWith(".jar")(boolean) false
        -

        You can also execute arbitrary code when not debugging by using a scrapbook page. - Search the Eclipse documentation for "scrapbook".

        - -

        Running DDMS Manually

        - -

        Although the recommended way to debug is to use the ADT plugin, you can manually run DDMS and configure Eclipse to debug on port 8700. (Note: Be sure that you have first started DDMS).

        +

        The ADT plugin helps you get started quickly by signing your .apk files with +a debug key, prior to installing them on an emulator or development device. This means that you can +quickly run your application from Eclipse without having to +generate your own private key. No specific action on your part is needed, +provided ADT has access to Keytool.However, please note that if you intend +to publish your application, you must sign the application with your +own private key, rather than the debug key generated by the SDK tools.

        + +

        Please read Signing Your +Applications, which provides a thorough guide to application signing on Android +and what it means to you as an Android application developer. The document also includes +a guide to exporting and signing your application with the ADT's Export Wizard.

        + + +

        Eclipse Tips

        + +

        Executing arbitrary Java expressions in Eclipse

        + +

        You can execute arbitrary code when paused at a breakpoint in Eclipse. For example, + when in a function with a String argument called "zip", you can get + information about packages and call class methods. You can also invoke arbitrary + static methods: for example, entering android.os.Debug.startMethodTracing() will + start dmTrace.

        +

        Open a code execution window, select Window>Show + View>Display from the main menu to open the + Display window, a simple text editor. Type your expression, highlight the + text, and click the 'J' icon (or CTRL + SHIFT + D) to run your + code. The code runs in the context of the selected thread, which must be + stopped at a breakpoint or single-step point. (If you suspend the thread + manually, you have to single-step once; this doesn't work if the thread is + in Object.wait().)

        +

        If you are currently paused on a breakpoint, you can simply highlight and execute + a piece of source code by pressing CTRL + SHIFT + D.

        +

        You can highlight a block of text within the same scope by pressing ALT +SHIFT + + UP ARROW to select larger and larger enclosing blocks, or DOWN ARROW to select + smaller blocks.

        +

        Here are a few sample inputs and responses in Eclipse using the Display window.

        + + + + + + + + + + + + + + + + + + +
        InputResponse
        zip(java.lang.String) + /work/device/out/linux-x86-debug/android/app/android_sdk.zip
        zip.endsWith(".zip")(boolean) true
        zip.endsWith(".jar")(boolean) false
        +

        You can also execute arbitrary code when not debugging by using a scrapbook page. + Search the Eclipse documentation for "scrapbook".

        + + +

        Running DDMS Manually

        + +

        Although the recommended way to debug is to use the ADT plugin, you can manually run +DDMS and configure Eclipse to debug on port 8700. (Note: Be sure that you +have first started DDMS).

        + + + -- cgit v1.2.3-59-g8ed1b From 9077708767041c6f5d692bbc867c27648f297b3d Mon Sep 17 00:00:00 2001 From: Scott Main <> Date: Wed, 22 Apr 2009 13:27:42 -0700 Subject: AI 147317: am: CL 147314 change carousel SDK to 1.5; revise Google IO info Original author: smain Merged from: //branches/cupcake/... Automated import of CL 147317 --- docs/html/index.jd | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/html/index.jd b/docs/html/index.jd index bd681e2c6d97..aea229923ae1 100644 --- a/docs/html/index.jd +++ b/docs/html/index.jd @@ -12,7 +12,7 @@ home=true Google I/O Developer Conference 2009
        -

        Google I/O is a two-day developer event that will take place May 27-28 at Moscone Center, San Francisco.

        +

        Google I/O is a two-day developer event that will take place May 27-28 at Moscone Center, San Francisco. The agenda includes a number of great sessions on Android topics by team engineers and other developers.

        Learn more »

    @@ -116,10 +116,10 @@ home=true 'sdk': { 'layout':"imgLeft", 'icon':"sdk-small.png", - 'name':"SDK 1.1 r1", + 'name':"SDK 1.5 r1", 'img':"sdk-large.png", - 'title':"Android 1.1 SDK r1", - 'desc': "

    A new Android SDK is available for download. The new SDK includes minor API changes, new UI localizations, bug fixes and some new application features.

    Download Android 1.1 SDK r1

    " + 'title':"Android 1.5 SDK r1", + 'desc': "

    The final version of the 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

    " }, 'mapskey': { -- cgit v1.2.3-59-g8ed1b From 757714fd1568bea785af5738a499c968d994c3ba Mon Sep 17 00:00:00 2001 From: Scott Main <> Date: Wed, 22 Apr 2009 13:33:18 -0700 Subject: AI 147327: am: CL 147325 update the installing and upgrading docs for cupcake Original author: smain Merged from: //branches/cupcake/... Automated import of CL 147327 --- docs/html/sdk/1.5_r1/installing.jd | 324 ++++++++++++++++++++++++++++- docs/html/sdk/1.5_r1/upgrading.jd | 414 ++++++++++++++++++++++++++----------- 2 files changed, 618 insertions(+), 120 deletions(-) diff --git a/docs/html/sdk/1.5_r1/installing.jd b/docs/html/sdk/1.5_r1/installing.jd index a1f7cffb0576..bd366ff1add9 100644 --- a/docs/html/sdk/1.5_r1/installing.jd +++ b/docs/html/sdk/1.5_r1/installing.jd @@ -5,6 +5,328 @@ sdk.date=April 2009 page.title=Installing the Android SDK @jd:body -

    See the Download page for more information.

    + +

    This page describes how to install the Android SDK and set up your +development environment. If you haven't downloaded the SDK, you can +do so from the +Download page. Once you've downloaded +the SDK, return here.

    + +

    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 SDK, please read +Upgrading the +SDK, instead. +

    + + +

    Preparing 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.3 or newer). 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.

    + +

    Installing the SDK

    + +

    After downloading the SDK, unpack the .zip archive to a suitable location on your machine. +By default, the SDK files are unpacked into a directory named +android_sdk_<platform>_<release>. +The directory contains a local copy of the documentation (accessible by opening +documentation.html in your browser) and the subdirectories +tools/, add-ons/, platforms/, and others. Inside +each subdirectory of platforms/ you'll find samples/, which includes +code samples that are specific to each version of the platform.

    + +

    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 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).

    + + +

    Installing 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.)

    + +

    Once you have Eclipse 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.3 (Europa)Eclipse 3.4 (Ganymede)
    + +
      +
    1. Start Eclipse, then select Help > Software Updates +> Find and Install....
    2. +
    3. In the dialog that appears, select Search for new features to install +and click Next.
    4. +
    5. Click New Remote Site.
    6. +
    7. In the resulting dialog box, enter a name for the remote site (e.g. "Android Plugin") and + enter the URL: +
      https://dl-ssl.google.com/android/eclipse/
      +

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

      +

      Click OK.

    8. +
    9. You should now see the new site added to the search list (and checked). + Click Finish.
    10. +
    11. In the subsequent Search Results dialog box, select the checkbox for the + Android Plugin. + This will select the nested tools: "Android DDMS" and "Android Developer Tools". + Click Next.
    12. +
    13. Read and accept the license agreement, then click Next.
    14. +
    15. On the following Installation window, click Finish.
    16. +
    17. The ADT plugin is not digitally signed. Accept the installation anyway + by clicking Install All.
    18. +
    19. Restart Eclipse.
    20. +
    + +
    + + +
      +
    1. Start Eclipse, then select Help > Software Updates....
    2. +
    3. In the dialog that appears, click the Available Software tab.
    4. +
    5. Click Add Site...
    6. +
    7. Enter the Location: +
      https://dl-ssl.google.com/android/eclipse/
      +

      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.

    8. +
    9. 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...
    10. +
    11. On the subsequent Install window, "Android DDMS" and "Android Developer Tools" + should both be checked. Click Next.
    12. +
    13. Read and accept the license agreement, then click Finish.
    14. +
    15. Restart Eclipse.
    16. +
    + +
    + +

    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.

    + + +

    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 the it: +

    +
      +
    1. Download the ADT zip file (do not unpack it).
    2. +
    3. Follow steps 1 and 2 in the default install instructions (above).
    4. +
    5. In Eclipse 3.3, click New Archive Site....
      + In Eclipse 3.4, click Add Site..., then Archive...
    6. +
    7. Browse and select the downloaded zip file.
    8. +
    9. Follow the remaining procedures, above, starting from steps 5.
    10. +
    +

    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.

    + + +

    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/<platfrom>/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.
    • +
    + diff --git a/docs/html/sdk/1.5_r1/upgrading.jd b/docs/html/sdk/1.5_r1/upgrading.jd index 532313110cb3..0b7312b3166f 100644 --- a/docs/html/sdk/1.5_r1/upgrading.jd +++ b/docs/html/sdk/1.5_r1/upgrading.jd @@ -2,175 +2,351 @@ page.title=Upgrading the SDK sdk.version=1.5_r1 @jd:body - +
  • UI +framework changes in Android 1.5 »
  • + -
      -
    • Overview of Changes -

      A high-level look at what's changed in Android, with - discussion of how the changes may affect your apps.

    • - -
    • API Diff Report -

      A detailed report that lists all the specific changes in the latest SDK.

    • - -
    • Release Notes -

      Version details, known issues, and resolved issues.

    • - -
    • Android Developers Group -

      A forum where you can discuss migration issues and learn from other Android developers.

    • - -
    • Android Issue Tracker -

      If you think you may have found a bug, use the issue tracker to report it.

    • -
    - - ---> + +

    This document describes how to move your development environment and existing +Android applications from an Android 1.0 or 1.1 SDK to the Android 1.5 SDK. +If you are migrating applications from an SDK older than 1.0, please also read the upgrading +document available in the Android 1.0 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 +Android 1.5 platform.

    -

    Upgrading quickview

    -
      -
    • The Android 1.5 SDK uses a new project structure and a new ADT plugin (ADT 0.9).
    • -
    • To move existing projects into the SDK, you must make some minor changes in your development environment.
    • -
    • The new ADT plugin (ADT 0.9) is not compatible with projects created in previous SDKs.
    • -
    • You need to uninstall your existing ADT plugin, before installing ADT 0.9.
    • +

      The Android 1.5 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 breakage 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 Android 1.5.

      -
    +

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

    - -
    -
    -

    See the Download page for more information.

    +

    Install the SDK

    -
      -
    1. Select Help > Software Updates > Find and Install....
    2. -
    3. Select Search for updates of the currently installed features and click Finish.
    4. -
    5. If any update for ADT is available, select and install.
    6. -
    7. Restart Eclipse.
    8. +
    9. Select Help > Software Updates > + Manage Configuration.
    10. +
    11. Expand the list in the left panel to reveal the installed tools.
    12. +
    13. Right-click "Android Editors" and click Uninstall. Click OK + to confirm.
    14. +
    15. Restart Eclipse. +

      (Do not uninstall "Android Development Tools".)

    -

    Alternatively,

    + + +
      -
    1. Select Help > Software Updates > Manage Configuration.
    2. +
    3. Select Help > Software Updates.
    4. +
    5. Select the Installed Software tab.
    6. +
    7. Select "Android Editors". Click Uninstall.
    8. +
    9. In the next window, be sure "Android Editors" is checked, then click Finish + to uninstall.
    10. +
    11. Restart Eclipse. +

      (Do not uninstall "Android Development Tools".)

    12. +
    + + + + + +

    Install the 0.9 ADT plugin

    -
  • Navigate down the tree and select Android Development Tools <version>
  • -
  • Select Scan for Updates under Available Tasks.
  • +

    Only install the new plugin once you've completed the procedure to +Uninstall your previous ADT plugin.

    + + + + +
    Eclipse 3.3 (Europa)Eclipse 3.4 (Ganymede)
    + +
      +
    1. Select Help > Software Updates > + Find and Install.
    2. +
    3. Select Search for new features to install.
    4. +
    5. Select the Android plugin entry by checking the box next to it, + then click Finish. +

      (Your original entry for the plugin should still be here. If not, see the guide + to Installing the ADT Plugin.) +

    6. +
    7. In the results, be sure that "Developer Tools" is checked, then click Next.
    8. +
    9. Read and accept the license agreement, then click Next. +
    10. In the next window, click Finish to start installation.
    11. +
    12. The ADT plugin is not digitally signed. Accept the installation anyway by clicking + Install All.
    13. +
    14. Restart Eclipse.
    +
      -
    1. Select Help > Software Updates...
    2. -
    3. Select the Installed Software tab.
    4. -
    5. Click Update...
    6. -
    7. If an update for ADT is available, select it and click Finish.
    8. +
    9. Select Help > Software Updates.
    10. +
    11. Select the Available Software tab.
    12. +
    13. Expand the entry for the Andriod plugin (may be listed as the location URL) + and select "Developer Tools" by checking the box next to it, then click Install. +
    14. On the next window, "Android DDMS" and "Android Developer Tools" + should both be checked. Click Next. +
    15. Read and accept the license agreement, then click Finish.
    16. Restart Eclipse.
    -

    Update your Eclipse SDK Preferences

    +

    If you encounter problems, ensure your ADT is fully uninstalled 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 OSX: Eclipse > Preferences)
    2. +
    3. Select Window > Preferences to open the Preferences + panel (Mac: Eclipse > Preferences).
    4. Select Android from the left panel.
    5. -
    6. For the SDK Location in the main panel, click Browse... and locate the SDK directory.
    7. +
    8. For the SDK Location in the main panel, click Browse + and locate your SDK directory.
    9. Click Apply, then OK.
    -

    Migrate Your Applications, if Necessary

    -

    If (and only if) you have written apps in an SDK released previous to -the Android 1.0 SDK, you will need to migrate your applications. After -installing the new SDK and updating the ADT Plugin (if applicable), you -may encounter breakages in your application code, due to -framework and API changes. You'll need to update your code to match the -latest APIs.

    +

    Update Your Projects

    + +

    You will now need to update any and all Android projects that you have +developed using a previous version of the Android SDK.

    + + +

    Eclipse users

    + +

    If you use Eclipse to develop applications, use the following procedure to +update each project:

    + +
      +
    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 "build target" to compile + against. This SDK offers the Android 1.1 and Android 1.5 platforms to choose from. When + you are initially updating your projects to the new SDK, we recommend that you select a build + target with the Android 1.1 platform. Click Apply, then + OK.
    4. +
    + +

    The new plugin creates a gen/ folder in your project, in which it puts the +R.java file +and all automatically generated AIDL java files. If you get an error such as +The type R is already defined, +then you probably need to delete your old R.java or your old auto-generated +AIDL Java files in the src/ folder. +(This does not apply to your own hand-crafted parcelable AIDL java files.)

    + +

    Note that, with the Android 1.5 SDK, there is a new process for running +applications in the Android Emulator. +Specifically, you must create an Android Virtual Device (AVD) before you can launch an instance +of the Emulator. Before attempting to run your applications with the new SDK, +please continue with the section below to +Migrate Your Applications.

    + + +

    Ant users

    + +

    If you build your projects using the Ant tool (rather than with Eclipse), note the +following changes with the new SDK tools.

    + +

    build.xml has changed

    + +

    You must re-create your build.xml file.

    + +

    If you had customized your build.xml, first make a copy of it:

    + +
    +$ cd my-project
    +$ cp build.xml build.xml.old
    +
    -

    One way to start is to open your project in Eclipse and see where the ADT -identifies errors in your application. You can also look up -specific changes in the Android APIs in the -android-1.5.html#api-changes -Android 1.5 Version Notes +

    Now use the new android tool (located in your_sdk/tools/) +to create a new build.xml that references +a specific platform target:

    -document.

    +
    $ android update project --path /path/to/my-project --target 1
    + +

    The "target" corresponds to an Android platform library (including any add-ons, such as +Google APIs) that you would like to build your project against. You can view a list of available +targets (and their corresponding integer ID) with the command, android list targets. +When you are initially updating your projects to the new SDK, we recommend that you select the +first target ("1"), which uses the Android 1.1 platform library.

    + +

    A gen/ folder will be created the first time you build and your R.java and +your AIDL Java files will be generated in here. You must remove +the old R.java and old auto-generated AIDL java files from the +src/ folder. (This +does not apply to your own hand-crafted parcelabe AIDL java files.)

    + +

    Note: The "activitycreator" tool has been replaced +by the new "android" tool. For information on creating new projects with the android tool, +see the documentation about Developing +In Other IDEs.

    + +

    Note that, with the Android 1.5 SDK, there is a new process for running +applications in the Android Emulator. +Specifically, you must create an Android Virtual Device (AVD) before you can launch an instance +of the Emulator. Before attempting to run your applications with the new SDK, +please continue with the section below to +Migrate Your Applications.

    + + +

    Migrate Your Applications

    + +

    After you have completed the process above to Update Your +Projects, you are strongly encouraged to run each of your applications in an instance +of the emulator running the Android 1.5 system image. It's possible (however, unlikely) +that you'll encounter some breakage in your application when you run your applications on +the Android 1.5 system image. Whether you believe your application will be affected by +platform changes or not, it's very important that you test the application's +forward-compatibility on Android 1.5.

    + +

    To test forward-compatibility, simply run your existing application (as-is) on an Android +Emulator that's running the Android 1.5 system image. The following procedure will guide +you through the process to running your existing applications on an emulator. Please read +the following guide completely before you begin.

    + +

    To test your application on an emulator running Android 1.5:

    +
      +
    1. Update Your Project (you should have done this + already, in the section above).
    2. +
    3. Run your existing project, as-is, on an emulator running the Android 1.5 system image. +

      As mentioned in the guide to Update Your Projects, + you should have selected a "build + target" of "1", which compiles your application against the Android 1.1 system image, so there + should be no new errors in your code.

      +

      Eclipse users: follow the + Eclipse guide to + Running Your Application.

      +

      Ant users: follow the + Ant guide to + Running Your Application +

      During the procedure to Running Your Application, select a "deployment target" + for the AVD that includes the Android 1.5 platform. + If your application utilizes the Google Maps APIs (i.e., + MapView), be certain to select a target that includes the Google APIs.

      +

      Once you complete the procedures to run your application in your respective environment, + linked above, return here.

      +
    4. +
    5. With your application running in the emulator, perform all regular testing on the application + to ensure that it functions normally (in both landscape and portrait orientations).
    6. +
    + +

    Chances are, your application runs just fine on the Android 1.5 platform — +new devices will be able to safely install and run your application and +current users who update their devices will be able to continue using your application as usual. +However, if something doesn't work the way you expect, then you might need to revisit +your project and make any necessary changes to your code.

    + +

    You can check for code breakages caused by API changes by opening your project +in Eclipse, changing the "build target" to one using the Android 1.5 platform, +and see where the ADT identifies errors in your code.

    + +

    There have been several API additions made for this release, but there have been +very few actual API changes. Only a couple (relatively unused) elements +have been removed and a few have been deprecated, so your applications written with the +Android 1.1 system library should work just fine. +Your application will be at highest risk of breakage if it uses Android APIs +that are not available in the public API documentation +or if it explicitly depends on system bugs. For information +about changes made to Android 1.5, refer to the following documents:

    +

    If you have additional trouble updating your code, visit the Android Developers Group to seek help from other Android developers.

    - -

    If you have modified one of the ApiDemos applications and would like to migrate it -to the new SDK, note that you will need to uninstall the version of ApiDemos that comes -preinstalled in the emulator. For more information, or if you encounter an "reinstallation" -error when running or installing ApiDemos, see the troubleshooting topic -I can't install ApiDemos -apps in my IDE because of a signing error for information about how to solve the problem.

    ---> \ No newline at end of file -- cgit v1.2.3-59-g8ed1b From 8ad72ec1cb517a54d1e0f3a7206b119d59fabc19 Mon Sep 17 00:00:00 2001 From: Dirk Dougherty <> Date: Wed, 22 Apr 2009 13:35:59 -0700 Subject: AI 147334: am: CL 147332 Miscellaneous doc changes for cupcake SDK Original author: ddougherty Merged from: //branches/cupcake/... Automated import of CL 147334 --- docs/html/community/index.jd | 2 +- docs/html/guide/appendix/faq/framework.jd | 17 +- docs/html/guide/appendix/faq/troubleshooting.jd | 48 +-- docs/html/guide/developing/app-signing.jd | 428 ------------------------ docs/html/guide/developing/tools/avd.jd | 12 +- docs/html/guide/topics/media/index.jd | 2 +- docs/html/guide/topics/media/media.jd | 172 ---------- 7 files changed, 20 insertions(+), 661 deletions(-) delete mode 100644 docs/html/guide/developing/app-signing.jd delete mode 100644 docs/html/guide/topics/media/media.jd diff --git a/docs/html/community/index.jd b/docs/html/community/index.jd index 2df4c01d946b..ad3a199aa998 100644 --- a/docs/html/community/index.jd +++ b/docs/html/community/index.jd @@ -77,7 +77,7 @@ phrasing your questions, read android-security-discuss -
  • Subscribe via email: android-secuirty-discuss@googlegroups.com +
  • Subscribe via email: android-security-discuss@googlegroups.com
  • diff --git a/docs/html/guide/appendix/faq/framework.jd b/docs/html/guide/appendix/faq/framework.jd index 76a19c56d19d..33b69acf2150 100644 --- a/docs/html/guide/appendix/faq/framework.jd +++ b/docs/html/guide/appendix/faq/framework.jd @@ -12,7 +12,7 @@ parent.link=index.html from one Activity/Service to another?
  • How can I check if an Activity is already running before starting it?
  • -
  • If an Activity starts a remote service,is +
  • If an Activity starts a remote service, is there any way for the Service to pass a message back to the Activity?
  • How to avoid getting the Application not responding dialog?
  • @@ -20,7 +20,6 @@ parent.link=index.html added or removed? - @@ -32,7 +31,7 @@ default. If needed, you can declare an android:process attribute in your manifest file, to explicitly place a component (Activity/Service) in another process.

    - + @@ -47,7 +46,7 @@ separate pool of transaction threads in each process to dispatch all incoming IPC calls. The developer should create separate threads for any long-running code, to avoid blocking the main UI thread.

    - + @@ -128,7 +127,7 @@ the Data Storage for further details on how to use these components.

    - + @@ -140,7 +139,7 @@ or to bring the activity stack to the front if is already running in the background— is the to use the NEW_TASK_LAUNCH flag in the startActivity() call.

    - + @@ -156,7 +155,7 @@ messages.

    The sample code for remote service callbacks is given in ApiDemos/RemoteService

    - + @@ -166,7 +165,7 @@ href="{@docRoot}guide/samples/ApiDemos/src/com/example/android/apis/app/RemoteSe document.

    - + @@ -194,5 +193,5 @@ removed.

    - + diff --git a/docs/html/guide/appendix/faq/troubleshooting.jd b/docs/html/guide/appendix/faq/troubleshooting.jd index 7c703e6d07f3..0cf1ab006d1e 100644 --- a/docs/html/guide/appendix/faq/troubleshooting.jd +++ b/docs/html/guide/appendix/faq/troubleshooting.jd @@ -23,7 +23,6 @@ parent.link=index.html
  • When I go to preferences in Eclipse and select "Android", I get the following error message: Unsupported major.minor version 49.0.
  • I can't install ApiDemos apps in my IDE because of a signing error
  • I can't compile my app because the build tools generated an expired debug certificate
  • -
  • I can't run a JUnit test class in Eclipse/ADT
  • ADT Installation Error: "requires plug-in org.eclipse.wst.sse.ui".

    @@ -245,8 +244,8 @@ documentation.

    1. First, delete the debug keystore/key already generated by the Android build tools. Specifically, delete the debug.keystore file. On Linux/Mac OSX, the file is stored in ~/.android. On Windows XP, the file is stored in -C:\Documents and Settings\<user>\Local Settings\Application Data\Android. On Windows Vista, the file is stored in -C:\Users\<user>\AppData\Local\Android
    2. +C:\Documents and Settings\<user>\.android
      . On Windows Vista, the file is stored in +C:\Users\<user>\.android
    3. Next, you can either
      • Temporarily change your development machine's locale (date and time) to one that uses a Gregorian calendar, for example, United States. Once the locale is changed, use the Android build tools to compile and install your app. The build tools will regenerate a new keystore and debug key with valid dates. Once the new debug key is generated, you can reset your development machine to the original locale.
      • @@ -260,46 +259,3 @@ C:\Users\<user>\AppData\Local\Android

        For general information about signing Android applications, see Signing Your Applications.

        -

        I can't run a JUnit test class in Eclipse/ADT

        - -

        If you are developing on Eclipse/ADT, you can add JUnit test classes to your application. However, you may get an error when trying to run such a class as a JUnit test:

        - -
        Error occurred during initialization of VM
        -java/lang/NoClassDefFoundError: java/lang/ref/FinalReference
        - -

        This error occurs because android.jar does not include complete Junit.* class implementations, but includes stub classes only.

        - -

        To add a JUnit class, you have to set up a JUnit configuration:. - -

          -
        1. In the Package Explorer view, select your project.
        2. -
        3. Open the launch configuration manager. -
            -
          • In Eclipse 3.3 (Europa), select Run > - Open Run Dialog... or Run > - Open Debug Dialog... . -
          • - -
          • In Eclipse 3.4 (Ganymede), select Run > - Run Configurations... or Run > - Debug Configurations... . -
          • -
          -
        4. -
        5. In the configuration manager, right-click the "JUnit" configuration type and select New
        6. -
        7. In the new configuration's Test tab, specify the project and test class, as well as any options for running the test.
        8. -
        9. In the new configuration's Classpath tab, find "Android Library" under Bootstrap Entries and remove it.
        10. -
        11. Still in the Classpath tab, select Bootstrap Entries and click the Advanced button.
        12. -
            -
          1. Choose Add Library and click OK.
          2. -
          3. Select JRE System Library and click Next.
          4. -
          5. Select Workspace Default JRE and click Finish.
          6. -
          -
        13. Select Bootstrap Entries again and click Advanced.
        14. -
            -
          1. Choose Add Library and click OK.
          2. -
          3. Select JUnit 3 and click Finish.
          4. -
          -
        -

        When configured in this way, your JUnit test class should now run properly.

        - diff --git a/docs/html/guide/developing/app-signing.jd b/docs/html/guide/developing/app-signing.jd deleted file mode 100644 index 582dfb267b6f..000000000000 --- a/docs/html/guide/developing/app-signing.jd +++ /dev/null @@ -1,428 +0,0 @@ -page.title=Signing Your Applications -@jd:body - -

        The Android system requires that all installed applications be digitally -signed with a certificate whose private key is held by the application's -developer. The system uses the certificate as a means of identifying the author of -an application and establishing trust relationships between applications, rather -than for controlling which applications the user can install. The certificate -does not need to be signed by a certificate authority: it is perfectly -allowable, and typical, for Android applications to use self-signed -certificates.

        - -

        The important points to understand about signing Android applications are:

        - -
          -
        • All applications must be signed. The system will not install an application -that is not signed.
        • -
        • You can use self-signed certificates to sign your applications. No certificate authority -is needed.
        • -
        • When you are ready to publish your application, you must sign it with a suitable private -key. You can not publish an application that is signed with the default key generated -by the SDK tools. -
        • -
        • The system tests a signer certificate's expiration date only at install time. If an -application's signer certificate expires after the application is installed, the application -will continue to function normally.
        • -
        • You can use standard tools — Keytool and Jarsigner — to generate keys and -sign your application .apk files.
        • -
        - -

        The Android system will not install or run an application that is not signed appropriately. This -applies wherever the Android system is run, whether on an actual device or on the emulator. -For this reason, you must set up signing for your application before you will be able to -run or debug it on an emulator or device.

        - -

        The Android SDK tools assist you in signing your applications when debugging. Both the ADT Plugin -for Eclipse and the Ant build tool offer two signing modes — debug mode and release mode. - -

          -
        • In debug mode, the build tools use the Keytool utility, included in the JDK, to create -a keystore and key with a known alias and password. At each compilation, the tools then use -the debug key to sign the application .apk file. Because the password is known, the tools -don't need to prompt you for the keystore/key password each time you compile.
        • - -
        • When your application is ready for release, you compile it in release signing mode. -In this mode, the tools compile your .apk without signing it. You must then sign -the .apk manually — with your private key — -using Jarsigner (or similar tool). If you do not have a suitable private key already, -you can run Keytool manually to generate your own keystore/key and then sign your -application with Jarsigner.
        • -
        - -

        Signing Strategies

        - -

        Some aspects of application signing may affect how you approach the development -of your application, especially if you are planning to release multiple -applications.

        - -

        In general, the recommended strategy for all developers is to sign -all of your applications with the same certificate, throughout the expected -lifespan of your applications. There are several reasons why you should do so:

        - -
          -
        • Application upgrade — As you release upgrades to your -application, you will want to sign the upgrades with the same certificate, if you -want users to upgrade seamlessly to the new version. When the system is -installing an update to an application, if any of the certificates in the -new version match any of the certificates in the old version, then the -system allows the update. If you sign the version without using a matching -certificate, you will also need to assign a different package name to the -application — in this case, the user installs the new version as a -completely new application. - -
        • Application modularity — The Android system allows applications that -are signed by the same certificate to run in the same process, if the -applications so request, so that the system treats them as a single application. -In this way you can deploy your application in modules, and users can update -each of the modules independently if needed.
        • - -
        • Code/data sharing through permissions — The Android system provides -signature-based permissions enforcement, so that an application can expose -functionality to another application that is signed with a specified -certificate. By signing multiple applications with the same certificate and -using signature-based permissions checks, your applications can share code and -data in a secure manner.
        • - - - -
        - -

        Another important consideration in determining your signing strategy is -how to set the validity period of the key that you will use to sign your -applications.

        - -
          -
        • If you plan to support upgrades for a single application, you should ensure -that your key has a validity period that exceeds the expected lifespan of -that application. A validity period of 25 years or more is recommended. -When your key's validity period expires, users will no longer be -able to seamlessly upgrade to new versions of your application.
        • - -
        • If you will sign multiple distinct applications with the same key, -you should ensure that your key's validity period exceeds the expected -lifespan of all versions of all of the applications, including -dependent applications that may be added to the suite in the future.
        • - -
        • If you plan to publish your application(s) on Android Market, the -key you use to sign the application(s) must have a validity period -ending after 22 October 2033. The Market server enforces this requirement -to ensure that users can seamlessly upgrade Market applications when -new versions are available.
        • -
        - -

        As you design your application, keep these points in mind and make sure to -use a suitable certificate to sign your applications.

        - -

        Basic Setup for Signing

        - -

        To support the generation of a keystore and debug key, you should first make sure that -Keytool is available to the SDK build -tools. In most cases, you can tell the SDK build tools how to find Keytool by making sure -that your JAVA_HOME environment variable is set and that it references a suitable JDK. -Alternatively, you can add the JDK version of Keytool to your PATH variable.

        - -

        If you are developing on a version of Linux that originally came with GNU Compiler for -Java, make sure that the system is using the JDK version of Keytool, rather than the gcj -version. If Keytool is already in your PATH, it might be pointing to a symlink at -/usr/bin/keytool. In this case, check the symlink target to make sure that it points -to the Keytool in the JDK.

        - -

        If you will release your application to the public, you will also need to have -the Jarsigner tool available on your machine. Both Jarsigner and Keytool are included -in the JDK.

        - -

        Signing in Debug Mode

        - -

        The Android build tools provide a debug signing mode that makes it easier for you -to develop and debug your application, while still meeting the Android system -requirement for signing your .apk when it is installed in the emulator or a device.

        - -

        If you are developing in Eclipse/ADT and have set up Keytool as described -above, signing in debug mode is enabled by default. When you run or debug your -application, ADT signs the .apk for you and installs it on the emulator. No -specific action on your part is needed, provided ADT has access to Keytool.

        - -

        If you use Ant to build your .apk files, debug signing mode -is enabled by default, assuming that you are using a build.xml file generated by the -activitycreator tool included in the latest SDK. When you run Ant against build.xml to -compile your app, the build script generates a keystore/key and signs the .apk for you. -No specific action on your part is needed.

        - -

        Note that you can not release your application to the public if it is signed only with -the debug key.

        - -

        Signing for Public Release

        - -

        When your application is ready for release to other users, you must:

        -
          -
        1. Compile the application in release mode
        2. -
        3. Obtain a suitable private key, and then
        4. -
        5. Sign the application with your private key
        6. -
        7. Secure your private key
        8. -
        - -

        The sections below provide information about these steps.

        - -

        Compiling for Release

        - -

        To prepare your application for release, you must first compile it in release mode. -In release mode, the Android build tools compile your application as usual, -but without signing it with the debug key.

        - -

        If you are developing in Eclipse/ADT, right-click the project in the Package -pane and select Android Tools > Export Application -Package. You can then specify the file location for the unsigned .apk. -Alternatively, you can follow the "Exporting the unsigned .apk" -link in the Manifest Editor overview page.

        - -

        If you are using Ant, all you need to do is specify the build target -"release" in the Ant command. For example, if you are running Ant from the -directory containing your build.xml file, the command would look like this:

        - -
        $ ant release
        - -

        The build script compiles the application .apk without signing it. - -

        Note that you can not release your application unsigned, or signed with the debug key.

        - -

        Obtaining a Suitable Private Key

        - -

        In preparation for signing your application, you must first ensure that -you have a suitable private key with which to sign. A suitable private -key is one that:

        - -
          -
        • Is in your possession
        • -
        • Represents the personal, corporate, or organizational entity to be identified -with the application
        • -
        • Has a validity period that exceeds the expected lifespan of the application -or application suite. A validity period of more than 25 years is recommended. -

          If you plan to publish your application(s) on Android Market, note that a -validity period ending after 22 October 2033 is a requirement. You can not upload an -application if it is signed with a key whose validity expires before that date. -

        • -
        • Is not the debug key generated by the Android SDK tools.
        • -
        - -

        The key may be self-signed. If you do not have a suitable key, you must -generate one using Keytool. Make sure that you have Keytool available, as described -in Basic Setup.

        - -

        To generate a self-signed key with Keytool, use the keytool -command and pass any of the options listed below (and any others, as -needed).

        - -

        Before you run Keytool, make sure to read Securing Your Key for a discussion of how to keep your -key secure and why doing so is critically important to you and to users. In -particular, when you are generating your key, you should select strong -passwords for both the keystore and key.

        - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        Keytool OptionDescription
        -genkeyGenerate a key pair (public and private -keys)
        -vEnable verbose output.
        -keystore <keystore-name>.keystoreA name -for the keystore containing the private key.
        -storepass <password>

        A password for the -keystore.

        As a security precaution, do not include this option -in your command line unless you are working at a secure computer. -If not supplied, Keytool prompts you to enter the password. In this -way, your password is not stored in your shell history.

        -alias <alias_name>An alias for the key.
        -keyalg <alg>The encryption algorithm to use -when generating the key.
        -dname <name>

        A Distinguished Name that describes -who created the key. The value is used as the issuer and subject fields in the -self-signed certificate.

        Note that you do not need to specify this option -in the command line. If not supplied, Jarsigner prompts you to enter each -of the Distinguished Name fields (CN, OU, and so on).

        -validity <valdays>

        The validity period for the -key, in days.

        Note: A value of 9500 or greater is recommended.

        -keypass <password>

        The password for the key.

        -

        As a security precaution, do not include this option -in your command line unless you are working at a secure computer. -If not supplied, Keytool prompts you to enter the password. In this -way, your password is not stored in your shell history.

        - - -

        Here's an example of a Keytool command that generates a private key:

        - -
        $ keytool -genkey -v -keystore my-release-key.keystore 
        --alias alias_name -keyalg RSA -validity 9500
        - -

        Running the example command above, Keytool prompts you to provide -passwords for the keystore and key, and to provide the Distinguished -Name fields for your key. It then generates the keystore as a file called -my-release-key.keystore. The keystore and key are -protected by the passwords you entered. The keystore contains -a single key, valid for 9500 days. The alias is a name that you — -will use later, to refer to this keystore when signing your application.

        - -

        For more information about Keytool, see the documentation at - -http://java.sun.com/j2se/1.5.0/docs/tooldocs/#security

        - -

        Signing Your Application

        - -

        When you are ready to actually sign your .apk for release, you can do so -using the Jarsigner tool. Make sure that you have Jarsigner available on your -machine, as described in Basic Setup. Also, make sure that -the keystore containing your private key is available.

        - -

        To sign your application, you run Jarsigner, referencing both the -application's .apk and the keystore containing the private key with which to -sign the .apk. The table below shows the options you could use.

        - - - - - - - - - - - - - - - - - - -
        Jarsigner OptionDescription
        -keystore <keystore-name>.keystoreThe name of -the keystore containing your private key.
        -verboseEnable verbose output.
        -storepass <password>

        The password for the -keystore.

        As a security precaution, do not include this option -in your command line unless you are working at a secure computer. -If not supplied, Jarsigner prompts you to enter the password. In this -way, your password is not stored in your shell history.

        -keypass <password>

        The password for the private -key.

        As a security precaution, do not include this option -in your command line unless you are working at a secure computer. -If not supplied, Jarsigner prompts you to enter the password. In this -way, your password is not stored in your shell history.

        - -

        Here's how you would use Jarsigner to sign an application package called -my_application.apk, using the example keystore created above. -

        - -
        $ jarsigner -verbose -keystore my-release-key.keystore 
        -my_application.apk alias_name
        - -

        Running the example command above, Jarsigner prompts you to provide -passwords for the keystore and key. It then modifies the APK -in-place, meaning the .apk is now signed. Note that you can sign an -APK multiple times with different keys.

        - -

        To verify that your .apk is signed, you can use a command like this:

        - -
        $ jarsigner -verify my_signed.apk
        - -

        If the .apk is signed properly, Jarsigner prints "jar verified". -If you want more details, you can try one of these commands:

        - -
        $ jarsigner -verify -verbose my_application.apk
        - -

        or

        - -
        $ jarsigner -verify -verbose -certs my_application.apk
        - -

        The command above, with the -certs option added, will show you the -"CN=" line that describes who created the key.

        - -

        Note: if you see "CN=Android Debug", this means the .apk was -signed with the debug key generated by the Android SDK. If you intend to release -your application, you must sign it with your private key instead of the debug -key.

        - -

        For more information about Jarsigner, see the documentation at - -http://java.sun.com/j2se/1.5.0/docs/tooldocs/#security

        - -

        Securing Your Private Key

        - -

        Maintaining the security of your private key is of critical importance, both -to you and to the user. If you allow someone to use your key, or if you leave -your keystore and passwords in an unsecured location such that a third-party -could find and use them, your authoring identity and the trust of the user -are compromised.

        - -

        If a third party should manage to take your key without your knowledge or -permission, that person could sign and distribute applications that maliciously -replace your authentic applications or corrupt them. Such a person could also -sign and distribute applications under your identity that attack other -applications or the system itself, or corrupt or steal user data.

        - -

        Your reputation as a developer entity depends on your securing your private -key properly, at all times, until the key is expired. Here are some tips for -keeping your key secure:

        - -
          -
        • Select strong passwords for the keystore and key.
        • -
        • When you generate your key with Keytool, do not supply the --storepass and -keypass options at the command line. -If you do so, your passwords will be available in your shell history, -which any user on your computer could access.
        • -
        • Similarly, when signing your applications with Jarsigner, -do not supply the -storepass and -keypass -options at the command line.
        • -
        • Do not give or lend anyone your private key, and do not let unauthorized -persons know your keystore and key passwords.
        • -
        - -

        In general, if you follow common-sense precautions when generating, using, -and storing your key, it will remain secure.

        - -

        Expiry of the Debug Certificate

        - -

        The self-signed certificate used to sign your application in debug mode (the default on -Eclipse/ADT and Ant builds) will have an expiration date of 365 days from its creation date.

        - -

        When the certificate expires, you will get a build error. On Ant builds, the error -looks like this:

        - -
        debug:
        -[echo] Packaging bin/samples-debug.apk, and signing it with a debug key...
        -[exec] Debug Certificate expired on 8/4/08 3:43 PM
        - -

        In Eclipse/ADT, you will see a similar error in the Android console.

        - -

        To fix this problem, simply delete the debug.keystore file. On Linux/Mac OSX, -the file is stored in ~/.android. OOn Windows XP, the file is stored in -C:\Documents and Settings\<user>\Local Settings\Application Data\Android. -On Windows Vista, the file is stored in -C:\Users\<user>\AppData\Local\Android.

        - -

        The next time you build, the build tools will regenerate a new keystore and debug key.

        - -

        Note that, if your development machine is using a non-Gregorian locale, the build -tools may erroneously generate an already-expired debug certificate, so that you get an -error when trying to compile your application. For workaround information, see the -troubleshooting topic -I can't compile my app because the build tools generated an expired debug -certificate.

        \ No newline at end of file diff --git a/docs/html/guide/developing/tools/avd.jd b/docs/html/guide/developing/tools/avd.jd index 7ba79685eef7..1e13ace551f7 100644 --- a/docs/html/guide/developing/tools/avd.jd +++ b/docs/html/guide/developing/tools/avd.jd @@ -21,13 +21,12 @@ page.title=Android Virtual Devices
      • Creating the AVD
      • Setting hardware emulation options
      • Default location of the AVD files
      • -
      • Command-line options, create avd
  • Managing AVDs
    1. Moving an AVD
    2. -
    3. Deleting an AVD
    4. +
    5. Updating an AVD
    6. Deleting an AVD
  • @@ -35,7 +34,8 @@ page.title=Android Virtual Devices

    See Also

      -
    1. Android Emulator
    2. +
    3. Android + Emulator
    @@ -366,6 +366,10 @@ the -p option to place the AVD directory in another location. The AVD's .ini file remains in the .android directory on the network drive, regardless of the location of the AVD directory.

    +

    Managing AVDs

    + +

    The sections below provide more information about how to manage AVDs once you've created them.

    +

    Moving an AVD

    If you want to move or rename an AVD, you can do so using this command:

    @@ -455,7 +459,7 @@ files. -s <name> or
    - -s <dimensions> + -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 skins/ directory of the target referenced in the -t diff --git a/docs/html/guide/topics/media/index.jd b/docs/html/guide/topics/media/index.jd index 4541024111b9..fd7d2da021d8 100644 --- a/docs/html/guide/topics/media/index.jd +++ b/docs/html/guide/topics/media/index.jd @@ -9,7 +9,7 @@ page.title=Audio and Video
  • Audio playback and record
  • Video playback
  • Handles data from raw resources, files, streams
  • -
  • Built-in codecs for a variety of media. See Android 1.0 Media Formats
  • +
  • Built-in codecs for a variety of media. See Android Supported Media Formats
  • Key classes

    diff --git a/docs/html/guide/topics/media/media.jd b/docs/html/guide/topics/media/media.jd deleted file mode 100644 index 463686d367ae..000000000000 --- a/docs/html/guide/topics/media/media.jd +++ /dev/null @@ -1,172 +0,0 @@ -page.title=Media Capabilities -@jd:body - - - -

    The Android platform offers built-in encoding/decoding for a variety of common media types, -so that you can easily integrate audio, video, and images into your applications. Accessing the platform's media -capabilities is fairly straightforward &mdash you do so using the same intents and -activities mechanism that the rest of Android uses.

    - -

    Android lets you play audio and video from several types of data sources. You can play audio or video from media files stored in the application's resources (raw resources), from standalone files in the filesystem, or from a data stream arriving over a network connection. To play audio or video from your application, use the {@link android.media.MediaPlayer} class.

    - -

    The platform also lets you record audio, where supported by the mobile device hardware. Recording of video is not currently supported, but is planned for a future release. To record audio, use the -{@link android.media.MediaRecorder} class. Note that the emulator doesn't have hardware to capture audio, but actual mobile devices are likely to provide these capabilities that you can access through MediaRecorder.

    - -

    For a list of the media formats for which Android offers built-in support, see the Android Media Formats appendix.

    - -

    Playing Audio and Video

    -

    Media can be played from anywhere: from a raw resource, from a file from the system, -or from an available network (URL).

    - -

    You can play back the audio data only to the standard -output device; currently, that is the mobile device speaker or Bluetooth headset. You -cannot play sound files in the conversation audio.

    - -

    Playing from a Raw Resource

    -

    Perhaps the most common thing to want to do is play back media (notably sound) -within your own applications. Doing this is easy:

    -
      -
    1. Put the sound (or other media resource) file into the res/raw - folder of your project, where the Eclipse plugin (or aapt) will find it and - make it into a resource that can be referenced from your R class
    2. -
    3. Create an instance of MediaPlayer, referencing that resource using - {@link android.media.MediaPlayer#create MediaPlayer.create}, and then call - {@link android.media.MediaPlayer#start() start()} on the instance:

    4. -
    -
    -    MediaPlayer mp = MediaPlayer.create(context, R.raw.sound_file_1);
    -    mp.start();
    -
    -

    To stop playback, call {@link android.media.MediaPlayer#stop() stop()}. If -you wish to later replay the media, then you must -{@link android.media.MediaPlayer#reset() reset()} and -{@link android.media.MediaPlayer#prepare() prepare()} the MediaPlayer object -before calling {@link android.media.MediaPlayer#start() start()} again. -(create() calls prepare() the first time.)

    -

    To pause playback, call {@link android.media.MediaPlayer#pause() pause()}. -Resume playback from where you paused with -{@link android.media.MediaPlayer#start() start()}.

    - -

    Playing from a File or Stream

    -

    You can play back media files from the filesystem or a web URL:

    -
      -
    1. Create an instance of the MediaPlayer using new
    2. -
    3. Call {@link android.media.MediaPlayer#setDataSource setDataSource()} - with a String containing the path (local filesystem or URL) - to the file you want to play
    4. -
    5. First {@link android.media.MediaPlayer#prepare prepare()} then - {@link android.media.MediaPlayer#start() start()} on the instance:

    6. -
    -
    -    MediaPlayer mp = new MediaPlayer();
    -    mp.setDataSource(PATH_TO_FILE);
    -    mp.prepare();
    -    mp.start();
    -
    -

    {@link android.media.MediaPlayer#stop() stop()} and -{@link android.media.MediaPlayer#pause() pause()} work the same as discussed -above.

    -

    Note: It is possible that mp could be - null, so good code should null check after the new. - Also, IllegalArgumentException and IOException either - need to be caught or passed on when using setDataSource(), since - the file you are referencing may not exist.

    -

    Note: -If you're passing a URL to an online media file, the file must be capable of -progressive download.

    - -

    Recording Media Resources

    -

    Recording media is a little more involved than playing it back, as you would -probably expect, but it is still fairly simple. There is just a little more set -up to do

    -
      -
    1. Create a new instance of {@link android.media.MediaRecorder - android.media.MediaRecorder} using new
    2. -
    3. Create a new instance of {@link android.content.ContentValues - android.content.ContentValues} and put in some standard properties like - TITLE, TIMESTAMP, and the all important - MIME_TYPE
    4. -
    5. Create a file path for the data to go to (you can use {@link - android.content.ContentResolver android.content.ContentResolver} to - create an entry in the Content database and get it to assign a path - automatically which you can then use)
    6. -
    7. Set the audio source using {@link android.media.MediaRecorder#setAudioSource - MediaRecorder.setAudioSource()}. You will probably want to use - MediaRecorder.AudioSource.MIC
    8. -
    9. Set output file format using {@link - android.media.MediaRecorder#setOutputFormat MediaRecorder.setOutputFormat()} -
    10. -
    11. Set the audio encoder using - {@link android.media.MediaRecorder#setAudioEncoder MediaRecorder.setAudioEncoder()} -
    12. -
    13. Finally, {@link android.media.MediaRecorder#prepare prepare()} and - {@link android.media.MediaRecorder#start start()} the recording. - {@link android.media.MediaRecorder#stop stop()} and - {@link android.media.MediaRecorder#release release()} when you are done
    14. -
    -

    Here is a code example that will hopefully help fill in the gaps:

    -

    Start Recording

    -
    -    recorder = new MediaRecorder();
    -    ContentValues values = new ContentValues(3);
    -
    -    values.put(MediaStore.MediaColumns.TITLE, SOME_NAME_HERE);
    -    values.put(MediaStore.MediaColumns.TIMESTAMP, System.currentTimeMillis());
    -    values.put(MediaStore.MediaColumns.MIME_TYPE, recorder.getMimeContentType());
    -    
    -    ContentResolver contentResolver = new ContentResolver();
    -    
    -    Uri base = MediaStore.Audio.INTERNAL_CONTENT_URI;
    -    Uri newUri = contentResolver.insert(base, values);
    -    
    -    if (newUri == null) {
    -        // need to handle exception here - we were not able to create a new
    -        // content entry
    -    }
    -    
    -    String path = contentResolver.getDataFilePath(newUri);
    -
    -    // could use setPreviewDisplay() to display a preview to suitable View here
    -    
    -    recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    -    recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
    -    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
    -    recorder.setOutputFile(path);
    -    
    -    recorder.prepare();
    -    recorder.start();
    -
    -

    Stop Recording

    -
    -    recorder.stop();
    -    recorder.release();
    -
    - -- cgit v1.2.3-59-g8ed1b From b08971b876801d9cb878f3f0ca0ebfde7c9bea8e Mon Sep 17 00:00:00 2001 From: Dirk Dougherty <> Date: Wed, 22 Apr 2009 13:38:45 -0700 Subject: AI 147338: am: CL 147336 Remove stuff relating to the Maps ext library from the docs. Leave a pointer over to code.google.com. Original author: ddougherty Merged from: //branches/cupcake/... Automated import of CL 147338 --- docs/html/guide/topics/location/geo/mapkey.jd | 210 ------------- docs/html/guide/topics/location/index.jd | 134 ++++---- docs/html/guide/tutorials/views/hello-mapview.jd | 26 ++ docs/html/index.jd | 2 +- docs/html/maps-api-signup.html | 369 ----------------------- docs/html/maps-api-tos.pdf | Bin 97303 -> 0 bytes 6 files changed, 110 insertions(+), 631 deletions(-) delete mode 100644 docs/html/guide/topics/location/geo/mapkey.jd delete mode 100644 docs/html/maps-api-signup.html delete mode 100644 docs/html/maps-api-tos.pdf diff --git a/docs/html/guide/topics/location/geo/mapkey.jd b/docs/html/guide/topics/location/geo/mapkey.jd deleted file mode 100644 index 9aa824c1d61b..000000000000 --- a/docs/html/guide/topics/location/geo/mapkey.jd +++ /dev/null @@ -1,210 +0,0 @@ -page.title=Obtaining a Maps API Key -@jd:body - - - -

    com.google.android.maps.MapView is a very useful class that lets you easily integrate Google Maps into your application. It provides built-in map downloading, rendering, and caching of Maps tiles, as well as a variety of display options and controls. It provides a wrapper around the Google Maps API that lets your application request and manipulate Google Maps data through class methods, and it lets you work with Maps data as you would other types of Views.

    - -

    Because MapView gives you access to Google Maps data, you need to register with the Google Maps service and agree to the applicable Terms of Service before your MapView will be able to obtain data from Google Maps. This will apply whether you are developing your application on the emulator or preparing your application for deployment to mobile devices.

    - -

    Registering for a Maps API Key is simple, free, and has two parts:

    - -
      -
    1. Registering the MD5 fingerprint of the certificate that you will use to sign your application. The Maps registration service then provides you a Maps API Key that is associated with your application's signer certificate.
    2. -
    3. Adding a reference to the Maps API Key in each MapView, whether declared in XML or instantiated directly from code. You can use the same Maps API Key for any MapView in any Android application, provided that the application is signed with the certificate whose fingerprint you registered with the service.
    4. -
    - -

    During registration, you also need to agree to the Maps API Terms of Service, which describe how your application can use the Maps data. In general, the terms of service are permissive and place few restrictions on how you can use the data. For example, the terms allow you to build "friend finder" type applications.

    - -

    The sections below describe how to obtain your Maps API Key and how to reference it from your MapView elements.

    - - - -

    Overview

    - -

    MapView objects are views that display Maps tiles downloaded from the Google Maps service. To ensure that applications use Maps data in an appropriate manner, the Google Maps service requires application developers to register with the service, agreeing to the Terms of Service and supplying an MD5 fingerprint of the certificate(s) that they will use to sign applications. For each registered certificate fingerprint, the service then provides the developer with a Maps API Key — an alphanumeric string that uniquely identifies the certificate and developer registered with the service.

    - -

    The Google Maps service also requires that each MapView identify itself to the service using a Maps API Key. Before providing Maps tiles to a MapView, the service checks the Maps API Key supplied by the MapView to ensure that it:

    -
      -
    • References a certificate/developer registered with the service, and
    • -
    • References a certificate that matches the certificate with which the application (containing the MapView) was signed.
    • -
    - -

    Unless both conditions are met, the service does not provide Maps tiles to the MapView.

    - -

    Each MapView object in your application must reference a Maps API Key. Since the Key is associated with a certificate, all Mapview elements in an application should reference the same Key. Going a step further, all MapView elements in all applications that you sign with the same certificate should reference the same Key.

    - -

    On the other hand, you can register for multiple Maps API Keys, each being associated with a specific certificate. You would want to do this if, for example, you were developing several independent applications that you will sign using different certificates. In this case, note that all MapView elements in a given application can reference the same Maps API Key, but must reference the Key that is associated with the certificate used to sign the application.

    - -

    Because MapView elements must refer to a Maps API Key, you need to register your certificate and receive a Key before you can make use of MapView elements in your application. To make it easier for you to get started using MapView elements, you are welcome to register the debug certificate generated by the SDK tools and receive a temporary Maps API Key. The details of how to do that are given below.

    - -

    When you are preparing to release your application, however, note that you must sign your application with a suitable cryptographic key, rather than the SDK debug key. That means that you will also need to register your application's release certificate with the Google Maps service. After you've done so, you will receive a new Maps API Key that is uniquely associated with your release certificate. To enable the MapView elements in your application to work after release, you must remember to change the Maps API Key for all MapViews in your application so that they refer to the Key associated with your release certificate (rather than your debug certificate).

    - -

    To summarize, the important points to understand about MapViews and the Maps API Key are:

    - -
      -
    • To display Maps data in a MapView, you need to register for a Maps API Key
    • -
    • Each Maps API Key is uniquely associated with a specific certificate, based on an MD5 fingerprint of the certificate
    • -
    • Each MapView must reference a Maps API Key, and the Key referenced must be registered to the certificate used to sign the application
    • -
    • All MapView elements in an application can reference the same Maps API Key
    • -
    • You can register multiple certificates under your developer identity
    • -
    • You can get a temporary Maps API Key based on your debug certificate, but before you publish your application, you must register for a new Key based on your release certificate and update references in your MapViews accordingly
    • -
    - -

    Getting the MD5 Fingerprint of Your Signing Certificate

    - - - -

    To register for a Maps API Key, you need to provide an MD5 fingerprint of the certificate that you will use to sign your application.

    - -

    Before you visit the registration page, use Keytool to generate the fingerprint of the appropriate certificate. - -

    First, determine which key you will use to sign your application at release and make sure of the path to the keystore that contains it.

    - -

    Next, run Keytool with the -list option, against the target keystore and key alias. The table below lists the options you should use.

    - - - - - - - - - - - - - - - - - - - - - -
    Keytool OptionDescription
    -listPrint an MD5 fingerprint of a certificate.
    -keystore <keystore-name>.keystoreThe name of the keystore containing the target key.
    -storepass <password>

    A password for the -keystore.

    As a security precaution, do not include this option -in your command line unless you are working at a secure computer. -If not supplied, Keytool prompts you to enter the password. In this -way, your password is not stored in your shell history.

    -alias <alias_name>The alias for the key for which to generate the MD5 certificate fingerprint.
    -keypass <password>

    The password for the key.

    -

    As a security precaution, do not include this option -in your command line unless you are working at a secure computer. -If not supplied, Keytool prompts you to enter the password. In this -way, your password is not stored in your shell history.

    - -

    Here's an example of a Keytool command that generates an MD5 certificate fingerprint for the key alias_name in the keystore my-release-key.keystore:

    - -
    $ keytool -list -alias alias_name -keystore my-release-key.keystore
    - -

    Keytool will prompt you to enter passwords for the keystore and key. As output of the command, Keytool prints the fingerprint to the shell. For example:

    - -
    Certificate fingerprint (MD5): 94:1E:43:49:87:73:BB:E6:A6:88:D7:20:F1:8E:B5:98
    - -

    Note that, if you happen to forget your Maps API Key, you can repeat the process described above and register the fingerprint again. The server will give you the same key for the specified certificate fingerprint.

    - -

    Once you have the fingerprint, you can go to the Maps API registration site, described next.

    - -

    Getting the MD5 Fingerprint of the SDK Debug Certificate

    - -

    While you are developing and debugging your application, you will likely be -sigining your application in debug mode — that is, the SDK build tools -will automatically sign your application using the debug certificate. To let -your MapView elements properly display Maps data during this period, you should -obtain a temporary Maps API Key registered to the debug certificate. To do so, -you first need to get the MD5 fingerprint of the debug certificate. When -you are ready to release your application, you must register your release -certificate with the Google Maps service and obtain a new Maps API Key. You must -then change the MapView elements in your application to reference the new API -key.

    - -

    To generate an MD5 fingerprint of the debug certificate, first locate the debug keystore. The location at which the SDK tools create the default debug keystore varies by platform:

    - -
      -
    • Windows Vista: C:\Users\<user>\AppData\Local\Android\debug.keystore
    • -
    • Windows XP: C:\Documents and Settings\<user>\Local Settings\Application Data\Android\debug.keystore
    • -
    • OS X and Linux: ~/.android/debug.keystore
    • -
    - -

    If you are using Eclipse/ADT and are unsure where the debug keystore is located, you can select Windows > Prefs > Android > Build to check the full path, which you can then paste into a file explorer to locate the directory containing the keystore.

    - -

    Once you have located the keystore, use this Keytool command to get the MD5 fingerprint of the debug certificate:

    - -
    $ keytool -list -alias androiddebugkey \
    --keystore <path_to_debug_keystore>.keystore \
    --storepass android -keypass android
    - -

    Registering the Certificate Fingerprint with the Google Maps Service

    - -

    When you are ready to register for a Maps API Key, load this page in a browser:

    - -

    http://code.google.com/android/maps-api-signup.html

    - -

    To register for a Maps API Key, follow these steps:

    - -
      -
    1. If you don't have a Google account, use the link on the page to set one up.
    2. -
    3. Read the Android Maps API Terms of Service carefully. If you agree to the terms, indicate so using the checkbox on the screen.
    4. -
    5. Paste the MD5 certificate fingerprint of the certificate that you are registering into the appropriate form field.
    6. -
    7. Click "Generate API Key"
    8. -
    - -

    The server will handle your request, associating the fingerprint with your developer identity and generating a unique Maps API Key, then returning a results page that gives you your Key string.

    - -

    To use the Maps API Key string, copy and paste it into your code as described in the next section.

    - -

    Adding the Maps API Key to your Application

    - -

    Once you've registered with the Google Maps service and have obtained a Maps API Key, you must add it to your application's MapView objects, so that the Maps server will allow them to download Maps tiles.

    - -

    For <MapView> elements declared in XML layout files, add the Maps API Key as the value of a special attribute — android:apiKey. For example: - -

    <com.google.android.maps.MapView
    - android:layout_width="fill_parent"
    - android:layout_height="fill_parent"
    - android:enabled="true"
    - android:clickable="true"
    - android:apiKey="example_Maps_ApiKey_String"
    - />
    - - -

    For MapView objects instantiated directly from code, pass the Maps API Key string as a parameter in the constructor. For example:

    - -
    mMapView = new MapView(this, "example_Maps_ApiKey_String");
    - -

    For more information about MapView, see the MapView class Documentation.

    - -

    Final Steps to Enable MapView Elements

    - -

    If you've added the Maps API Key to the MapViews in your application, here are the final steps to enable the MapView elements to run properly:

    - -
      -
    • Make sure that you added a <uses-library> element referencing the external com.google.android.maps library. The element must be a child of the <application> element in the application's manifest. For example: - -

      <manifest xmlns:android="http://schemas.android.com/apk/res/android"
      - package="com.example.package.name">
      - ...
      - <application android:name="MyApplication" >
      -   <uses-library android:name="com.google.android.maps" />
      - ...
      - </application>

    • - -
    • Sign your application with the certificate that corresponds to the Maps API Key referenced in your MapView elements.
    • - -
    - -

    Note that, when you are ready to publish your application, you must get a Maps API Key that is based on the certificate that you will use to sign the application for release. You must then change the Maps API Key string referenced by all of your MapView elements, so that they reference the new Key.

    - - - diff --git a/docs/html/guide/topics/location/index.jd b/docs/html/guide/topics/location/index.jd index 53f1d290ba64..d7a8ff27585f 100644 --- a/docs/html/guide/topics/location/index.jd +++ b/docs/html/guide/topics/location/index.jd @@ -1,35 +1,43 @@ -page.title=Location +page.title=Location and Maps @jd:body
    +

    Location and Maps quickview

    +
      +
    • Android provides a location framework that your application can use to determine the device's location and bearing and register for updates.
    • +
    • A Google Maps external library is available that lets you display and manage Maps data.
    • +

    In this document

      -
    1. android.location
    2. -
    3. com.google.android.maps
    4. +
    5. Location Services
    6. +
    7. Google Maps External Library
    8. +
    +

    See Also

    +
      +
    1. Google APIs add-on download»
    -

    The Android SDK includes two packages that provide Android's primary support -for building location-based services: -{@link android.location} and {@link-fixme com.google.android.maps}. -Please read on below for a brief introduction to each package.

    +

    Location- and maps-based applications and services are compelling for mobile device users. You can build these capabilities into your applications using the classes of the {@link android.location} package and the Google Maps external library. The sections below provide details.

    + +

    Location Services

    -

    android.location

    +

    Android gives your applications access to the location services supported by +the device through the classes in the android.location package. The +central component of the location framework is the +{@link android.location.LocationManager} system service, which provides an API to +determine location and bearing if the underlying device (if it supports location +capabilities).

    -

    This package contains several classes related to -location services in the Android platform. Most importantly, it introduces the -{@link android.location.LocationManager} -service, which provides an API to determine location and bearing if the -underlying device (if it supports the service). The LocationManager -should not be -instantiated directly; rather, a handle to it should be retrieved via -{@link android.content.Context#getSystemService(String) -getSystemService(Context.LOCATION_SERVICE)}.

    +

    As with other system services, you do not instantiate a LocationManager directly. +Rather, you request an LocationManager instance from the system by calling +{@link android.content.Context#getSystemService(String) getSystemService(Context.LOCATION_SERVICE)}. +The method returns a handle to a new LocationManager instance.

    -

    Once your application has a handle to the LocationManager, your application +

    Once your application has a handle to a LocationManager instance, your application will be able to do three things:

      @@ -42,20 +50,20 @@ will be able to do three things:

      lat/long.
    -

    However, during initial development, you may not have access to real -data from a real location provider (Network or GPS). So it may be necessary to -spoof some data for your application, with some mock location data.

    +

    However, during initial development in the emulator, you may not have access to real +data from a real location provider (Network or GPS). In that case, it may be necessary to +spoof some data for your application using a mock location provider.

    Note: If you've used mock LocationProviders in -previous versions of the SDK (m3/m5), you can no longer provide canned LocationProviders +previous versions of the SDK, you can no longer provide canned LocationProviders in the /system/etc/location directory. These directories will be wiped during boot-up. -Please follow the new procedures below.

    - +Please follow the new procedures outlined below.

    Providing Mock Location Data

    When testing your application on the Android emulator, there are a couple different -ways to send it some spoof location data: with the DDMS tool or the "geo" command.

    +ways to send it some mock location data: you can use the DDMS tool or the "geo" command +option in the emulator console.

    Using DDMS

    With the DDMS tool, you can simulate location data a few different ways:

    @@ -67,9 +75,9 @@ ways to send it some spoof location data: with the DDMS tool or the "geo" comman

    For more information on using DDMS to spoof location data, see the Using DDMS guide. -

    Using the "geo" command

    +

    Using the "geo" command in the emulator console

    Launch your application in the Android emulator and open a terminal/console in -your SDK's /tools directory. Now you can use:

    +your SDK's /tools directory. Connect to the emulator console. Now you can use:

    • geo fix to send a fixed geo-location.

      This command accepts a longitude and latitude in decimal degrees, and an optional altitude in meters. For example:

      @@ -82,28 +90,52 @@ your SDK's /tools directory. Now you can use:

    - -

    com.google.android.maps

    - -

    This package introduces a number of classes related to -rendering, controlling, and overlaying customized information on your own -Google Mapified Activity. The most important of which is the -{@link-fixme com.google.android.maps.MapView} class, which automagically draws you a -basic Google Map when you add a MapView to your layout. Note that, if you -want to do so, then your Activity that handles the -MapView must extend {@link-fixme com.google.android.maps.MapActivity}.

    - -

    Also note that you must obtain a MapView API Key from the Google Maps -service, before your MapView can load maps data. For more information, see -Obtaining a MapView API Key.

    - -

    Once you've created a MapView, you'll probably want to use -{@link-fixme com.google.android.maps.MapView#getController()} to -retrieve a {@link-fixme com.google.android.maps.MapController}, for controlling and -animating the map, and {@link-fixme com.google.android.maps.ItemizedOverlay} to -draw {@link-fixme com.google.android.maps.Overlay}s and other information on the Map.

    - -

    This is not a standard package in the Android library. In order to use it, you must add the following node to your Android Manifest file, as a child of the -<application> element:

    -
    <uses-library android:name="com.google.android.maps" />
    +

    For information about how to connect to the emulator console, see +Using the Emulator Console.

    + +

    Google Maps External Library

    + +

    To make it easier for you to add powerful mapping capabilities to your +application, Google provides a Maps external library that includes the +com.google.android.maps package. The classes of the com.google.android.maps +package offer built-in downloading, rendering, and caching of Maps tiles, as +well as a variety of display options and controls.

    + +

    The key class in the Maps package is +com.google.android.maps.MapView, a subclass of +{@link android.view.ViewGroup ViewGroup}. A MapView displays a map with data obtained +from the Google Maps service. When the MapView has focus, it will capture +keypresses and touch gestures to pan and zoom the map automatically, including +handling network requests for additional maps tiles. It also provides all of the +UI elements necessary for users to control the map. Your application can also +use MapView class methods to control the MapView programmatically and draw a +number of Overlay types on top of the map.

    + +

    In general, the MapView class provides a wrapper around the Google Maps API +that lets your application manipulate Google Maps data through class methods, +and it lets you work with Maps data as you would other types of Views.

    + +

    The Maps external library is not part of the standard Android library, so it +may not be present on some compliant Android-powered devices (although it is +likely to be present on most devices). Similarly, the Maps external library is +not included in the standard Android library provided in the SDK. So that you +can develop using the classes of the com.google.android.maps package, the Maps +external library is made available to you as part of the Google APIs add-on for +the Android SDK.

    + +

    To learn more about the Maps external library and how to download and use the +Google APIs add-on, visit

    + +

    http://code.google.com/android/add-ons/google-apis

    + +

    For your convenience, the Google APIs add-on is also included in the Android +SDK.

    + +

    Note: In order to display Google Maps data in a +MapView, you must register with the Google Maps service and obtain a Maps API +Key. For information about how to get a Maps API Key, see Obtaining +a Maps API Key.

    diff --git a/docs/html/guide/tutorials/views/hello-mapview.jd b/docs/html/guide/tutorials/views/hello-mapview.jd index 976b8ab42e50..30b92c46eee9 100644 --- a/docs/html/guide/tutorials/views/hello-mapview.jd +++ b/docs/html/guide/tutorials/views/hello-mapview.jd @@ -3,6 +3,32 @@ parent.title=Hello, Views parent.link=index.html @jd:body +
    +

    This tutorial requires that you have the Google Maps external library +installed in your SDK environment. By default the Android 1.5 SDK includes the +Google APIs add-on, which in turn includes the Maps external library. If you +don't have the Google APIs SDK add-on, you can download it from this +location:

    + +

    http://code.google.com/android/add-ons/google-apis

    + +

    The Google APIs add-on requires Android 1.5 SDK or later release. After +installing the add-on in your SDK, set your project properties to use the build +target called "Google APIs Add-on". See the instructions for setting a build +target in Developing in +Eclipse with ADT or Developing in Other IDEs, +as appropriate for your environment.

    + +

    You will also need to use the android tool to set up an AVD that uses the +Google APIs deployment target. See Android Virtual Devices for +more information. Once you have set up your environment, you will be able to +build and run the project described in this tutorial

    + +
    +

    A MapView allows you to create your own map-viewing Activity. First, we'll create a simple Activity that can view and navigate a map. Then we will add some overlay items.

    diff --git a/docs/html/index.jd b/docs/html/index.jd index aea229923ae1..cc609a3d681b 100644 --- a/docs/html/index.jd +++ b/docs/html/index.jd @@ -128,7 +128,7 @@ home=true 'name':"Maps API Key", 'img':"maps-large.png", 'title':"Maps API Key", - 'desc':"

    If you're writing an Android application that uses Google Maps (with MapView), you must register your application to obtain a Maps API Key. Without the key, your maps application will not work on Android devices. Obtaining a key requires just a couple of steps.

    Learn how to get a Maps API Key

    " + 'desc':"

    If you're writing an Android application that uses Google Maps (with MapView), you must register your application to obtain a Maps API Key. Without the key, your maps application will not work on Android devices. Obtaining a key requires just a couple of steps.

    Learn more...

    " }, 'market': { diff --git a/docs/html/maps-api-signup.html b/docs/html/maps-api-signup.html deleted file mode 100644 index a604b2ad0eb5..000000000000 --- a/docs/html/maps-api-signup.html +++ /dev/null @@ -1,369 +0,0 @@ - - - - - -Sign Up for the Android Maps API - Android Maps API - Google Code - - - - - - - - - - - -
    - - -
    - - -
    - - -
    - - -
    -

    Android Maps API Key Signup

    - -
    - - -
    - - - -
    -

    Sign Up for the Android Maps API

    - -

    The Android Maps API lets you embed -Google -Maps in your own Android applications. A single Maps API key is -valid for all applications signed by a single certificate. See -this documentation -page for more information about application signing. To get a -Maps API key for your certificate, you will need to provide its the certificate's -fingerprint. This can be obtained using Keytool. For example, on -Linux or Mac OSX, you would examine your debug keystore like this: -

    $ keytool -list -keystore ~/.android/debug.keystore
    -...
    -Certificate fingerprint (MD5): 94:1E:43:49:87:73:BB:E6:A6:88:D7:20:F1:8E:B5:98
    -
    - -

    If you use different keys for signing development builds and -release builds, you will need to obtain a separate Maps API key for -each certificate. Each key will only work in applications signed by -the corresponding certificate.

    - -

    You also need a Google Account -to get a Maps API key, and your API key will be connected to your Google Account.

    -
    -
    - -
    - -
    -
    - - - - - - - - - - - - - -
    I have read and agree with the terms and conditions (printable version)
    - My certificate's MD5 fingerprint: - -
    -
    -
    - - - - -
    -
    - -
    - - - - - diff --git a/docs/html/maps-api-tos.pdf b/docs/html/maps-api-tos.pdf deleted file mode 100644 index 80c28363a021..000000000000 Binary files a/docs/html/maps-api-tos.pdf and /dev/null differ -- cgit v1.2.3-59-g8ed1b From a14f47f975064816df3008e66055d41ddb9d7353 Mon Sep 17 00:00:00 2001 From: Wink Saville Date: Wed, 22 Apr 2009 14:52:11 -0700 Subject: Changes for new ril.h. These allow RIL.java to assume ril.cpp is interfacing to the new CDMA capable vendor ril. At the moment we don't have a full CDMA capabile ril so thre are some NEWRIL:TODO's in the code base to identify these areas. --- .../com/android/internal/telephony/DriverCall.java | 13 ++++++++++--- .../java/com/android/internal/telephony/RIL.java | 12 ++++++++++-- .../telephony/cdma/CdmaServiceStateTracker.java | 10 +++++++--- .../internal/telephony/cdma/RuimRecords.java | 4 ++++ .../telephony/gsm/GsmDataConnectionTracker.java | 2 +- .../internal/telephony/gsm/PDPContextState.java | 2 +- .../internal/telephony/test/SimulatedCommands.java | 22 +++++++++++++++------- 7 files changed, 48 insertions(+), 17 deletions(-) diff --git a/telephony/java/com/android/internal/telephony/DriverCall.java b/telephony/java/com/android/internal/telephony/DriverCall.java index 6c4e71fe99e5..0d9a60f2591f 100644 --- a/telephony/java/com/android/internal/telephony/DriverCall.java +++ b/telephony/java/com/android/internal/telephony/DriverCall.java @@ -44,8 +44,11 @@ public class DriverCall implements Comparable { public String number; public int TOA; public boolean isVoice; + public boolean isVoicePrivacy; public int als; public int numberPresentation; + public String name; + public int namePresentation; /** returns null on error */ static DriverCall @@ -101,11 +104,15 @@ public class DriverCall implements Comparable { public String toString() { return "id=" + index + "," - + (isMT ? "mt" : "mo") + "," + state + "," - + (isVoice ? "voice" : "no_voc") + "," + + "toa=" + TOA + "," + (isMpty ? "conf" : "norm") + "," - + TOA + "," + als + ",cli " + numberPresentation; + + (isMT ? "mt" : "mo") + "," + + als + "," + + (isVoice ? "voc" : "nonvoc") + "," + + (isVoicePrivacy ? "evp" : "noevp") + "," + /*+ "number=" + number */ + ",cli=" + numberPresentation + "," + /*+ "name="+ name */ + "," + namePresentation; } public static State diff --git a/telephony/java/com/android/internal/telephony/RIL.java b/telephony/java/com/android/internal/telephony/RIL.java index 636a2234d60c..289be6e165e3 100644 --- a/telephony/java/com/android/internal/telephony/RIL.java +++ b/telephony/java/com/android/internal/telephony/RIL.java @@ -2625,8 +2625,16 @@ public final class RIL extends BaseCommands implements CommandsInterface { dc.als = p.readInt(); voiceSettings = p.readInt(); dc.isVoice = (0 == voiceSettings) ? false : true; + + //dc.isVoicePrivacy = (0 != p.readInt()); + int voicePrivacy = p.readInt(); + dc.isVoicePrivacy = (0 != voicePrivacy); + dc.number = p.readString(); - dc.numberPresentation = DriverCall.presentationFromCLIP(p.readInt()); + int np = p.readInt(); + dc.numberPresentation = DriverCall.presentationFromCLIP(np); + dc.name = p.readString(); + dc.namePresentation = p.readInt(); // Make sure there's a leading + on addresses with a TOA // of 145 @@ -2664,7 +2672,7 @@ public final class RIL extends BaseCommands implements CommandsInterface { PDPContextState pdp = new PDPContextState(); pdp.cid = p.readInt(); - pdp.active = p.readInt() == 0 ? false : true; + pdp.active = p.readInt(); pdp.type = p.readString(); pdp.apn = p.readString(); pdp.address = p.readString(); diff --git a/telephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java b/telephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java index 6f344b99b79b..d5cad1ca9cee 100644 --- a/telephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java +++ b/telephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java @@ -485,13 +485,17 @@ final class CdmaServiceStateTracker extends ServiceStateTracker { -1, //[3] baseStationLongitude 0, //[4] cssIndicator; init with 0, because it is treated as a boolean -1, //[5] systemId - -1 //[6] networkId + -1, //[6] networkId + -1, //[7] TSB-58 Roaming indicator // NEWRIL:TODO UNUSED + -1, //[8] Indicates if current system is in PRL // NEWRIL:TODO UNUSED + -1, //[9] Is default roaming indicator from PRL // NEWRIL:TODO UNUSED + -1, //[10] If registration state is 3 this is reason for denial // NEWRIL:TODO UNUSED }; if (states.length > 0) { try { this.mRegistrationState = Integer.parseInt(states[0]); - if (states.length == 10) { + if (states.length >= 10) { for(int i = 0; i < states.length - offset; i++) { if (states[i + offset] != null && states[i + offset].length() > 0) { @@ -536,7 +540,7 @@ final class CdmaServiceStateTracker extends ServiceStateTracker { case EVENT_POLL_STATE_OPERATOR_CDMA: String opNames[] = (String[])ar.result; - if (opNames != null && opNames.length >= 4) { + if (opNames != null && opNames.length >= 3) { newSS.setOperatorName (opNames[0], opNames[1], opNames[2]); } break; diff --git a/telephony/java/com/android/internal/telephony/cdma/RuimRecords.java b/telephony/java/com/android/internal/telephony/cdma/RuimRecords.java index 13408cfb7b9c..b18a3f18ffa9 100644 --- a/telephony/java/com/android/internal/telephony/cdma/RuimRecords.java +++ b/telephony/java/com/android/internal/telephony/cdma/RuimRecords.java @@ -53,6 +53,7 @@ public final class RuimRecords extends IccRecords { String mdn = null; // My mobile number String h_sid; String h_nid; + String min2_min1; // 10 digit MIN value MIN2+MIN1 NEWRIL:TODO currently unused // is not initialized @@ -214,6 +215,9 @@ public final class RuimRecords extends IccRecords { mdn = localTemp[0]; h_sid = localTemp[1]; h_nid = localTemp[2]; + if (localTemp.length >= 3) { // NEWRIL:TODO remove when new ril always returns min2_min1 + min2_min1 = localTemp[3]; + } Log.d(LOG_TAG, "MDN: " + mdn); diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java index b889704102be..71ffe74374a1 100644 --- a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java +++ b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java @@ -790,7 +790,7 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker { private boolean pdpStatesHasActiveCID (ArrayList states, int cid) { for (int i = 0, s = states.size() ; i < s ; i++) { - if (states.get(i).cid == cid) return states.get(i).active; + if (states.get(i).cid == cid) return (states.get(i).active != 0); } return false; diff --git a/telephony/java/com/android/internal/telephony/gsm/PDPContextState.java b/telephony/java/com/android/internal/telephony/gsm/PDPContextState.java index feb78f81153a..31cdacf53190 100644 --- a/telephony/java/com/android/internal/telephony/gsm/PDPContextState.java +++ b/telephony/java/com/android/internal/telephony/gsm/PDPContextState.java @@ -21,7 +21,7 @@ package com.android.internal.telephony.gsm; */ public class PDPContextState { public int cid; - public boolean active; + public int active; public String type; public String apn; public String address; diff --git a/telephony/java/com/android/internal/telephony/test/SimulatedCommands.java b/telephony/java/com/android/internal/telephony/test/SimulatedCommands.java index 3e53654a4c44..cb09ceab768b 100644 --- a/telephony/java/com/android/internal/telephony/test/SimulatedCommands.java +++ b/telephony/java/com/android/internal/telephony/test/SimulatedCommands.java @@ -832,22 +832,30 @@ public final class SimulatedCommands extends BaseCommands } /** - * response.obj.result is an String[3] - * response.obj.result[0] is registration state 0-5 from TS 27.007 7.2 - * response.obj.result[1] is LAC if registered or NULL if not - * response.obj.result[2] is CID if registered or NULL if not - * valid LAC are 0x0000 - 0xffff - * valid CID are 0x00000000 - 0xffffffff + * response.obj.result is an String[14] + * See ril.h for details * * Please note that registration state 4 ("unknown") is treated * as "out of service" above */ public void getRegistrationState (Message result) { - String ret[] = new String[3]; + String ret[] = new String[14]; ret[0] = "5"; // registered roam ret[1] = null; ret[2] = null; + ret[3] = null; + ret[4] = null; + ret[5] = null; + ret[6] = null; + ret[7] = null; + ret[8] = null; + ret[9] = null; + ret[10] = null; + ret[11] = null; + ret[12] = null; + ret[13] = null; + ret[14] = null; resultSuccess(result, ret); } -- cgit v1.2.3-59-g8ed1b From b73b4c73d5ec038dc7caa39b185a77d5d758976b Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Queru Date: Wed, 22 Apr 2009 17:28:41 -0700 Subject: Regenerate current.xml after merge --- api/current.xml | 71315 ++++++++++++++++++++++++++++++++---------------------- 1 file changed, 42399 insertions(+), 28916 deletions(-) diff --git a/api/current.xml b/api/current.xml index 66128c53b382..9125da5406cc 100644 --- a/api/current.xml +++ b/api/current.xml @@ -1549,6 +1549,17 @@ visibility="public" > + + - - - - - - - - - - - - - - - + - + + + + + + + + + - + + + + - + + + + + + + + - - - - + - + - - + + + + + + + + + - - - - - + + + + + + + - - + + + + + + + - + - - - - + + - - + + + + + - + - - + - - - - - - + + + - + + - - + + + + - - - - + + + - + - - - - + + + - + + + + + + - - + + - + + + + + + - + - - - - + - - - - + + - - + + - - + + + - - + + + - + + + + - - + + - + + + + - - - + + - - - - - + - + - + - + - + + + + + - - + - - - + - + - + + + - - + - + + + - - + - - - + - - + - - - + + + + + + + - - + - + - + + + + + + + - - - + - - + + + - - + - + - - + + + - - - - + - - + - + - + - - - - + - + - - + - + - + - - + - + + + - + + + + + + + + - - + - + + + + + - - + - + - - - + + + - - + - - + + + - - + - + + + - + + + + + + + + - - + + + + + + + + + + + - + + + + + + + + + + - - + - + + + + + + + + + + + + + - - + + + - - + - + - + - - - - + + + + + + + - + + + + + + + + - + + + + + + + + - - + + + + + - + + + + + + + + + + - + + + + + + + + - + + + + + + + + + + - - + - + + + + + + + + + - + - - - - - + - - + + + - + + + + - + - - - - - + - + - - - - - - + + + + + + + + + + + - + + + - - + - + - - - - - + - - - - + - - - - - - - - - - + - + - - + - + - + - - + - - - + - - + + - - - - - - - - - - - - + - + - + - - - - - - - - + - - - - + - - - - + - - - - + - - - - + - - - - + - - - - - - + - - - - - - - - - - - - - - - - - - - - + - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - + - - - - + - - - - - - - - - - + + - - + + + - + - - + + + + + + - - + + - - + - + + + + + + + + - - + + + + + + + + + - + + + + - + + + + - + - + - + + + + + + + - + + + + + + - + + + + + + + + + + - + - + + + - - + - + + + + + + + - - + + + + + + + - - - - + + + + + + + + + + + + - + - - - - + - - + + + + + + + - + - - + + - - + + + + + + + - - + + + - - - + + + + + + - + - - - - + - - + + + + + + + - - - - - + - - - - + - - + + + - - + + + + + - - + + + + - - - - + - - + + + - - + + + + + - + + + - + + - + - + + + + + + + + - + + + + - - - - - - - - - - - - - + + + + + + + - - + + + - - - + + + - - - + + + - - + + + - - - - - + - - + - - + - - + - + - - - + + + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - - + - - - + - - + - - + - - - - - - - - - - + - - + - - + - - + - - + - - + - - + - - + - - + - - - + - - - - - + + + + + + + + + + + + + - - + + + + + - - + - + - - - - - + + + - - + - - + + + - - + + + - - + + + - - + + + + + + + - - - + - + + + - + - - - - + - + - - - - - - - - + - - - - - - + - + - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + - - + - + - + - + - - + - + + + - - - - - + - + - - - - + - + - - - - + - - - - + - - - - + - - + - + - - - - - - - - - + - - - - - + + + - - + - - + + + + + - - - - - + - - - - - - - - - - - - - - + - + - - + - - - - - - - - - - - - + - + - - + - - + - - - - - - - - - - + - - - - + - - + - - - - - - - - - + - - - - - - + - - - - - - - - + - - - - + - - - - + - - - - + - - + - + - - + - - + + + - - + + + - - + - + - - + - + - - - - - - + - - - - - - - - + - - - - - - + - - - - - - + - - + - - + - - + - + + - - - + + + + + - - - + + + - - - + + + - - + + + - + - + + - + + - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - + - + - + + + - - - - - - + - + - - - - - - + - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + - - - + - + - + - - + - - - + - + + - + + - - - + - - - - + - - - - + - - - - + + + + + + + + + + + + - - - - - - + - - + + + - - + - - - + + - - + + + + + + - - - - - + + + - - + + + - - - - - - + - + + + + + + - - - - + - - - - - - + - - + - + - + + - - - - - - - - + - - - - - - + - - - - - - + + + + + - - - - - - + - - - - + - - + - + - + + + + + + + + - - - - + - - - - - - - - + - - - - + - - + - - + - - + - - + - - - - + + + + + - - - - + - - - - + - - + + + - + + - - + - - - - + - - - - + + - - - - + + - - - - + - + - - + + + + + - - - - + - - + - + - - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - + + + - - - - + - - - - + - - - - + - - - - + + + + + + + - - - - + - - - - + - - - + + + + + + + - - - - + - - - + + + + + + + + + + + + + + + + + - - - - - - - - + - - - + + - + + + + - + + - - + + + + + + + + + + + + + + - - - - - - - - - - - - - + - - + + + + + - - + + + + + + + - - + - + - + + + - - + + + + + + + + + + + + + + + + + + + - - + + + + - + + + + + + + + + + + + + + - + - - - - - - - - - + - + - + - - + - + + + - - + + + - - + - + - - + + + - - + - + - - + + + - - + - + - - + - - - - + - - + - - + - - + - - + - - + - + + + + + + + - + + + + + + - - + - + - + + - + + + + + + - + + - + + - + + - - - - - - + - - - - + - + - + + + + - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - + - - - - - - - - + - + - + - - - - - - - - + - + + + - - - - - - - - + + + + + + + - + + + + - - + - + - + + + + - - + + + - - + - - + - - + - - + + + - - + + + - - + - + + + - - + + + + + + + - - + + + + + - + + + + + + - - + - + + - - + - - + - - - - + + - - + + - - + - + - - - - - - - - - - - - - - - + + + + - + - + - + + + + + - - + - + - + + + + + + + - + + + + - + + + + + + + + - + + + + + + - + - - + + + + + + + + - + - - + + + + + + + + - + - - - + - + + + + + - + - + + + - + + + + - - - - + - - - - + - + - - + - - - + + + - + - - - - - - - + - - - - + - - - - - + - - + + + - - + - + + - - - + + + + + + + - - + + + - + + + - - - - - + + + - - + + + + + - - + + + + + + + - - + + + + + - - + + + + + - - - + + + + + - + + + - - + + + + + + + - + + - + + + + + + - + + - - - - - - - - - - - - - - - - - - + - - - + - - + - - - + - - + - - + - - + - - + + - - + - + + - + + - + + - + + - - - - + - - - - - + + + + + - - + + + - - - + - + - - + - + - - + + + + + + + - - - - - - + - + - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + - - + + + - - + + + + - - + + + + + + + + - - + - - + - - + - - + - - + - - + + + + + + + + + + + - - - + + + - + + + - + - + + + + + + - - - - + - - - - - - + + + - - - - + - + - + - - - - + - + - + - - - - - - + - + - + + - - + + + - - - + + - - + + + - - - - - - - - + - - - - - - + - + - - - - - - - - - - - - + - - - - + - + - - + - + + + - - - + + + - - + + + - - + + + + + - - + - - - + + + + + - + - - + - - - - + - - - - - + - + - - - - - + - + - + - - - + + + + + + + - - - - + + + - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + - + + + + + + + + + + - - + - - - - + + + + - - + - - + - - + - - + - - + - - + - - + + + - - - - - - + - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - + - - - + - - - + + + - - - - - + - - - - - - - - - - - - - - - - - - - - - + - - - - + + + - - + + + + + - - - - - - + - - - - + + + + + + + - - + + + + + + + - - + - - + - - + - - + - - + - - + - - + + + + - - - - + + + + + - - - - - + - - - + + - - - - - - + - + + - + - - - - - + - - + + - + - - - - - - - - - - + - - - - - + - + + + + - - + - - - - - - + + - + - - - - - - + - - - - - + - - - - - + - - - - - - - - - - - - + - - - - - - - - - - - - - - + - - - - - - + + - - - - - - - - - - - - - - - - + - - - - - - - - - - - + - - - - - - + - - + - + - + + + - + + - - + - + - - - - - + - + - - + - + - + - + + - + + - - - - + - - + - - - - - - - - + - + + - - - - - - - - - - - - + + + - - + + - - - - - - + - + - - + + + + + - + - - + - - - - - - + - + - - - + - + - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - + - - - + - - + - - - - + - - + - - - - - - + - - - - - - - - - - - - + + + - - + - + - + + + - - + + - - - - + - - - - + + + + + + + - - + - + - + + + - - + - + - + + + - - - - - - + + + - - - - - - - + + - - - - - - - - - - + + + - - - - + - + - + + + - - - - - - - - - - + - + - + + + - - - - + - + - + - + - + + + - - - + + + + + - - + + + + + - - - - - + - - - - + - - + + + - + + + - - - + - - - + + + + + + + + + + - + + - - - + + + + + - - - + + - + + - - - - - - - - - - - - + - - + - - + - - - - - - + - - + - - + - - + - - - + + + + + + + - + + + + + + + - + + + + + + + + + + - - - - - - + - + - - + + + + + + + + + - - - - - - + - - - - - - + + - - - - + + + + + + - + + - + + - + + - + + + + + + + + + + - - - - - - + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + - - - - - - - - - + + - - - + - + + + - - - - - - - - - - - + - + + - - - - - - - - - + - + + + + - - + - + + - - - - - + - - - - - - + - - - + - - - - - - - - + + - - - - - - - - - - - - - - - + - - - - - - - - + - - + + + + - + - + - + - + + + - - - + + + + + + + + + + + + + + + + + - - + + + + + - + + + + - + + - + + + + + - - + + + - + + - + + - + - + + + - - - - - - - - - + - - - - - + - + + + - - + - + - - - - - - - - - - - - - - - + - + + - + + + - - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - + - + - - + - + - - - - - + + - + - + + + + + + + + + + - + - + + + + + + + + + + + + + + + + + + - - - - - - - - - - + + - - - - + - + - - + - - + - + + + + + - - - - - + + + + + + + + - - + + - - - - + - - - + + + - + + - - + - - - - + - - - - + - - - - + - - - - + - - - - + - - - - + - - - - + + + + - - - - - - - - + - + - - + + - - - - - - - - - + - - + - - - + - - - - + - - + - + + + - - + - + + + - - + - + + + - - + - + + + - - + - + + + + + + + - - + + + + + + + - - + + + + + + + + + + + + + - - + + + + + + + + + + + - + + - - + - - + - - - - - - + - - - - + - - + - - - - - - - - + - - - - + - - - - - - + + + - + - - + + - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - + - + - - - - + - + - - - - + - - - - - - + - - - - + - + - + - - - - - - - - - - + - - - - - - - - - - - - - - + - + + - + - - + + - - + - - + + - - + + + + + - + - - + + + - + - + - - + - + - - + - - - - - - - - - - - + - - - - - - - + - - + + + - + + + + - + + + - - + + + + + + + + - + + + + - - - - + + + - - - - - - - - - - - - - - + - - - - - - - - - - - + + + - - - - - - - - - - - - - - - + - - - - - - - - - - - - + - + + + - - + + + + + - - + + + - - + + + + + + + + + - - - - + - - - - + - - + - + - + - + - + + + + + - + - + - - + + + - + + + + + - - - - - + - - - + + + + + + - + + + - - - - + - - + - + - + - - + - - + + + - - + + + - - + + + + + - - - + + + + + + + - - + + + + + + + - - + + + + + - - + + + + + - - + + + + + + + - - + + + + + + + + + + + - - + + + + + + + - - + + + + + - - + + + - - + + + + + + + + + - - + + + - - - - - - - - - - - + - - + + - - + + + + + - - + + + - + + + + + - + + + - + - + - + + + + - - - - - - - - + - - - - - - - + - - + - - - - + - - - - - - + - - - - - - - - + - - - - - - - - - - - - + - - - + + - - - - + - - - + + - - + - - + + + - - + - + - - - - + - + - - + - + - - - - + - + - - - - - - + - + - - - - - - - - + - + - - - - - - - - - - - - + - + - + + + + - + + - + + - - - - - + + - - - - - - - - + - - - + - - - - - + - - + + - - - - + + + + + + + - + + - - + - + - - + - - - + + + + - + + + + + + - + + + + + + + + - - - + + + + + + + + - - - - + - - + - + - + - - - - - - - - + + - - - - + - - - - - - + - + - - + + + + + - - + - + - - + + + + + - - + - + + + + + - - + - + + + + + + + - - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - + + + - - + - - - - - - + - - - - - - - - - - - - - - - - - - - - - - + - + - - - - + - - - - - - + - + - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - + + + + + + - - - - + - - + + + + + - + + + + - + + + + + + + + - + + - - + + + - + + + + - - - - - + - + - + + + + + + + + - - + - - + - + - - + - + + + + - + + + + - + + + + + + + + + + + + + + - - + - - - - + - + + + + - + + + + - - + - - + - + + + - - + - - - - + - - + - - + - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + - - + - - - + - - + + + + + - - + - - + + + - + + - - + + + - - + + + + + - - + - + + + + + - - + + + + + + + + + + + - - - + + - - + + + + + - - - + - - + + + + - - + - + - + - - - - - - + - + - - + - + + + - - + - + + + + + - - + - + + + + + + + - - + - + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - + - - - - - - - - - - - - - - - - - - - - + + + + + - - + + + - + + + + - - + + + + + - - - - - + + + - - + - + + + + + - - + - - + + + - - + - - + + + - - + - + - - + - + + + + + + + + + + + - - - - + - - + - - + + + - - - - + + + - - + - - + + + + + - - + - + + - - - - + - - - + + + + - - - - + - - + - - - - - - + - - - - + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + - - + + - - + + - - + + + - - + - - + - - + - - + + + + + + + - - + - - + - - + + + + + - - + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + - - + + - - - - + - - + - - + + - - - - + - - + + + + + - - + + + + + - - + + + + + + + - - + + + + + + + + + - - + + + + + + + + + - - + + + + + + + - - + + + + + + + - - + + + + + + + + + - - + + + + + + + - - + + + + + + + + + - - + + + + + - - + + + + + + + - - + + + + + + + + + - - + + + + + + + + + - - + + + - - + + + + + - - + + + + + - - + + + - - + + + - - + + + + + - - + + + + + - - + + + - - + + + - - + + + - - + + + + + + + - - + + + + + - - + + + + + - - + + + - - + + + + + - - + + + - - + + + + + + + - - + + + + + - - + + + + + + - - - - + + + + + - - + + + + + - - + + + + + - - + + + + + - - + + + + + - - + + + + + - - + + + + + - - + + + + + - - + + + - - + - - + - - + + + - - + + + - - + - - + - - + + + - + - - - - + + + + + - - + + + - - + + + - - + + + - - + - - + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + - - - - + + + + - - - - + + + - - + - - + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + - - + + + + - - - - + - - + + + - - + - - + + + - + - - - - + - - + + + + - - - - + - - + + + + + + - - - - + - - + + + + - - - - + - - + + + + + - - + - + - - - - - - + + + - - - - + + + + + + + + - - - - - - - - - - - - - - - - + + + + - - - - - - + - - + - + - - + - + - + - - - - + - + - - + + - - - - - - - - - - - + + + - - - - + - - + + + + + - - - - - - + + + + - + + + + + + - + + - - - - - - - - - - - + + + + + + - - + - + + + + + - - - - - - - - - - - - - - + + + - - + + + + + - + + - - - - - + + + + + - - + + + - - + + + - - + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + - - + - + - + - + + + + + + + + + - - + - + - + - + - + - + + + + + + + + + - - + + + - - + + + + + + + - + + - + - + - + - - + + + + + + + - + + - - + - - - - - + + - - + - - - - - + - - + + + + + + + - - - - - + - - + - - - - - + - - - - + + + + + + + + + + - - - - + - - + + + + - - - - + - - + + + + - - - - + - - - + - + - - - - + - + - + - - - - + - - - - - - + - + - - - + + + + + + + - - - + - - + - - - - - - - - + - - - - + - + + + + + + - + + - - - - - - - + - + - - + - + - - - - - - + - + - - - - - - - + + + - + - + - - - - - - + - + + + - - + + + + - - + - + - - + - + - - + - + + + + + - + + + + + + + + + + + + + + + + + + - - - - - - + - + - + - - + - - + - - - + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + - - + - + + + - - + - + + + + + + + + + + + + + + + - - - - - - - + - + + + + + + + + + + + - - + - + + + + + + + + + + + + + - - + - - - - - - + - - - - - - - - - - - - + - - + - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - + + + + + + + + - - - - + + + - - + + - - + + - - + + + + + + + - - + + + + + - - + + + - - + + + - - + + + - - + + + + + + + + + + + - - + + + + + + + + + + + + + + + - - - + + + + + + + - - - + + + + + + + + + + + + + - - + + + + + + + + + - + - + + + + + + + - - - - + - - - - - - + + + + + - - + - - + - - + - - + + + + + - - + + + + + + + + + + + + + + + - - + - - + - - + - - + - - + - - + - - + + + + + + + - - + + + + + + + + + + + + + + + - - + + + + + - + - - - - + + + - - + + - - - - + + + - + - - - - - - - - + - + + + + + - - - + + + + + + + - - + + + + + - + - - + - + - - + + + + + + + - - - + + + + + + + - - + + + + + - - + + + + + + + - + + + - - - - - - - - - + - - + - - - - - - + - - - - - - - - - - - + - + - - - - - + + + + - - - + + + + - + - - - + - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - + + + + + + + - - + + + - - + - - - + + + - - - + + + - - + + + - - + - + + + - - - + - - - - + - - + + + - - + + + - - + + + + + - - + + + - - + + + + + - - + + + + + - - + + + - - + + + - - + + + + + + + + + + + - - + + + + + + + + + - - + + + + + + + + + - - + + + + + - - + + + - - - + + + - + + + + + + + + + - - + + + + + + + + + + + - + - - + + + + + + + - + - - + + + + + + + - + - + + + + + - - + - + + + + + + + + + + + + + + + - - + - - + + + + + + + + + + + + + + + + + - + + + + + - - + - + + + + + + + + + + + + + - - + - + + + + + - - - - - - - - - - - - - - - - - - + - - + - + - + - - - - - - + + + + + + + + + - - + + + + + + + - - - - - - + - + - - + - + - - - - + - - + + + - - + - - - - + + + - - - - + - + - - - - + + + + + - - + + + + + + + - - + + + - - + + + + + + + + + - - - - + - + + + - - - - + + + + + - - + + + - + + + + - - + - + - + + + + + - - + + + + + + + - - + + + + + + + + + + + - - + - + + + + + - - - - + + + + + + + + + + + - - - - + + + + + + + + + + + - - + - + + + + + + + + + + + - - + + + + + + + + + - - - - + - + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + - + - - - - + - + - - + - + - + + + + + - - - - + + - - - - + - - + - + - + - - - - - - - - - + - - - - + - + - + - - + - + + + + + + + + + - - + - + + + - - - - + + + + + + + + + + + - - + + + - - + - + + + + + - - - - + - - - - + - - - - - - + - - - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - - + + + + + - - - - - - + - - - - + + + - - + + - - - - + + + - - + + - - - - + - - + + + - - + + + + + - - + + + + + + + + + - - + + + - - + + + + + + + + + - - + + + - - + + + + + - - + + + - - + + + - - + + + - - + + + + + + + - - - - - - - - - - - - + - - - - + + - - - - + - - + + + - - + + + - - - + - + + + - - + + + - - - - - + - - - + + + - + - - + - + - - + + + - + + + - - + + + + + - - + - + + + + + - - - + + - - - - + + + - - + + + + - + + + + + + - - - - + + + + + + - - + + + + + - + - - + + + + + - + + - - + + + + - - - - + + + + + + - + + - - - - + + + + + + + + - + - + + - + + + + + + - - - - - - + + + - - + + + + + - - + + + + + + + - - + + + + + + + + + - - + + + + + - - + + + - - + + + + + + - - - + + + + + - - - - - - + + + + + - - + + + - - - + - - - - + + + + + + - - - - + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + - - - - + + - - - - - - + + + - + + - - - - + - - - + + + + + + + + + - - + + + - - - - + - - - - - + + + - - + + + + + - - + + + - - + + + + + + + + + + + - - + + + + + - - + + + - - + + + - - + + + + + + + - - + + + - - + + + + + + + + + - - - + + + + + - - - - + - - + + + + + + + - + - + - - - - - + + + + + - - + + + - + - - + + + + + + + - - - - - - + + + + + + + + + - - - + + + + + - + - - + + + + + + + - + - - + + + + + + + - - - - - - + - + + + + - - + - + + + + + + + - - - - - - - - - + + + + + + + - + - + - + - - + - - + + - - - + + + + + + + + - - - + + + + - + + + + + + + + - + + + + - + + + + + + + + - + + + + - + + + + - + + - - - - - - - - - - + - - - - - - - + - + - - - - - + + + + + + + - - + + - - + - - - - - - - + + + + + - - - - - - + - - - - + - - - - + + + + + + + - - - - + - + + + - - - - - - - - - - - - - - - - - - - + - - + + + - + - - - - - - + + + + + + + - - + + + + - + + + + - - + + + + + - - - - + + - - - - - - - - - - - - - - - - - + + - - + - - - - - - - + + + - + + + - - - - - - - - - - + + + + + + + + + + - - + - + + + + + + + + + - + + + + + + + + - - - - - - - - - - - - - - - - - - - - - + - - + + + + + - - - - + - + - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - + - - + - - + - - + - - + - - + - - + + + + + + + + + - - + + + + + + + + + - - + + + + + + + + + + + + + - - + + + + + + + + + + + + + - - + - - + - - + - - + + + + + + + + + - - + + + + + + + + + - - + + + + + + + + + - - + + + + + - - + - - + - - + - - + - - + - - - + - + - - - - - - - - + - - - + + + + + - - - + + + + + + - - + - - - - + + + + + - - - - - - - - + + - - + + + + + + + - - - - + - - - - + - - - + + - - + - - - - - - - - + - - + - + + + - + + + - - + - - - - + - - - - + - - - - + - - - - - - - - + - - - - + - + + + + + - - - - - - + - - - - + - - - - + - - - - + - - - - + - - - - + - - - - - - + - - - - + - - - + + - - + - - - - - - + - - + - - - - - - - - + - - - - - - - - + - - - + + + + + + + + + + + + + + + + + + + + - + - - - - + + - - - + - - - - - - + + - - - - - - + - - - - - - + - - - - - - - - - - + - - - - - - - - - - + - - - - - + + + - - - - - - + + + + + + + + + - - - - - + - - - - - - - - + - - - - - - - + - - - - - - - - - - - - + - - - - - - - - - + - + + + - - - - - + + + - - + - + - + + + - - + + + + + + + - - + - + - - + - + + + - - - - + - - + + + - - + - + - - + - + - + - + + + - - + + + + + + + - + + + + + + - - + - + + + + + - - + - + + + - - - - - - - + - + - - + + + + + + + + + + + - - - - - + - - - - - - + - - + + + - - + - + - - + + + + + - + + + + - - + + + + + + + - + + + + + + + + + + + + - - - - - - - + + + + - - - - - - - - - + + + + + + + + + + + + + - - - - - - - + + - - - - + - - + + + - - - + + + - - + - + + - + - - + - - - + - - + - - - - - + - - + + + + + + + + + - + - - + - - - - - - - - + + - - - - - - + - - + + + + + - + + + + + + - + + + + + + - - + + + + + + + - - - - + + + - - - - - + - - + + - - - - + - + - - + + + + + - - + - - - - + - - - - - - - - - + - + - - - - - - + + - + - - + + + - - - - - - - - - + - - - - - + + + + + + + + + + + + + + + + + + + - + - - + + - - - - - + - - + + - - - - - - - - + - + - - + + + - + - - + + + + + - - - - - + + + - - + + + - + + - - - - - - + + + - - - + + + - - - + + + + + + + - + + + + + - - + - + + + - - + + + - - + + + + + - - - - - + - - - + - - - - - - - - + - + - - + + - - - - - + - - - + + - - - + + + + + + + + + + + + + - + - + - - + + + + + + + + + + - - - - - - + + - - + + - - - - + - + - - - - + + + + + + + - + - - + - - - + + + - + + + + + + + + - - + - - - - - - - - - - - - + + + - + + + + + + + + - + + - + + + + + + + + - + + + + - - + + + + - - + + + - - + - + + + + + + + + - + + - - - + + + - - - - - - + + + + + + + - + + - - + + + - - - - - - - + + + - + + - - - - - + - + - - - - - - + - - - + - - - - + - - + + + - + - + - + - - - + + + - - + + + - - - - - + - + + + - - - - - - - - + - - + + + + + + + + + - - - - - - + - + - + + + + + + + + - + + - - + - + + + + + - - + - + - - - - - - - + - + - - + - + - + + - - - - + - + + - - + - + - - - + - + - - - - + - - + - - - - - + - + - - - - - - - - - - - + - + - - - + - + - - - - - - + - - + + + - - - - + @@ -39407,131 +54386,118 @@ visibility="public" > - - - - - + - - - - + - - + - - - - - - + + - - + + - - - - + - - + + + - + - - + - + - - - - + + + + + + + - + + + - - - - + - - - + - - - - - - - - - + + + - - + + + + + + + + + - + + + + - + + + + + + - + + + + + + - + + - + + + + + + + + - + + - - + + + + + + + - - + - + + - + + - + + + + + + + + - - - - + + + + - - + + + - - + + + + + - + + - - + + + - + + + + - - - + - + + + - + + - - + - + - - - + + + + + + + + + + + + - - - + + + + - + - - - - - + + + + + + + + + - + + + + + + + + + + - - - + - + - - + - + - - - - + - + - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - + - - - - - - - - - - + + + + + + + + + + + + + + - - - - - - + + + + + - - - - - - - - + + + + - - - - - + - + - - - - - - - - + - - + - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - + - - - - - - - - + - - - - - + - - + - - - + - - + - - - + - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - + - - - + - - - - + - - - - + - - - - + - - - - + - - + - + - - - - + - + - + + + + - - + + + + + + + - - - + - - + + + + + - + + - + + - - + + + - + + - - - - - - - - + - - + - - - - - + + - - + - + - - - - - - - - + - - - - + - - - - - + - + + + + - - - - + + + + + + + - - - + + + + + + + + + + + - + - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - - - - - - - - - - - + - - - + + + + + + + + + - - - + - - - - - - - + - + - - + - + - - - + - + + + + + + + - - + + + + + + + + + - + + - + + + + + + + + - + + - + + - - - + + + - - + + + - + - - - + + + - + + + - - - - - - - + - - + + + - + + - + + + + - - + - - + + - + + + + + + - - + + + - + + + + - - - - - - - - - + - + + - - + + + - - - - - - - + - - + - + - + - + + - - + - - - - - - + - - - - + - + + + + - + - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - - - - - - - - - + - - - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - + - + - - + - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - + - + + - - - - - - + - - - - - - + - - - - + + + - - + - - + - - + - + + + + - - + + + - - + - + - + - + - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - + + - + - - - + - - + - + - + - + - - - - - + - + - - + - - - +> + - - - - - - - + - - + - + + + - + + - + + - - + - + - + - - + + - - - + - - + - - - + - - - - + - - - - - - - - - - - - - - - - - - - - - - - + + + - + - + + + - - + - - + - - - - - - - - - - - - + - + - - - - - - - - - - - - - - + - + - - + - + - + + + + + - - - - - - - - - - - - - - - - + - + - + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - + - + - + - + - - - - - + - - + + + + + + + - + - - + - + - - - - - + + - + + - - - - - - - - - - - - - + + + - + - + + - - - - - - - - - + - - + - - - + - - - - - - - - + - - - - - - - - - - + - - - - - - - - - - - - - - + - + - - - - - - - - + + - - - - - - - - - - - - - - + - - - - - - - + - - - - - - - - - - - - + - + + + + + + - - - - + - + + - + + + + - + - - + + - + - + - - + + + + + - - - - - - - - - - - - - + - - - - - - - - - + + - - + - + - + - - - - - - - - - - - - - - + - - - - + - - - - - - + + + - - - - - - - - - - - - + + + - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - - + - + - + - - - - + - - - - - - + - - + - - - - - + + + + + + + + + + + - - - + + + - - + + + - - + + + + - - - - + - - + + + + + + - - - - + - + + + + + - - + + - - - - - + - - - + - - - - - - - + - + + + - + - + + - + + - + + + + - + - - - - + + + - + + - + - + - - + - + + + - + - - - - - - + - + + + - - - - + - - - + - + - + - + - - + + - - - - - + + + - + - - + + + - - - - - - - - - - - - - - + - + - - + + + - + + + - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - + - - + - - - - - - - - + - - - - - - - - - - + - - - - - - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + - + + + + + + - - - - - - - - - - - - - - - + - + - + + - - - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - + + + - - + - + - - - - + - - - - + - + - - - - - - - - + - - - - + - - - - - - - - + - + - - - - - - + - + + - - - + - + - + + - + - + - + + - - - - - + - - - - - - - + + - + - - + + + + + + - + + - + - + - + - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + - - - - + - - + - - - - - - + + + + + - + - + - - - - - - - - - - + - + + + + + + - - + + + - + - - - - - - - - - + - + + - - + + + - - + - + - + + + - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - + - + - - + - + + + - - - - + - + - + - - + + + + + + + - - + + + + + + + - - + + + - - - - + - - + - + - - - - + - - + + + + + + - - + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + - + - + - - - - - - - + + - - + + - - + - - - - + - - - - - - + - + - + - - - - + + - - - - - - - - - - + - + + + + + - - + - + + + - - - - - - - - - - - - - - - + - - - + - - - - + + + - - + + + + + - - + + + + + + + - - + - - + - - + + - - - - + - - + - - - + - + - - - + - + - - + - - - - + - + - - + - - - - - - - - - - - - - - - - - - - + + + + - - - - - - - + - - - - + - + - + - - - - + - - - - + - - - - - + - + - - - + - - - + - + - - - - - - - - + - - - - - + - - - + - + + + + + - + - - - + + + - + - - - + - - - + - - - - + - - - + - + - - - + + + - + - - - - - + - + - - - + - + + + + + + + - + - - + + + - + - + - - + + + + + - + + + + - - + + + - - - - - - - - - - - + - - - - - - + - + - - - - + - - + - - + - + + + + + + + + + - - - + - - - + + - - - + + + - - + + + - - - - - + - - + - - - + + + - - - + - - - + - + + + - - - - - - - - - - - - - + - - + - - - - - - - - - - - - - + - - - + - + + + - - - + + + - + - - + + - - - - - - - - + - + - + + - - - - - - - - + - + - - + - + - - + + + - - + + + - - - - - - + - - - - - - - - - - - - - - - - + - + - + - - + - - - - - - - + - + - - + - - - - - - + - + - - + - + - - - + - + - + - + - + + - - - - - - + + + + + + + - - - - - - + - - - - + - - - - - - - - + + - - - - - - - - - + - + - - + - + - + - - + + + - + - + - + - + - - + + + - + - + + + + + + + - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - + - - - - + - - - - + - - + - - - - - - - - - - - - - - + + - - - - - - - - + + + - + - + - + - - + + + + + - - - - + + + - - - - - - - - - - - - - - - + - + + + + - - - + - - + - - - - + - - - + - + - - - - - - - - + - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + - - - + - - + - + - + - + - - + - - + - - - - + - - + - - + - - - - + - - - + - - + + + + + + - - + + + + + - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - + + - - + + - - - - + - + + + + - - + + + + + + + - + + - - + - + + + + - + + - + + - + + - + + - + + - - - - - + + + + + + - + + - - - - - - - - + - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - - - - - + - + - + + + - + + + + + + + + - - - - - - - - - - - - - - - - - - - - + - - + - - + - - + - - + - - + - - + + + - - - - - - - - + - - - - - + + + + + - + + + - + + + + + + + - + + + + + + - - - - + + + + + + + + + + + + + - + - - - - + - - + - - + - - + - - + - - + - + - - - - + - - + - - + - - - - - - - - - - + - + - - - - - - - - - - - - - + - - - - + + - - + + - + - - - - - - + - - + - - - - - - - + - - + - + - - - - - - + - - - - - + - + + + + + + + - - - - + - - - - - - - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - + - - - - - - - - + - + + - + + - - + - - + - - - - + - + + - - - - + - - + + + - - - + - - - - + - - - + - + + + - + - + + - - - + + + - - - + - + - + - - - + + - - + - - - - - + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + - + + + - - + + + - - - + - - + - - - - + - + - - - - - - + - - - - - - - - + - + + - + + - - + - + - - - - - - - - - + + + - + - - + - - - + - - + - - + - + + - + + + + + + + + - + + + + + + + + + + - - + + + + + + + - - - + + + + + + + - - + + + + + - + + + - - + - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - + - - - - - + - - - - - - + - - - - + + + - - - + - - - - - - - - - - - - - - - - - - - - - - + + - + + - + + - - - - + + + + + + + - - - - - - - - - - + - - - - - + - + - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - + - + - + + + - - - - - - + + + + + + + - - - + - + - + - - + - + - - + + + - - - - - + - - - - - - - - + - - + - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - + - + - + + - - - - + - - - - + - - + - - - - - - - - + - - + + + + + - + + - - + - + - + + + + - + + + + + + - - - - - - + - + - - + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + - - - - - - + - - - - - - - - - + - - + - - - - - - - - - - + - - - - + - - - - + - - + - - + + - - - - - - - + - + - + - + - - + + + + + - - - - - - - - - - - - - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - + - + + + - - + + + + + - - + + + - - - - - - - - - - - + - - + - - + - - - - + - + - - - - - - - - - - - + + - - - + + - - - - - - - + - - + - - - - - - + - - - - - - - - - - + + + - + - - + + - - - - - + - + - + - + + + + + + + - - - - - - - - - - - - - + + + + + - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - + + - - - - - - - - - - + - + - + - + + - - - - + - - - - + - - - - + - + - - + - - - - + - - - - - - + - + + + + - - - + + + - + - - + + + + + - + + + + + - - - + - - + - - - - + - - - - - + - + - - - - + - - - + - + - - - - - + + + + + + + - - - - - - - - - + - - + - - - - - - - + - - - + + - - + - + - - + + + - + - + - + - - - - - - - - - - + + - + + - - - - - + - - - - + - - + + + + + - - + - - - + - + + + - - - - - + + + - - - + - - + - + - + + + + + + + + + - - + + + + + + + + + + + - - - - + + - + + + + - + + + + - + + + + + + - - + + + - + + - + + + + + + + + + + + + + + - - - + + + + + - - + + + + + - + - - + + + + + + - - - - - - - - + + + - + + + + + + - + + + + - - - - - - - - - - - + + - - - + + + + - - - + + - - - - - - - - - - + + + - - - - - - - - - - + - - + - + + + + + + + + + + + - + + + + + + + + - - + + + + + + + - - + - + - + + + + + + + - - + - - + - - - - + - - - - - - - + + + - - + + + - + - - + - + - + + - + + - - + - - + + + - - - + + + + + - - + + + + + - + + + + + + + + + + + + + + + + - + + + - + + + + - + - - - - - + - + + + - + - - - - - - - - - - - + - + - + - - - - - + + - + - + - - + + - + + + + + + + + - + - - - - + + + - + + + + - - - + + + + - - + + + - + + - + + + + - - - - - - + - - - + - + + - + + - + + + + - + + + + - - + + + - - + - - + + + - - - - + + + - - + - + + + - - + + + - - - - - - - - - + + - - - + + - + + + + + + + + + - - - - + + + + + + + + + + + - - - - - + + + + + - + + - + - + + + - + - - - - + + + + + + + + + - - - - + + + + + + + + + - - - - + + + + + - + + + + - - + + + - - - - - - - - - - + - + + + - - - - - - + - - + - + - - + - - - - + + + + - - + - - - - - + - + - - - - - - - - - - + - - - - + - - - - - + - - + - + - - + - + - + - - - + - + - + + - - + + - + + + + - + + - + + - - + + - - + + - - + - + + + - + + - + + - - + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + - - + - + - - + - + + + + + - + + + + - + + + + + + + + + + + + + + - + + + + + + + + + + + - - - - - + - - + + + - - + + + - - + - + - - + + + + + - - + - - + - + - + + - + - - + - - - - - - - - - - - - + - - - - - - - - - - - - - + - - - - + - - - + - - - + - - - - - - + - - - - - - - - - - - - + - - - - + - - + - - - - + - - - - - - - - + - - - - + - - - - + - - - - - - - + - - - + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - + - - + + - - + + + - - - - - - + - - + + + - - + + + - + + + + + + + + + + + + + + + + + + + + + + + - + + - + - - + + + - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - - - - + + + + + - - - - - - - - - - + - - - - + - - - - + - - + - - + - - - - + - - - + - - + + + + - - + + + - - - + + - - - + + - - - + - - - - + + - - - - + + + + + + - + + - - + + + - - + + + + + - - - + + - - - - - + - - + + + - - - + + - + + - - - + + - - - - - - - - - - + + - - - + + - - - - - - - - - - + - - - - - - - - - - + - - - - + + - - + + + - - - - - - + + + - - + + + - - - + + - - - - - + + - - + + + + - - + - - - - - + + + + - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - + + + - + + + - - - - + + - - - - - - - - - - + - - - - - - - + - - + - - - - - - - - - + - - - - + - - - - - - - - - - - - - - - - + - + - + - - - - - - - - - - - + - - + - - - - - - - - - - - + - - - - - - - - - - + - - - - - - - - - - - - - + + - + + - + + + - - + + + + + + + + - + - + + + + + + + - - + - + + + + + + + - - - - - + + + + + + + - + + + + + + + + + - + + + + + + - + + - - - - - + + + + + + - - - - + - - + - - + - - - + + + + - + + - - + - + - + - - - - - - - + - - - - - - - + - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - - - - - - + + + + - - - - + - + - - + - - - - - - - - - - - - + + - + + - + + + + - + + - - + + - + + - - - + + + + + - + + - + + - + + - + + - + + - + + - + - - - - + - - + + + - - + + + + + - - + - - + + + - - + - - + - - - + - - - - - + - - + - - - + - + - - - + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + - - + - + + - - - - + - - - - + - + - - - - - - + - - - - - - - - + - - - - - - + - + - - + - + - - + - - - - + - - + - - - + + + + - - + + - - + + + - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - + + + - - + - - - + - - - - - - - + - + + + - - - - - + - + - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - + + - - + - - - - - - - - - + - - - - - - - - - + - - - + - - - + + - + + + + - - - + - - + - - + - - + - - + + - - - - + + - + + - + + - - + + + + - + - - + + - - + - - - - - + + + + - - - - - + - - - - - - - - + - - + - - + - - + - - + - - + - - - - + - - + - - + - - - - + - - - - - - + - - - - - - + - - + + - - - - - - - - + - - + - - - - + - - + + + + - - - - - - + + + + + + + + + + + + + - - - - - - - - + + + + + + + + + + + + + - - - - - - + + + + + + + + + + + - - - - - - + + + + + + + + + - - - - - - + + + + + + + + + - - - - - - + + - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - + - - - - - + + - - - - - + - - + + + - - + + + - - + + + - - + - - + - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - - - - - - - + - - - - - - - - - - - - - - - - - + - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - + - - + - - - - - - + - - - - + - - - - - - - - - - - - - - + - - - - - - - - + - - - - - - - - - - - - - - - + - - - - - - - - - - - - + - - - - + - + + + - - + + - + + + + + - - + - + + + - - - - - + - - - - + - - + + + - - + + + - - + + + + + - - + + + + + - - + + + + + - - + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + - - + + + - - + + + - - + + + - - + + + - - - + + + + + + + + + - + + + + + + + + + - + - - + + + + + + + - + - + - + - - + + + - - + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + - - + + + - - - + + + + + + + - - - + + + + + - - - + - - + - - - - - + - - + + + + + - + + + + - + + - + + - + + + + + + - + + + + + + + + - - + - + + - - - - - - - - + - + - - - - + - + - + - - + + + - - + + + - - + - + + + - - + + + - - + - - + + + + + + + + + + + - - + + + + + + + + + + + - + + + + + + - + + + + - - - - - - + + + + + + + - + - + - - + - - + + + - - + + + - + + + + + + - + + + + - + + + + - + + + + + + - - - - - - - + + + + + - + - - + + + + + + + + + + + + + - + + + + + + - + + + + + + - - + + + + + + + - + + + + + + - + + - + + - - + + + + - + + - + + + + - + + - + + - + + + + + + - + + + + + + + + - + + + + + + - + + + + + + - + + + + + + + + - + + + + + + - + + - + + + + - - - - + - - + + + - - + - - + + + + + + + + + - - + + + + + + + + + - - + + + + + - - + + + + + - - + + + + + - - + + + + + + + + + + + - - + + + + + + + + + + + - - + + + - - + - - + - - + + + - - + - + - - - - - - - + - - + - + - - + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + - + + + + - + + + + - + + + + + + - + + + + + + - + + + + + + + + - - + - - + + + + + - - + - - + + + + + - - + + + + + + + - - + + + + + - - + - + + + + + - - - - - - - - - - - - - - - - - - + - + - - + + + - + - - + + + + + - + - + - + + + - - - - + - + + + - - - - + - + - + - + - + - + + + + + + + - - - - - + + + + + + - + + + + + + - + + + + + + + + + + + + + + + + + + - + + + + + + - + + + + + + - + + + + + + + + - + + + + + + + + - - - - - + - - + - - + - - - - - - + - - - - - + - - - + - - - - + - - - - + - - - - + - - - - - - + - - - - + - - + - - - - - - - - - - - - + - - - - + - - - - - - + - - + - - + + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - + - - - - + - - - - + - - - - + - - - - + - - - - + - - - - + - - - - + - - - - + - - - - + - - - - + - - - - - - + - - - - - - + - - - - + - - - - + - - - - + - - - - - - - - - + - + - - - - + - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - + - - - - + - - - - + - - - - + - - + - - - - - - + - - - - + - - - - + - - - - + - - - - + - - - - - - + - - - - + - - - - + - - - - + - - - - + - - - - + - - - - + - - - - - - - - - - + - - - - - - - - - - - - + - - - - - - - - - - + - - - - - - - - + - - - - - - + - - - - - - + - - - - - - - - - - + - - - - - - - - + - - + - - + - - + - - + - - - - + - - + - - + - - + - - + - - + - - + - - - - - - + - + - - - - + - - - - - - - - - - + - - - + - + - - + - - - - - - - - - - + - - - - - - - - + - - - - - - - - + - - - - - - + - - + - - + - - - - + - - - - + - - - - + - - - - + - - + - - + - - + - - + - - + - - + - - - - + - - - - - - + - - - - + - - - - + - - - - + - - - - + - - - - + - - - - - - - - + - - - - + - - - - - - + - - - - - - + - - - - - - - - + - - - - - - + - - - - + - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - + - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - + - + - - + - - + - - - - + - - - - + - - - - - - - - - - - - - + + + + + + + + + - - - - + - - - + - + - - - - + - - - - - - - - - + - + - - - - - - + - + - + - + - - - - + + + + + + + - - + - + + + - - + - + - - + - + - + - - + - + - - - - - - - - - - - - + - + - + - + - - + - + - - - + - + - - + - + - + - - - - - - + - + - - + - + - + + + - - + - + + + - - - - - - - - - - - - - - - - - - - - - + + + + - - - - - - - + + + + + + - - + + + - - - - + - - - + - + + + - - - - - - - - - - + - - - - - - - - - + + + - - - - - - - - + - + - + - - - - - - - - + + + - - + - - - + - - - + - - + - - - + - - + - - - + - - - + - - + + + - - + - + + + - - + - + - - - + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + - + + + - - - + + + + + + + + + - + + + + + - - - + + + + + + + + + - + - + - + - - - + + + + + + + + + - + - + - + - - - + + + + + + + + + - + + + + + - - - + + + + + + + + + - + + + + + - - - + + + + + + + + + - + - + - + - - - - - + + + + + + + + + - - + + + + + + - - - - - + + + + + + + + - + + + + + + - + + + + + + + + - - + + + + + - - - - + - - - - + - - + - - - - + + + + + - - - - + + + - - + + + + + - - + + + - - - - + + + - - - - + + + + + - - - - + + + - - + + + + + - - - - + + + + + + + - - - - + - + + + - - - - + + + + + + + - - - - - + + + + + + - - - + + + + + + + + - - - - - - - - - - - - - - - - + + + + + + + - - - - - - + + + + + + + - + + + + + + + + + - + - + - + - - - + + + + + + + + + - + - + - + - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - + - - + - - - - + - - - - - - + - - - - + - - - - + - - + - - - - + - - - - + - - - - - - - - + - - - - + - - - - + - - - - + - - + - - - - - - - - - - - - - - - - - - + - - - - - - - - + - - - - - - + - - - - - - - - + - - - - - - + - - - - - - - - - - + - - - - + - - - - - - - - - - - - - - + - - + - - - - + - - - - - - + - - - - - - + - - - - - - + - - - - - - - - + - - - - + - - - - - + - + - - - - - - + - - + - - - - + - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - + - - + - - + - - - - + - - + - - - - + - - - - - - + - - - - + - - - - - - + - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + - - - - - - + + + - - - - - + + + + - - + - - - - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - - + - - - - + + + + + + + - - - - + - - - - - + + - - - - - - - - + - + - - - + - - - - - - - - + - - - - - - - - - - - - - - - - - + - - + - - - - - - - - - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - + - + - - - - + + + + + + + - - - - - - + - - - - - - - - - - - - - + + + + + + - - + + + - - + + + + + - - - - + + + + + - + + + + + - + - - - - - - + + + - + - + - + - + + + - - - - - - - - + - + - - - - - - + - - - - + - + - + - + + + - - - - + - + - - - - + - + + + + + + + + + + - + + + + - - - - - - - + + + + + + + + + + + + + - - + + + - - + - - + + + - - + - + - - + + + - - + - + - + - + + + + - + + + + + + + + - + + + + + + + + + + - + + + + + + + + + + + + - + + + + + + + + + + + + - + + + + + + - + + + + - + + + + + + - + + + + - + + - + + + + + + - + + + + - + + + + + + - + + + + - - + + + + + - - + + + - + + + + + + + + + + - + + + + + + + + - + + + + + + + + - + + + + + + - + + + + + + + + - + + + + + + - + + + + + + + + - - + + + + + - + + + + + + + + - - + - + + + - - + - + + + + + - - - + + + + + + + - - - + + + + + + + + + - - - + + + + + + + - + + + + + + + - - + + + + + - - + - + + + + + - - + + + + + - + + - - + - - + + + - - + + + + + - - + + + - - + + + + + - - + + + + + + + - - + + + + + - - + - - + + + - - + - - - + - - + + + + + + + - + - - + + + + + + + - + - + + + - + + + + + + + + - - + + + - + + - + + + + + + + + + + - + + + + + + - + + + + + + + + + + + + - + + + + + + + + + + + + - + + + + - + + + + + + - - + + + - + + - + + + + - + + + + + + + + - + + + + + + + + - + + + + - + + + + + + - + + + + + + - - + + + + + + + - - + + + + + - - + + + + + - - + + + + + + + - - + - + + + - - + + + + + - - + + + + + + + - - + - + + + - - + - + + + - - + + + + + + + - - + + + + + - - + + + + + - - + + + + + + + - - - - - + + + + + + + - + - - + + + + + - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - + - - - - - - - - + - - - - - - - - + - - - - - - - + - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -141367,7 +154553,7 @@ synchronized="true" static="false" final="false" - deprecated="not deprecated" + deprecated="deprecated" visibility="public" > @@ -142067,6 +155253,17 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + + + + + + + + + + + @@ -154070,6 +167515,22 @@ + + + + + + + + + + + + + + Date: Mon, 20 Apr 2009 16:03:31 -0400 Subject: reset select/copy state if key is pressed while shift is down If a webpage suppresses keys from getting echoed back to the browser app, then also disable select/copy when a key follows a shift key press. Also add in missing debug string to permit debug builds. --- core/java/android/webkit/WebView.java | 9 +++++++++ core/java/android/webkit/WebViewCore.java | 1 + 2 files changed, 10 insertions(+) diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java index 3eb1dd7a2d6b..79bd41b98992 100644 --- a/core/java/android/webkit/WebView.java +++ b/core/java/android/webkit/WebView.java @@ -3180,6 +3180,15 @@ public class WebView extends AbsoluteLayout return false; } + if (keyCode != KeyEvent.KEYCODE_SHIFT_LEFT + && keyCode != KeyEvent.KEYCODE_SHIFT_RIGHT) { + // turn off copy select if a shift-key combo is pressed + mExtendSelection = mShiftIsPressed = false; + if (mTouchMode == TOUCH_SELECT_MODE) { + mTouchMode = TOUCH_INIT_MODE; + } + } + if (getSettings().getNavDump()) { switch (keyCode) { case KeyEvent.KEYCODE_4: diff --git a/core/java/android/webkit/WebViewCore.java b/core/java/android/webkit/WebViewCore.java index fe185e365399..3f7cdef224e2 100644 --- a/core/java/android/webkit/WebViewCore.java +++ b/core/java/android/webkit/WebViewCore.java @@ -545,6 +545,7 @@ final class WebViewCore { "LOAD_DATA", // = 139; "TOUCH_UP", // = 140; "TOUCH_EVENT", // = 141; + "SET_ACTIVE", // = 142; }; class EventHub { -- cgit v1.2.3-59-g8ed1b From d9d2f1140b52fd0c014e9deac59f6000564b7e84 Mon Sep 17 00:00:00 2001 From: Fred Quintana Date: Thu, 23 Apr 2009 13:36:27 -0700 Subject: change the sync framework and users to understand Account --- api/current.xml | 141 +++++++++-------- core/java/android/accounts/AccountManager.java | 173 +++++++++++++++++++-- core/java/android/accounts/AccountMonitor.java | 120 -------------- .../android/accounts/AccountMonitorListener.java | 29 ---- .../accounts/OnAccountsUpdatedListener.java | 29 ++++ .../content/AbstractSyncableContentProvider.java | 88 ++++++----- core/java/android/content/AbstractTableMerger.java | 31 ++-- core/java/android/content/ContentResolver.java | 3 + core/java/android/content/ISyncAdapter.aidl | 3 +- core/java/android/content/SyncAdapter.java | 5 +- core/java/android/content/SyncManager.java | 131 ++++++++-------- .../content/SyncStateContentProviderHelper.java | 43 +++-- core/java/android/content/SyncStorageEngine.java | 90 +++++++---- .../android/content/SyncableContentProvider.java | 19 ++- .../android/content/TempProviderSyncAdapter.java | 15 +- core/java/android/provider/Calendar.java | 10 +- core/java/android/provider/Contacts.java | 17 +- core/java/android/provider/SubscribedFeeds.java | 31 ++-- core/java/android/provider/Sync.java | 36 +++-- core/java/android/provider/SyncConstValue.java | 11 ++ .../SubscribedFeedsIntentService.java | 47 +++--- .../subscribedfeeds/SubscribedFeedsProvider.java | 15 +- preloaded-classes | 1 - .../android/test/SyncBaseInstrumentation.java | 14 +- .../android/content/SyncStorageEngineTest.java | 3 +- .../android/content/AbstractTableMergerTest.java | 35 +++-- 26 files changed, 657 insertions(+), 483 deletions(-) delete mode 100644 core/java/android/accounts/AccountMonitor.java delete mode 100644 core/java/android/accounts/AccountMonitorListener.java create mode 100644 core/java/android/accounts/OnAccountsUpdatedListener.java diff --git a/api/current.xml b/api/current.xml index 9125da5406cc..caffcaf5aa3c 100644 --- a/api/current.xml +++ b/api/current.xml @@ -13092,6 +13092,23 @@ + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + void postToHandler(Handler handler, final Future1Callback callback, final Future1 future) { - if (handler == null) { - handler = new Handler(mContext.getMainLooper()); - } - final Handler innerHandler = handler; - innerHandler.post(new Runnable() { + handler = handler == null ? mMainHandler : handler; + handler.post(new Runnable() { public void run() { callback.run(future); } @@ -908,4 +922,143 @@ public class AccountManager { new GetAuthTokenByTypeAndFeaturesTask(accountType, authTokenType, features, activityForPrompting, addAccountOptions, loginOptions, callback, handler).start(); } + + private final HashMap mAccountsUpdatedListeners = + Maps.newHashMap(); + + // These variable are only used from the LOGIN_ACCOUNTS_CHANGED_ACTION BroadcastReceiver + // and its getAccounts() callback which are both invoked only on the main thread. As a + // result we don't need to protect against concurrent accesses and any changes are guaranteed + // to be visible when used. Basically, these two variables are thread-confined. + private Future1 mAccountsLookupFuture = null; + private boolean mAccountLookupPending = false; + + /** + * BroadcastReceiver that listens for the LOGIN_ACCOUNTS_CHANGED_ACTION intent + * so that it can read the updated list of accounts and send them to the listener + * in mAccountsUpdatedListeners. + */ + private final BroadcastReceiver mAccountsChangedBroadcastReceiver = new BroadcastReceiver() { + public void onReceive(final Context context, final Intent intent) { + if (mAccountsLookupFuture != null) { + // an accounts lookup is already in progress, + // don't bother starting another request + mAccountLookupPending = true; + return; + } + // initiate a read of the accounts + mAccountsLookupFuture = getAccounts(new Future1Callback() { + public void run(Future1 future) { + // clear the future so that future receives will try the lookup again + mAccountsLookupFuture = null; + + // get the accounts array + Account[] accounts; + try { + accounts = future.getResult(); + } catch (OperationCanceledException e) { + // this should never happen, but if it does pretend we got another + // accounts changed broadcast + if (Config.LOGD) { + Log.d(TAG, "the accounts lookup for listener notifications was " + + "canceled, try again by simulating the receipt of " + + "a LOGIN_ACCOUNTS_CHANGED_ACTION broadcast"); + } + onReceive(context, intent); + return; + } + + // send the result to the listeners + synchronized (mAccountsUpdatedListeners) { + for (Map.Entry entry : + mAccountsUpdatedListeners.entrySet()) { + Account[] accountsCopy = new Account[accounts.length]; + // send the listeners a copy to make sure that one doesn't + // change what another sees + System.arraycopy(accounts, 0, accountsCopy, 0, accountsCopy.length); + postToHandler(entry.getValue(), entry.getKey(), accountsCopy); + } + } + + // If mAccountLookupPending was set when the account lookup finished it + // means that we had previously ignored a LOGIN_ACCOUNTS_CHANGED_ACTION + // intent because a lookup was already in progress. Now that we are done + // with this lookup and notification pretend that another intent + // was received by calling onReceive() directly. + if (mAccountLookupPending) { + mAccountLookupPending = false; + onReceive(context, intent); + return; + } + } + }, mMainHandler); + } + }; + + /** + * Add a {@link OnAccountsUpdatedListener} to this instance of the {@link AccountManager}. + * The listener is guaranteed to be invoked on the thread of the Handler that is passed + * in or the main thread's Handler if handler is null. + * @param listener the listener to add + * @param handler the Handler whose thread will be used to invoke the listener. If null + * the AccountManager context's main thread will be used. + * @param updateImmediately if true then the listener will be invoked as a result of this + * call. + * @throws IllegalArgumentException if listener is null + * @throws IllegalStateException if listener was already added + */ + public void addOnAccountsUpdatedListener(final OnAccountsUpdatedListener listener, + Handler handler, boolean updateImmediately) { + if (listener == null) { + throw new IllegalArgumentException("the listener is null"); + } + synchronized (mAccountsUpdatedListeners) { + if (mAccountsUpdatedListeners.containsKey(listener)) { + throw new IllegalStateException("this listener is already added"); + } + final boolean wasEmpty = mAccountsUpdatedListeners.isEmpty(); + + mAccountsUpdatedListeners.put(listener, handler); + + if (wasEmpty) { + // Register a broadcast receiver to monitor account changes + IntentFilter intentFilter = new IntentFilter(); + intentFilter.addAction(Constants.LOGIN_ACCOUNTS_CHANGED_ACTION); + mContext.registerReceiver(mAccountsChangedBroadcastReceiver, intentFilter); + } + } + + if (updateImmediately) { + getAccounts(new Future1Callback() { + public void run(Future1 future) { + try { + listener.onAccountsUpdated(future.getResult()); + } catch (OperationCanceledException e) { + // ignore + } + } + }, handler); + } + } + + /** + * Remove an {@link OnAccountsUpdatedListener} that was previously registered with + * {@link #addOnAccountsUpdatedListener}. + * @param listener the listener to remove + * @throws IllegalArgumentException if listener is null + * @throws IllegalStateException if listener was not already added + */ + public void removeOnAccountsUpdatedListener(OnAccountsUpdatedListener listener) { + if (listener == null) { + throw new IllegalArgumentException("the listener is null"); + } + synchronized (mAccountsUpdatedListeners) { + if (mAccountsUpdatedListeners.remove(listener) == null) { + throw new IllegalStateException("this listener was not previously added"); + } + if (mAccountsUpdatedListeners.isEmpty()) { + mContext.unregisterReceiver(mAccountsChangedBroadcastReceiver); + } + } + } } diff --git a/core/java/android/accounts/AccountMonitor.java b/core/java/android/accounts/AccountMonitor.java deleted file mode 100644 index 38032c59ba66..000000000000 --- a/core/java/android/accounts/AccountMonitor.java +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Copyright (C) 2007 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.accounts; - -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.Intent; -import android.content.IntentFilter; -import android.os.*; - -/** - * A helper class that calls back on the provided - * AccountMonitorListener with the set of current accounts both when - * it gets created and whenever the set changes. It does this by - * binding to the AccountsService and registering to receive the - * intent broadcast when the set of accounts is changed. The - * connection to the accounts service is only made when it needs to - * fetch the current list of accounts (that is, when the - * AccountMonitor is first created, and when the intent is received). - */ -public class AccountMonitor extends BroadcastReceiver { - private static final String TAG = "AccountMonitor"; - - private final Context mContext; - private final AccountMonitorListener mListener; - private boolean mClosed = false; - - private volatile Looper mServiceLooper; - private volatile NotifierHandler mServiceHandler; - - /** - * Initializes the AccountMonitor and initiates a bind to the - * AccountsService to get the initial account list. For 1.0, - * the "list" is always a single account. - * - * @param context the context we are running in - * @param listener the user to notify when the account set changes - */ - public AccountMonitor(Context context, AccountMonitorListener listener) { - if (listener == null) { - throw new IllegalArgumentException("listener is null"); - } - - mContext = context; - mListener = listener; - - // Register a broadcast receiver to monitor account changes - IntentFilter intentFilter = new IntentFilter(); - intentFilter.addAction(Constants.LOGIN_ACCOUNTS_CHANGED_ACTION); - intentFilter.addAction(Intent.ACTION_DEVICE_STORAGE_OK); // To recover from disk-full. - mContext.registerReceiver(this, intentFilter); - - HandlerThread thread = new HandlerThread("AccountMonitorHandlerThread"); - thread.start(); - mServiceLooper = thread.getLooper(); - mServiceHandler = new NotifierHandler(mServiceLooper); - - mServiceHandler.sendEmptyMessage(0); - } - - @Override - public void onReceive(Context context, Intent intent) { - notifyListener(); - } - - private Future1Callback mGetAccountsCallback = new Future1Callback() { - public void run(Future1 future) { - try { - Account[] accounts = future.getResult(); - String[] accountNames = new String[accounts.length]; - for (int i = 0; i < accounts.length; i++) { - accountNames[i] = accounts[i].mName; - } - mListener.onAccountsUpdated(accountNames); - } catch (OperationCanceledException e) { - // the request was canceled - } - } - }; - - private synchronized void notifyListener() { - AccountManager.get(mContext).getAccounts(mGetAccountsCallback, null /* handler */); - } - - /** - * Unregisters the account receiver. Consecutive calls to this - * method are harmless, but also do nothing. Once this call is - * made no more notifications will occur. - */ - public synchronized void close() { - if (!mClosed) { - mContext.unregisterReceiver(this); - mClosed = true; - } - } - - private final class NotifierHandler extends Handler { - public NotifierHandler(Looper looper) { - super(looper); - } - - public void handleMessage(Message msg) { - notifyListener(); - } - } -} diff --git a/core/java/android/accounts/AccountMonitorListener.java b/core/java/android/accounts/AccountMonitorListener.java deleted file mode 100644 index d0bd9a93f3eb..000000000000 --- a/core/java/android/accounts/AccountMonitorListener.java +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (C) 2007 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.accounts; - -/** - * An interface that contains the callback used by the AccountMonitor - */ -public interface AccountMonitorListener { - /** - * This invoked when the AccountMonitor starts up and whenever the account - * set changes. - * @param currentAccounts the current accounts - */ - void onAccountsUpdated(String[] currentAccounts); -} diff --git a/core/java/android/accounts/OnAccountsUpdatedListener.java b/core/java/android/accounts/OnAccountsUpdatedListener.java new file mode 100644 index 000000000000..bd249d0a3f9e --- /dev/null +++ b/core/java/android/accounts/OnAccountsUpdatedListener.java @@ -0,0 +1,29 @@ +/* + * Copyright (C) 2007 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.accounts; + +/** + * An interface that contains the callback used by the AccountMonitor + */ +public interface OnAccountsUpdatedListener { + /** + * This invoked when the AccountMonitor starts up and whenever the account + * set changes. + * @param accounts the current accounts + */ + void onAccountsUpdated(Account[] accounts); +} diff --git a/core/java/android/content/AbstractSyncableContentProvider.java b/core/java/android/content/AbstractSyncableContentProvider.java index ce6501c9f147..edef332cd8c4 100644 --- a/core/java/android/content/AbstractSyncableContentProvider.java +++ b/core/java/android/content/AbstractSyncableContentProvider.java @@ -4,8 +4,9 @@ import android.database.sqlite.SQLiteOpenHelper; import android.database.sqlite.SQLiteDatabase; import android.database.Cursor; import android.net.Uri; -import android.accounts.AccountMonitor; -import android.accounts.AccountMonitorListener; +import android.accounts.OnAccountsUpdatedListener; +import android.accounts.Account; +import android.accounts.AccountManager; import android.provider.SyncConstValue; import android.util.Config; import android.util.Log; @@ -14,10 +15,11 @@ import android.text.TextUtils; import java.util.Collections; import java.util.Map; -import java.util.HashMap; import java.util.Vector; import java.util.ArrayList; +import com.google.android.collect.Maps; + /** * A specialization of the ContentProvider that centralizes functionality * used by ContentProviders that are syncable. It also wraps calls to the ContentProvider @@ -32,21 +34,22 @@ public abstract class AbstractSyncableContentProvider extends SyncableContentPro private final String mDatabaseName; private final int mDatabaseVersion; private final Uri mContentUri; - private AccountMonitor mAccountMonitor; /** the account set in the last call to onSyncStart() */ - private String mSyncingAccount; + private Account mSyncingAccount; private SyncStateContentProviderHelper mSyncState = null; - private static final String[] sAccountProjection = new String[] {SyncConstValue._SYNC_ACCOUNT}; + private static final String[] sAccountProjection = + new String[] {SyncConstValue._SYNC_ACCOUNT, SyncConstValue._SYNC_ACCOUNT_TYPE}; private boolean mIsTemporary; private AbstractTableMerger mCurrentMerger = null; private boolean mIsMergeCancelled = false; - private static final String SYNC_ACCOUNT_WHERE_CLAUSE = SyncConstValue._SYNC_ACCOUNT + "=?"; + private static final String SYNC_ACCOUNT_WHERE_CLAUSE = + SyncConstValue._SYNC_ACCOUNT + "=? AND " + SyncConstValue._SYNC_ACCOUNT_TYPE + "=?"; protected boolean isTemporary() { return mIsTemporary; @@ -147,21 +150,23 @@ public abstract class AbstractSyncableContentProvider extends SyncableContentPro @Override public boolean onCreate() { if (isTemporary()) throw new IllegalStateException("onCreate() called for temp provider"); - mOpenHelper = new AbstractSyncableContentProvider.DatabaseHelper(getContext(), mDatabaseName); + mOpenHelper = new AbstractSyncableContentProvider.DatabaseHelper(getContext(), + mDatabaseName); mSyncState = new SyncStateContentProviderHelper(mOpenHelper); - - AccountMonitorListener listener = new AccountMonitorListener() { - public void onAccountsUpdated(String[] accounts) { - // Some providers override onAccountsChanged(); give them a database to work with. - mDb = mOpenHelper.getWritableDatabase(); - onAccountsChanged(accounts); - TempProviderSyncAdapter syncAdapter = (TempProviderSyncAdapter)getSyncAdapter(); - if (syncAdapter != null) { - syncAdapter.onAccountsChanged(accounts); - } - } - }; - mAccountMonitor = new AccountMonitor(getContext(), listener); + AccountManager.get(getContext()).addOnAccountsUpdatedListener( + new OnAccountsUpdatedListener() { + public void onAccountsUpdated(Account[] accounts) { + // Some providers override onAccountsChanged(); give them a database to + // work with. + mDb = mOpenHelper.getWritableDatabase(); + onAccountsChanged(accounts); + TempProviderSyncAdapter syncAdapter = + (TempProviderSyncAdapter)getSyncAdapter(); + if (syncAdapter != null) { + syncAdapter.onAccountsChanged(accounts); + } + } + }, null /* handler */, true /* updateImmediately */); return true; } @@ -365,8 +370,8 @@ public abstract class AbstractSyncableContentProvider extends SyncableContentPro * @param context the sync context for the operation * @param account */ - public void onSyncStart(SyncContext context, String account) { - if (TextUtils.isEmpty(account)) { + public void onSyncStart(SyncContext context, Account account) { + if (account == null) { throw new IllegalArgumentException("you passed in an empty account"); } mSyncingAccount = account; @@ -385,7 +390,7 @@ public abstract class AbstractSyncableContentProvider extends SyncableContentPro * The account of the most recent call to onSyncStart() * @return the account */ - public String getSyncingAccount() { + public Account getSyncingAccount() { return mSyncingAccount; } @@ -496,12 +501,11 @@ public abstract class AbstractSyncableContentProvider extends SyncableContentPro * Make sure that there are no entries for accounts that no longer exist * @param accountsArray the array of currently-existing accounts */ - protected void onAccountsChanged(String[] accountsArray) { - Map accounts = new HashMap(); - for (String account : accountsArray) { + protected void onAccountsChanged(Account[] accountsArray) { + Map accounts = Maps.newHashMap(); + for (Account account : accountsArray) { accounts.put(account, false); } - accounts.put(SyncConstValue.NON_SYNCABLE_ACCOUNT, false); SQLiteDatabase db = mOpenHelper.getWritableDatabase(); Map tableMap = db.getSyncedTables(); @@ -513,8 +517,7 @@ public abstract class AbstractSyncableContentProvider extends SyncableContentPro try { mSyncState.onAccountsChanged(accountsArray); for (String table : tables) { - deleteRowsForRemovedAccounts(accounts, table, - SyncConstValue._SYNC_ACCOUNT); + deleteRowsForRemovedAccounts(accounts, table); } db.setTransactionSuccessful(); } finally { @@ -529,23 +532,23 @@ public abstract class AbstractSyncableContentProvider extends SyncableContentPro * * @param accounts a map of existing accounts * @param table the table to delete from - * @param accountColumnName the name of the column that is expected - * to hold the account. */ - protected void deleteRowsForRemovedAccounts(Map accounts, - String table, String accountColumnName) { + protected void deleteRowsForRemovedAccounts(Map accounts, String table) { SQLiteDatabase db = mOpenHelper.getWritableDatabase(); Cursor c = db.query(table, sAccountProjection, null, null, - accountColumnName, null, null); + "_sync_account, _sync_account_type", null, null); try { while (c.moveToNext()) { - String account = c.getString(0); - if (TextUtils.isEmpty(account)) { + String accountName = c.getString(0); + String accountType = c.getString(1); + if (TextUtils.isEmpty(accountName)) { continue; } + Account account = new Account(accountName, accountType); if (!accounts.containsKey(account)) { int numDeleted; - numDeleted = db.delete(table, accountColumnName + "=?", new String[]{account}); + numDeleted = db.delete(table, "_sync_account=? AND _sync_account_type=?", + new String[]{account.mName, account.mType}); if (Config.LOGV) { Log.v(TAG, "deleted " + numDeleted + " records from table " + table @@ -562,7 +565,7 @@ public abstract class AbstractSyncableContentProvider extends SyncableContentPro * Called when the sync system determines that this provider should no longer * contain records for the specified account. */ - public void wipeAccount(String account) { + public void wipeAccount(Account account) { SQLiteDatabase db = mOpenHelper.getWritableDatabase(); Map tableMap = db.getSyncedTables(); ArrayList tables = new ArrayList(); @@ -577,7 +580,8 @@ public abstract class AbstractSyncableContentProvider extends SyncableContentPro // remove the data in the synced tables for (String table : tables) { - db.delete(table, SYNC_ACCOUNT_WHERE_CLAUSE, new String[]{account}); + db.delete(table, SYNC_ACCOUNT_WHERE_CLAUSE, + new String[]{account.mName, account.mType}); } db.setTransactionSuccessful(); } finally { @@ -588,14 +592,14 @@ public abstract class AbstractSyncableContentProvider extends SyncableContentPro /** * Retrieves the SyncData bytes for the given account. The byte array returned may be null. */ - public byte[] readSyncDataBytes(String account) { + public byte[] readSyncDataBytes(Account account) { return mSyncState.readSyncDataBytes(mOpenHelper.getReadableDatabase(), account); } /** * Sets the SyncData bytes for the given account. The byte array may be null. */ - public void writeSyncDataBytes(String account, byte[] data) { + public void writeSyncDataBytes(Account account, byte[] data) { mSyncState.writeSyncDataBytes(mOpenHelper.getWritableDatabase(), account, data); } } diff --git a/core/java/android/content/AbstractTableMerger.java b/core/java/android/content/AbstractTableMerger.java index 55885134de84..8c9955a27a1f 100644 --- a/core/java/android/content/AbstractTableMerger.java +++ b/core/java/android/content/AbstractTableMerger.java @@ -25,6 +25,7 @@ import android.provider.BaseColumns; import static android.provider.SyncConstValue.*; import android.text.TextUtils; import android.util.Log; +import android.accounts.Account; /** * @hide @@ -55,14 +56,16 @@ public abstract class AbstractTableMerger private volatile boolean mIsMergeCancelled; - private static final String SELECT_MARKED = _SYNC_MARK + "> 0 and " + _SYNC_ACCOUNT + "=?"; + private static final String SELECT_MARKED = _SYNC_MARK + "> 0 and " + + _SYNC_ACCOUNT + "=? and " + _SYNC_ACCOUNT_TYPE + "=?"; private static final String SELECT_BY_SYNC_ID_AND_ACCOUNT = - _SYNC_ID +"=? and " + _SYNC_ACCOUNT + "=?"; + _SYNC_ID +"=? and " + _SYNC_ACCOUNT + "=? and " + _SYNC_ACCOUNT_TYPE + "=?"; private static final String SELECT_BY_ID = BaseColumns._ID +"=?"; private static final String SELECT_UNSYNCED = "" - + _SYNC_DIRTY + " > 0 and (" + _SYNC_ACCOUNT + "=? or " + _SYNC_ACCOUNT + " is null)"; + + _SYNC_DIRTY + " > 0 and ((" + _SYNC_ACCOUNT + "=? AND " + _SYNC_ACCOUNT_TYPE + "=?) " + + "or " + _SYNC_ACCOUNT + " is null)"; public AbstractTableMerger(SQLiteDatabase database, String table, Uri tableURL, String deletedTable, @@ -132,7 +135,7 @@ public abstract class AbstractTableMerger * construct a temporary instance to hold them. */ public void merge(final SyncContext context, - final String account, + final Account account, final SyncableContentProvider serverDiffs, TempProviderSyncResult result, SyncResult syncResult, SyncableContentProvider temporaryInstanceFactory) { @@ -155,7 +158,7 @@ public abstract class AbstractTableMerger * @hide this is public for testing purposes only */ public void mergeServerDiffs(SyncContext context, - String account, SyncableContentProvider serverDiffs, SyncResult syncResult) { + Account account, SyncableContentProvider serverDiffs, SyncResult syncResult) { boolean diffsArePartial = serverDiffs.getContainsDiffs(); // mark the current rows so that we can distinguish these from new // inserts that occur during the merge @@ -169,7 +172,7 @@ public abstract class AbstractTableMerger Cursor diffsCursor = null; try { // load the local database entries, so we can merge them with the server - final String[] accountSelectionArgs = new String[]{account}; + final String[] accountSelectionArgs = new String[]{account.mName, account.mType}; localCursor = mDb.query(mTable, syncDirtyProjection, SELECT_MARKED, accountSelectionArgs, null, null, mTable + "." + _SYNC_ID); @@ -462,7 +465,7 @@ public abstract class AbstractTableMerger } } - private void fullyDeleteMatchingRows(Cursor diffsCursor, String account, + private void fullyDeleteMatchingRows(Cursor diffsCursor, Account account, SyncResult syncResult) { int serverSyncIdColumn = diffsCursor.getColumnIndexOrThrow(_SYNC_ID); final boolean deleteBySyncId = !diffsCursor.isNull(serverSyncIdColumn); @@ -472,7 +475,8 @@ public abstract class AbstractTableMerger Cursor c = null; try { if (deleteBySyncId) { - selectionArgs = new String[]{diffsCursor.getString(serverSyncIdColumn), account}; + selectionArgs = new String[]{diffsCursor.getString(serverSyncIdColumn), + account.mName, account.mType}; c = mDb.query(mTable, new String[]{BaseColumns._ID}, SELECT_BY_SYNC_ID_AND_ACCOUNT, selectionArgs, null, null, null); } else { @@ -505,21 +509,21 @@ public abstract class AbstractTableMerger * Finds local changes, placing the results in the given result object. * @param temporaryInstanceFactory As an optimization for the case * where there are no client-side diffs, mergeResult may initially - * have no {@link android.content.TempProviderSyncResult#tempContentProvider}. If this is + * have no {@link TempProviderSyncResult#tempContentProvider}. If this is * the first in the sequence of AbstractTableMergers to find * client-side diffs, it will use the given ContentProvider to * create a temporary instance and store its {@link - * ContentProvider} in the mergeResult. + * android.content.ContentProvider} in the mergeResult. * @param account * @param syncResult */ private void findLocalChanges(TempProviderSyncResult mergeResult, - SyncableContentProvider temporaryInstanceFactory, String account, + SyncableContentProvider temporaryInstanceFactory, Account account, SyncResult syncResult) { SyncableContentProvider clientDiffs = mergeResult.tempContentProvider; if (Log.isLoggable(TAG, Log.VERBOSE)) Log.v(TAG, "generating client updates"); - final String[] accountSelectionArgs = new String[]{account}; + final String[] accountSelectionArgs = new String[]{account.mName, account.mType}; // Generate the client updates and insertions // Create a cursor for dirty records @@ -553,7 +557,8 @@ public abstract class AbstractTableMerger if (mDeletedTable != null) { Cursor deletedCursor = mDb.query(mDeletedTable, syncIdAndVersionProjection, - _SYNC_ACCOUNT + "=? AND " + _SYNC_ID + " IS NOT NULL", accountSelectionArgs, + _SYNC_ACCOUNT + "=? AND " + _SYNC_ACCOUNT_TYPE + "=? AND " + + _SYNC_ID + " IS NOT NULL", accountSelectionArgs, null, null, mDeletedTable + "." + _SYNC_ID); try { numDeletedEntries = deletedCursor.getCount(); diff --git a/core/java/android/content/ContentResolver.java b/core/java/android/content/ContentResolver.java index 0a71d572932e..65772367ddeb 100644 --- a/core/java/android/content/ContentResolver.java +++ b/core/java/android/content/ContentResolver.java @@ -28,6 +28,7 @@ import android.os.Bundle; import android.os.ParcelFileDescriptor; import android.os.RemoteException; import android.text.TextUtils; +import android.accounts.Account; import java.io.File; import java.io.FileInputStream; @@ -691,6 +692,7 @@ public abstract class ContentResolver { *
  • Float
  • *
  • Double
  • *
  • String
  • + *
  • Account
  • *
  • null
  • * * @param extras the Bundle to check @@ -706,6 +708,7 @@ public abstract class ContentResolver { if (value instanceof Float) continue; if (value instanceof Double) continue; if (value instanceof String) continue; + if (value instanceof Account) continue; throw new IllegalArgumentException("unexpected value type: " + value.getClass().getName()); } diff --git a/core/java/android/content/ISyncAdapter.aidl b/core/java/android/content/ISyncAdapter.aidl index 671188cd50c5..d228605b83a4 100644 --- a/core/java/android/content/ISyncAdapter.aidl +++ b/core/java/android/content/ISyncAdapter.aidl @@ -16,6 +16,7 @@ package android.content; +import android.accounts.Account; import android.os.Bundle; import android.content.ISyncContext; @@ -33,7 +34,7 @@ oneway interface ISyncAdapter { * @param account the account that should be synced * @param extras SyncAdapter-specific parameters */ - void startSync(ISyncContext syncContext, String account, in Bundle extras); + void startSync(ISyncContext syncContext, in Account account, in Bundle extras); /** * Cancel the most recently initiated sync. Due to race conditions, this may arrive diff --git a/core/java/android/content/SyncAdapter.java b/core/java/android/content/SyncAdapter.java index 7826e5052ab7..3e916262f961 100644 --- a/core/java/android/content/SyncAdapter.java +++ b/core/java/android/content/SyncAdapter.java @@ -18,6 +18,7 @@ package android.content; import android.os.Bundle; import android.os.RemoteException; +import android.accounts.Account; /** * @hide @@ -29,7 +30,7 @@ public abstract class SyncAdapter { public static final int LOG_SYNC_DETAILS = 2743; class Transport extends ISyncAdapter.Stub { - public void startSync(ISyncContext syncContext, String account, + public void startSync(ISyncContext syncContext, Account account, Bundle extras) throws RemoteException { SyncAdapter.this.startSync(new SyncContext(syncContext), account, extras); } @@ -59,7 +60,7 @@ public abstract class SyncAdapter { * @param account the account that should be synced * @param extras SyncAdapter-specific parameters */ - public abstract void startSync(SyncContext syncContext, String account, Bundle extras); + public abstract void startSync(SyncContext syncContext, Account account, Bundle extras); /** * Cancel the most recently initiated sync. Due to race conditions, this may arrive diff --git a/core/java/android/content/SyncManager.java b/core/java/android/content/SyncManager.java index 01b07eb415df..4474c6277a88 100644 --- a/core/java/android/content/SyncManager.java +++ b/core/java/android/content/SyncManager.java @@ -21,8 +21,9 @@ import com.google.android.collect.Maps; import com.android.internal.R; import com.android.internal.util.ArrayUtils; -import android.accounts.AccountMonitor; -import android.accounts.AccountMonitorListener; +import android.accounts.Account; +import android.accounts.AccountManager; +import android.accounts.OnAccountsUpdatedListener; import android.app.AlarmManager; import android.app.Notification; import android.app.NotificationManager; @@ -50,8 +51,6 @@ import android.os.RemoteException; import android.os.ServiceManager; import android.os.SystemClock; import android.os.SystemProperties; -import android.preference.Preference; -import android.preference.PreferenceGroup; import android.provider.Sync; import android.provider.Settings; import android.provider.Sync.History; @@ -84,7 +83,7 @@ import java.util.Observable; /** * @hide */ -class SyncManager { +class SyncManager implements OnAccountsUpdatedListener { private static final String TAG = "SyncManager"; // used during dumping of the Sync history @@ -130,9 +129,7 @@ class SyncManager { private String mStatusText = ""; private long mHeartbeatTime = 0; - private AccountMonitor mAccountMonitor; - - private volatile String[] mAccounts = null; + private volatile Account[] mAccounts = null; volatile private PowerManager.WakeLock mSyncWakeLock; volatile private PowerManager.WakeLock mHandleAlarmWakeLock; @@ -184,43 +181,39 @@ class SyncManager { private BroadcastReceiver mBootCompletedReceiver = new BroadcastReceiver() { public void onReceive(Context context, Intent intent) { if (!mFactoryTest) { - AccountMonitorListener listener = new AccountMonitorListener() { - public void onAccountsUpdated(String[] accounts) { - final boolean hadAccountsAlready = mAccounts != null; - // copy the accounts into a new array and change mAccounts to point to it - String[] newAccounts = new String[accounts.length]; - System.arraycopy(accounts, 0, newAccounts, 0, accounts.length); - mAccounts = newAccounts; - - // if a sync is in progress yet it is no longer in the accounts list, - // cancel it - ActiveSyncContext activeSyncContext = mActiveSyncContext; - if (activeSyncContext != null) { - if (!ArrayUtils.contains(newAccounts, - activeSyncContext.mSyncOperation.account)) { - Log.d(TAG, "canceling sync since the account has been removed"); - sendSyncFinishedOrCanceledMessage(activeSyncContext, - null /* no result since this is a cancel */); - } - } - - // we must do this since we don't bother scheduling alarms when - // the accounts are not set yet - sendCheckAlarmsMessage(); + AccountManager.get(mContext).addOnAccountsUpdatedListener(SyncManager.this, + mSyncHandler, true /* updateImmediately */); + } + } + }; - mSyncStorageEngine.doDatabaseCleanup(accounts); + public void onAccountsUpdated(Account[] accounts) { + final boolean hadAccountsAlready = mAccounts != null; + mAccounts = accounts; - if (hadAccountsAlready && mAccounts.length > 0) { - // request a sync so that if the password was changed we will - // retry any sync that failed when it was wrong - startSync(null /* all providers */, null /* no extras */); - } - } - }; - mAccountMonitor = new AccountMonitor(context, listener); + // if a sync is in progress yet it is no longer in the accounts list, + // cancel it + ActiveSyncContext activeSyncContext = mActiveSyncContext; + if (activeSyncContext != null) { + if (!ArrayUtils.contains(accounts, activeSyncContext.mSyncOperation.account)) { + Log.d(TAG, "canceling sync since the account has been removed"); + sendSyncFinishedOrCanceledMessage(activeSyncContext, + null /* no result since this is a cancel */); } } - }; + + // we must do this since we don't bother scheduling alarms when + // the accounts are not set yet + sendCheckAlarmsMessage(); + + mSyncStorageEngine.doDatabaseCleanup(accounts); + + if (hadAccountsAlready && accounts.length > 0) { + // request a sync so that if the password was changed we will + // retry any sync that failed when it was wrong + startSync(null /* all providers */, null /* no extras */); + } + } private BroadcastReceiver mConnectivityIntentReceiver = new BroadcastReceiver() { @@ -486,7 +479,7 @@ class SyncManager { } } - public String getSyncingAccount() { + public Account getSyncingAccount() { ActiveSyncContext activeSyncContext = mActiveSyncContext; return (activeSyncContext != null) ? activeSyncContext.mSyncOperation.account : null; } @@ -557,10 +550,10 @@ class SyncManager { delay = -1; // this means schedule at the front of the queue } - String[] accounts; - String accountFromExtras = extras.getString(ContentResolver.SYNC_EXTRAS_ACCOUNT); - if (!TextUtils.isEmpty(accountFromExtras)) { - accounts = new String[]{accountFromExtras}; + Account[] accounts; + Account accountFromExtras = extras.getParcelable(ContentResolver.SYNC_EXTRAS_ACCOUNT); + if (accountFromExtras != null) { + accounts = new Account[]{accountFromExtras}; } else { // if the accounts aren't configured yet then we can't support an account-less // sync request @@ -605,7 +598,7 @@ class SyncManager { for (int i = 0; i < numProviders; i++) { if (!providers.get(i).isSyncable) continue; final String name = names.get(i); - for (String account : accounts) { + for (Account account : accounts) { scheduleSyncOperation(new SyncOperation(account, source, name, extras, delay)); // TODO: remove this when Calendar supports multiple accounts. Until then // pretend that only the first account exists when syncing calendar. @@ -881,7 +874,7 @@ class SyncManager { * Value type that represents a sync operation. */ static class SyncOperation implements Comparable { - final String account; + final Account account; int syncSource; String authority; Bundle extras; @@ -890,7 +883,7 @@ class SyncManager { long delay; Long rowId = null; - SyncOperation(String account, int source, String authority, Bundle extras, long delay) { + SyncOperation(Account account, int source, String authority, Bundle extras, long delay) { this.account = account; this.syncSource = source; this.authority = authority; @@ -1024,7 +1017,7 @@ class SyncManager { sb.append("data connected: ").append(mDataConnectionIsConnected).append("\n"); sb.append("memory low: ").append(mStorageIsLow).append("\n"); - final String[] accounts = mAccounts; + final Account[] accounts = mAccounts; sb.append("accounts: "); if (accounts != null) { sb.append(accounts.length); @@ -1095,17 +1088,18 @@ class SyncManager { c.close(); } - String currentAccount = null; + Account currentAccount = null; c = mSyncStorageEngine.query(Sync.Status.CONTENT_URI, - STATUS_PROJECTION, null, null, "account, authority"); + STATUS_PROJECTION, null, null, "account_type, account, authority"); sb.append("\nSync history by account and authority\n"); try { while (c.moveToNext()) { - if (!TextUtils.equals(currentAccount, c.getString(0))) { + final Account account = new Account(c.getString(0), c.getString(13)); + if (!account.equals(currentAccount)) { if (currentAccount != null) { dumpSyncHistoryFooter(sb); } - currentAccount = c.getString(0); + currentAccount = account; dumpSyncHistoryHeader(sb, currentAccount); } @@ -1117,8 +1111,8 @@ class SyncManager { } } - private void dumpSyncHistoryHeader(StringBuilder sb, String account) { - sb.append(" Account: ").append(account).append("\n"); + private void dumpSyncHistoryHeader(StringBuilder sb, Account account) { + sb.append(" ").append(account).append("\n"); sb.append(" ___________________________________________________________________________________________________________________________\n"); sb.append(" | | num times synced | total | last success | |\n"); sb.append(" | authority | local | poll | server | user | total | duration | source | time | result if failing |\n"); @@ -1137,7 +1131,8 @@ class SyncManager { Sync.Status.LAST_SUCCESS_TIME, // 9 Sync.Status.LAST_FAILURE_SOURCE, // 10 Sync.Status.LAST_FAILURE_TIME, // 11 - Sync.Status.LAST_FAILURE_MESG // 12 + Sync.Status.LAST_FAILURE_MESG, // 12 + Sync.Status.ACCOUNT_TYPE, // 13 }; private void dumpSyncHistoryRow(StringBuilder sb, Cursor c) { @@ -1305,7 +1300,7 @@ class SyncManager { */ class SyncNotificationInfo { // only valid if isActive is true - public String account; + public Account account; // only valid if isActive is true public String authority; @@ -1460,7 +1455,7 @@ class SyncManager { // If the accounts aren't known yet then we aren't ready to run. We will be kicked // when the account lookup request does complete. - String[] accounts = mAccounts; + Account[] accounts = mAccounts; if (accounts == null) { if (isLoggable) { Log.v(TAG, "runStateIdle: accounts not known, skipping"); @@ -1857,7 +1852,7 @@ class SyncManager { mContext.sendBroadcast(syncStateIntent); } - private void installHandleTooManyDeletesNotification(String account, String authority, + private void installHandleTooManyDeletesNotification(Account account, String authority, long numDeletes) { if (mNotificationMgr == null) return; Intent clickIntent = new Intent(); @@ -1937,14 +1932,16 @@ class SyncManager { "_id", "authority", "account", + "account_type", "extras", - "source" + "source", }; private static final int COLUMN_ID = 0; private static final int COLUMN_AUTHORITY = 1; private static final int COLUMN_ACCOUNT = 2; - private static final int COLUMN_EXTRAS = 3; - private static final int COLUMN_SOURCE = 4; + private static final int COLUMN_ACCOUNT_TYPE = 3; + private static final int COLUMN_EXTRAS = 4; + private static final int COLUMN_SOURCE = 5; private static final boolean DEBUG_CHECK_DATA_CONSISTENCY = false; @@ -2026,7 +2023,8 @@ class SyncManager { parcel.recycle(); } ContentValues values = new ContentValues(); - values.put("account", operation.account); + values.put("account", operation.account.mName); + values.put("account_type", operation.account.mType); values.put("authority", operation.authority); values.put("source", operation.syncSource); values.put("extras", extrasData); @@ -2084,7 +2082,7 @@ class SyncManager { if (DEBUG_CHECK_DATA_CONSISTENCY) debugCheckDataStructures(true /* check the DB */); } - public void clear(String account, String authority) { + public void clear(Account account, String authority) { Iterator> entries = mOpsByKey.entrySet().iterator(); while (entries.hasNext()) { Map.Entry entry = entries.next(); @@ -2175,7 +2173,8 @@ class SyncManager { } SyncOperation syncOperation = new SyncOperation( - cursor.getString(COLUMN_ACCOUNT), + new Account(cursor.getString(COLUMN_ACCOUNT), + cursor.getString(COLUMN_ACCOUNT_TYPE)), cursor.getInt(COLUMN_SOURCE), cursor.getString(COLUMN_AUTHORITY), extras, diff --git a/core/java/android/content/SyncStateContentProviderHelper.java b/core/java/android/content/SyncStateContentProviderHelper.java index f503e6f3521d..dc728eccf3d4 100644 --- a/core/java/android/content/SyncStateContentProviderHelper.java +++ b/core/java/android/content/SyncStateContentProviderHelper.java @@ -23,6 +23,7 @@ import android.database.DatabaseUtils; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.net.Uri; +import android.accounts.Account; /** * Extends the schema of a ContentProvider to include the _sync_state table @@ -43,14 +44,15 @@ public class SyncStateContentProviderHelper { private static final Uri CONTENT_URI = Uri.parse("content://" + SYNC_STATE_AUTHORITY + "/state"); - private static final String ACCOUNT_WHERE = "_sync_account = ?"; + private static final String ACCOUNT_WHERE = "_sync_account = ? AND _sync_account_type = ?"; private final Provider mInternalProviderInterface; private static final String SYNC_STATE_TABLE = "_sync_state"; - private static long DB_VERSION = 2; + private static long DB_VERSION = 3; - private static final String[] ACCOUNT_PROJECTION = new String[]{"_sync_account"}; + private static final String[] ACCOUNT_PROJECTION = + new String[]{"_sync_account", "_sync_account_type"}; static { sURIMatcher.addURI(SYNC_STATE_AUTHORITY, "state", STATE); @@ -70,8 +72,9 @@ public class SyncStateContentProviderHelper { db.execSQL("CREATE TABLE _sync_state (" + "_id INTEGER PRIMARY KEY," + "_sync_account TEXT," + + "_sync_account_type TEXT," + "data TEXT," + - "UNIQUE(_sync_account)" + + "UNIQUE(_sync_account, _sync_account_type)" + ");"); db.execSQL("DROP TABLE IF EXISTS _sync_state_metadata"); @@ -168,15 +171,17 @@ public class SyncStateContentProviderHelper { * @param account the account of the row that should be copied over. */ public void copySyncState(SQLiteDatabase dbSrc, SQLiteDatabase dbDest, - String account) { - final String[] whereArgs = new String[]{account}; - Cursor c = dbSrc.query(SYNC_STATE_TABLE, new String[]{"_sync_account", "data"}, + Account account) { + final String[] whereArgs = new String[]{account.mName, account.mType}; + Cursor c = dbSrc.query(SYNC_STATE_TABLE, + new String[]{"_sync_account", "_sync_account_type", "data"}, ACCOUNT_WHERE, whereArgs, null, null, null); try { if (c.moveToNext()) { ContentValues values = new ContentValues(); values.put("_sync_account", c.getString(0)); - values.put("data", c.getBlob(1)); + values.put("_sync_account_type", c.getString(1)); + values.put("data", c.getBlob(2)); dbDest.replace(SYNC_STATE_TABLE, "_sync_account", values); } } finally { @@ -184,14 +189,17 @@ public class SyncStateContentProviderHelper { } } - public void onAccountsChanged(String[] accounts) { + public void onAccountsChanged(Account[] accounts) { SQLiteDatabase db = mOpenHelper.getWritableDatabase(); Cursor c = db.query(SYNC_STATE_TABLE, ACCOUNT_PROJECTION, null, null, null, null, null); try { while (c.moveToNext()) { - final String account = c.getString(0); + final String accountName = c.getString(0); + final String accountType = c.getString(1); + Account account = new Account(accountName, accountType); if (!ArrayUtils.contains(accounts, account)) { - db.delete(SYNC_STATE_TABLE, ACCOUNT_WHERE, new String[]{account}); + db.delete(SYNC_STATE_TABLE, ACCOUNT_WHERE, + new String[]{accountName, accountType}); } } } finally { @@ -199,9 +207,9 @@ public class SyncStateContentProviderHelper { } } - public void discardSyncData(SQLiteDatabase db, String account) { + public void discardSyncData(SQLiteDatabase db, Account account) { if (account != null) { - db.delete(SYNC_STATE_TABLE, ACCOUNT_WHERE, new String[]{account}); + db.delete(SYNC_STATE_TABLE, ACCOUNT_WHERE, new String[]{account.mName, account.mType}); } else { db.delete(SYNC_STATE_TABLE, null, null); } @@ -210,9 +218,9 @@ public class SyncStateContentProviderHelper { /** * Retrieves the SyncData bytes for the given account. The byte array returned may be null. */ - public byte[] readSyncDataBytes(SQLiteDatabase db, String account) { + public byte[] readSyncDataBytes(SQLiteDatabase db, Account account) { Cursor c = db.query(SYNC_STATE_TABLE, null, ACCOUNT_WHERE, - new String[]{account}, null, null, null); + new String[]{account.mName, account.mType}, null, null, null); try { if (c.moveToFirst()) { return c.getBlob(c.getColumnIndexOrThrow("data")); @@ -226,9 +234,10 @@ public class SyncStateContentProviderHelper { /** * Sets the SyncData bytes for the given account. The bytes array may be null. */ - public void writeSyncDataBytes(SQLiteDatabase db, String account, byte[] data) { + public void writeSyncDataBytes(SQLiteDatabase db, Account account, byte[] data) { ContentValues values = new ContentValues(); values.put("data", data); - db.update(SYNC_STATE_TABLE, values, ACCOUNT_WHERE, new String[]{account}); + db.update(SYNC_STATE_TABLE, values, ACCOUNT_WHERE, + new String[]{account.mName, account.mType}); } } diff --git a/core/java/android/content/SyncStorageEngine.java b/core/java/android/content/SyncStorageEngine.java index 282f6e71db70..2ad44d256725 100644 --- a/core/java/android/content/SyncStorageEngine.java +++ b/core/java/android/content/SyncStorageEngine.java @@ -1,6 +1,7 @@ package android.content; import android.Manifest; +import android.accounts.Account; import android.database.Cursor; import android.database.DatabaseUtils; import android.database.sqlite.SQLiteDatabase; @@ -16,6 +17,8 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; +import com.google.android.collect.Sets; + /** * ContentProvider that tracks the sync data and overall sync * history on the device. @@ -26,7 +29,7 @@ public class SyncStorageEngine { private static final String TAG = "SyncManager"; private static final String DATABASE_NAME = "syncmanager.db"; - private static final int DATABASE_VERSION = 10; + private static final int DATABASE_VERSION = 11; private static final int STATS = 1; private static final int STATS_ID = 2; @@ -63,17 +66,20 @@ public class SyncStorageEngine { PENDING_PROJECTION_MAP = map = new HashMap(); map.put(Sync.History._ID, Sync.History._ID); map.put(Sync.History.ACCOUNT, Sync.History.ACCOUNT); + map.put(Sync.History.ACCOUNT_TYPE, Sync.History.ACCOUNT_TYPE); map.put(Sync.History.AUTHORITY, Sync.History.AUTHORITY); ACTIVE_PROJECTION_MAP = map = new HashMap(); map.put(Sync.History._ID, Sync.History._ID); map.put(Sync.History.ACCOUNT, Sync.History.ACCOUNT); + map.put(Sync.History.ACCOUNT_TYPE, Sync.History.ACCOUNT_TYPE); map.put(Sync.History.AUTHORITY, Sync.History.AUTHORITY); map.put("startTime", "startTime"); HISTORY_PROJECTION_MAP = map = new HashMap(); map.put(Sync.History._ID, "history._id as _id"); map.put(Sync.History.ACCOUNT, "stats.account as account"); + map.put(Sync.History.ACCOUNT_TYPE, "stats.account_type as account_type"); map.put(Sync.History.AUTHORITY, "stats.authority as authority"); map.put(Sync.History.EVENT, Sync.History.EVENT); map.put(Sync.History.EVENT_TIME, Sync.History.EVENT_TIME); @@ -86,6 +92,7 @@ public class SyncStorageEngine { STATUS_PROJECTION_MAP = map = new HashMap(); map.put(Sync.Status._ID, "status._id as _id"); map.put(Sync.Status.ACCOUNT, "stats.account as account"); + map.put(Sync.Status.ACCOUNT_TYPE, "stats.account_type as account_type"); map.put(Sync.Status.AUTHORITY, "stats.authority as authority"); map.put(Sync.Status.TOTAL_ELAPSED_TIME, Sync.Status.TOTAL_ELAPSED_TIME); map.put(Sync.Status.NUM_SYNCS, Sync.Status.NUM_SYNCS); @@ -102,7 +109,7 @@ public class SyncStorageEngine { } private static final String[] STATS_ACCOUNT_PROJECTION = - new String[] { Sync.Stats.ACCOUNT }; + new String[] { Sync.Stats.ACCOUNT, Sync.Stats.ACCOUNT_TYPE }; private static final int MAX_HISTORY_EVENTS_TO_KEEP = 5000; @@ -151,6 +158,7 @@ public class SyncStorageEngine { + "_id INTEGER PRIMARY KEY," + "authority TEXT NOT NULL," + "account TEXT NOT NULL," + + "account_type TEXT NOT NULL," + "extras BLOB NOT NULL," + "source INTEGER NOT NULL" + ");"); @@ -158,6 +166,7 @@ public class SyncStorageEngine { db.execSQL("CREATE TABLE stats (" + "_id INTEGER PRIMARY KEY," + "account TEXT, " + + "account_type TEXT, " + "authority TEXT, " + "syncdata TEXT, " + "UNIQUE (account, authority)" + @@ -195,6 +204,7 @@ public class SyncStorageEngine { + "_id INTEGER PRIMARY KEY," + "authority TEXT," + "account TEXT," + + "account_type TEXT," + "startTime INTEGER);"); db.execSQL("CREATE INDEX historyEventTime ON history (eventTime)"); @@ -206,10 +216,27 @@ public class SyncStorageEngine { @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { - if (oldVersion == 9 && newVersion == 10) { + if (oldVersion == 9) { Log.w(TAG, "Upgrading database from version " + oldVersion + " to " + newVersion + ", which will preserve old data"); db.execSQL("ALTER TABLE status ADD COLUMN initialFailureTime INTEGER"); + oldVersion++; + } + + if (oldVersion == 10) { + Log.w(TAG, "Upgrading database from version " + oldVersion + " to " + + newVersion + ", which will preserve old data"); + db.execSQL("ALTER TABLE pending ADD COLUMN account_type TEXT"); + db.execSQL("ALTER TABLE stats ADD COLUMN account_type TEXT"); + db.execSQL("ALTER TABLE active ADD COLUMN account_type TEXT"); + + db.execSQL("UPDATE pending SET account_type='com.google.GAIA'"); + db.execSQL("UPDATE stats SET account_type='com.google.GAIA'"); + db.execSQL("UPDATE active SET account_type='com.google.GAIA'"); + oldVersion++; + } + + if (oldVersion == newVersion) { return; } @@ -233,23 +260,23 @@ public class SyncStorageEngine { } } - protected void doDatabaseCleanup(String[] accounts) { - HashSet currentAccounts = new HashSet(); - for (String account : accounts) currentAccounts.add(account); + protected void doDatabaseCleanup(Account[] accounts) { + HashSet currentAccounts = Sets.newHashSet(accounts); SQLiteDatabase db = mOpenHelper.getWritableDatabase(); Cursor cursor = db.query("stats", STATS_ACCOUNT_PROJECTION, - null /* where */, null /* where args */, Sync.Stats.ACCOUNT, + null /* where */, null /* where args */, + Sync.Stats.ACCOUNT + "," + Sync.Stats.ACCOUNT_TYPE, null /* having */, null /* order by */); try { while (cursor.moveToNext()) { - String account = cursor.getString(0); - if (TextUtils.isEmpty(account)) { - continue; - } + String accountName = cursor.getString(0); + String accountType = cursor.getString(1); + final Account account = new Account(accountName, accountType); if (!currentAccounts.contains(account)) { - String where = Sync.Stats.ACCOUNT + "=?"; + String where = Sync.Stats.ACCOUNT + "=? AND " + Sync.Stats.ACCOUNT_TYPE + "=?"; int numDeleted; - numDeleted = db.delete("stats", where, new String[]{account}); + numDeleted = db.delete("stats", where, + new String[]{account.mName, account.mType}); if (Config.LOGD) { Log.d(TAG, "deleted " + numDeleted + " records from stats table" @@ -272,10 +299,11 @@ public class SyncStorageEngine { } } - private int updateActiveSync(String account, String authority, Long startTime) { + private int updateActiveSync(Account account, String authority, Long startTime) { SQLiteDatabase db = mOpenHelper.getWritableDatabase(); ContentValues values = new ContentValues(); - values.put("account", account); + values.put("account", account == null ? null : account.mName); + values.put("account_type", account == null ? null : account.mType); values.put("authority", authority); values.put("startTime", startTime); int numChanges = db.update("active", values, null, null); @@ -463,7 +491,9 @@ public class SyncStorageEngine { db.beginTransaction(); long rowId = db.insert("pending", Sync.Pending.ACCOUNT, values); if (rowId < 0) return null; - String account = values.getAsString(Sync.Pending.ACCOUNT); + String accountName = values.getAsString(Sync.Pending.ACCOUNT); + String accountType = values.getAsString(Sync.Pending.ACCOUNT_TYPE); + final Account account = new Account(accountName, accountType); String authority = values.getAsString(Sync.Pending.AUTHORITY); long statsId = createStatsRowIfNecessary(account, authority); @@ -491,25 +521,31 @@ public class SyncStorageEngine { SQLiteDatabase db = mOpenHelper.getWritableDatabase(); db.beginTransaction(); try { - String account; + Account account; String authority; Cursor c = db.query("pending", - new String[]{Sync.Pending.ACCOUNT, Sync.Pending.AUTHORITY}, + new String[]{Sync.Pending.ACCOUNT, Sync.Pending.ACCOUNT_TYPE, + Sync.Pending.AUTHORITY}, "_id=" + rowId, null, null, null, null); try { if (c.getCount() != 1) { return 0; } c.moveToNext(); - account = c.getString(0); - authority = c.getString(1); + String accountName = c.getString(0); + String accountType = c.getString(1); + account = new Account(accountName, accountType); + authority = c.getString(2); } finally { c.close(); } db.delete("pending", "_id=" + rowId, null /* no where args */); - final String[] accountAuthorityWhereArgs = new String[]{account, authority}; + final String[] accountAuthorityWhereArgs = + new String[]{account.mName, account.mType, authority}; boolean isPending = 0 < DatabaseUtils.longForQuery(db, - "SELECT COUNT(*) FROM PENDING WHERE account=? AND authority=?", + "SELECT COUNT(*)" + + " FROM PENDING" + + " WHERE account=? AND account_type=? AND authority=?", accountAuthorityWhereArgs); if (!isPending) { long statsId = createStatsRowIfNecessary(account, authority); @@ -581,7 +617,7 @@ public class SyncStorageEngine { return numDeletes > 0; } - public long insertStartSyncEvent(String account, String authority, long now, int source) { + public long insertStartSyncEvent(Account account, String authority, long now, int source) { SQLiteDatabase db = mOpenHelper.getWritableDatabase(); long statsId = createStatsRowIfNecessary(account, authority); @@ -731,14 +767,15 @@ public class SyncStorageEngine { } } - private long createStatsRowIfNecessary(String account, String authority) { + private long createStatsRowIfNecessary(Account account, String authority) { SQLiteDatabase db = mOpenHelper.getWritableDatabase(); StringBuilder where = new StringBuilder(); where.append(Sync.Stats.ACCOUNT + "= ?"); + where.append(" and " + Sync.Stats.ACCOUNT_TYPE + "= ?"); where.append(" and " + Sync.Stats.AUTHORITY + "= ?"); Cursor cursor = query(Sync.Stats.CONTENT_URI, Sync.Stats.SYNC_STATS_PROJECTION, - where.toString(), new String[] { account, authority }, + where.toString(), new String[] { account.mName, account.mType, authority }, null /* order */); try { long id; @@ -746,7 +783,8 @@ public class SyncStorageEngine { id = cursor.getLong(cursor.getColumnIndexOrThrow(Sync.Stats._ID)); } else { ContentValues values = new ContentValues(); - values.put(Sync.Stats.ACCOUNT, account); + values.put(Sync.Stats.ACCOUNT, account.mName); + values.put(Sync.Stats.ACCOUNT_TYPE, account.mType); values.put(Sync.Stats.AUTHORITY, authority); id = db.insert("stats", null, values); } diff --git a/core/java/android/content/SyncableContentProvider.java b/core/java/android/content/SyncableContentProvider.java index e0cd78643be6..93ebbeaac8fa 100644 --- a/core/java/android/content/SyncableContentProvider.java +++ b/core/java/android/content/SyncableContentProvider.java @@ -19,6 +19,7 @@ package android.content; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.net.Uri; +import android.accounts.Account; import java.util.Map; @@ -110,7 +111,7 @@ public abstract class SyncableContentProvider extends ContentProvider { * @param context the sync context for the operation * @param account */ - public abstract void onSyncStart(SyncContext context, String account); + public abstract void onSyncStart(SyncContext context, Account account); /** * Called right after a sync is completed @@ -124,7 +125,7 @@ public abstract class SyncableContentProvider extends ContentProvider { * The account of the most recent call to onSyncStart() * @return the account */ - public abstract String getSyncingAccount(); + public abstract Account getSyncingAccount(); /** * Merge diffs from a sync source with this content provider. @@ -194,7 +195,7 @@ public abstract class SyncableContentProvider extends ContentProvider { * Make sure that there are no entries for accounts that no longer exist * @param accountsArray the array of currently-existing accounts */ - protected abstract void onAccountsChanged(String[] accountsArray); + protected abstract void onAccountsChanged(Account[] accountsArray); /** * A helper method to delete all rows whose account is not in the accounts @@ -203,26 +204,24 @@ public abstract class SyncableContentProvider extends ContentProvider { * * @param accounts a map of existing accounts * @param table the table to delete from - * @param accountColumnName the name of the column that is expected - * to hold the account. */ - protected abstract void deleteRowsForRemovedAccounts(Map accounts, - String table, String accountColumnName); + protected abstract void deleteRowsForRemovedAccounts(Map accounts, + String table); /** * Called when the sync system determines that this provider should no longer * contain records for the specified account. */ - public abstract void wipeAccount(String account); + public abstract void wipeAccount(Account account); /** * Retrieves the SyncData bytes for the given account. The byte array returned may be null. */ - public abstract byte[] readSyncDataBytes(String account); + public abstract byte[] readSyncDataBytes(Account account); /** * Sets the SyncData bytes for the given account. The bytes array may be null. */ - public abstract void writeSyncDataBytes(String account, byte[] data); + public abstract void writeSyncDataBytes(Account account, byte[] data); } diff --git a/core/java/android/content/TempProviderSyncAdapter.java b/core/java/android/content/TempProviderSyncAdapter.java index eb3a5da4a5b1..0cbe01e7e394 100644 --- a/core/java/android/content/TempProviderSyncAdapter.java +++ b/core/java/android/content/TempProviderSyncAdapter.java @@ -12,6 +12,7 @@ import android.util.Config; import android.util.EventLog; import android.util.Log; import android.util.TimingLogger; +import android.accounts.Account; /** * @hide @@ -67,7 +68,7 @@ public abstract class TempProviderSyncAdapter extends SyncAdapter { * @return true, if the sync was successfully started. One reason it can * fail to start is if there is no user configured on the device. */ - public abstract void onSyncStarting(SyncContext context, String account, boolean forced, + public abstract void onSyncStarting(SyncContext context, Account account, boolean forced, SyncResult result); /** @@ -168,12 +169,12 @@ public abstract class TempProviderSyncAdapter extends SyncAdapter { * exist. * @param accounts the list of accounts */ - public abstract void onAccountsChanged(String[] accounts); + public abstract void onAccountsChanged(Account[] accounts); private Context mContext; private class SyncThread extends Thread { - private final String mAccount; + private final Account mAccount; private final Bundle mExtras; private final SyncContext mSyncContext; private volatile boolean mIsCanceled = false; @@ -181,7 +182,7 @@ public abstract class TempProviderSyncAdapter extends SyncAdapter { private long mInitialRxBytes; private final SyncResult mResult; - SyncThread(SyncContext syncContext, String account, Bundle extras) { + SyncThread(SyncContext syncContext, Account account, Bundle extras) { super("SyncThread"); mAccount = account; mExtras = extras; @@ -221,7 +222,7 @@ public abstract class TempProviderSyncAdapter extends SyncAdapter { } } - private void sync(SyncContext syncContext, String account, Bundle extras) { + private void sync(SyncContext syncContext, Account account, Bundle extras) { mIsCanceled = false; mProviderSyncStarted = false; @@ -273,7 +274,7 @@ public abstract class TempProviderSyncAdapter extends SyncAdapter { } } - private void runSyncLoop(SyncContext syncContext, String account, Bundle extras) { + private void runSyncLoop(SyncContext syncContext, Account account, Bundle extras) { TimingLogger syncTimer = new TimingLogger(TAG + "Profiling", "sync"); syncTimer.addSplit("start"); int loopCount = 0; @@ -518,7 +519,7 @@ public abstract class TempProviderSyncAdapter extends SyncAdapter { EventLog.writeEvent(SyncAdapter.LOG_SYNC_DETAILS, TAG, bytesSent, bytesReceived, ""); } - public void startSync(SyncContext syncContext, String account, Bundle extras) { + public void startSync(SyncContext syncContext, Account account, Bundle extras) { if (mSyncThread != null) { syncContext.onFinished(SyncResult.ALREADY_IN_PROGRESS); return; diff --git a/core/java/android/provider/Calendar.java b/core/java/android/provider/Calendar.java index 4a709f6c7517..3a221e436c01 100644 --- a/core/java/android/provider/Calendar.java +++ b/core/java/android/provider/Calendar.java @@ -32,6 +32,7 @@ import android.text.format.DateUtils; import android.text.format.Time; import android.util.Config; import android.util.Log; +import android.accounts.Account; import com.android.internal.database.ArrayListCursor; import com.google.android.gdata.client.AndroidGDataClient; import com.google.android.gdata.client.AndroidXmlParserFactory; @@ -157,11 +158,12 @@ public final class Calendar { * @param account the account whose rows should be deleted * @return the count of rows that were deleted */ - public static int deleteCalendarsForAccount(ContentResolver cr, - String account) { + public static int deleteCalendarsForAccount(ContentResolver cr, Account account) { // delete all calendars that match this account - return Calendar.Calendars.delete(cr, Calendar.Calendars._SYNC_ACCOUNT + "=?", - new String[] {account}); + return Calendar.Calendars.delete(cr, + Calendar.Calendars._SYNC_ACCOUNT + "=? AND " + + Calendar.Calendars._SYNC_ACCOUNT_TYPE + "=?", + new String[] {account.mName, account.mType}); } /** diff --git a/core/java/android/provider/Contacts.java b/core/java/android/provider/Contacts.java index 064ed88edb89..a6450f3c5299 100644 --- a/core/java/android/provider/Contacts.java +++ b/core/java/android/provider/Contacts.java @@ -30,6 +30,7 @@ import android.net.Uri; import android.text.TextUtils; import android.util.Log; import android.widget.ImageView; +import android.accounts.Account; import java.io.ByteArrayInputStream; import java.io.InputStream; @@ -74,6 +75,12 @@ public class Contacts { */ public static final String _SYNC_ACCOUNT = "_sync_account"; + /** + * The _SYNC_ACCOUNT_TYPE to which this setting corresponds. This may be null. + *

    Type: TEXT

    + */ + public static final String _SYNC_ACCOUNT_TYPE = "_sync_account_type"; + /** * The key of this setting. *

    Type: TEXT

    @@ -134,6 +141,7 @@ public class Contacts { selectString = (account == null) ? "_sync_account is null AND key=?" : "_sync_account=? AND key=?"; +// : "_sync_account=? AND _sync_account_type=? AND key=?"; selectArgs = (account == null) ? new String[]{key} : new String[]{account, key}; @@ -158,7 +166,8 @@ public class Contacts { // the account name is, so we're using a global setting for SYNC_EVERYTHING. // Some day when we add multiple accounts to the UI this should honor the account // that was asked for. - //values.put(_SYNC_ACCOUNT, account); + //values.put(_SYNC_ACCOUNT, account.mName); + //values.put(_SYNC_ACCOUNT_TYPE, account.mType); values.put(KEY, key); values.put(VALUE, value); cr.update(Settings.CONTENT_URI, values, null, null); @@ -839,6 +848,12 @@ public class Contacts { */ public static final String GROUP_SYNC_ACCOUNT = "group_sync_account"; + /** + * The account type of the group. + *

    Type: TEXT

    + */ + public static final String GROUP_SYNC_ACCOUNT_TYPE = "group_sync_account_type"; + /** * The row id of the person. *

    Type: TEXT

    diff --git a/core/java/android/provider/SubscribedFeeds.java b/core/java/android/provider/SubscribedFeeds.java index 4d430d5fd91a..f94b4427bd28 100644 --- a/core/java/android/provider/SubscribedFeeds.java +++ b/core/java/android/provider/SubscribedFeeds.java @@ -20,6 +20,7 @@ import android.content.ContentResolver; import android.content.ContentValues; import android.database.Cursor; import android.net.Uri; +import android.accounts.Account; /** * The SubscribedFeeds provider stores all information about subscribed feeds. @@ -99,7 +100,7 @@ public class SubscribedFeeds { /** * The default sort order for this table */ - public static final String DEFAULT_SORT_ORDER = "_SYNC_ACCOUNT ASC"; + public static final String DEFAULT_SORT_ORDER = "_SYNC_ACCOUNT_TYPE, _SYNC_ACCOUNT ASC"; } /** @@ -114,38 +115,36 @@ public class SubscribedFeeds { * @return the Uri of the feed that was added */ public static Uri addFeed(ContentResolver resolver, - String feed, String account, + String feed, Account account, String authority, String service) { ContentValues values = new ContentValues(); values.put(SubscribedFeeds.Feeds.FEED, feed); - values.put(SubscribedFeeds.Feeds._SYNC_ACCOUNT, account); + values.put(SubscribedFeeds.Feeds._SYNC_ACCOUNT, account.mName); + values.put(SubscribedFeeds.Feeds._SYNC_ACCOUNT_TYPE, account.mType); values.put(SubscribedFeeds.Feeds.AUTHORITY, authority); values.put(SubscribedFeeds.Feeds.SERVICE, service); return resolver.insert(SubscribedFeeds.Feeds.CONTENT_URI, values); } public static int deleteFeed(ContentResolver resolver, - String feed, String account, String authority) { + String feed, Account account, String authority) { StringBuilder where = new StringBuilder(); where.append(SubscribedFeeds.Feeds._SYNC_ACCOUNT + "=?"); + where.append(" AND " + SubscribedFeeds.Feeds._SYNC_ACCOUNT_TYPE + "=?"); where.append(" AND " + SubscribedFeeds.Feeds.FEED + "=?"); where.append(" AND " + SubscribedFeeds.Feeds.AUTHORITY + "=?"); return resolver.delete(SubscribedFeeds.Feeds.CONTENT_URI, - where.toString(), new String[] {account, feed, authority}); + where.toString(), new String[] {account.mName, account.mType, feed, authority}); } public static int deleteFeeds(ContentResolver resolver, - String account, String authority) { + Account account, String authority) { StringBuilder where = new StringBuilder(); where.append(SubscribedFeeds.Feeds._SYNC_ACCOUNT + "=?"); + where.append(" AND " + SubscribedFeeds.Feeds._SYNC_ACCOUNT_TYPE + "=?"); where.append(" AND " + SubscribedFeeds.Feeds.AUTHORITY + "=?"); return resolver.delete(SubscribedFeeds.Feeds.CONTENT_URI, - where.toString(), new String[] {account, authority}); - } - - public static String gtalkServiceRoutingInfoFromAccountAndResource( - String account, String res) { - return Uri.parse("gtalk://" + account + "/" + res).toString(); + where.toString(), new String[] {account.mName, account.mType, authority}); } /** @@ -157,6 +156,12 @@ public class SubscribedFeeds { *

    Type: TEXT

    */ public static final String _SYNC_ACCOUNT = SyncConstValue._SYNC_ACCOUNT; + + /** + * The account type. + *

    Type: TEXT

    + */ + public static final String _SYNC_ACCOUNT_TYPE = SyncConstValue._SYNC_ACCOUNT_TYPE; } /** @@ -199,6 +204,6 @@ public class SubscribedFeeds { /** * The default sort order for this table */ - public static final String DEFAULT_SORT_ORDER = "_SYNC_ACCOUNT ASC"; + public static final String DEFAULT_SORT_ORDER = "_SYNC_ACCOUNT_TYPE, _SYNC_ACCOUNT ASC"; } } diff --git a/core/java/android/provider/Sync.java b/core/java/android/provider/Sync.java index 628852f4c37c..c9bde0e4a1f9 100644 --- a/core/java/android/provider/Sync.java +++ b/core/java/android/provider/Sync.java @@ -22,6 +22,8 @@ import android.content.ContentValues; import android.database.Cursor; import android.net.Uri; import android.os.Handler; +import android.accounts.Account; +import android.text.TextUtils; import java.util.Map; @@ -50,6 +52,12 @@ public final class Sync { */ public static final String ACCOUNT = "account"; + /** + * The sync account type. + *

    Type: TEXT

    + */ + public static final String ACCOUNT_TYPE = "account_type"; + /** * The content authority (contacts, calendar, etc.). *

    Type: TEXT

    @@ -280,7 +288,8 @@ public final class Sync { public static final String MESG_CANCELED = "canceled"; private static final String FINISHED_SINCE_WHERE_CLAUSE = EVENT + "=" + EVENT_STOP - + " AND " + EVENT_TIME + ">? AND " + ACCOUNT + "=? AND " + AUTHORITY + "=?"; + + " AND " + EVENT_TIME + ">? AND " + ACCOUNT + "=? AND " + ACCOUNT_TYPE + "=?" + + " AND " + AUTHORITY + "=?"; public static String mesgToString(String mesg) { if (MESG_SUCCESS.equals(mesg)) return mesg; @@ -311,10 +320,11 @@ public final class Sync { } public static boolean hasNewerSyncFinished(ContentResolver contentResolver, - String account, String authority, long when) { + Account account, String authority, long when) { Cursor c = contentResolver.query(CONTENT_URI, new String[]{_ID}, FINISHED_SINCE_WHERE_CLAUSE, - new String[]{Long.toString(when), account, authority}, null); + new String[]{Long.toString(when), account.mName, account.mType, authority}, + null); try { return c.getCount() > 0; } finally { @@ -345,7 +355,8 @@ public final class Sync { * @return the cursor on the AuthorityHistory table */ public static Cursor query(ContentResolver contentResolver) { - return contentResolver.query(CONTENT_URI, null, null, null, ACCOUNT + ", " + AUTHORITY); + return contentResolver.query(CONTENT_URI, null, null, null, + ACCOUNT_TYPE + "," + ACCOUNT + "," + AUTHORITY); } public static class QueryMap extends ContentQueryMap { @@ -356,10 +367,11 @@ public final class Sync { _ID, keepUpdated, handlerForUpdateNotifications); } - public ContentValues get(String account, String authority) { + public ContentValues get(Account account, String authority) { Map rows = getRows(); for (ContentValues values : rows.values()) { - if (values.getAsString(ACCOUNT).equals(account) + if (values.getAsString(ACCOUNT).equals(account.mName) + && values.getAsString(ACCOUNT_TYPE).equals(account.mType) && values.getAsString(AUTHORITY).equals(authority)) { return values; } @@ -390,10 +402,11 @@ public final class Sync { handlerForUpdateNotifications); } - public boolean isPending(String account, String authority) { + public boolean isPending(Account account, String authority) { Map rows = getRows(); for (ContentValues values : rows.values()) { - if (values.getAsString(ACCOUNT).equals(account) + if (values.getAsString(ACCOUNT).equals(account.mName) + && values.getAsString(ACCOUNT_TYPE).equals(account.mType) && values.getAsString(AUTHORITY).equals(authority)) { return true; } @@ -444,9 +457,12 @@ public final class Sync { return null; } - public String getSyncingAccount() { + public Account getSyncingAccount() { ContentValues values = getActiveSyncInfo(); - return (values == null) ? null : values.getAsString(ACCOUNT); + if (values == null || TextUtils.isEmpty(values.getAsString(ACCOUNT))) { + return null; + } + return new Account(values.getAsString(ACCOUNT), values.getAsString(ACCOUNT_TYPE)); } public String getSyncingAuthority() { diff --git a/core/java/android/provider/SyncConstValue.java b/core/java/android/provider/SyncConstValue.java index 6eb4398444de..30966eb6f63d 100644 --- a/core/java/android/provider/SyncConstValue.java +++ b/core/java/android/provider/SyncConstValue.java @@ -28,6 +28,12 @@ public interface SyncConstValue */ public static final String _SYNC_ACCOUNT = "_sync_account"; + /** + * The type of the account that was used to sync the entry to the device. + *

    Type: TEXT

    + */ + public static final String _SYNC_ACCOUNT_TYPE = "_sync_account_type"; + /** * The unique ID for a row assigned by the sync source. NULL if the row has never been synced. *

    Type: TEXT

    @@ -68,4 +74,9 @@ public interface SyncConstValue * Used to indicate that this account is not synced */ public static final String NON_SYNCABLE_ACCOUNT = "non_syncable"; + + /** + * Used to indicate that this account is not synced + */ + public static final String NON_SYNCABLE_ACCOUNT_TYPE = "android.local"; } diff --git a/packages/SubscribedFeedsProvider/src/com/android/providers/subscribedfeeds/SubscribedFeedsIntentService.java b/packages/SubscribedFeedsProvider/src/com/android/providers/subscribedfeeds/SubscribedFeedsIntentService.java index 8268fee0cb0f..de7b1d7b064b 100644 --- a/packages/SubscribedFeedsProvider/src/com/android/providers/subscribedfeeds/SubscribedFeedsIntentService.java +++ b/packages/SubscribedFeedsProvider/src/com/android/providers/subscribedfeeds/SubscribedFeedsIntentService.java @@ -17,13 +17,15 @@ import android.database.sqlite.SQLiteFullException; import android.app.AlarmManager; import android.app.PendingIntent; import android.os.Bundle; -import android.os.Debug; import android.text.TextUtils; import android.net.Uri; +import android.accounts.Account; import java.util.ArrayList; import java.util.Calendar; +import com.google.android.collect.Lists; + /** * A service to handle various intents asynchronously. */ @@ -31,7 +33,8 @@ public class SubscribedFeedsIntentService extends IntentService { private static final String TAG = "Sync"; private static final String[] sAccountProjection = - new String[] {SubscribedFeeds.Accounts._SYNC_ACCOUNT}; + new String[] {SubscribedFeeds.Accounts._SYNC_ACCOUNT, + SubscribedFeeds.Accounts._SYNC_ACCOUNT_TYPE}; /** How often to refresh the subscriptions, in milliseconds */ private static final long SUBSCRIPTION_REFRESH_INTERVAL = 1000L * 60 * 60 * 24; // one day @@ -56,10 +59,10 @@ public class SubscribedFeedsIntentService extends IntentService { if (GTALK_DATA_MESSAGE_RECEIVED.equals(intent.getAction())) { boolean fromTrustedServer = intent.getBooleanExtra("from_trusted_server", false); if (fromTrustedServer) { - String account = intent.getStringExtra("account"); + String accountName = intent.getStringExtra("account"); String token = intent.getStringExtra("message_token"); - if (TextUtils.isEmpty(account) || TextUtils.isEmpty(token)) { + if (TextUtils.isEmpty(accountName) || TextUtils.isEmpty(token)) { if (Config.LOGD) { Log.d(TAG, "Ignoring malformed tickle -- missing account or token."); } @@ -68,10 +71,10 @@ public class SubscribedFeedsIntentService extends IntentService { if (Config.LOGD) { Log.d(TAG, "Received network tickle for " - + account + " - " + token); + + accountName + " - " + token); } - handleTickle(this, account, token); + handleTickle(this, accountName, token); } else { if (Log.isLoggable(TAG, Log.VERBOSE)) { Log.v(TAG, "Ignoring tickle -- not from trusted server."); @@ -103,20 +106,22 @@ public class SubscribedFeedsIntentService extends IntentService { alarmManager.set(AlarmManager.RTC, when, pendingIntent); } - private void handleTickle(Context context, String account, String feed) { + private void handleTickle(Context context, String accountName, String feed) { Cursor c = null; Sync.Settings.QueryMap syncSettings = new Sync.Settings.QueryMap(context.getContentResolver(), false /* don't keep updated */, null /* not needed since keep updated is false */); final String where = SubscribedFeeds.Feeds._SYNC_ACCOUNT + "= ? " + + "and " + SubscribedFeeds.Feeds._SYNC_ACCOUNT_TYPE + "= ? " + "and " + SubscribedFeeds.Feeds.FEED + "= ?"; try { + // TODO(fredq) fix the hardcoded type c = context.getContentResolver().query(SubscribedFeeds.Feeds.CONTENT_URI, - null, where, new String[]{account, feed}, null); + null, where, new String[]{accountName, "com.google.GAIA", feed}, null); if (c.getCount() == 0) { Log.w(TAG, "received tickle for non-existent feed: " - + "account " + account + ", feed " + feed); + + "account " + accountName + ", feed " + feed); EventLog.writeEvent(LOG_TICKLE, "unknown"); } while (c.moveToNext()) { @@ -131,7 +136,8 @@ public class SubscribedFeedsIntentService extends IntentService { } Uri uri = Uri.parse("content://" + authority); Bundle extras = new Bundle(); - extras.putString(ContentResolver.SYNC_EXTRAS_ACCOUNT, account); + extras.putParcelable(ContentResolver.SYNC_EXTRAS_ACCOUNT, + new Account(accountName, "com.google.GAIA")); extras.putString("feed", feed); context.getContentResolver().startSync(uri, extras); } @@ -151,17 +157,15 @@ public class SubscribedFeedsIntentService extends IntentService { */ private void handleRefreshAlarm(Context context) { // retrieve the list of accounts from the subscribed feeds - ArrayList accounts = new ArrayList(); + ArrayList accounts = Lists.newArrayList(); ContentResolver contentResolver = context.getContentResolver(); Cursor c = contentResolver.query(SubscribedFeeds.Accounts.CONTENT_URI, sAccountProjection, null, null, null); try { while (c.moveToNext()) { - String account = c.getString(0); - if (TextUtils.isEmpty(account)) { - continue; - } - accounts.add(account); + String accountName = c.getString(0); + String accountType = c.getString(1); + accounts.add(new Account(accountName, accountType)); } } finally { c.close(); @@ -169,16 +173,19 @@ public class SubscribedFeedsIntentService extends IntentService { // Clear the auth tokens for all these accounts so that we are sure // they will still be valid until the next time we refresh them. - // TODO: add this when the google login service is done + // TODO(fredq): add this when the google login service is done // mark the feeds dirty, by setting the accounts to the same value, // which will trigger a sync. try { ContentValues values = new ContentValues(); - for (String account : accounts) { - values.put(SyncConstValue._SYNC_ACCOUNT, account); + for (Account account : accounts) { + values.put(SyncConstValue._SYNC_ACCOUNT, account.mName); + values.put(SyncConstValue._SYNC_ACCOUNT_TYPE, account.mType); contentResolver.update(SubscribedFeeds.Feeds.CONTENT_URI, values, - SubscribedFeeds.Feeds._SYNC_ACCOUNT + "=?", new String[] {account}); + SubscribedFeeds.Feeds._SYNC_ACCOUNT + "=? AND " + + SubscribedFeeds.Feeds._SYNC_ACCOUNT_TYPE + "=?", + new String[] {account.mName, account.mType}); } } catch (SQLiteFullException e) { Log.w(TAG, "disk full while trying to mark the feeds as dirty, skipping"); diff --git a/packages/SubscribedFeedsProvider/src/com/android/providers/subscribedfeeds/SubscribedFeedsProvider.java b/packages/SubscribedFeedsProvider/src/com/android/providers/subscribedfeeds/SubscribedFeedsProvider.java index 9ecc3d61196b..d87f5e72ef14 100644 --- a/packages/SubscribedFeedsProvider/src/com/android/providers/subscribedfeeds/SubscribedFeedsProvider.java +++ b/packages/SubscribedFeedsProvider/src/com/android/providers/subscribedfeeds/SubscribedFeedsProvider.java @@ -39,7 +39,7 @@ import java.util.HashMap; public class SubscribedFeedsProvider extends AbstractSyncableContentProvider { private static final String TAG = "SubscribedFeedsProvider"; private static final String DATABASE_NAME = "subscribedfeeds.db"; - private static final int DATABASE_VERSION = 10; + private static final int DATABASE_VERSION = 11; private static final int FEEDS = 1; private static final int FEED_ID = 2; @@ -88,6 +88,7 @@ public class SubscribedFeedsProvider extends AbstractSyncableContentProvider { db.execSQL("CREATE TABLE feeds (" + "_id INTEGER PRIMARY KEY," + "_sync_account TEXT," + // From the sync source + "_sync_account_type TEXT," + // From the sync source "_sync_id TEXT," + // From the sync source "_sync_time TEXT," + // From the sync source "_sync_version TEXT," + // From the sync source @@ -106,8 +107,8 @@ public class SubscribedFeedsProvider extends AbstractSyncableContentProvider { "WHEN old._sync_id is not null " + "BEGIN " + "INSERT INTO _deleted_feeds " + - "(_sync_id, _sync_account, _sync_version) " + - "VALUES (old._sync_id, old._sync_account, " + + "(_sync_id, _sync_account, _sync_account_type, _sync_version) " + + "VALUES (old._sync_id, old._sync_account, old._sync_account_type, " + "old._sync_version);" + "END"); @@ -116,6 +117,7 @@ public class SubscribedFeedsProvider extends AbstractSyncableContentProvider { "_sync_id TEXT," + (isTemporary() ? "_sync_local_id INTEGER," : "") + // Used while syncing, "_sync_account TEXT," + + "_sync_account_type TEXT," + "_sync_mark INTEGER, " + // Used to filter out new rows "UNIQUE(_sync_id))"); } @@ -170,7 +172,8 @@ public class SubscribedFeedsProvider extends AbstractSyncableContentProvider { qb.setDistinct(true); qb.setProjectionMap(ACCOUNTS_PROJECTION_MAP); return qb.query(getDatabase(), projection, selection, selectionArgs, - SubscribedFeeds.Feeds._SYNC_ACCOUNT, null, sortOrder); + SubscribedFeeds.Feeds._SYNC_ACCOUNT_TYPE + "," + + SubscribedFeeds.Feeds._SYNC_ACCOUNT, null, sortOrder); case FEED_ID: qb.setTables(sFeedsTable); qb.appendWhere(sFeedsTable + "._id="); @@ -309,6 +312,8 @@ public class SubscribedFeedsProvider extends AbstractSyncableContentProvider { SubscribedFeeds.Feeds._SYNC_ID, mValues); DatabaseUtils.cursorStringToContentValues(diffsCursor, SubscribedFeeds.Feeds._SYNC_ACCOUNT, mValues); + DatabaseUtils.cursorStringToContentValues(diffsCursor, + SubscribedFeeds.Feeds._SYNC_ACCOUNT_TYPE, mValues); DatabaseUtils.cursorStringToContentValues(diffsCursor, SubscribedFeeds.Feeds._SYNC_VERSION, mValues); db.replace(mDeletedTable, SubscribedFeeds.Feeds._SYNC_ID, mValues); @@ -369,5 +374,7 @@ public class SubscribedFeedsProvider extends AbstractSyncableContentProvider { ACCOUNTS_PROJECTION_MAP = map; map.put(SubscribedFeeds.Accounts._COUNT, "COUNT(*) AS _count"); map.put(SubscribedFeeds.Accounts._SYNC_ACCOUNT, SubscribedFeeds.Accounts._SYNC_ACCOUNT); + map.put(SubscribedFeeds.Accounts._SYNC_ACCOUNT_TYPE, + SubscribedFeeds.Accounts._SYNC_ACCOUNT_TYPE); } } diff --git a/preloaded-classes b/preloaded-classes index fc29906648cd..d1360eb87580 100644 --- a/preloaded-classes +++ b/preloaded-classes @@ -1,6 +1,5 @@ # Classes which are preloaded by com.android.internal.os.ZygoteInit. android.R$styleable -android.accounts.AccountMonitor android.app.Activity android.app.ActivityGroup android.app.ActivityManager$MemoryInfo$1 diff --git a/test-runner/android/test/SyncBaseInstrumentation.java b/test-runner/android/test/SyncBaseInstrumentation.java index c1d2507dce6c..0b4bfed3e9cc 100644 --- a/test-runner/android/test/SyncBaseInstrumentation.java +++ b/test-runner/android/test/SyncBaseInstrumentation.java @@ -23,6 +23,8 @@ import android.os.Bundle; import android.os.SystemClock; import android.provider.Sync; import android.net.Uri; +import android.accounts.Account; + import java.util.Map; /** @@ -49,7 +51,8 @@ public class SyncBaseInstrumentation extends InstrumentationTestCase { protected void syncProvider(Uri uri, String account, String authority) throws Exception { Bundle extras = new Bundle(); extras.putBoolean(ContentResolver.SYNC_EXTRAS_FORCE, true); - extras.putString(ContentResolver.SYNC_EXTRAS_ACCOUNT, account); + Account account1 = new Account(account, "com.google.GAIA"); + extras.putParcelable(ContentResolver.SYNC_EXTRAS_ACCOUNT, account1); mContentResolver.startSync(uri, extras); long startTimeInMillis = SystemClock.elapsedRealtime(); @@ -66,7 +69,7 @@ public class SyncBaseInstrumentation extends InstrumentationTestCase { break; } - if (isSyncActive(account, authority)) { + if (isSyncActive(account1, authority)) { counter = 0; continue; } @@ -87,7 +90,7 @@ public class SyncBaseInstrumentation extends InstrumentationTestCase { * entry is in either the Pending or Active tables. * @return */ - private boolean isSyncActive(String account, String authority) { + private boolean isSyncActive(Account account, String authority) { Sync.Pending.QueryMap pendingQueryMap = null; Sync.Active.QueryMap activeQueryMap = null; try { @@ -107,11 +110,12 @@ public class SyncBaseInstrumentation extends InstrumentationTestCase { } } - private boolean isActiveInActiveQueryMap(Sync.Active.QueryMap activemap, String account, + private boolean isActiveInActiveQueryMap(Sync.Active.QueryMap activemap, Account account, String authority) { Map rows = activemap.getRows(); for (ContentValues values : rows.values()) { - if (values.getAsString("account").equals(account) + if (values.getAsString("account").equals(account.mName) + && values.getAsString("account_type").equals(account.mType) && values.getAsString("authority").equals(authority)) { return true; } diff --git a/tests/CoreTests/android/content/SyncStorageEngineTest.java b/tests/CoreTests/android/content/SyncStorageEngineTest.java index 36805b15e864..27f1b8be63f2 100644 --- a/tests/CoreTests/android/content/SyncStorageEngineTest.java +++ b/tests/CoreTests/android/content/SyncStorageEngineTest.java @@ -21,6 +21,7 @@ import android.test.RenamingDelegatingContext; import android.test.mock.MockContext; import android.test.mock.MockContentResolver; import android.provider.Sync; +import android.accounts.Account; public class SyncStorageEngineTest extends AndroidTestCase { @@ -29,7 +30,7 @@ public class SyncStorageEngineTest extends AndroidTestCase { * correcponding sync is finished. This can happen if the clock changes while we are syncing. */ public void testPurgeActiveSync() throws Exception { - final String account = "a@example.com"; + final Account account = new Account("a@example.com", "example.type"); final String authority = "testprovider"; MockContentResolver mockResolver = new MockContentResolver(); diff --git a/tests/FrameworkTest/tests/src/android/content/AbstractTableMergerTest.java b/tests/FrameworkTest/tests/src/android/content/AbstractTableMergerTest.java index aa3d186e3416..42c1e789b9c3 100644 --- a/tests/FrameworkTest/tests/src/android/content/AbstractTableMergerTest.java +++ b/tests/FrameworkTest/tests/src/android/content/AbstractTableMergerTest.java @@ -8,6 +8,7 @@ import android.database.sqlite.SQLiteDatabase; import android.net.Uri; import android.test.AndroidTestCase; import android.text.TextUtils; +import android.accounts.Account; import java.util.ArrayList; import java.util.Map; @@ -26,7 +27,7 @@ public class AbstractTableMergerTest extends AndroidTestCase { static final Uri TABLE_URI = Uri.withAppendedPath(CONTENT_URI, TABLE_NAME); static final Uri DELETED_TABLE_URI = Uri.withAppendedPath(CONTENT_URI, DELETED_TABLE_NAME); - private final String ACCOUNT = "account@goo.com"; + private final Account ACCOUNT = new Account("account@goo.com", "example.type"); private final ArrayList mExpectations = Lists.newArrayList(); @@ -65,25 +66,31 @@ public class AbstractTableMergerTest extends AndroidTestCase { mExpectations.clear(); } - ContentValues newValues(String data, String syncId, String syncAccount, + ContentValues newValues(String data, String syncId, Account syncAccount, String syncTime, String syncVersion, Long syncLocalId) { ContentValues values = new ContentValues(); if (data != null) values.put("data", data); if (syncTime != null) values.put("_sync_time", syncTime); if (syncVersion != null) values.put("_sync_version", syncVersion); if (syncId != null) values.put("_sync_id", syncId); - if (syncAccount != null) values.put("_sync_account", syncAccount); + if (syncAccount != null) { + values.put("_sync_account", syncAccount.mName); + values.put("_sync_account_type", syncAccount.mType); + } values.put("_sync_local_id", syncLocalId); values.put("_sync_dirty", 0); return values; } - ContentValues newDeletedValues(String syncId, String syncAccount, String syncVersion, + ContentValues newDeletedValues(String syncId, Account syncAccount, String syncVersion, Long syncLocalId) { ContentValues values = new ContentValues(); if (syncVersion != null) values.put("_sync_version", syncVersion); if (syncId != null) values.put("_sync_id", syncId); - if (syncAccount != null) values.put("_sync_account", syncAccount); + if (syncAccount != null) { + values.put("_sync_account", syncAccount.mName); + values.put("_sync_account_type", syncAccount.mType); + } if (syncLocalId != null) values.put("_sync_local_id", syncLocalId); return values; } @@ -380,6 +387,7 @@ public class AbstractTableMergerTest extends AndroidTestCase { + "_sync_local_id INTEGER, " + "_sync_dirty INTEGER NOT NULL DEFAULT 0, " + "_sync_account TEXT, " + + "_sync_account_type TEXT, " + "_sync_mark INTEGER)"); mDb.execSQL("CREATE TABLE deleted_items (" @@ -388,6 +396,7 @@ public class AbstractTableMergerTest extends AndroidTestCase { + "_sync_id TEXT, " + "_sync_local_id INTEGER, " + "_sync_account TEXT, " + + "_sync_account_type TEXT, " + "_sync_mark INTEGER)"); } @@ -501,7 +510,7 @@ public class AbstractTableMergerTest extends AndroidTestCase { throw new UnsupportedOperationException(); } - public void onSyncStart(SyncContext context, String account) { + public void onSyncStart(SyncContext context, Account account) { throw new UnsupportedOperationException(); } @@ -509,7 +518,7 @@ public class AbstractTableMergerTest extends AndroidTestCase { throw new UnsupportedOperationException(); } - public String getSyncingAccount() { + public Account getSyncingAccount() { throw new UnsupportedOperationException(); } @@ -544,24 +553,24 @@ public class AbstractTableMergerTest extends AndroidTestCase { throw new UnsupportedOperationException(); } - protected void onAccountsChanged(String[] accountsArray) { + protected void onAccountsChanged(Account[] accountsArray) { throw new UnsupportedOperationException(); } - protected void deleteRowsForRemovedAccounts(Map accounts, String table, - String accountColumnName) { + protected void deleteRowsForRemovedAccounts(Map accounts, String table + ) { throw new UnsupportedOperationException(); } - public void wipeAccount(String account) { + public void wipeAccount(Account account) { throw new UnsupportedOperationException(); } - public byte[] readSyncDataBytes(String account) { + public byte[] readSyncDataBytes(Account account) { throw new UnsupportedOperationException(); } - public void writeSyncDataBytes(String account, byte[] data) { + public void writeSyncDataBytes(Account account, byte[] data) { throw new UnsupportedOperationException(); } } -- cgit v1.2.3-59-g8ed1b From bc2e33b5c81b1d5ddc112ea004a0b7866bd00bec Mon Sep 17 00:00:00 2001 From: Cary Clark Date: Thu, 23 Apr 2009 13:12:19 -0400 Subject: don't swap out the history picture too soon Wait until either the picture is not blank or the progress is complete. --- core/java/android/webkit/WebView.java | 2 +- core/java/android/webkit/WebViewCore.java | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java index 79bd41b98992..6e79bc9acb43 100644 --- a/core/java/android/webkit/WebView.java +++ b/core/java/android/webkit/WebView.java @@ -2844,7 +2844,7 @@ public class WebView extends AbsoluteLayout // Should only be called in UI thread void switchOutDrawHistory() { if (null == mWebViewCore) return; // CallbackProxy may trigger this - if (mDrawHistory) { + if (mDrawHistory && mWebViewCore.pictureReady()) { mDrawHistory = false; invalidate(); int oldScrollX = mScrollX; diff --git a/core/java/android/webkit/WebViewCore.java b/core/java/android/webkit/WebViewCore.java index 3f7cdef224e2..1415597be09b 100644 --- a/core/java/android/webkit/WebViewCore.java +++ b/core/java/android/webkit/WebViewCore.java @@ -285,6 +285,11 @@ final class WebViewCore { * split into parts. Called from the UI thread. */ private native boolean nativeDrawContent(Canvas canvas, int color); + + /** + * check to see if picture is blank and in progress + */ + private native boolean nativePictureReady(); /** * Redraw a portion of the picture set. The Point wh returns the @@ -1347,6 +1352,10 @@ final class WebViewCore { } } + /* package */ boolean pictureReady() { + return nativePictureReady(); + } + /*package*/ Picture copyContentPicture() { Picture result = new Picture(); nativeCopyContentToPicture(result); -- cgit v1.2.3-59-g8ed1b