diff options
21 files changed, 254 insertions, 153 deletions
diff --git a/api/current.txt b/api/current.txt index 770b5e0..ec3d54a 100644 --- a/api/current.txt +++ b/api/current.txt @@ -11236,7 +11236,6 @@ package android.media { method public void unselectTrack(int); field public static final int SAMPLE_FLAG_ENCRYPTED = 2; // 0x2 field public static final int SAMPLE_FLAG_SYNC = 1; // 0x1 - field public static final int SEEK_TO_CLOSEST = 3; // 0x3 field public static final int SEEK_TO_CLOSEST_SYNC = 2; // 0x2 field public static final int SEEK_TO_NEXT_SYNC = 1; // 0x1 field public static final int SEEK_TO_PREVIOUS_SYNC = 0; // 0x0 @@ -19094,14 +19093,14 @@ package android.renderscript { method public int getVertexAllocationCount(); } - public static class Mesh.AllocationBuilder { - ctor public Mesh.AllocationBuilder(android.renderscript.RenderScript); - method public android.renderscript.Mesh.AllocationBuilder addIndexSetAllocation(android.renderscript.Allocation, android.renderscript.Mesh.Primitive); - method public android.renderscript.Mesh.AllocationBuilder addIndexSetType(android.renderscript.Mesh.Primitive); - method public android.renderscript.Mesh.AllocationBuilder addVertexAllocation(android.renderscript.Allocation) throws java.lang.IllegalStateException; - method public android.renderscript.Mesh create(); - method public int getCurrentIndexSetIndex(); - method public int getCurrentVertexTypeIndex(); + public static deprecated class Mesh.AllocationBuilder { + ctor public deprecated Mesh.AllocationBuilder(android.renderscript.RenderScript); + method public deprecated android.renderscript.Mesh.AllocationBuilder addIndexSetAllocation(android.renderscript.Allocation, android.renderscript.Mesh.Primitive); + method public deprecated android.renderscript.Mesh.AllocationBuilder addIndexSetType(android.renderscript.Mesh.Primitive); + method public deprecated android.renderscript.Mesh.AllocationBuilder addVertexAllocation(android.renderscript.Allocation) throws java.lang.IllegalStateException; + method public deprecated android.renderscript.Mesh create(); + method public deprecated int getCurrentIndexSetIndex(); + method public deprecated int getCurrentVertexTypeIndex(); } public static class Mesh.Builder { @@ -19127,18 +19126,18 @@ package android.renderscript { enum_constant public static final android.renderscript.Mesh.Primitive TRIANGLE_STRIP; } - public static class Mesh.TriangleMeshBuilder { - ctor public Mesh.TriangleMeshBuilder(android.renderscript.RenderScript, int, int); - method public android.renderscript.Mesh.TriangleMeshBuilder addTriangle(int, int, int); - method public android.renderscript.Mesh.TriangleMeshBuilder addVertex(float, float); - method public android.renderscript.Mesh.TriangleMeshBuilder addVertex(float, float, float); - method public android.renderscript.Mesh create(boolean); - method public android.renderscript.Mesh.TriangleMeshBuilder setColor(float, float, float, float); - method public android.renderscript.Mesh.TriangleMeshBuilder setNormal(float, float, float); - method public android.renderscript.Mesh.TriangleMeshBuilder setTexture(float, float); - field public static final int COLOR = 1; // 0x1 - field public static final int NORMAL = 2; // 0x2 - field public static final int TEXTURE_0 = 256; // 0x100 + public static deprecated class Mesh.TriangleMeshBuilder { + ctor public deprecated Mesh.TriangleMeshBuilder(android.renderscript.RenderScript, int, int); + method public deprecated android.renderscript.Mesh.TriangleMeshBuilder addTriangle(int, int, int); + method public deprecated android.renderscript.Mesh.TriangleMeshBuilder addVertex(float, float); + method public deprecated android.renderscript.Mesh.TriangleMeshBuilder addVertex(float, float, float); + method public deprecated android.renderscript.Mesh create(boolean); + method public deprecated android.renderscript.Mesh.TriangleMeshBuilder setColor(float, float, float, float); + method public deprecated android.renderscript.Mesh.TriangleMeshBuilder setNormal(float, float, float); + method public deprecated android.renderscript.Mesh.TriangleMeshBuilder setTexture(float, float); + field public static final deprecated int COLOR = 1; // 0x1 + field public static final deprecated int NORMAL = 2; // 0x2 + field public static final deprecated int TEXTURE_0 = 256; // 0x100 } public class Program extends android.renderscript.BaseObj { @@ -19341,18 +19340,18 @@ package android.renderscript { ctor public RSRuntimeException(java.lang.String); } - public class RSSurfaceView extends android.view.SurfaceView implements android.view.SurfaceHolder.Callback { - ctor public RSSurfaceView(android.content.Context); - ctor public RSSurfaceView(android.content.Context, android.util.AttributeSet); - method public android.renderscript.RenderScriptGL createRenderScriptGL(android.renderscript.RenderScriptGL.SurfaceConfig); - method public void destroyRenderScriptGL(); - method public android.renderscript.RenderScriptGL getRenderScriptGL(); - method public void pause(); - method public void resume(); - method public void setRenderScriptGL(android.renderscript.RenderScriptGL); - method public void surfaceChanged(android.view.SurfaceHolder, int, int, int); - method public void surfaceCreated(android.view.SurfaceHolder); - method public void surfaceDestroyed(android.view.SurfaceHolder); + public deprecated class RSSurfaceView extends android.view.SurfaceView implements android.view.SurfaceHolder.Callback { + ctor public deprecated RSSurfaceView(android.content.Context); + ctor public deprecated RSSurfaceView(android.content.Context, android.util.AttributeSet); + method public deprecated android.renderscript.RenderScriptGL createRenderScriptGL(android.renderscript.RenderScriptGL.SurfaceConfig); + method public deprecated void destroyRenderScriptGL(); + method public deprecated android.renderscript.RenderScriptGL getRenderScriptGL(); + method public deprecated void pause(); + method public deprecated void resume(); + method public deprecated void setRenderScriptGL(android.renderscript.RenderScriptGL); + method public deprecated void surfaceChanged(android.view.SurfaceHolder, int, int, int); + method public deprecated void surfaceCreated(android.view.SurfaceHolder); + method public deprecated void surfaceDestroyed(android.view.SurfaceHolder); } public class RSTextureView extends android.view.TextureView implements android.view.TextureView.SurfaceTextureListener { @@ -19417,7 +19416,7 @@ package android.renderscript { method public void pause(); method public void resume(); method public void setSurface(android.view.SurfaceHolder, int, int); - method public void setSurfaceTexture(android.graphics.SurfaceTexture, int, int); + method public deprecated void setSurfaceTexture(android.graphics.SurfaceTexture, int, int); } public static class RenderScriptGL.SurfaceConfig { diff --git a/core/java/android/appwidget/AppWidgetHostView.java b/core/java/android/appwidget/AppWidgetHostView.java index 2ca2ae4..01b68d4 100644 --- a/core/java/android/appwidget/AppWidgetHostView.java +++ b/core/java/android/appwidget/AppWidgetHostView.java @@ -232,14 +232,15 @@ public class AppWidgetHostView extends FrameLayout { if (mInfo != null) { padding = getDefaultPaddingForWidget(mContext, mInfo.provider, padding); } + float density = getResources().getDisplayMetrics().density; - int xPadding = padding.left + padding.right; - int yPadding = padding.top + padding.bottom; + int xPaddingDips = (int) ((padding.left + padding.right) / density); + int yPaddingDips = (int) ((padding.top + padding.bottom) / density); - options.putInt(AppWidgetManager.OPTION_APPWIDGET_MIN_WIDTH, minWidth - xPadding); - options.putInt(AppWidgetManager.OPTION_APPWIDGET_MIN_HEIGHT, minHeight - yPadding); - options.putInt(AppWidgetManager.OPTION_APPWIDGET_MAX_WIDTH, maxWidth - xPadding); - options.putInt(AppWidgetManager.OPTION_APPWIDGET_MAX_HEIGHT, maxHeight - yPadding); + options.putInt(AppWidgetManager.OPTION_APPWIDGET_MIN_WIDTH, minWidth - xPaddingDips); + options.putInt(AppWidgetManager.OPTION_APPWIDGET_MIN_HEIGHT, minHeight - yPaddingDips); + options.putInt(AppWidgetManager.OPTION_APPWIDGET_MAX_WIDTH, maxWidth - xPaddingDips); + options.putInt(AppWidgetManager.OPTION_APPWIDGET_MAX_HEIGHT, maxHeight - yPaddingDips); updateAppWidgetOptions(options); } diff --git a/core/java/android/inputmethodservice/InputMethodService.java b/core/java/android/inputmethodservice/InputMethodService.java index 332f40a..33dea6c 100644 --- a/core/java/android/inputmethodservice/InputMethodService.java +++ b/core/java/android/inputmethodservice/InputMethodService.java @@ -402,7 +402,7 @@ public class InputMethodService extends AbstractInputMethodService { mShowInputFlags = 0; mShowInputRequested = false; mShowInputForced = false; - hideWindow(); + doHideWindow(); if (resultReceiver != null) { resultReceiver.send(wasVis != isInputViewShown() ? InputMethodManager.RESULT_HIDDEN @@ -737,7 +737,7 @@ public class InputMethodService extends AbstractInputMethodService { onDisplayCompletions(completions); } } else { - hideWindow(); + doHideWindow(); } } else if (mCandidatesVisibility == View.VISIBLE) { // If the candidates are currently visible, make sure the @@ -745,7 +745,7 @@ public class InputMethodService extends AbstractInputMethodService { showWindow(false); } else { // Otherwise hide the window. - hideWindow(); + doHideWindow(); } // If user uses hard keyboard, IME button should always be shown. boolean showing = onEvaluateInputViewShown(); @@ -1096,7 +1096,7 @@ public class InputMethodService extends AbstractInputMethodService { if (shown) { showWindow(false); } else { - hideWindow(); + doHideWindow(); } } } @@ -1449,9 +1449,13 @@ public class InputMethodService extends AbstractInputMethodService { mCandidatesViewStarted = false; } + private void doHideWindow() { + mImm.setImeWindowStatus(mToken, 0, mBackDisposition); + hideWindow(); + } + public void hideWindow() { finishViews(); - mImm.setImeWindowStatus(mToken, 0, mBackDisposition); if (mWindowVisible) { mWindow.hide(); mWindowVisible = false; @@ -1703,7 +1707,7 @@ public class InputMethodService extends AbstractInputMethodService { // If we have the window visible for some other reason -- // most likely to show candidates -- then just get rid // of it. This really shouldn't happen, but just in case... - if (doIt) hideWindow(); + if (doIt) doHideWindow(); } return true; } diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index 2f7a9ec..ba8c4c9 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -1749,6 +1749,20 @@ public final class Settings { public static final String USER_ROTATION = "user_rotation"; /** + * Whether the phone vibrates when it is ringing due to an incoming call. This will + * be used by Phone and Setting apps; it shouldn't affect other apps. + * The value is boolean (1 or 0). + * + * Note: this is not same as "vibrate on ring", which had been available until ICS. + * It was about AudioManager's setting and thus affected all the applications which + * relied on the setting, while this is purely about the vibration setting for incoming + * calls. + * + * @hide + */ + public static final String VIBRATE_WHEN_RINGING = "vibrate_when_ringing"; + + /** * Whether the audible DTMF tones are played by the dialer when dialing. The value is * boolean (1 or 0). */ @@ -2030,6 +2044,7 @@ public final class Settings { SIP_CALL_OPTIONS, SIP_RECEIVE_CALLS, POINTER_SPEED, + VIBRATE_WHEN_RINGING }; // Settings moved to Settings.Secure diff --git a/core/java/android/widget/SpellChecker.java b/core/java/android/widget/SpellChecker.java index 11e15df..ebf8a4a 100644 --- a/core/java/android/widget/SpellChecker.java +++ b/core/java/android/widget/SpellChecker.java @@ -427,12 +427,6 @@ public class SpellChecker implements SpellCheckerSessionListener { if (spellCheckSpanStart < 0 || spellCheckSpanEnd <= spellCheckSpanStart) return; // span was removed in the meantime - final int suggestionsCount = suggestionsInfo.getSuggestionsCount(); - if (suggestionsCount <= 0) { - // A negative suggestion count is possible - return; - } - final int start; final int end; if (offset != USE_SPAN_RANGE && length != USE_SPAN_RANGE) { @@ -443,9 +437,15 @@ public class SpellChecker implements SpellCheckerSessionListener { end = spellCheckSpanEnd; } - String[] suggestions = new String[suggestionsCount]; - for (int i = 0; i < suggestionsCount; i++) { - suggestions[i] = suggestionsInfo.getSuggestionAt(i); + final int suggestionsCount = suggestionsInfo.getSuggestionsCount(); + String[] suggestions; + if (suggestionsCount > 0) { + suggestions = new String[suggestionsCount]; + for (int i = 0; i < suggestionsCount; i++) { + suggestions[i] = suggestionsInfo.getSuggestionAt(i); + } + } else { + suggestions = ArrayUtils.emptyArray(String.class); } SuggestionSpan suggestionSpan = new SuggestionSpan(mTextView.getContext(), suggestions, @@ -453,7 +453,7 @@ public class SpellChecker implements SpellCheckerSessionListener { // TODO: Remove mIsSentenceSpellCheckSupported by extracting an interface // to share the logic of word level spell checker and sentence level spell checker if (mIsSentenceSpellCheckSupported) { - final long key = TextUtils.packRangeInLong(start, end); + final Long key = Long.valueOf(TextUtils.packRangeInLong(start, end)); final SuggestionSpan tempSuggestionSpan = mSuggestionSpanCache.get(key); if (tempSuggestionSpan != null) { if (DBG) { diff --git a/data/fonts/Android.mk b/data/fonts/Android.mk index 13f2480..16a98d3 100644 --- a/data/fonts/Android.mk +++ b/data/fonts/Android.mk @@ -142,6 +142,8 @@ font_src_files := \ Roboto-Bold.ttf \ Roboto-Italic.ttf \ Roboto-BoldItalic.ttf \ + Roboto-Light.ttf \ + Roboto-LightItalic.ttf \ DroidNaskh-Regular.ttf \ DroidNaskh-Regular-SystemUI.ttf \ DroidSansDevanagari-Regular.ttf \ diff --git a/data/fonts/Roboto-Light.ttf b/data/fonts/Roboto-Light.ttf Binary files differnew file mode 100644 index 0000000..b50399e --- /dev/null +++ b/data/fonts/Roboto-Light.ttf diff --git a/data/fonts/Roboto-LightItalic.ttf b/data/fonts/Roboto-LightItalic.ttf Binary files differnew file mode 100644 index 0000000..a1fdc8d --- /dev/null +++ b/data/fonts/Roboto-LightItalic.ttf diff --git a/data/fonts/fonts.mk b/data/fonts/fonts.mk index 7a84df6..397ccda 100644 --- a/data/fonts/fonts.mk +++ b/data/fonts/fonts.mk @@ -24,6 +24,8 @@ PRODUCT_PACKAGES := \ Roboto-Bold.ttf \ Roboto-Italic.ttf \ Roboto-BoldItalic.ttf \ + Roboto-Light.ttf \ + Roboto-LightItalic.ttf \ DroidNaskh-Regular.ttf \ DroidNaskh-Regular-SystemUI.ttf \ DroidSansDevanagari-Regular.ttf \ diff --git a/data/fonts/system_fonts.xml b/data/fonts/system_fonts.xml index d2fe546..95c4f70 100644 --- a/data/fonts/system_fonts.xml +++ b/data/fonts/system_fonts.xml @@ -36,6 +36,16 @@ <family> <nameset> + <name>sans-serif-light</name> + </nameset> + <fileset> + <file>Roboto-Light.ttf</file> + <file>Roboto-LightItalic.ttf</file> + </fileset> + </family> + + <family> + <nameset> <name>serif</name> <name>times</name> <name>times new roman</name> diff --git a/graphics/java/android/renderscript/Mesh.java b/graphics/java/android/renderscript/Mesh.java index ffbb41d..f49a24e 100644 --- a/graphics/java/android/renderscript/Mesh.java +++ b/graphics/java/android/renderscript/Mesh.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008 The Android Open Source Project + * Copyright (C) 2008-2012 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. @@ -373,6 +373,7 @@ public class Mesh extends BaseObj { } /** + * @deprecated in API 16 * Mesh builder object. It starts empty and requires the user to * add all the vertex and index allocations that comprise the * mesh @@ -391,6 +392,9 @@ public class Mesh extends BaseObj { Vector mIndexTypes; + /** + * @deprecated in API 16 + **/ public AllocationBuilder(RenderScript rs) { mRS = rs; mVertexTypeCount = 0; @@ -399,6 +403,7 @@ public class Mesh extends BaseObj { } /** + * @deprecated in API 16 * @return internal index of the last vertex buffer type added to * builder **/ @@ -407,6 +412,7 @@ public class Mesh extends BaseObj { } /** + * @deprecated in API 16 * @return internal index of the last index set added to the * builder **/ @@ -415,6 +421,7 @@ public class Mesh extends BaseObj { } /** + * @deprecated in API 16 * Adds an allocation containing vertex buffer data to the * builder * @@ -434,6 +441,7 @@ public class Mesh extends BaseObj { } /** + * @deprecated in API 16 * Adds an allocation containing index buffer data and index type * to the builder * @@ -451,6 +459,7 @@ public class Mesh extends BaseObj { } /** + * @deprecated in API 16 * Adds an index set type to the builder * * @param p index set primitive type @@ -466,6 +475,7 @@ public class Mesh extends BaseObj { } /** + * @deprecated in API 16 * Create a Mesh object from the current state of the builder * **/ @@ -507,6 +517,7 @@ public class Mesh extends BaseObj { } /** + * @deprecated in API 16 * Builder that allows creation of a mesh object point by point * and triangle by triangle * @@ -533,11 +544,21 @@ public class Mesh extends BaseObj { int mVtxSize; int mFlags; + /** + * @deprecated in API 16 + **/ public static final int COLOR = 0x0001; + /** + * @deprecated in API 16 + **/ public static final int NORMAL = 0x0002; + /** + * @deprecated in API 16 + **/ public static final int TEXTURE_0 = 0x0100; /** + * @deprecated in API 16 * @param rs Context to which the mesh will belong. * @param vtxSize specifies whether the vertex is a float2 or * float3 @@ -593,6 +614,7 @@ public class Mesh extends BaseObj { } /** + * @deprecated in API 16 * Adds a float2 vertex to the mesh * * @param x position x @@ -613,6 +635,7 @@ public class Mesh extends BaseObj { } /** + * @deprecated in API 16 * Adds a float3 vertex to the mesh * * @param x position x @@ -636,6 +659,7 @@ public class Mesh extends BaseObj { } /** + * @deprecated in API 16 * Sets the texture coordinate for the vertices that are added after this method call. * * @param s texture coordinate s @@ -653,6 +677,7 @@ public class Mesh extends BaseObj { } /** + * @deprecated in API 16 * Sets the normal vector for the vertices that are added after this method call. * * @param x normal vector x @@ -672,6 +697,7 @@ public class Mesh extends BaseObj { } /** + * @deprecated in API 16 * Sets the color for the vertices that are added after this method call. * * @param r red component @@ -693,6 +719,7 @@ public class Mesh extends BaseObj { } /** + * @deprecated in API 16 * Adds a new triangle to the mesh builder * * @param idx1 index of the first vertex in the triangle @@ -719,6 +746,7 @@ public class Mesh extends BaseObj { } /** + * @deprecated in API 16 * Creates the mesh object from the current state of the builder * * @param uploadToBufferObject specifies whether the vertex data diff --git a/graphics/java/android/renderscript/RSSurfaceView.java b/graphics/java/android/renderscript/RSSurfaceView.java index 6756fd0..506f1af 100644 --- a/graphics/java/android/renderscript/RSSurfaceView.java +++ b/graphics/java/android/renderscript/RSSurfaceView.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2008 The Android Open Source Project + * Copyright (C) 2008-2012 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. @@ -30,6 +30,7 @@ import android.view.SurfaceHolder; import android.view.SurfaceView; /** + * @deprecated in API 16 * The Surface View for a graphics renderscript (RenderScriptGL) to draw on. * * <div class="special reference"> @@ -43,6 +44,7 @@ public class RSSurfaceView extends SurfaceView implements SurfaceHolder.Callback private RenderScriptGL mRS; /** + * @deprecated in API 16 * Standard View constructor. In order to render something, you * must call {@link android.opengl.GLSurfaceView#setRenderer} to * register a renderer. @@ -54,6 +56,7 @@ public class RSSurfaceView extends SurfaceView implements SurfaceHolder.Callback } /** + * @deprecated in API 16 * Standard View constructor. In order to render something, you * must call {@link android.opengl.GLSurfaceView#setRenderer} to * register a renderer. @@ -72,6 +75,7 @@ public class RSSurfaceView extends SurfaceView implements SurfaceHolder.Callback } /** + * @deprecated in API 16 * This method is part of the SurfaceHolder.Callback interface, and is * not normally called or subclassed by clients of RSSurfaceView. */ @@ -80,6 +84,7 @@ public class RSSurfaceView extends SurfaceView implements SurfaceHolder.Callback } /** + * @deprecated in API 16 * This method is part of the SurfaceHolder.Callback interface, and is * not normally called or subclassed by clients of RSSurfaceView. */ @@ -93,6 +98,7 @@ public class RSSurfaceView extends SurfaceView implements SurfaceHolder.Callback } /** + * @deprecated in API 16 * This method is part of the SurfaceHolder.Callback interface, and is * not normally called or subclassed by clients of RSSurfaceView. */ @@ -105,6 +111,7 @@ public class RSSurfaceView extends SurfaceView implements SurfaceHolder.Callback } /** + * @deprecated in API 16 * Inform the view that the activity is paused. The owner of this view must * call this method when the activity is paused. Calling this method will * pause the rendering thread. @@ -117,6 +124,7 @@ public class RSSurfaceView extends SurfaceView implements SurfaceHolder.Callback } /** + * @deprecated in API 16 * Inform the view that the activity is resumed. The owner of this view must * call this method when the activity is resumed. Calling this method will * recreate the OpenGL display and resume the rendering @@ -129,12 +137,18 @@ public class RSSurfaceView extends SurfaceView implements SurfaceHolder.Callback } } + /** + * @deprecated in API 16 + **/ public RenderScriptGL createRenderScriptGL(RenderScriptGL.SurfaceConfig sc) { RenderScriptGL rs = new RenderScriptGL(this.getContext(), sc); setRenderScriptGL(rs); return rs; } + /** + * @deprecated in API 16 + **/ public void destroyRenderScriptGL() { synchronized (this) { mRS.destroy(); @@ -142,10 +156,16 @@ public class RSSurfaceView extends SurfaceView implements SurfaceHolder.Callback } } + /** + * @deprecated in API 16 + **/ public void setRenderScriptGL(RenderScriptGL rs) { mRS = rs; } + /** + * @deprecated in API 16 + **/ public RenderScriptGL getRenderScriptGL() { return mRS; } diff --git a/graphics/java/android/renderscript/RenderScriptGL.java b/graphics/java/android/renderscript/RenderScriptGL.java index 1b2ac90..dbdbe3d 100644 --- a/graphics/java/android/renderscript/RenderScriptGL.java +++ b/graphics/java/android/renderscript/RenderScriptGL.java @@ -206,6 +206,7 @@ public class RenderScriptGL extends RenderScript { } /** + * @deprecated in API 16 * Bind an os surface * * @param w diff --git a/media/java/android/media/MediaExtractor.java b/media/java/android/media/MediaExtractor.java index 58b30db..d3a00c2 100644 --- a/media/java/android/media/MediaExtractor.java +++ b/media/java/android/media/MediaExtractor.java @@ -225,11 +225,6 @@ final public class MediaExtractor { * If possible, seek to the sync sample closest to the specified time */ public static final int SEEK_TO_CLOSEST_SYNC = 2; - /** - * If possible, seek to a sample closest to the specified time, which may - * NOT be a sync sample! - */ - public static final int SEEK_TO_CLOSEST = 3; /** * All selected tracks seek near the requested time according to the diff --git a/media/jni/android_media_MediaExtractor.cpp b/media/jni/android_media_MediaExtractor.cpp index c93baf1..351ff04 100644 --- a/media/jni/android_media_MediaExtractor.cpp +++ b/media/jni/android_media_MediaExtractor.cpp @@ -313,7 +313,7 @@ static void android_media_MediaExtractor_seekTo( } if (mode < MediaSource::ReadOptions::SEEK_PREVIOUS_SYNC - || mode > MediaSource::ReadOptions::SEEK_CLOSEST) { + || mode >= MediaSource::ReadOptions::SEEK_CLOSEST) { jniThrowException(env, "java/lang/IllegalArgumentException", NULL); return; } diff --git a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java index ee3b53f..b0939de 100644 --- a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java +++ b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java @@ -63,7 +63,7 @@ public class DatabaseHelper extends SQLiteOpenHelper { // database gets upgraded properly. At a minimum, please confirm that 'upgradeVersion' // is properly propagated through your change. Not doing so will result in a loss of user // settings. - private static final int DATABASE_VERSION = 77; + private static final int DATABASE_VERSION = 78; private Context mContext; @@ -657,7 +657,7 @@ public class DatabaseHelper extends SQLiteOpenHelper { upgradeVersion = 53; } - + if (upgradeVersion == 53) { /* * New settings for set install location UI no longer initiated here. @@ -1047,6 +1047,12 @@ public class DatabaseHelper extends SQLiteOpenHelper { upgradeVersion = 77; } + if (upgradeVersion == 77) { + // Introduce "vibrate when ringing" setting + loadVibrateWhenRingingSetting(db); + + upgradeVersion = 78; + } // *** Remember to update DATABASE_VERSION above! @@ -1141,7 +1147,7 @@ public class DatabaseHelper extends SQLiteOpenHelper { try { stmt = db.compileStatement("INSERT OR REPLACE INTO system(name,value)" + " VALUES(?,?);"); - + // Set the timeout to 30 minutes in milliseconds loadSetting(stmt, Settings.System.SCREEN_OFF_TIMEOUT, Integer.toString(30 * 60 * 1000)); @@ -1303,7 +1309,7 @@ public class DatabaseHelper extends SQLiteOpenHelper { try { stmt = db.compileStatement("INSERT OR IGNORE INTO system(name,value)" + " VALUES(?,?);"); - + loadSetting(stmt, Settings.System.VOLUME_MUSIC, AudioManager.DEFAULT_STREAM_VOLUME[AudioManager.STREAM_MUSIC]); loadSetting(stmt, Settings.System.VOLUME_RING, @@ -1324,10 +1330,10 @@ public class DatabaseHelper extends SQLiteOpenHelper { stmt, Settings.System.VOLUME_BLUETOOTH_SCO, AudioManager.DEFAULT_STREAM_VOLUME[AudioManager.STREAM_BLUETOOTH_SCO]); - + loadSetting(stmt, Settings.System.MODE_RINGER, AudioManager.RINGER_MODE_NORMAL); - + // By default: // - ringtones, notification, system and music streams are affected by ringer mode // on non voice capable devices (tablets) @@ -1352,6 +1358,8 @@ public class DatabaseHelper extends SQLiteOpenHelper { } finally { if (stmt != null) stmt.close(); } + + loadVibrateWhenRingingSetting(db); } private void loadVibrateSetting(SQLiteDatabase db, boolean deleteOld) { @@ -1363,7 +1371,7 @@ public class DatabaseHelper extends SQLiteOpenHelper { try { stmt = db.compileStatement("INSERT OR IGNORE INTO system(name,value)" + " VALUES(?,?);"); - + // Vibrate on by default for ringer, on for notification int vibrate = 0; vibrate = AudioService.getValueForVibrateSetting(vibrate, @@ -1377,6 +1385,24 @@ public class DatabaseHelper extends SQLiteOpenHelper { } } + private void loadVibrateWhenRingingSetting(SQLiteDatabase db) { + // The default should be off. VIBRATE_SETTING_ONLY_SILENT should also be ignored here. + // Phone app should separately check whether AudioManager#getRingerMode() returns + // RINGER_MODE_VIBRATE, with which the device should vibrate anyway. + int vibrateSetting = getIntValueFromSystem(db, Settings.System.VIBRATE_ON, + AudioManager.VIBRATE_SETTING_OFF); + boolean vibrateWhenRinging = ((vibrateSetting & 3) == AudioManager.VIBRATE_SETTING_ON); + + SQLiteStatement stmt = null; + try { + stmt = db.compileStatement("INSERT OR IGNORE INTO system(name,value)" + + " VALUES(?,?);"); + loadSetting(stmt, Settings.System.VIBRATE_WHEN_RINGING, vibrateWhenRinging ? 1 : 0); + } finally { + if (stmt != null) stmt.close(); + } + } + private void loadSettings(SQLiteDatabase db) { loadSystemSettings(db); loadSecureSettings(db); @@ -1387,7 +1413,7 @@ public class DatabaseHelper extends SQLiteOpenHelper { try { stmt = db.compileStatement("INSERT OR IGNORE INTO system(name,value)" + " VALUES(?,?);"); - + loadBooleanSetting(stmt, Settings.System.DIM_SCREEN, R.bool.def_dim_screen); loadSetting(stmt, Settings.System.STAY_ON_WHILE_PLUGGED_IN, @@ -1396,31 +1422,31 @@ public class DatabaseHelper extends SQLiteOpenHelper { ? 1 : 0); loadIntegerSetting(stmt, Settings.System.SCREEN_OFF_TIMEOUT, R.integer.def_screen_off_timeout); - + // Set default cdma emergency tone loadSetting(stmt, Settings.System.EMERGENCY_TONE, 0); - + // Set default cdma call auto retry loadSetting(stmt, Settings.System.CALL_AUTO_RETRY, 0); - + // Set default cdma DTMF type loadSetting(stmt, Settings.System.DTMF_TONE_TYPE_WHEN_DIALING, 0); - + // Set default hearing aid loadSetting(stmt, Settings.System.HEARING_AID, 0); - + // Set default tty mode loadSetting(stmt, Settings.System.TTY_MODE, 0); - + loadBooleanSetting(stmt, Settings.System.AIRPLANE_MODE_ON, R.bool.def_airplane_mode_on); - + loadStringSetting(stmt, Settings.System.AIRPLANE_MODE_RADIOS, R.string.def_airplane_mode_radios); - + loadStringSetting(stmt, Settings.System.AIRPLANE_MODE_TOGGLEABLE_RADIOS, R.string.airplane_mode_toggleable_radios); - + loadBooleanSetting(stmt, Settings.System.AUTO_TIME, R.bool.def_auto_time); // Sync time to NITZ @@ -1429,17 +1455,17 @@ public class DatabaseHelper extends SQLiteOpenHelper { loadIntegerSetting(stmt, Settings.System.SCREEN_BRIGHTNESS, R.integer.def_screen_brightness); - + loadBooleanSetting(stmt, Settings.System.SCREEN_BRIGHTNESS_MODE, R.bool.def_screen_brightness_automatic_mode); - + loadDefaultAnimationSettings(stmt); - + loadBooleanSetting(stmt, Settings.System.ACCELEROMETER_ROTATION, R.bool.def_accelerometer_rotation); - + loadDefaultHapticSettings(stmt); - + loadBooleanSetting(stmt, Settings.System.NOTIFICATION_LIGHT_PULSE, R.bool.def_notification_pulse); loadSetting(stmt, Settings.Secure.SET_INSTALL_LOCATION, 0); @@ -1504,41 +1530,41 @@ public class DatabaseHelper extends SQLiteOpenHelper { try { stmt = db.compileStatement("INSERT OR IGNORE INTO secure(name,value)" + " VALUES(?,?);"); - + loadBooleanSetting(stmt, Settings.Secure.BLUETOOTH_ON, R.bool.def_bluetooth_on); - + // Data roaming default, based on build loadSetting(stmt, Settings.Secure.DATA_ROAMING, "true".equalsIgnoreCase( SystemProperties.get("ro.com.android.dataroaming", "false")) ? 1 : 0); - + loadBooleanSetting(stmt, Settings.Secure.INSTALL_NON_MARKET_APPS, R.bool.def_install_non_market_apps); - + loadStringSetting(stmt, Settings.Secure.LOCATION_PROVIDERS_ALLOWED, R.string.def_location_providers_allowed); - + loadBooleanSetting(stmt, Settings.Secure.ASSISTED_GPS_ENABLED, R.bool.assisted_gps_enabled); - + loadIntegerSetting(stmt, Settings.Secure.NETWORK_PREFERENCE, R.integer.def_network_preference); - + loadBooleanSetting(stmt, Settings.Secure.USB_MASS_STORAGE_ENABLED, R.bool.def_usb_mass_storage_enabled); - + loadBooleanSetting(stmt, Settings.Secure.WIFI_ON, R.bool.def_wifi_on); loadBooleanSetting(stmt, Settings.Secure.WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON, R.bool.def_networks_available_notification_on); - + String wifiWatchList = SystemProperties.get("ro.com.android.wifi-watchlist"); if (!TextUtils.isEmpty(wifiWatchList)) { loadSetting(stmt, Settings.Secure.WIFI_WATCHDOG_WATCH_LIST, wifiWatchList); } - + // Set the preferred network mode to 0 = Global, CDMA default int type; if (BaseCommands.getLteOnCdmaModeStatic() == Phone.LTE_ON_CDMA_TRUE) { @@ -1548,30 +1574,30 @@ public class DatabaseHelper extends SQLiteOpenHelper { RILConstants.PREFERRED_NETWORK_MODE); } loadSetting(stmt, Settings.Secure.PREFERRED_NETWORK_MODE, type); - + // Enable or disable Cell Broadcast SMS loadSetting(stmt, Settings.Secure.CDMA_CELL_BROADCAST_SMS, RILConstants.CDMA_CELL_BROADCAST_SMS_DISABLED); - + // Don't do this. The SystemServer will initialize ADB_ENABLED from a // persistent system property instead. //loadSetting(stmt, Settings.Secure.ADB_ENABLED, 0); - + // Allow mock locations default, based on build loadSetting(stmt, Settings.Secure.ALLOW_MOCK_LOCATION, "1".equals(SystemProperties.get("ro.allow.mock.location")) ? 1 : 0); - + loadSecure35Settings(stmt); - + loadBooleanSetting(stmt, Settings.Secure.MOUNT_PLAY_NOTIFICATION_SND, R.bool.def_mount_play_notification_snd); - + loadBooleanSetting(stmt, Settings.Secure.MOUNT_UMS_AUTOSTART, R.bool.def_mount_ums_autostart); - + loadBooleanSetting(stmt, Settings.Secure.MOUNT_UMS_PROMPT, R.bool.def_mount_ums_prompt); - + loadBooleanSetting(stmt, Settings.Secure.MOUNT_UMS_NOTIFY_ENABLED, R.bool.def_mount_ums_notify_enabled); diff --git a/policy/src/com/android/internal/policy/impl/FaceUnlock.java b/policy/src/com/android/internal/policy/impl/FaceUnlock.java index 6e09b7f..6590fb3 100644 --- a/policy/src/com/android/internal/policy/impl/FaceUnlock.java +++ b/policy/src/com/android/internal/policy/impl/FaceUnlock.java @@ -28,6 +28,7 @@ import android.content.Intent; import android.content.ServiceConnection; import android.os.Handler; import android.os.IBinder; +import android.os.Looper; import android.os.Message; import android.os.RemoteException; import android.telephony.TelephonyManager; @@ -112,10 +113,14 @@ public class FaceUnlock implements BiometricSensorUnlock, Handler.Callback { /** * Sets the Face Unlock view to visible, hiding it after the specified amount of time. If - * timeoutMillis is 0, no hide is performed. + * timeoutMillis is 0, no hide is performed. Called on the UI thread. */ public void show(long timeoutMillis) { if (DEBUG) Log.d(TAG, "show()"); + if (mHandler.getLooper() != Looper.myLooper()) { + Log.e(TAG, "show() called off of the UI thread"); + } + removeDisplayMessages(); if (mFaceUnlockView != null) { mFaceUnlockView.setVisibility(View.VISIBLE); @@ -138,9 +143,14 @@ public class FaceUnlock implements BiometricSensorUnlock, Handler.Callback { /** * Binds to the Face Unlock service. Face Unlock will be started when the bind completes. The * Face Unlock view is displayed to hide the backup lock while the service is starting up. + * Called on the UI thread. */ public boolean start() { if (DEBUG) Log.d(TAG, "start()"); + if (mHandler.getLooper() != Looper.myLooper()) { + Log.e(TAG, "start() called off of the UI thread"); + } + if (mIsRunning) { Log.w(TAG, "start() called when already running"); } @@ -170,10 +180,14 @@ public class FaceUnlock implements BiometricSensorUnlock, Handler.Callback { } /** - * Stops Face Unlock and unbinds from the service. + * Stops Face Unlock and unbinds from the service. Called on the UI thread. */ public boolean stop() { if (DEBUG) Log.d(TAG, "stop()"); + if (mHandler.getLooper() != Looper.myLooper()) { + Log.e(TAG, "stop() called off of the UI thread"); + } + boolean mWasRunning = mIsRunning; stopUi(); diff --git a/services/input/EventHub.cpp b/services/input/EventHub.cpp index f80ac18..50bfee6 100644 --- a/services/input/EventHub.cpp +++ b/services/input/EventHub.cpp @@ -16,7 +16,7 @@ #define LOG_TAG "EventHub" -// #define LOG_NDEBUG 0 +#define LOG_NDEBUG 0 #include "EventHub.h" @@ -767,11 +767,7 @@ size_t EventHub::getEvents(int timeoutMillis, RawEvent* buffer, size_t bufferSiz size_t count = size_t(readSize) / sizeof(struct input_event); for (size_t i = 0; i < count; i++) { const struct input_event& iev = readBuffer[i]; - ALOGV("%s got: t0=%d, t1=%d, type=%d, code=%d, value=%d", - device->path.string(), - (int) iev.time.tv_sec, (int) iev.time.tv_usec, - iev.type, iev.code, iev.value); - + nsecs_t delta = 0; #ifdef HAVE_POSIX_CLOCKS // Use the time specified in the event instead of the current time // so that downstream code can get more accurate estimates of @@ -786,10 +782,23 @@ size_t EventHub::getEvents(int timeoutMillis, RawEvent* buffer, size_t bufferSiz // system call that also queries ktime_get_ts(). event->when = nsecs_t(iev.time.tv_sec) * 1000000000LL + nsecs_t(iev.time.tv_usec) * 1000LL; - ALOGV("event time %lld, now %lld", event->when, now); + delta = now - event->when; + + // Only log verbose if events are older that 1ms + if (delta > 1 * 1000000LL) { + ALOGV("event time %lld, now %lld, delta %lldus", event->when, now, delta / 1000LL); + } #else event->when = now; #endif + if (delta > 1 * 1000000LL) { + ALOGV("%s got: t0=%d, t1=%d, type=%d, code=%d, value=%d", + device->path.string(), + (int) iev.time.tv_sec, (int) iev.time.tv_usec, + iev.type, iev.code, iev.value); + } + + event->deviceId = deviceId; event->type = iev.type; event->code = iev.code; diff --git a/services/java/com/android/server/InputMethodManagerService.java b/services/java/com/android/server/InputMethodManagerService.java index 47b8352..a49ccf7 100644 --- a/services/java/com/android/server/InputMethodManagerService.java +++ b/services/java/com/android/server/InputMethodManagerService.java @@ -1142,6 +1142,10 @@ public class InputMethodManagerService extends IInputMethodManager.Stub if (mCurToken != null) { try { if (DEBUG) Slog.v(TAG, "Removing window token: " + mCurToken); + if ((mImeWindowVis & InputMethodService.IME_ACTIVE) != 0) { + // The current IME is shown. Hence an IME switch (transition) is happening. + mWindowManagerService.saveLastInputMethodWindowForTransition(); + } mIWindowManager.removeWindowToken(mCurToken); } catch (RemoteException e) { } diff --git a/services/java/com/android/server/wm/WindowManagerService.java b/services/java/com/android/server/wm/WindowManagerService.java index 204a6cd..8957edf 100755 --- a/services/java/com/android/server/wm/WindowManagerService.java +++ b/services/java/com/android/server/wm/WindowManagerService.java @@ -3430,9 +3430,6 @@ public class WindowManagerService extends IWindowManager.Stub synchronized(mWindowMap) { WindowToken wtoken = mTokenMap.remove(token); if (wtoken != null) { - if (wtoken.windowType == TYPE_INPUT_METHOD && mInputMethodWindow != null) { - mPolicy.setLastInputMethodWindowLw(mInputMethodWindow, mInputMethodTarget); - } boolean delayed = false; if (!wtoken.hidden) { wtoken.hidden = true; @@ -6674,8 +6671,7 @@ public class WindowManagerService extends IWindowManager.Stub public static final int SET_TRANSPARENT_REGION = ANIMATOR_WHAT_OFFSET + 1; public static final int SET_WALLPAPER_OFFSET = ANIMATOR_WHAT_OFFSET + 2; public static final int SET_DIM_PARAMETERS = ANIMATOR_WHAT_OFFSET + 3; - public static final int SET_MOVE_ANIMATION = ANIMATOR_WHAT_OFFSET + 4; - public static final int CLEAR_PENDING_ACTIONS = ANIMATOR_WHAT_OFFSET + 5; + public static final int CLEAR_PENDING_ACTIONS = ANIMATOR_WHAT_OFFSET + 4; private Session mLastReportedHold; @@ -7159,18 +7155,6 @@ public class WindowManagerService extends IWindowManager.Stub break; } - case SET_MOVE_ANIMATION: { - WindowAnimator.SetAnimationParams params = - (WindowAnimator.SetAnimationParams) msg.obj; - WindowStateAnimator winAnimator = params.mWinAnimator; - winAnimator.setAnimation(params.mAnimation); - winAnimator.mAnimDw = params.mAnimDw; - winAnimator.mAnimDh = params.mAnimDh; - - scheduleAnimationLocked(); - break; - } - case CLEAR_PENDING_ACTIONS: { mAnimator.clearPendingActions(); break; @@ -8418,9 +8402,6 @@ public class WindowManagerService extends IWindowManager.Stub winAnimator.setAnimation(a); winAnimator.mAnimDw = w.mLastFrame.left - w.mFrame.left; winAnimator.mAnimDh = w.mLastFrame.top - w.mFrame.top; - } else { - winAnimator.mAnimDw = innerDw; - winAnimator.mAnimDh = innerDh; } //Slog.i(TAG, "Window " + this + " clearing mContentChanged - done placing"); @@ -9269,6 +9250,15 @@ public class WindowManagerService extends IWindowManager.Stub } } + // It is assumed that this method is called only by InputMethodManagerService. + public void saveLastInputMethodWindowForTransition() { + synchronized (mWindowMap) { + if (mInputMethodWindow != null) { + mPolicy.setLastInputMethodWindowLw(mInputMethodWindow, mInputMethodTarget); + } + } + } + @Override public boolean hasNavigationBar() { return mPolicy.hasNavigationBar(); diff --git a/telephony/java/android/telephony/PhoneNumberUtils.java b/telephony/java/android/telephony/PhoneNumberUtils.java index 5afe56c..f740718 100644 --- a/telephony/java/android/telephony/PhoneNumberUtils.java +++ b/telephony/java/android/telephony/PhoneNumberUtils.java @@ -1711,12 +1711,8 @@ public class PhoneNumberUtils return false; } - // STOPSHIP: remove this after figuring out issue 5914560, 6383850. Log.d(LOG_TAG, "System property doesn't provide any emergency numbers." - + " Use embedded logic for determining emergency numbers." - + " number: " + toLogSafePhoneNumber(number) - + ", Iso: " + defaultCountryIso - + ", useExactMatch: " + useExactMatch); + + " Use embedded logic for determining ones."); // No ecclist system property, so use our own list. if (defaultCountryIso != null) { @@ -1735,21 +1731,6 @@ public class PhoneNumberUtils } } - private static String toLogSafePhoneNumber(String number) { - // Do exactly same thing as Uri#toSafeString() does, which will enable us to compare - // sanitized phone numbers. - StringBuilder builder = new StringBuilder(); - for (int i = 0; i < number.length(); i++) { - char c = number.charAt(i); - if (c == '-' || c == '@' || c == '.') { - builder.append(c); - } else { - builder.append('x'); - } - } - return builder.toString(); - } - /** * Checks if a given number is an emergency number for the country that the user is in. The * current country is determined using the CountryDetector. |
