Loading api/current.txt +3 −0 Original line number Diff line number Diff line Loading @@ -6208,6 +6208,7 @@ package android.content.pm { method public int describeContents(); method public void dump(android.util.Printer, java.lang.String); method public final int getThemeResource(); field public static final int CONFIG_DENSITY = 4096; // 0x1000 field public static final int CONFIG_FONT_SCALE = 1073741824; // 0x40000000 field public static final int CONFIG_KEYBOARD = 16; // 0x10 field public static final int CONFIG_KEYBOARD_HIDDEN = 32; // 0x20 Loading Loading @@ -6802,6 +6803,7 @@ package android.content.res { method public int updateFrom(android.content.res.Configuration); method public void writeToParcel(android.os.Parcel, int); field public static final android.os.Parcelable.Creator CREATOR; field public static final int DENSITY_DPI_UNDEFINED = 0; // 0x0 field public static final int HARDKEYBOARDHIDDEN_NO = 1; // 0x1 field public static final int HARDKEYBOARDHIDDEN_UNDEFINED = 0; // 0x0 field public static final int HARDKEYBOARDHIDDEN_YES = 2; // 0x2 Loading Loading @@ -6852,6 +6854,7 @@ package android.content.res { field public static final int UI_MODE_TYPE_NORMAL = 1; // 0x1 field public static final int UI_MODE_TYPE_TELEVISION = 4; // 0x4 field public static final int UI_MODE_TYPE_UNDEFINED = 0; // 0x0 field public int densityDpi; field public float fontScale; field public int hardKeyboardHidden; field public int keyboard; core/java/android/app/ActivityThread.java +15 −9 Original line number Diff line number Diff line Loading @@ -166,6 +166,7 @@ public final class ActivityThread { = new HashMap<IBinder, Service>(); AppBindData mBoundApplication; Profiler mProfiler; int mCurDefaultDisplayDpi; Configuration mConfiguration; Configuration mCompatConfiguration; Configuration mResConfiguration; Loading Loading @@ -1306,6 +1307,7 @@ public final class ActivityThread { break; case CONFIGURATION_CHANGED: Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "configChanged"); mCurDefaultDisplayDpi = ((Configuration)msg.obj).densityDpi; handleConfigurationChanged((Configuration)msg.obj, null); Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); break; Loading Loading @@ -1539,14 +1541,15 @@ public final class ActivityThread { } private Configuration mMainThreadConfig = new Configuration(); Configuration applyConfigCompatMainThread(Configuration config, CompatibilityInfo compat) { Configuration applyConfigCompatMainThread(int displayDensity, Configuration config, CompatibilityInfo compat) { if (config == null) { return null; } if (compat != null && !compat.supportsScreen()) { mMainThreadConfig.setTo(config); config = mMainThreadConfig; compat.applyToConfiguration(config); compat.applyToConfiguration(displayDensity, config); } return config; } Loading Loading @@ -3464,6 +3467,7 @@ public final class ActivityThread { // If there was a pending configuration change, execute it first. if (changedConfig != null) { mCurDefaultDisplayDpi = changedConfig.densityDpi; handleConfigurationChanged(changedConfig, null); } Loading Loading @@ -3546,8 +3550,8 @@ public final class ActivityThread { for (ActivityClientRecord ar : mActivities.values()) { Activity a = ar.activity; if (a != null) { Configuration thisConfig = applyConfigCompatMainThread(newConfig, ar.packageInfo.mCompatibilityInfo.getIfNeeded()); Configuration thisConfig = applyConfigCompatMainThread(mCurDefaultDisplayDpi, newConfig, ar.packageInfo.mCompatibilityInfo.getIfNeeded()); if (!ar.activity.mFinished && (allActivities || !ar.paused)) { // If the activity is currently resumed, its configuration // needs to change right now. Loading Loading @@ -3691,14 +3695,14 @@ public final class ActivityThread { return changes != 0; } final Configuration applyCompatConfiguration() { final Configuration applyCompatConfiguration(int displayDensity) { Configuration config = mConfiguration; if (mCompatConfiguration == null) { mCompatConfiguration = new Configuration(); } mCompatConfiguration.setTo(mConfiguration); if (mResCompatibilityInfo != null && !mResCompatibilityInfo.supportsScreen()) { mResCompatibilityInfo.applyToConfiguration(mCompatConfiguration); mResCompatibilityInfo.applyToConfiguration(displayDensity, mCompatConfiguration); config = mCompatConfiguration; } return config; Loading @@ -3713,6 +3717,7 @@ public final class ActivityThread { if (mPendingConfiguration != null) { if (!mPendingConfiguration.isOtherSeqNewer(config)) { config = mPendingConfiguration; mCurDefaultDisplayDpi = config.densityDpi; } mPendingConfiguration = null; } Loading @@ -3734,7 +3739,7 @@ public final class ActivityThread { } configDiff = mConfiguration.diff(config); mConfiguration.updateFrom(config); config = applyCompatConfiguration(); config = applyCompatConfiguration(mCurDefaultDisplayDpi); callbacks = collectComponentCallbacksLocked(false, config); } Loading Loading @@ -3933,7 +3938,7 @@ public final class ActivityThread { // Persistent processes on low-memory devices do not get to // use hardware accelerated drawing, since this can add too much // overhead to the process. Display display = WindowManagerImpl.getDefault().getDefaultDisplay(); final Display display = WindowManagerImpl.getDefault().getDefaultDisplay(); if (!ActivityManager.isHighEndGfx(display)) { HardwareRenderer.disable(false); } Loading Loading @@ -3970,7 +3975,8 @@ public final class ActivityThread { * in AppBindData can be safely assumed to be up to date */ applyConfigurationToResourcesLocked(data.config, data.compatInfo); applyCompatConfiguration(); mCurDefaultDisplayDpi = data.config.densityDpi; applyCompatConfiguration(mCurDefaultDisplayDpi); data.info = getPackageInfoNoCheck(data.appInfo, data.compatInfo); Loading core/java/android/app/WallpaperManager.java +11 −7 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ import android.os.ServiceManager; import android.util.DisplayMetrics; import android.util.Log; import android.view.ViewRootImpl; import android.view.WindowManager; import java.io.FileOutputStream; import java.io.IOException; Loading Loading @@ -241,7 +242,7 @@ public class WallpaperManager { } mWallpaper = null; try { mWallpaper = getCurrentWallpaperLocked(); mWallpaper = getCurrentWallpaperLocked(context); } catch (OutOfMemoryError e) { Log.w(TAG, "No memory load current wallpaper", e); } Loading @@ -264,7 +265,7 @@ public class WallpaperManager { } } private Bitmap getCurrentWallpaperLocked() { private Bitmap getCurrentWallpaperLocked(Context context) { try { Bundle params = new Bundle(); ParcelFileDescriptor fd = mService.getWallpaper(this, params); Loading @@ -276,7 +277,7 @@ public class WallpaperManager { BitmapFactory.Options options = new BitmapFactory.Options(); Bitmap bm = BitmapFactory.decodeFileDescriptor( fd.getFileDescriptor(), null, options); return generateBitmap(bm, width, height); return generateBitmap(context, bm, width, height); } catch (OutOfMemoryError e) { Log.w(TAG, "Can't decode file", e); } finally { Loading Loading @@ -304,7 +305,7 @@ public class WallpaperManager { try { BitmapFactory.Options options = new BitmapFactory.Options(); Bitmap bm = BitmapFactory.decodeStream(is, null, options); return generateBitmap(bm, width, height); return generateBitmap(context, bm, width, height); } catch (OutOfMemoryError e) { Log.w(TAG, "Can't decode stream", e); } finally { Loading Loading @@ -768,12 +769,15 @@ public class WallpaperManager { setResource(com.android.internal.R.drawable.default_wallpaper); } static Bitmap generateBitmap(Bitmap bm, int width, int height) { static Bitmap generateBitmap(Context context, Bitmap bm, int width, int height) { if (bm == null) { return null; } bm.setDensity(DisplayMetrics.DENSITY_DEVICE); WindowManager wm = (WindowManager)context.getSystemService(Context.WINDOW_SERVICE); DisplayMetrics metrics = new DisplayMetrics(); wm.getDefaultDisplay().getMetrics(metrics); bm.setDensity(metrics.noncompatDensityDpi); if (width <= 0 || height <= 0 || (bm.getWidth() == width && bm.getHeight() == height)) { Loading @@ -783,7 +787,7 @@ public class WallpaperManager { // This is the final bitmap we want to return. try { Bitmap newbm = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); newbm.setDensity(DisplayMetrics.DENSITY_DEVICE); newbm.setDensity(metrics.noncompatDensityDpi); Canvas c = new Canvas(newbm); Rect targetRect = new Rect(); Loading core/java/android/content/pm/ActivityInfo.java +7 −0 Original line number Diff line number Diff line Loading @@ -356,6 +356,12 @@ public class ActivityInfo extends ComponentInfo * they are interested in. Please don't do that, thanks. */ public static final int CONFIG_SMALLEST_SCREEN_SIZE = 0x0800; /** * Bit in {@link #configChanges} that indicates that the activity * can itself handle density changes. Set from the * {@link android.R.attr#configChanges} attribute. */ public static final int CONFIG_DENSITY = 0x1000; /** * Bit in {@link #configChanges} that indicates that the activity * can itself handle changes to the font scaling factor. Set from the Loading Loading @@ -383,6 +389,7 @@ public class ActivityInfo extends ComponentInfo 0x1000, // UI MODE 0x0200, // SCREEN SIZE 0x2000, // SMALLEST SCREEN SIZE 0x0100, // DENSITY }; /** @hide * Convert Java change bits to native. Loading core/java/android/content/res/CompatibilityInfo.java +7 −2 Original line number Diff line number Diff line Loading @@ -439,7 +439,7 @@ public class CompatibilityInfo implements Parcelable { if (isScalingRequired()) { float invertedRatio = applicationInvertedScale; inoutDm.density = inoutDm.noncompatDensity * invertedRatio; inoutDm.densityDpi = (int)((inoutDm.density*DisplayMetrics.DENSITY_DEFAULT)+.5f); inoutDm.densityDpi = (int)((inoutDm.noncompatDensityDpi * invertedRatio) + .5f); inoutDm.scaledDensity = inoutDm.noncompatScaledDensity * invertedRatio; inoutDm.xdpi = inoutDm.noncompatXdpi * invertedRatio; inoutDm.ydpi = inoutDm.noncompatYdpi * invertedRatio; Loading @@ -448,7 +448,7 @@ public class CompatibilityInfo implements Parcelable { } } public void applyToConfiguration(Configuration inoutConfig) { public void applyToConfiguration(int displayDensity, Configuration inoutConfig) { if (!supportsScreen()) { // This is a larger screen device and the app is not // compatible with large screens, so we are forcing it to Loading @@ -460,6 +460,11 @@ public class CompatibilityInfo implements Parcelable { inoutConfig.screenHeightDp = inoutConfig.compatScreenHeightDp; inoutConfig.smallestScreenWidthDp = inoutConfig.compatSmallestScreenWidthDp; } inoutConfig.densityDpi = displayDensity; if (isScalingRequired()) { float invertedRatio = applicationInvertedScale; inoutConfig.densityDpi = (int)((inoutConfig.densityDpi * invertedRatio) + .5f); } } /** Loading Loading
api/current.txt +3 −0 Original line number Diff line number Diff line Loading @@ -6208,6 +6208,7 @@ package android.content.pm { method public int describeContents(); method public void dump(android.util.Printer, java.lang.String); method public final int getThemeResource(); field public static final int CONFIG_DENSITY = 4096; // 0x1000 field public static final int CONFIG_FONT_SCALE = 1073741824; // 0x40000000 field public static final int CONFIG_KEYBOARD = 16; // 0x10 field public static final int CONFIG_KEYBOARD_HIDDEN = 32; // 0x20 Loading Loading @@ -6802,6 +6803,7 @@ package android.content.res { method public int updateFrom(android.content.res.Configuration); method public void writeToParcel(android.os.Parcel, int); field public static final android.os.Parcelable.Creator CREATOR; field public static final int DENSITY_DPI_UNDEFINED = 0; // 0x0 field public static final int HARDKEYBOARDHIDDEN_NO = 1; // 0x1 field public static final int HARDKEYBOARDHIDDEN_UNDEFINED = 0; // 0x0 field public static final int HARDKEYBOARDHIDDEN_YES = 2; // 0x2 Loading Loading @@ -6852,6 +6854,7 @@ package android.content.res { field public static final int UI_MODE_TYPE_NORMAL = 1; // 0x1 field public static final int UI_MODE_TYPE_TELEVISION = 4; // 0x4 field public static final int UI_MODE_TYPE_UNDEFINED = 0; // 0x0 field public int densityDpi; field public float fontScale; field public int hardKeyboardHidden; field public int keyboard;
core/java/android/app/ActivityThread.java +15 −9 Original line number Diff line number Diff line Loading @@ -166,6 +166,7 @@ public final class ActivityThread { = new HashMap<IBinder, Service>(); AppBindData mBoundApplication; Profiler mProfiler; int mCurDefaultDisplayDpi; Configuration mConfiguration; Configuration mCompatConfiguration; Configuration mResConfiguration; Loading Loading @@ -1306,6 +1307,7 @@ public final class ActivityThread { break; case CONFIGURATION_CHANGED: Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "configChanged"); mCurDefaultDisplayDpi = ((Configuration)msg.obj).densityDpi; handleConfigurationChanged((Configuration)msg.obj, null); Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); break; Loading Loading @@ -1539,14 +1541,15 @@ public final class ActivityThread { } private Configuration mMainThreadConfig = new Configuration(); Configuration applyConfigCompatMainThread(Configuration config, CompatibilityInfo compat) { Configuration applyConfigCompatMainThread(int displayDensity, Configuration config, CompatibilityInfo compat) { if (config == null) { return null; } if (compat != null && !compat.supportsScreen()) { mMainThreadConfig.setTo(config); config = mMainThreadConfig; compat.applyToConfiguration(config); compat.applyToConfiguration(displayDensity, config); } return config; } Loading Loading @@ -3464,6 +3467,7 @@ public final class ActivityThread { // If there was a pending configuration change, execute it first. if (changedConfig != null) { mCurDefaultDisplayDpi = changedConfig.densityDpi; handleConfigurationChanged(changedConfig, null); } Loading Loading @@ -3546,8 +3550,8 @@ public final class ActivityThread { for (ActivityClientRecord ar : mActivities.values()) { Activity a = ar.activity; if (a != null) { Configuration thisConfig = applyConfigCompatMainThread(newConfig, ar.packageInfo.mCompatibilityInfo.getIfNeeded()); Configuration thisConfig = applyConfigCompatMainThread(mCurDefaultDisplayDpi, newConfig, ar.packageInfo.mCompatibilityInfo.getIfNeeded()); if (!ar.activity.mFinished && (allActivities || !ar.paused)) { // If the activity is currently resumed, its configuration // needs to change right now. Loading Loading @@ -3691,14 +3695,14 @@ public final class ActivityThread { return changes != 0; } final Configuration applyCompatConfiguration() { final Configuration applyCompatConfiguration(int displayDensity) { Configuration config = mConfiguration; if (mCompatConfiguration == null) { mCompatConfiguration = new Configuration(); } mCompatConfiguration.setTo(mConfiguration); if (mResCompatibilityInfo != null && !mResCompatibilityInfo.supportsScreen()) { mResCompatibilityInfo.applyToConfiguration(mCompatConfiguration); mResCompatibilityInfo.applyToConfiguration(displayDensity, mCompatConfiguration); config = mCompatConfiguration; } return config; Loading @@ -3713,6 +3717,7 @@ public final class ActivityThread { if (mPendingConfiguration != null) { if (!mPendingConfiguration.isOtherSeqNewer(config)) { config = mPendingConfiguration; mCurDefaultDisplayDpi = config.densityDpi; } mPendingConfiguration = null; } Loading @@ -3734,7 +3739,7 @@ public final class ActivityThread { } configDiff = mConfiguration.diff(config); mConfiguration.updateFrom(config); config = applyCompatConfiguration(); config = applyCompatConfiguration(mCurDefaultDisplayDpi); callbacks = collectComponentCallbacksLocked(false, config); } Loading Loading @@ -3933,7 +3938,7 @@ public final class ActivityThread { // Persistent processes on low-memory devices do not get to // use hardware accelerated drawing, since this can add too much // overhead to the process. Display display = WindowManagerImpl.getDefault().getDefaultDisplay(); final Display display = WindowManagerImpl.getDefault().getDefaultDisplay(); if (!ActivityManager.isHighEndGfx(display)) { HardwareRenderer.disable(false); } Loading Loading @@ -3970,7 +3975,8 @@ public final class ActivityThread { * in AppBindData can be safely assumed to be up to date */ applyConfigurationToResourcesLocked(data.config, data.compatInfo); applyCompatConfiguration(); mCurDefaultDisplayDpi = data.config.densityDpi; applyCompatConfiguration(mCurDefaultDisplayDpi); data.info = getPackageInfoNoCheck(data.appInfo, data.compatInfo); Loading
core/java/android/app/WallpaperManager.java +11 −7 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ import android.os.ServiceManager; import android.util.DisplayMetrics; import android.util.Log; import android.view.ViewRootImpl; import android.view.WindowManager; import java.io.FileOutputStream; import java.io.IOException; Loading Loading @@ -241,7 +242,7 @@ public class WallpaperManager { } mWallpaper = null; try { mWallpaper = getCurrentWallpaperLocked(); mWallpaper = getCurrentWallpaperLocked(context); } catch (OutOfMemoryError e) { Log.w(TAG, "No memory load current wallpaper", e); } Loading @@ -264,7 +265,7 @@ public class WallpaperManager { } } private Bitmap getCurrentWallpaperLocked() { private Bitmap getCurrentWallpaperLocked(Context context) { try { Bundle params = new Bundle(); ParcelFileDescriptor fd = mService.getWallpaper(this, params); Loading @@ -276,7 +277,7 @@ public class WallpaperManager { BitmapFactory.Options options = new BitmapFactory.Options(); Bitmap bm = BitmapFactory.decodeFileDescriptor( fd.getFileDescriptor(), null, options); return generateBitmap(bm, width, height); return generateBitmap(context, bm, width, height); } catch (OutOfMemoryError e) { Log.w(TAG, "Can't decode file", e); } finally { Loading Loading @@ -304,7 +305,7 @@ public class WallpaperManager { try { BitmapFactory.Options options = new BitmapFactory.Options(); Bitmap bm = BitmapFactory.decodeStream(is, null, options); return generateBitmap(bm, width, height); return generateBitmap(context, bm, width, height); } catch (OutOfMemoryError e) { Log.w(TAG, "Can't decode stream", e); } finally { Loading Loading @@ -768,12 +769,15 @@ public class WallpaperManager { setResource(com.android.internal.R.drawable.default_wallpaper); } static Bitmap generateBitmap(Bitmap bm, int width, int height) { static Bitmap generateBitmap(Context context, Bitmap bm, int width, int height) { if (bm == null) { return null; } bm.setDensity(DisplayMetrics.DENSITY_DEVICE); WindowManager wm = (WindowManager)context.getSystemService(Context.WINDOW_SERVICE); DisplayMetrics metrics = new DisplayMetrics(); wm.getDefaultDisplay().getMetrics(metrics); bm.setDensity(metrics.noncompatDensityDpi); if (width <= 0 || height <= 0 || (bm.getWidth() == width && bm.getHeight() == height)) { Loading @@ -783,7 +787,7 @@ public class WallpaperManager { // This is the final bitmap we want to return. try { Bitmap newbm = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); newbm.setDensity(DisplayMetrics.DENSITY_DEVICE); newbm.setDensity(metrics.noncompatDensityDpi); Canvas c = new Canvas(newbm); Rect targetRect = new Rect(); Loading
core/java/android/content/pm/ActivityInfo.java +7 −0 Original line number Diff line number Diff line Loading @@ -356,6 +356,12 @@ public class ActivityInfo extends ComponentInfo * they are interested in. Please don't do that, thanks. */ public static final int CONFIG_SMALLEST_SCREEN_SIZE = 0x0800; /** * Bit in {@link #configChanges} that indicates that the activity * can itself handle density changes. Set from the * {@link android.R.attr#configChanges} attribute. */ public static final int CONFIG_DENSITY = 0x1000; /** * Bit in {@link #configChanges} that indicates that the activity * can itself handle changes to the font scaling factor. Set from the Loading Loading @@ -383,6 +389,7 @@ public class ActivityInfo extends ComponentInfo 0x1000, // UI MODE 0x0200, // SCREEN SIZE 0x2000, // SMALLEST SCREEN SIZE 0x0100, // DENSITY }; /** @hide * Convert Java change bits to native. Loading
core/java/android/content/res/CompatibilityInfo.java +7 −2 Original line number Diff line number Diff line Loading @@ -439,7 +439,7 @@ public class CompatibilityInfo implements Parcelable { if (isScalingRequired()) { float invertedRatio = applicationInvertedScale; inoutDm.density = inoutDm.noncompatDensity * invertedRatio; inoutDm.densityDpi = (int)((inoutDm.density*DisplayMetrics.DENSITY_DEFAULT)+.5f); inoutDm.densityDpi = (int)((inoutDm.noncompatDensityDpi * invertedRatio) + .5f); inoutDm.scaledDensity = inoutDm.noncompatScaledDensity * invertedRatio; inoutDm.xdpi = inoutDm.noncompatXdpi * invertedRatio; inoutDm.ydpi = inoutDm.noncompatYdpi * invertedRatio; Loading @@ -448,7 +448,7 @@ public class CompatibilityInfo implements Parcelable { } } public void applyToConfiguration(Configuration inoutConfig) { public void applyToConfiguration(int displayDensity, Configuration inoutConfig) { if (!supportsScreen()) { // This is a larger screen device and the app is not // compatible with large screens, so we are forcing it to Loading @@ -460,6 +460,11 @@ public class CompatibilityInfo implements Parcelable { inoutConfig.screenHeightDp = inoutConfig.compatScreenHeightDp; inoutConfig.smallestScreenWidthDp = inoutConfig.compatSmallestScreenWidthDp; } inoutConfig.densityDpi = displayDensity; if (isScalingRequired()) { float invertedRatio = applicationInvertedScale; inoutConfig.densityDpi = (int)((inoutConfig.densityDpi * invertedRatio) + .5f); } } /** Loading