Loading core/api/current.txt +2 −0 Original line number Diff line number Diff line Loading @@ -3538,6 +3538,7 @@ package android.accessibilityservice { method public float getCenterY(); method public int getMode(); method public float getScale(); method public boolean isActivated(); method public void writeToParcel(@NonNull android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator<android.accessibilityservice.MagnificationConfig> CREATOR; field public static final int MAGNIFICATION_MODE_DEFAULT = 0; // 0x0 Loading @@ -3548,6 +3549,7 @@ package android.accessibilityservice { public static final class MagnificationConfig.Builder { ctor public MagnificationConfig.Builder(); method @NonNull public android.accessibilityservice.MagnificationConfig build(); method @NonNull public android.accessibilityservice.MagnificationConfig.Builder setActivated(boolean); method @NonNull public android.accessibilityservice.MagnificationConfig.Builder setCenterX(float); method @NonNull public android.accessibilityservice.MagnificationConfig.Builder setCenterY(float); method @NonNull public android.accessibilityservice.MagnificationConfig.Builder setMode(int); core/java/android/accessibilityservice/MagnificationConfig.java +33 −7 Original line number Diff line number Diff line Loading @@ -76,6 +76,7 @@ public final class MagnificationConfig implements Parcelable { } private int mMode = MAGNIFICATION_MODE_DEFAULT; private boolean mActivated = false; private float mScale = Float.NaN; private float mCenterX = Float.NaN; private float mCenterY = Float.NaN; Loading @@ -86,6 +87,7 @@ public final class MagnificationConfig implements Parcelable { private MagnificationConfig(@NonNull Parcel parcel) { mMode = parcel.readInt(); mActivated = parcel.readBoolean(); mScale = parcel.readFloat(); mCenterX = parcel.readFloat(); mCenterY = parcel.readFloat(); Loading @@ -101,10 +103,21 @@ public final class MagnificationConfig implements Parcelable { return mMode; } /** * Returns the activated state of the controlling magnifier. The controlling magnifier can be * activated even if the scale returned by {@link MagnificationConfig#getScale()} equals to 1.0. * * @return {@code true} if the magnifier is showing on screen, * {@code false} otherwise. */ public boolean isActivated() { return mActivated; } /** * Returns the magnification scale of the controlling magnifier * * @return the scale If the controlling magnifier is not activated, it returns 1 by default * @return The magnification scale */ public float getScale() { return mScale; Loading @@ -113,9 +126,7 @@ public final class MagnificationConfig implements Parcelable { /** * Returns the screen-relative X coordinate of the center of the magnification viewport. * * @return the X coordinate. If the controlling magnifier is {@link #MAGNIFICATION_MODE_WINDOW} * but not enabled, it returns {@link Float#NaN}. If the controlling magnifier is {@link * #MAGNIFICATION_MODE_FULLSCREEN} but not enabled, it returns 0 * @return The X coordinate */ public float getCenterX() { return mCenterX; Loading @@ -124,9 +135,7 @@ public final class MagnificationConfig implements Parcelable { /** * Returns the screen-relative Y coordinate of the center of the magnification viewport. * * @return the Y coordinate If the controlling magnifier is {@link #MAGNIFICATION_MODE_WINDOW} * but not enabled, it returns {@link Float#NaN}. If the controlling magnifier is {@link * #MAGNIFICATION_MODE_FULLSCREEN} but not enabled, it returns 0 * @return The Y coordinate */ public float getCenterY() { return mCenterY; Loading @@ -138,6 +147,8 @@ public final class MagnificationConfig implements Parcelable { StringBuilder stringBuilder = new StringBuilder("MagnificationConfig["); stringBuilder.append("mode: ").append(getMode()); stringBuilder.append(", "); stringBuilder.append("activated: ").append(isActivated()); stringBuilder.append(", "); stringBuilder.append("scale: ").append(getScale()); stringBuilder.append(", "); stringBuilder.append("centerX: ").append(getCenterX()); Loading @@ -155,6 +166,7 @@ public final class MagnificationConfig implements Parcelable { @Override public void writeToParcel(@NonNull Parcel parcel, int flags) { parcel.writeInt(mMode); parcel.writeBoolean(mActivated); parcel.writeFloat(mScale); parcel.writeFloat(mCenterX); parcel.writeFloat(mCenterY); Loading @@ -166,6 +178,7 @@ public final class MagnificationConfig implements Parcelable { public static final class Builder { private int mMode = MAGNIFICATION_MODE_DEFAULT; private boolean mActivated = true; private float mScale = Float.NaN; private float mCenterX = Float.NaN; private float mCenterY = Float.NaN; Loading @@ -188,6 +201,18 @@ public final class MagnificationConfig implements Parcelable { return this; } /** * Sets magnification activated state. * * @param activated The magnification activated state * @return This builder */ @NonNull public MagnificationConfig.Builder setActivated(boolean activated) { mActivated = activated; return this; } /** * Sets the magnification scale. * Loading Loading @@ -237,6 +262,7 @@ public final class MagnificationConfig implements Parcelable { public MagnificationConfig build() { MagnificationConfig magnificationConfig = new MagnificationConfig(); magnificationConfig.mMode = mMode; magnificationConfig.mActivated = mActivated; magnificationConfig.mScale = mScale; magnificationConfig.mCenterX = mCenterX; magnificationConfig.mCenterY = mCenterY; Loading services/accessibility/java/com/android/server/accessibility/magnification/FullScreenMagnificationController.java +1 −0 Original line number Diff line number Diff line Loading @@ -371,6 +371,7 @@ public class FullScreenMagnificationController implements final MagnificationConfig config = new MagnificationConfig.Builder() .setMode(MAGNIFICATION_MODE_FULLSCREEN) .setActivated(mMagnificationActivated) .setScale(scale) .setCenterX(getCenterX()) .setCenterY(getCenterY()).build(); Loading services/accessibility/java/com/android/server/accessibility/magnification/MagnificationController.java +22 −9 Original line number Diff line number Diff line Loading @@ -284,6 +284,7 @@ public class MagnificationController implements WindowMagnificationManager.Callb } synchronized (mLock) { final int targetMode = config.getMode(); final boolean targetActivated = config.isActivated(); final PointF currentCenter = getCurrentMagnificationCenterLocked(displayId, targetMode); final PointF magnificationCenter = new PointF(config.getCenterX(), config.getCenterY()); if (currentCenter != null) { Loading @@ -310,20 +311,30 @@ public class MagnificationController implements WindowMagnificationManager.Callb : config.getScale(); try { setTransitionState(displayId, targetMode); // Activate or deactivate target mode depending on config activated value if (targetMode == MAGNIFICATION_MODE_WINDOW) { screenMagnificationController.reset(displayId, false); if (targetActivated) { windowMagnificationMgr.enableWindowMagnification(displayId, targetScale, magnificationCenter.x, magnificationCenter.y, animate ? STUB_ANIMATION_CALLBACK : null, id); } else { windowMagnificationMgr.disableWindowMagnification(displayId, false); } } else if (targetMode == MAGNIFICATION_MODE_FULLSCREEN) { windowMagnificationMgr.disableWindowMagnification(displayId, false, null); if (targetActivated) { if (!screenMagnificationController.isRegistered(displayId)) { screenMagnificationController.register(displayId); } screenMagnificationController.setScaleAndCenter(displayId, targetScale, magnificationCenter.x, magnificationCenter.y, animate, id); } else { if (screenMagnificationController.isRegistered(displayId)) { screenMagnificationController.reset(displayId, false); } } } } finally { // Reset transition state after enabling target mode. Loading Loading @@ -454,6 +465,7 @@ public class MagnificationController implements WindowMagnificationManager.Callb if (shouldNotifyMagnificationChange(displayId, MAGNIFICATION_MODE_WINDOW)) { final MagnificationConfig config = new MagnificationConfig.Builder() .setMode(MAGNIFICATION_MODE_WINDOW) .setActivated(getWindowMagnificationMgr().isWindowMagnifierEnabled(displayId)) .setScale(getWindowMagnificationMgr().getScale(displayId)) .setCenterX(bounds.exactCenterX()) .setCenterY(bounds.exactCenterY()).build(); Loading Loading @@ -834,6 +846,7 @@ public class MagnificationController implements WindowMagnificationManager.Callb new MagnificationConfig.Builder(); Region region = new Region(); configBuilder.setMode(MAGNIFICATION_MODE_FULLSCREEN) .setActivated(screenMagnificationController.isActivated(mDisplayId)) .setScale(screenMagnificationController.getScale(mDisplayId)) .setCenterX(screenMagnificationController.getCenterX(mDisplayId)) .setCenterY(screenMagnificationController.getCenterY(mDisplayId)); Loading services/accessibility/java/com/android/server/accessibility/magnification/MagnificationProcessor.java +23 −7 Original line number Diff line number Diff line Loading @@ -79,6 +79,7 @@ public class MagnificationProcessor { final FullScreenMagnificationController fullScreenMagnificationController = mController.getFullScreenMagnificationController(); builder.setMode(mode) .setActivated(mController.isActivated(displayId, MAGNIFICATION_MODE_FULLSCREEN)) .setScale(fullScreenMagnificationController.getScale(displayId)) .setCenterX(fullScreenMagnificationController.getCenterX(displayId)) .setCenterY(fullScreenMagnificationController.getCenterY(displayId)); Loading @@ -86,9 +87,13 @@ public class MagnificationProcessor { final WindowMagnificationManager windowMagnificationManager = mController.getWindowMagnificationMgr(); builder.setMode(mode) .setActivated(mController.isActivated(displayId, MAGNIFICATION_MODE_WINDOW)) .setScale(windowMagnificationManager.getScale(displayId)) .setCenterX(windowMagnificationManager.getCenterX(displayId)) .setCenterY(windowMagnificationManager.getCenterY(displayId)); } else { // For undefined mode, set enabled to false builder.setActivated(false); } return builder.build(); } Loading Loading @@ -118,15 +123,26 @@ public class MagnificationProcessor { if (configMode == MAGNIFICATION_MODE_DEFAULT) { configMode = getControllingMode(displayId); } // Check should activate or deactivate the target mode in config boolean configActivated = config.isActivated(); if (configMode == MAGNIFICATION_MODE_FULLSCREEN) { if (configActivated) { return setScaleAndCenterForFullScreenMagnification(displayId, config.getScale(), config.getCenterX(), config.getCenterY(), animate, id); } else { return resetFullscreenMagnification(displayId, animate); } } else if (configMode == MAGNIFICATION_MODE_WINDOW) { if (configActivated) { return mController.getWindowMagnificationMgr().enableWindowMagnification(displayId, config.getScale(), config.getCenterX(), config.getCenterY(), animate ? STUB_ANIMATION_CALLBACK : null, id); } else { return mController.getWindowMagnificationMgr() .disableWindowMagnification(displayId, false); } } return false; } Loading Loading
core/api/current.txt +2 −0 Original line number Diff line number Diff line Loading @@ -3538,6 +3538,7 @@ package android.accessibilityservice { method public float getCenterY(); method public int getMode(); method public float getScale(); method public boolean isActivated(); method public void writeToParcel(@NonNull android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator<android.accessibilityservice.MagnificationConfig> CREATOR; field public static final int MAGNIFICATION_MODE_DEFAULT = 0; // 0x0 Loading @@ -3548,6 +3549,7 @@ package android.accessibilityservice { public static final class MagnificationConfig.Builder { ctor public MagnificationConfig.Builder(); method @NonNull public android.accessibilityservice.MagnificationConfig build(); method @NonNull public android.accessibilityservice.MagnificationConfig.Builder setActivated(boolean); method @NonNull public android.accessibilityservice.MagnificationConfig.Builder setCenterX(float); method @NonNull public android.accessibilityservice.MagnificationConfig.Builder setCenterY(float); method @NonNull public android.accessibilityservice.MagnificationConfig.Builder setMode(int);
core/java/android/accessibilityservice/MagnificationConfig.java +33 −7 Original line number Diff line number Diff line Loading @@ -76,6 +76,7 @@ public final class MagnificationConfig implements Parcelable { } private int mMode = MAGNIFICATION_MODE_DEFAULT; private boolean mActivated = false; private float mScale = Float.NaN; private float mCenterX = Float.NaN; private float mCenterY = Float.NaN; Loading @@ -86,6 +87,7 @@ public final class MagnificationConfig implements Parcelable { private MagnificationConfig(@NonNull Parcel parcel) { mMode = parcel.readInt(); mActivated = parcel.readBoolean(); mScale = parcel.readFloat(); mCenterX = parcel.readFloat(); mCenterY = parcel.readFloat(); Loading @@ -101,10 +103,21 @@ public final class MagnificationConfig implements Parcelable { return mMode; } /** * Returns the activated state of the controlling magnifier. The controlling magnifier can be * activated even if the scale returned by {@link MagnificationConfig#getScale()} equals to 1.0. * * @return {@code true} if the magnifier is showing on screen, * {@code false} otherwise. */ public boolean isActivated() { return mActivated; } /** * Returns the magnification scale of the controlling magnifier * * @return the scale If the controlling magnifier is not activated, it returns 1 by default * @return The magnification scale */ public float getScale() { return mScale; Loading @@ -113,9 +126,7 @@ public final class MagnificationConfig implements Parcelable { /** * Returns the screen-relative X coordinate of the center of the magnification viewport. * * @return the X coordinate. If the controlling magnifier is {@link #MAGNIFICATION_MODE_WINDOW} * but not enabled, it returns {@link Float#NaN}. If the controlling magnifier is {@link * #MAGNIFICATION_MODE_FULLSCREEN} but not enabled, it returns 0 * @return The X coordinate */ public float getCenterX() { return mCenterX; Loading @@ -124,9 +135,7 @@ public final class MagnificationConfig implements Parcelable { /** * Returns the screen-relative Y coordinate of the center of the magnification viewport. * * @return the Y coordinate If the controlling magnifier is {@link #MAGNIFICATION_MODE_WINDOW} * but not enabled, it returns {@link Float#NaN}. If the controlling magnifier is {@link * #MAGNIFICATION_MODE_FULLSCREEN} but not enabled, it returns 0 * @return The Y coordinate */ public float getCenterY() { return mCenterY; Loading @@ -138,6 +147,8 @@ public final class MagnificationConfig implements Parcelable { StringBuilder stringBuilder = new StringBuilder("MagnificationConfig["); stringBuilder.append("mode: ").append(getMode()); stringBuilder.append(", "); stringBuilder.append("activated: ").append(isActivated()); stringBuilder.append(", "); stringBuilder.append("scale: ").append(getScale()); stringBuilder.append(", "); stringBuilder.append("centerX: ").append(getCenterX()); Loading @@ -155,6 +166,7 @@ public final class MagnificationConfig implements Parcelable { @Override public void writeToParcel(@NonNull Parcel parcel, int flags) { parcel.writeInt(mMode); parcel.writeBoolean(mActivated); parcel.writeFloat(mScale); parcel.writeFloat(mCenterX); parcel.writeFloat(mCenterY); Loading @@ -166,6 +178,7 @@ public final class MagnificationConfig implements Parcelable { public static final class Builder { private int mMode = MAGNIFICATION_MODE_DEFAULT; private boolean mActivated = true; private float mScale = Float.NaN; private float mCenterX = Float.NaN; private float mCenterY = Float.NaN; Loading @@ -188,6 +201,18 @@ public final class MagnificationConfig implements Parcelable { return this; } /** * Sets magnification activated state. * * @param activated The magnification activated state * @return This builder */ @NonNull public MagnificationConfig.Builder setActivated(boolean activated) { mActivated = activated; return this; } /** * Sets the magnification scale. * Loading Loading @@ -237,6 +262,7 @@ public final class MagnificationConfig implements Parcelable { public MagnificationConfig build() { MagnificationConfig magnificationConfig = new MagnificationConfig(); magnificationConfig.mMode = mMode; magnificationConfig.mActivated = mActivated; magnificationConfig.mScale = mScale; magnificationConfig.mCenterX = mCenterX; magnificationConfig.mCenterY = mCenterY; Loading
services/accessibility/java/com/android/server/accessibility/magnification/FullScreenMagnificationController.java +1 −0 Original line number Diff line number Diff line Loading @@ -371,6 +371,7 @@ public class FullScreenMagnificationController implements final MagnificationConfig config = new MagnificationConfig.Builder() .setMode(MAGNIFICATION_MODE_FULLSCREEN) .setActivated(mMagnificationActivated) .setScale(scale) .setCenterX(getCenterX()) .setCenterY(getCenterY()).build(); Loading
services/accessibility/java/com/android/server/accessibility/magnification/MagnificationController.java +22 −9 Original line number Diff line number Diff line Loading @@ -284,6 +284,7 @@ public class MagnificationController implements WindowMagnificationManager.Callb } synchronized (mLock) { final int targetMode = config.getMode(); final boolean targetActivated = config.isActivated(); final PointF currentCenter = getCurrentMagnificationCenterLocked(displayId, targetMode); final PointF magnificationCenter = new PointF(config.getCenterX(), config.getCenterY()); if (currentCenter != null) { Loading @@ -310,20 +311,30 @@ public class MagnificationController implements WindowMagnificationManager.Callb : config.getScale(); try { setTransitionState(displayId, targetMode); // Activate or deactivate target mode depending on config activated value if (targetMode == MAGNIFICATION_MODE_WINDOW) { screenMagnificationController.reset(displayId, false); if (targetActivated) { windowMagnificationMgr.enableWindowMagnification(displayId, targetScale, magnificationCenter.x, magnificationCenter.y, animate ? STUB_ANIMATION_CALLBACK : null, id); } else { windowMagnificationMgr.disableWindowMagnification(displayId, false); } } else if (targetMode == MAGNIFICATION_MODE_FULLSCREEN) { windowMagnificationMgr.disableWindowMagnification(displayId, false, null); if (targetActivated) { if (!screenMagnificationController.isRegistered(displayId)) { screenMagnificationController.register(displayId); } screenMagnificationController.setScaleAndCenter(displayId, targetScale, magnificationCenter.x, magnificationCenter.y, animate, id); } else { if (screenMagnificationController.isRegistered(displayId)) { screenMagnificationController.reset(displayId, false); } } } } finally { // Reset transition state after enabling target mode. Loading Loading @@ -454,6 +465,7 @@ public class MagnificationController implements WindowMagnificationManager.Callb if (shouldNotifyMagnificationChange(displayId, MAGNIFICATION_MODE_WINDOW)) { final MagnificationConfig config = new MagnificationConfig.Builder() .setMode(MAGNIFICATION_MODE_WINDOW) .setActivated(getWindowMagnificationMgr().isWindowMagnifierEnabled(displayId)) .setScale(getWindowMagnificationMgr().getScale(displayId)) .setCenterX(bounds.exactCenterX()) .setCenterY(bounds.exactCenterY()).build(); Loading Loading @@ -834,6 +846,7 @@ public class MagnificationController implements WindowMagnificationManager.Callb new MagnificationConfig.Builder(); Region region = new Region(); configBuilder.setMode(MAGNIFICATION_MODE_FULLSCREEN) .setActivated(screenMagnificationController.isActivated(mDisplayId)) .setScale(screenMagnificationController.getScale(mDisplayId)) .setCenterX(screenMagnificationController.getCenterX(mDisplayId)) .setCenterY(screenMagnificationController.getCenterY(mDisplayId)); Loading
services/accessibility/java/com/android/server/accessibility/magnification/MagnificationProcessor.java +23 −7 Original line number Diff line number Diff line Loading @@ -79,6 +79,7 @@ public class MagnificationProcessor { final FullScreenMagnificationController fullScreenMagnificationController = mController.getFullScreenMagnificationController(); builder.setMode(mode) .setActivated(mController.isActivated(displayId, MAGNIFICATION_MODE_FULLSCREEN)) .setScale(fullScreenMagnificationController.getScale(displayId)) .setCenterX(fullScreenMagnificationController.getCenterX(displayId)) .setCenterY(fullScreenMagnificationController.getCenterY(displayId)); Loading @@ -86,9 +87,13 @@ public class MagnificationProcessor { final WindowMagnificationManager windowMagnificationManager = mController.getWindowMagnificationMgr(); builder.setMode(mode) .setActivated(mController.isActivated(displayId, MAGNIFICATION_MODE_WINDOW)) .setScale(windowMagnificationManager.getScale(displayId)) .setCenterX(windowMagnificationManager.getCenterX(displayId)) .setCenterY(windowMagnificationManager.getCenterY(displayId)); } else { // For undefined mode, set enabled to false builder.setActivated(false); } return builder.build(); } Loading Loading @@ -118,15 +123,26 @@ public class MagnificationProcessor { if (configMode == MAGNIFICATION_MODE_DEFAULT) { configMode = getControllingMode(displayId); } // Check should activate or deactivate the target mode in config boolean configActivated = config.isActivated(); if (configMode == MAGNIFICATION_MODE_FULLSCREEN) { if (configActivated) { return setScaleAndCenterForFullScreenMagnification(displayId, config.getScale(), config.getCenterX(), config.getCenterY(), animate, id); } else { return resetFullscreenMagnification(displayId, animate); } } else if (configMode == MAGNIFICATION_MODE_WINDOW) { if (configActivated) { return mController.getWindowMagnificationMgr().enableWindowMagnification(displayId, config.getScale(), config.getCenterX(), config.getCenterY(), animate ? STUB_ANIMATION_CALLBACK : null, id); } else { return mController.getWindowMagnificationMgr() .disableWindowMagnification(displayId, false); } } return false; } Loading