Loading packages/SystemUI/src/com/android/systemui/dock/DockManager.java +5 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,11 @@ public interface DockManager { */ void removeListener(DockEventListener callback); /** * Returns true if the device is in docking state. */ boolean isDocked(); /** Callback for receiving dock events */ interface DockEventListener { /** Loading packages/SystemUI/src/com/android/systemui/doze/DozeDockHandler.java +2 −3 Original line number Diff line number Diff line Loading @@ -22,7 +22,6 @@ import android.os.UserHandle; import android.util.Log; import com.android.internal.hardware.AmbientDisplayConfiguration; import com.android.systemui.SysUiServiceProvider; import com.android.systemui.dock.DockManager; import com.android.systemui.doze.DozeMachine.State; Loading @@ -46,12 +45,12 @@ public class DozeDockHandler implements DozeMachine.Part { private int mDockState = DockManager.STATE_NONE; public DozeDockHandler(Context context, DozeMachine machine, DozeHost dozeHost, AmbientDisplayConfiguration config, Handler handler) { AmbientDisplayConfiguration config, Handler handler, DockManager dockManager) { mMachine = machine; mDozeHost = dozeHost; mConfig = config; mHandler = handler; mDockManager = SysUiServiceProvider.getComponent(context, DockManager.class); mDockManager = dockManager; } @Override Loading packages/SystemUI/src/com/android/systemui/doze/DozeFactory.java +8 −4 Original line number Diff line number Diff line Loading @@ -27,8 +27,10 @@ import com.android.internal.hardware.AmbientDisplayConfiguration; import com.android.keyguard.KeyguardUpdateMonitor; import com.android.systemui.Dependency; import com.android.systemui.R; import com.android.systemui.SysUiServiceProvider; import com.android.systemui.SystemUIApplication; import com.android.systemui.classifier.FalsingManager; import com.android.systemui.dock.DockManager; import com.android.systemui.statusbar.phone.DozeParameters; import com.android.systemui.util.AsyncSensorManager; import com.android.systemui.util.wakelock.DelayedWakeLock; Loading @@ -44,6 +46,7 @@ public class DozeFactory { Context context = dozeService; SensorManager sensorManager = Dependency.get(AsyncSensorManager.class); AlarmManager alarmManager = context.getSystemService(AlarmManager.class); DockManager dockManager = SysUiServiceProvider.getComponent(context, DockManager.class); DozeHost host = getHost(dozeService); AmbientDisplayConfiguration config = new AmbientDisplayConfiguration(context); Loading @@ -63,13 +66,13 @@ public class DozeFactory { new DozePauser(handler, machine, alarmManager, params.getPolicy()), new DozeFalsingManagerAdapter(FalsingManager.getInstance(context)), createDozeTriggers(context, sensorManager, host, alarmManager, config, params, handler, wakeLock, machine), handler, wakeLock, machine, dockManager), createDozeUi(context, host, wakeLock, machine, handler, alarmManager, params), new DozeScreenState(wrappedService, handler, params, wakeLock), createDozeScreenBrightness(context, wrappedService, sensorManager, host, params, handler), new DozeWallpaperState(context), new DozeDockHandler(context, machine, host, config, handler) new DozeDockHandler(context, machine, host, config, handler, dockManager) }); return machine; Loading @@ -86,10 +89,11 @@ public class DozeFactory { private DozeTriggers createDozeTriggers(Context context, SensorManager sensorManager, DozeHost host, AlarmManager alarmManager, AmbientDisplayConfiguration config, DozeParameters params, Handler handler, WakeLock wakeLock, DozeMachine machine) { DozeParameters params, Handler handler, WakeLock wakeLock, DozeMachine machine, DockManager dockManager) { boolean allowPulseTriggers = true; return new DozeTriggers(context, machine, host, alarmManager, config, params, sensorManager, handler, wakeLock, allowPulseTriggers); sensorManager, handler, wakeLock, allowPulseTriggers, dockManager); } private DozeMachine.Part createDozeUi(Context context, DozeHost host, WakeLock wakeLock, Loading packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java +30 −2 Original line number Diff line number Diff line Loading @@ -214,6 +214,15 @@ public class DozeSensors { mPickupSensor.setDisabled(disable); } /** Ignore the setting value of only the sensors that require the touchscreen. */ public void ignoreTouchScreenSensorsSettingInterferingWithDocking(boolean ignore) { for (TriggerSensor sensor : mSensors) { if (sensor.mRequiresTouchscreen) { sensor.ignoreSetting(ignore); } } } /** Dump current state */ public void dump(PrintWriter pw) { for (TriggerSensor s : mSensors) { Loading Loading @@ -323,6 +332,7 @@ public class DozeSensors { protected boolean mRequested; protected boolean mRegistered; protected boolean mDisabled; protected boolean mIgnoresSetting; public TriggerSensor(Sensor sensor, String setting, boolean configured, int pulseReason, boolean reportsTouchCoordinates, boolean requiresTouchscreen) { Loading @@ -333,6 +343,13 @@ public class DozeSensors { public TriggerSensor(Sensor sensor, String setting, boolean settingDef, boolean configured, int pulseReason, boolean reportsTouchCoordinates, boolean requiresTouchscreen) { this(sensor, setting, settingDef, configured, pulseReason, reportsTouchCoordinates, requiresTouchscreen, false /* ignoresSetting */); } private TriggerSensor(Sensor sensor, String setting, boolean settingDef, boolean configured, int pulseReason, boolean reportsTouchCoordinates, boolean requiresTouchscreen, boolean ignoresSetting) { mSensor = sensor; mSetting = setting; mSettingDefault = settingDef; Loading @@ -340,6 +357,7 @@ public class DozeSensors { mPulseReason = pulseReason; mReportsTouchCoordinates = reportsTouchCoordinates; mRequiresTouchscreen = requiresTouchscreen; mIgnoresSetting = ignoresSetting; } public void setListening(boolean listen) { Loading @@ -354,9 +372,16 @@ public class DozeSensors { updateListener(); } public void ignoreSetting(boolean ignored) { if (mIgnoresSetting == ignored) return; mIgnoresSetting = ignored; updateListener(); } public void updateListener() { if (!mConfigured || mSensor == null) return; if (mRequested && !mDisabled && enabledBySetting() && !mRegistered) { if (mRequested && !mDisabled && (enabledBySetting() || mIgnoresSetting) && !mRegistered) { mRegistered = mSensorManager.requestTriggerSensor(this, mSensor); if (DEBUG) Log.d(TAG, "requestTriggerSensor " + mRegistered); } else if (mRegistered) { Loading @@ -382,6 +407,7 @@ public class DozeSensors { .append(", mRequested=").append(mRequested) .append(", mDisabled=").append(mDisabled) .append(", mConfigured=").append(mConfigured) .append(", mIgnoresSetting=").append(mIgnoresSetting) .append(", mSensor=").append(mSensor).append("}").toString(); } Loading Loading @@ -464,7 +490,8 @@ public class DozeSensors { public void updateListener() { if (!mConfigured) return; AsyncSensorManager asyncSensorManager = (AsyncSensorManager) mSensorManager; if (mRequested && !mDisabled && enabledBySetting() && !mRegistered) { if (mRequested && !mDisabled && (enabledBySetting() || mIgnoresSetting) && !mRegistered) { asyncSensorManager.registerPluginListener(mPluginSensor, mTriggerEventListener); mRegistered = true; if (DEBUG) Log.d(TAG, "registerPluginListener"); Loading @@ -481,6 +508,7 @@ public class DozeSensors { .append(", mRequested=").append(mRequested) .append(", mDisabled=").append(mDisabled) .append(", mConfigured=").append(mConfigured) .append(", mIgnoresSetting=").append(mIgnoresSetting) .append(", mSensor=").append(mPluginSensor).append("}").toString(); } Loading packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java +29 −3 Original line number Diff line number Diff line Loading @@ -33,8 +33,10 @@ import android.os.UserHandle; import android.text.format.Formatter; import android.util.Log; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.hardware.AmbientDisplayConfiguration; import com.android.internal.util.Preconditions; import com.android.systemui.dock.DockManager; import com.android.systemui.statusbar.phone.DozeParameters; import com.android.systemui.util.Assert; import com.android.systemui.util.wakelock.WakeLock; Loading Loading @@ -71,6 +73,8 @@ public class DozeTriggers implements DozeMachine.Part { private final boolean mAllowPulseTriggers; private final UiModeManager mUiModeManager; private final TriggerReceiver mBroadcastReceiver = new TriggerReceiver(); private final DockEventListener mDockEventListener = new DockEventListener(); private final DockManager mDockManager; private long mNotificationPulseTime; private boolean mPulsePending; Loading @@ -79,7 +83,7 @@ public class DozeTriggers implements DozeMachine.Part { public DozeTriggers(Context context, DozeMachine machine, DozeHost dozeHost, AlarmManager alarmManager, AmbientDisplayConfiguration config, DozeParameters dozeParameters, SensorManager sensorManager, Handler handler, WakeLock wakeLock, boolean allowPulseTriggers) { WakeLock wakeLock, boolean allowPulseTriggers, DockManager dockManager) { mContext = context; mMachine = machine; mDozeHost = dozeHost; Loading @@ -93,6 +97,7 @@ public class DozeTriggers implements DozeMachine.Part { config, wakeLock, this::onSensor, this::onProximityFar, dozeParameters.getPolicy()); mUiModeManager = mContext.getSystemService(UiModeManager.class); mDockManager = dockManager; } private void onNotification() { Loading Loading @@ -129,7 +134,8 @@ public class DozeTriggers implements DozeMachine.Part { } } private void onSensor(int pulseReason, boolean sensorPerformedProxCheck, @VisibleForTesting void onSensor(int pulseReason, boolean sensorPerformedProxCheck, float screenX, float screenY, float[] rawValues) { boolean isDoubleTap = pulseReason == DozeLog.PULSE_REASON_SENSOR_DOUBLE_TAP; boolean isTap = pulseReason == DozeLog.PULSE_REASON_SENSOR_TAP; Loading Loading @@ -159,7 +165,7 @@ public class DozeTriggers implements DozeMachine.Part { } else { mDozeHost.extendPulse(); } }, sensorPerformedProxCheck, pulseReason); }, sensorPerformedProxCheck || mDockManager.isDocked(), pulseReason); } if (isPickup) { Loading Loading @@ -223,6 +229,7 @@ public class DozeTriggers implements DozeMachine.Part { case INITIALIZED: mBroadcastReceiver.register(mContext); mDozeHost.addCallback(mHostCallback); mDockManager.addListener(mDockEventListener); checkTriggersAtInit(); break; case DOZE: Loading @@ -248,6 +255,7 @@ public class DozeTriggers implements DozeMachine.Part { case FINISH: mBroadcastReceiver.unregister(mContext); mDozeHost.removeCallback(mHostCallback); mDockManager.removeListener(mDockEventListener); mDozeSensors.setListening(false); mDozeSensors.setProxListening(false); break; Loading Loading @@ -423,6 +431,24 @@ public class DozeTriggers implements DozeMachine.Part { } } private class DockEventListener implements DockManager.DockEventListener { @Override public void onEvent(int event) { if (DEBUG) Log.d(TAG, "dock event = " + event); switch (event) { case DockManager.STATE_DOCKED: case DockManager.STATE_DOCKED_HIDE: mDozeSensors.ignoreTouchScreenSensorsSettingInterferingWithDocking(true); break; case DockManager.STATE_NONE: mDozeSensors.ignoreTouchScreenSensorsSettingInterferingWithDocking(false); break; default: // no-op } } } private DozeHost.Callback mHostCallback = new DozeHost.Callback() { @Override public void onNotificationAlerted() { Loading Loading
packages/SystemUI/src/com/android/systemui/dock/DockManager.java +5 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,11 @@ public interface DockManager { */ void removeListener(DockEventListener callback); /** * Returns true if the device is in docking state. */ boolean isDocked(); /** Callback for receiving dock events */ interface DockEventListener { /** Loading
packages/SystemUI/src/com/android/systemui/doze/DozeDockHandler.java +2 −3 Original line number Diff line number Diff line Loading @@ -22,7 +22,6 @@ import android.os.UserHandle; import android.util.Log; import com.android.internal.hardware.AmbientDisplayConfiguration; import com.android.systemui.SysUiServiceProvider; import com.android.systemui.dock.DockManager; import com.android.systemui.doze.DozeMachine.State; Loading @@ -46,12 +45,12 @@ public class DozeDockHandler implements DozeMachine.Part { private int mDockState = DockManager.STATE_NONE; public DozeDockHandler(Context context, DozeMachine machine, DozeHost dozeHost, AmbientDisplayConfiguration config, Handler handler) { AmbientDisplayConfiguration config, Handler handler, DockManager dockManager) { mMachine = machine; mDozeHost = dozeHost; mConfig = config; mHandler = handler; mDockManager = SysUiServiceProvider.getComponent(context, DockManager.class); mDockManager = dockManager; } @Override Loading
packages/SystemUI/src/com/android/systemui/doze/DozeFactory.java +8 −4 Original line number Diff line number Diff line Loading @@ -27,8 +27,10 @@ import com.android.internal.hardware.AmbientDisplayConfiguration; import com.android.keyguard.KeyguardUpdateMonitor; import com.android.systemui.Dependency; import com.android.systemui.R; import com.android.systemui.SysUiServiceProvider; import com.android.systemui.SystemUIApplication; import com.android.systemui.classifier.FalsingManager; import com.android.systemui.dock.DockManager; import com.android.systemui.statusbar.phone.DozeParameters; import com.android.systemui.util.AsyncSensorManager; import com.android.systemui.util.wakelock.DelayedWakeLock; Loading @@ -44,6 +46,7 @@ public class DozeFactory { Context context = dozeService; SensorManager sensorManager = Dependency.get(AsyncSensorManager.class); AlarmManager alarmManager = context.getSystemService(AlarmManager.class); DockManager dockManager = SysUiServiceProvider.getComponent(context, DockManager.class); DozeHost host = getHost(dozeService); AmbientDisplayConfiguration config = new AmbientDisplayConfiguration(context); Loading @@ -63,13 +66,13 @@ public class DozeFactory { new DozePauser(handler, machine, alarmManager, params.getPolicy()), new DozeFalsingManagerAdapter(FalsingManager.getInstance(context)), createDozeTriggers(context, sensorManager, host, alarmManager, config, params, handler, wakeLock, machine), handler, wakeLock, machine, dockManager), createDozeUi(context, host, wakeLock, machine, handler, alarmManager, params), new DozeScreenState(wrappedService, handler, params, wakeLock), createDozeScreenBrightness(context, wrappedService, sensorManager, host, params, handler), new DozeWallpaperState(context), new DozeDockHandler(context, machine, host, config, handler) new DozeDockHandler(context, machine, host, config, handler, dockManager) }); return machine; Loading @@ -86,10 +89,11 @@ public class DozeFactory { private DozeTriggers createDozeTriggers(Context context, SensorManager sensorManager, DozeHost host, AlarmManager alarmManager, AmbientDisplayConfiguration config, DozeParameters params, Handler handler, WakeLock wakeLock, DozeMachine machine) { DozeParameters params, Handler handler, WakeLock wakeLock, DozeMachine machine, DockManager dockManager) { boolean allowPulseTriggers = true; return new DozeTriggers(context, machine, host, alarmManager, config, params, sensorManager, handler, wakeLock, allowPulseTriggers); sensorManager, handler, wakeLock, allowPulseTriggers, dockManager); } private DozeMachine.Part createDozeUi(Context context, DozeHost host, WakeLock wakeLock, Loading
packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java +30 −2 Original line number Diff line number Diff line Loading @@ -214,6 +214,15 @@ public class DozeSensors { mPickupSensor.setDisabled(disable); } /** Ignore the setting value of only the sensors that require the touchscreen. */ public void ignoreTouchScreenSensorsSettingInterferingWithDocking(boolean ignore) { for (TriggerSensor sensor : mSensors) { if (sensor.mRequiresTouchscreen) { sensor.ignoreSetting(ignore); } } } /** Dump current state */ public void dump(PrintWriter pw) { for (TriggerSensor s : mSensors) { Loading Loading @@ -323,6 +332,7 @@ public class DozeSensors { protected boolean mRequested; protected boolean mRegistered; protected boolean mDisabled; protected boolean mIgnoresSetting; public TriggerSensor(Sensor sensor, String setting, boolean configured, int pulseReason, boolean reportsTouchCoordinates, boolean requiresTouchscreen) { Loading @@ -333,6 +343,13 @@ public class DozeSensors { public TriggerSensor(Sensor sensor, String setting, boolean settingDef, boolean configured, int pulseReason, boolean reportsTouchCoordinates, boolean requiresTouchscreen) { this(sensor, setting, settingDef, configured, pulseReason, reportsTouchCoordinates, requiresTouchscreen, false /* ignoresSetting */); } private TriggerSensor(Sensor sensor, String setting, boolean settingDef, boolean configured, int pulseReason, boolean reportsTouchCoordinates, boolean requiresTouchscreen, boolean ignoresSetting) { mSensor = sensor; mSetting = setting; mSettingDefault = settingDef; Loading @@ -340,6 +357,7 @@ public class DozeSensors { mPulseReason = pulseReason; mReportsTouchCoordinates = reportsTouchCoordinates; mRequiresTouchscreen = requiresTouchscreen; mIgnoresSetting = ignoresSetting; } public void setListening(boolean listen) { Loading @@ -354,9 +372,16 @@ public class DozeSensors { updateListener(); } public void ignoreSetting(boolean ignored) { if (mIgnoresSetting == ignored) return; mIgnoresSetting = ignored; updateListener(); } public void updateListener() { if (!mConfigured || mSensor == null) return; if (mRequested && !mDisabled && enabledBySetting() && !mRegistered) { if (mRequested && !mDisabled && (enabledBySetting() || mIgnoresSetting) && !mRegistered) { mRegistered = mSensorManager.requestTriggerSensor(this, mSensor); if (DEBUG) Log.d(TAG, "requestTriggerSensor " + mRegistered); } else if (mRegistered) { Loading @@ -382,6 +407,7 @@ public class DozeSensors { .append(", mRequested=").append(mRequested) .append(", mDisabled=").append(mDisabled) .append(", mConfigured=").append(mConfigured) .append(", mIgnoresSetting=").append(mIgnoresSetting) .append(", mSensor=").append(mSensor).append("}").toString(); } Loading Loading @@ -464,7 +490,8 @@ public class DozeSensors { public void updateListener() { if (!mConfigured) return; AsyncSensorManager asyncSensorManager = (AsyncSensorManager) mSensorManager; if (mRequested && !mDisabled && enabledBySetting() && !mRegistered) { if (mRequested && !mDisabled && (enabledBySetting() || mIgnoresSetting) && !mRegistered) { asyncSensorManager.registerPluginListener(mPluginSensor, mTriggerEventListener); mRegistered = true; if (DEBUG) Log.d(TAG, "registerPluginListener"); Loading @@ -481,6 +508,7 @@ public class DozeSensors { .append(", mRequested=").append(mRequested) .append(", mDisabled=").append(mDisabled) .append(", mConfigured=").append(mConfigured) .append(", mIgnoresSetting=").append(mIgnoresSetting) .append(", mSensor=").append(mPluginSensor).append("}").toString(); } Loading
packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java +29 −3 Original line number Diff line number Diff line Loading @@ -33,8 +33,10 @@ import android.os.UserHandle; import android.text.format.Formatter; import android.util.Log; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.hardware.AmbientDisplayConfiguration; import com.android.internal.util.Preconditions; import com.android.systemui.dock.DockManager; import com.android.systemui.statusbar.phone.DozeParameters; import com.android.systemui.util.Assert; import com.android.systemui.util.wakelock.WakeLock; Loading Loading @@ -71,6 +73,8 @@ public class DozeTriggers implements DozeMachine.Part { private final boolean mAllowPulseTriggers; private final UiModeManager mUiModeManager; private final TriggerReceiver mBroadcastReceiver = new TriggerReceiver(); private final DockEventListener mDockEventListener = new DockEventListener(); private final DockManager mDockManager; private long mNotificationPulseTime; private boolean mPulsePending; Loading @@ -79,7 +83,7 @@ public class DozeTriggers implements DozeMachine.Part { public DozeTriggers(Context context, DozeMachine machine, DozeHost dozeHost, AlarmManager alarmManager, AmbientDisplayConfiguration config, DozeParameters dozeParameters, SensorManager sensorManager, Handler handler, WakeLock wakeLock, boolean allowPulseTriggers) { WakeLock wakeLock, boolean allowPulseTriggers, DockManager dockManager) { mContext = context; mMachine = machine; mDozeHost = dozeHost; Loading @@ -93,6 +97,7 @@ public class DozeTriggers implements DozeMachine.Part { config, wakeLock, this::onSensor, this::onProximityFar, dozeParameters.getPolicy()); mUiModeManager = mContext.getSystemService(UiModeManager.class); mDockManager = dockManager; } private void onNotification() { Loading Loading @@ -129,7 +134,8 @@ public class DozeTriggers implements DozeMachine.Part { } } private void onSensor(int pulseReason, boolean sensorPerformedProxCheck, @VisibleForTesting void onSensor(int pulseReason, boolean sensorPerformedProxCheck, float screenX, float screenY, float[] rawValues) { boolean isDoubleTap = pulseReason == DozeLog.PULSE_REASON_SENSOR_DOUBLE_TAP; boolean isTap = pulseReason == DozeLog.PULSE_REASON_SENSOR_TAP; Loading Loading @@ -159,7 +165,7 @@ public class DozeTriggers implements DozeMachine.Part { } else { mDozeHost.extendPulse(); } }, sensorPerformedProxCheck, pulseReason); }, sensorPerformedProxCheck || mDockManager.isDocked(), pulseReason); } if (isPickup) { Loading Loading @@ -223,6 +229,7 @@ public class DozeTriggers implements DozeMachine.Part { case INITIALIZED: mBroadcastReceiver.register(mContext); mDozeHost.addCallback(mHostCallback); mDockManager.addListener(mDockEventListener); checkTriggersAtInit(); break; case DOZE: Loading @@ -248,6 +255,7 @@ public class DozeTriggers implements DozeMachine.Part { case FINISH: mBroadcastReceiver.unregister(mContext); mDozeHost.removeCallback(mHostCallback); mDockManager.removeListener(mDockEventListener); mDozeSensors.setListening(false); mDozeSensors.setProxListening(false); break; Loading Loading @@ -423,6 +431,24 @@ public class DozeTriggers implements DozeMachine.Part { } } private class DockEventListener implements DockManager.DockEventListener { @Override public void onEvent(int event) { if (DEBUG) Log.d(TAG, "dock event = " + event); switch (event) { case DockManager.STATE_DOCKED: case DockManager.STATE_DOCKED_HIDE: mDozeSensors.ignoreTouchScreenSensorsSettingInterferingWithDocking(true); break; case DockManager.STATE_NONE: mDozeSensors.ignoreTouchScreenSensorsSettingInterferingWithDocking(false); break; default: // no-op } } } private DozeHost.Callback mHostCallback = new DozeHost.Callback() { @Override public void onNotificationAlerted() { Loading