Loading core/java/android/app/StatusBarManager.java +3 −0 Original line number Diff line number Diff line Loading @@ -90,6 +90,9 @@ public class StatusBarManager { public static final int WINDOW_STATE_HIDING = 1; public static final int WINDOW_STATE_HIDDEN = 2; public static final int CAMERA_LAUNCH_SOURCE_WIGGLE = 0; public static final int CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP = 1; private Context mContext; private IStatusBarService mService; private IBinder mToken = new Binder(); Loading core/java/com/android/internal/statusbar/IStatusBar.aidl +3 −1 Original line number Diff line number Diff line Loading @@ -72,7 +72,9 @@ oneway interface IStatusBar /** * Notifies the status bar that a camera launch gesture has been detected. * * @param source the identifier for the gesture, see {@link StatusBarManager} */ void onCameraLaunchGestureDetected(); void onCameraLaunchGestureDetected(int source); } packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java +4 −4 Original line number Diff line number Diff line Loading @@ -110,7 +110,7 @@ public class CommandQueue extends IStatusBar.Stub { public void appTransitionStarting(long startTime, long duration); public void showAssistDisclosure(); public void startAssist(Bundle args); public void onCameraLaunchGestureDetected(); public void onCameraLaunchGestureDetected(int source); } public CommandQueue(Callbacks callbacks, StatusBarIconList list) { Loading Loading @@ -296,10 +296,10 @@ public class CommandQueue extends IStatusBar.Stub { } @Override public void onCameraLaunchGestureDetected() { public void onCameraLaunchGestureDetected(int source) { synchronized (mList) { mHandler.removeMessages(MSG_CAMERA_LAUNCH_GESTURE); mHandler.obtainMessage(MSG_CAMERA_LAUNCH_GESTURE).sendToTarget(); mHandler.obtainMessage(MSG_CAMERA_LAUNCH_GESTURE, source, 0).sendToTarget(); } } Loading Loading @@ -402,7 +402,7 @@ public class CommandQueue extends IStatusBar.Stub { mCallbacks.startAssist((Bundle) msg.obj); break; case MSG_CAMERA_LAUNCH_GESTURE: mCallbacks.onCameraLaunchGestureDetected(); mCallbacks.onCameraLaunchGestureDetected(msg.arg1); break; } } Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java +11 −3 Original line number Diff line number Diff line Loading @@ -77,6 +77,13 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL final static String TAG = "PhoneStatusBar/KeyguardBottomAreaView"; public static final String CAMERA_LAUNCH_SOURCE_AFFORDANCE = "lockscreen_affordance"; public static final String CAMERA_LAUNCH_SOURCE_WIGGLE = "wiggle_gesture"; public static final String CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP = "power_double_tap"; public static final String EXTRA_CAMERA_LAUNCH_SOURCE = "com.android.systemui.camera_launch_source"; private static final Intent SECURE_CAMERA_INTENT = new Intent(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA_SECURE) .addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); Loading Loading @@ -170,7 +177,7 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL CommandQueue.FLAG_EXCLUDE_RECENTS_PANEL, true /* force */); return true; } else if (host == mCameraImageView) { launchCamera(); launchCamera(CAMERA_LAUNCH_SOURCE_AFFORDANCE); return true; } else if (host == mLeftAffordanceView) { launchLeftAffordance(); Loading Loading @@ -349,7 +356,7 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL @Override public void onClick(View v) { if (v == mCameraImageView) { launchCamera(); launchCamera(CAMERA_LAUNCH_SOURCE_AFFORDANCE); } else if (v == mLeftAffordanceView) { launchLeftAffordance(); } if (v == mLockIcon) { Loading Loading @@ -417,8 +424,9 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL } } public void launchCamera() { public void launchCamera(String source) { final Intent intent = getCameraIntent(); intent.putExtra(EXTRA_CAMERA_LAUNCH_SOURCE, source); boolean wouldLaunchResolverActivity = PreviewInflater.wouldLaunchResolverActivity( mContext, intent, KeyguardUpdateMonitor.getCurrentUser()); if (intent == SECURE_CAMERA_INTENT && !wouldLaunchResolverActivity) { Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java +21 −5 Original line number Diff line number Diff line Loading @@ -22,7 +22,7 @@ import android.animation.ObjectAnimator; import android.animation.PropertyValuesHolder; import android.animation.ValueAnimator; import android.app.ActivityManager; import android.app.ActivityManager.RunningTaskInfo; import android.app.StatusBarManager; import android.content.Context; import android.content.pm.ResolveInfo; import android.content.res.Configuration; Loading Loading @@ -203,6 +203,7 @@ public class NotificationPanelView extends PanelView implements private boolean mClosingWithAlphaFadeOut; private boolean mHeadsUpAnimatingAway; private boolean mLaunchingAffordance; private String mLastCameraLaunchSource = KeyguardBottomAreaView.CAMERA_LAUNCH_SOURCE_AFFORDANCE; private Runnable mHeadsUpExistenceChangedRunnable = new Runnable() { @Override Loading Loading @@ -478,6 +479,7 @@ public class NotificationPanelView extends PanelView implements mUnlockIconActive = false; if (!mLaunchingAffordance) { mAfforanceHelper.reset(false); mLastCameraLaunchSource = KeyguardBottomAreaView.CAMERA_LAUNCH_SOURCE_AFFORDANCE; } closeQs(); mStatusBar.dismissPopups(); Loading Loading @@ -1943,9 +1945,13 @@ public class NotificationPanelView extends PanelView implements EventLogConstants.SYSUI_LOCKSCREEN_GESTURE_SWIPE_DIALER, lengthDp, velocityDp); mKeyguardBottomArea.launchLeftAffordance(); } else { if (KeyguardBottomAreaView.CAMERA_LAUNCH_SOURCE_AFFORDANCE.equals( mLastCameraLaunchSource)) { EventLogTags.writeSysuiLockscreenGesture( EventLogConstants.SYSUI_LOCKSCREEN_GESTURE_SWIPE_CAMERA, lengthDp, velocityDp); mKeyguardBottomArea.launchCamera(); EventLogConstants.SYSUI_LOCKSCREEN_GESTURE_SWIPE_CAMERA, lengthDp, velocityDp); } mKeyguardBottomArea.launchCamera(mLastCameraLaunchSource); } mStatusBar.startLaunchTransitionTimeout(); mBlockTouches = true; Loading Loading @@ -2383,7 +2389,17 @@ public class NotificationPanelView extends PanelView implements return !mDozing; } public void launchCamera(boolean animate) { public void launchCamera(boolean animate, int source) { if (source == StatusBarManager.CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP) { mLastCameraLaunchSource = KeyguardBottomAreaView.CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP; } else if (source == StatusBarManager.CAMERA_LAUNCH_SOURCE_WIGGLE) { mLastCameraLaunchSource = KeyguardBottomAreaView.CAMERA_LAUNCH_SOURCE_WIGGLE; } else { // Default. mLastCameraLaunchSource = KeyguardBottomAreaView.CAMERA_LAUNCH_SOURCE_AFFORDANCE; } // If we are launching it when we are occluded already we don't want it to animate, // nor setting these flags, since the occluded state doesn't change anymore, hence it's // never reset. Loading Loading
core/java/android/app/StatusBarManager.java +3 −0 Original line number Diff line number Diff line Loading @@ -90,6 +90,9 @@ public class StatusBarManager { public static final int WINDOW_STATE_HIDING = 1; public static final int WINDOW_STATE_HIDDEN = 2; public static final int CAMERA_LAUNCH_SOURCE_WIGGLE = 0; public static final int CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP = 1; private Context mContext; private IStatusBarService mService; private IBinder mToken = new Binder(); Loading
core/java/com/android/internal/statusbar/IStatusBar.aidl +3 −1 Original line number Diff line number Diff line Loading @@ -72,7 +72,9 @@ oneway interface IStatusBar /** * Notifies the status bar that a camera launch gesture has been detected. * * @param source the identifier for the gesture, see {@link StatusBarManager} */ void onCameraLaunchGestureDetected(); void onCameraLaunchGestureDetected(int source); }
packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java +4 −4 Original line number Diff line number Diff line Loading @@ -110,7 +110,7 @@ public class CommandQueue extends IStatusBar.Stub { public void appTransitionStarting(long startTime, long duration); public void showAssistDisclosure(); public void startAssist(Bundle args); public void onCameraLaunchGestureDetected(); public void onCameraLaunchGestureDetected(int source); } public CommandQueue(Callbacks callbacks, StatusBarIconList list) { Loading Loading @@ -296,10 +296,10 @@ public class CommandQueue extends IStatusBar.Stub { } @Override public void onCameraLaunchGestureDetected() { public void onCameraLaunchGestureDetected(int source) { synchronized (mList) { mHandler.removeMessages(MSG_CAMERA_LAUNCH_GESTURE); mHandler.obtainMessage(MSG_CAMERA_LAUNCH_GESTURE).sendToTarget(); mHandler.obtainMessage(MSG_CAMERA_LAUNCH_GESTURE, source, 0).sendToTarget(); } } Loading Loading @@ -402,7 +402,7 @@ public class CommandQueue extends IStatusBar.Stub { mCallbacks.startAssist((Bundle) msg.obj); break; case MSG_CAMERA_LAUNCH_GESTURE: mCallbacks.onCameraLaunchGestureDetected(); mCallbacks.onCameraLaunchGestureDetected(msg.arg1); break; } } Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java +11 −3 Original line number Diff line number Diff line Loading @@ -77,6 +77,13 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL final static String TAG = "PhoneStatusBar/KeyguardBottomAreaView"; public static final String CAMERA_LAUNCH_SOURCE_AFFORDANCE = "lockscreen_affordance"; public static final String CAMERA_LAUNCH_SOURCE_WIGGLE = "wiggle_gesture"; public static final String CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP = "power_double_tap"; public static final String EXTRA_CAMERA_LAUNCH_SOURCE = "com.android.systemui.camera_launch_source"; private static final Intent SECURE_CAMERA_INTENT = new Intent(MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA_SECURE) .addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); Loading Loading @@ -170,7 +177,7 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL CommandQueue.FLAG_EXCLUDE_RECENTS_PANEL, true /* force */); return true; } else if (host == mCameraImageView) { launchCamera(); launchCamera(CAMERA_LAUNCH_SOURCE_AFFORDANCE); return true; } else if (host == mLeftAffordanceView) { launchLeftAffordance(); Loading Loading @@ -349,7 +356,7 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL @Override public void onClick(View v) { if (v == mCameraImageView) { launchCamera(); launchCamera(CAMERA_LAUNCH_SOURCE_AFFORDANCE); } else if (v == mLeftAffordanceView) { launchLeftAffordance(); } if (v == mLockIcon) { Loading Loading @@ -417,8 +424,9 @@ public class KeyguardBottomAreaView extends FrameLayout implements View.OnClickL } } public void launchCamera() { public void launchCamera(String source) { final Intent intent = getCameraIntent(); intent.putExtra(EXTRA_CAMERA_LAUNCH_SOURCE, source); boolean wouldLaunchResolverActivity = PreviewInflater.wouldLaunchResolverActivity( mContext, intent, KeyguardUpdateMonitor.getCurrentUser()); if (intent == SECURE_CAMERA_INTENT && !wouldLaunchResolverActivity) { Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java +21 −5 Original line number Diff line number Diff line Loading @@ -22,7 +22,7 @@ import android.animation.ObjectAnimator; import android.animation.PropertyValuesHolder; import android.animation.ValueAnimator; import android.app.ActivityManager; import android.app.ActivityManager.RunningTaskInfo; import android.app.StatusBarManager; import android.content.Context; import android.content.pm.ResolveInfo; import android.content.res.Configuration; Loading Loading @@ -203,6 +203,7 @@ public class NotificationPanelView extends PanelView implements private boolean mClosingWithAlphaFadeOut; private boolean mHeadsUpAnimatingAway; private boolean mLaunchingAffordance; private String mLastCameraLaunchSource = KeyguardBottomAreaView.CAMERA_LAUNCH_SOURCE_AFFORDANCE; private Runnable mHeadsUpExistenceChangedRunnable = new Runnable() { @Override Loading Loading @@ -478,6 +479,7 @@ public class NotificationPanelView extends PanelView implements mUnlockIconActive = false; if (!mLaunchingAffordance) { mAfforanceHelper.reset(false); mLastCameraLaunchSource = KeyguardBottomAreaView.CAMERA_LAUNCH_SOURCE_AFFORDANCE; } closeQs(); mStatusBar.dismissPopups(); Loading Loading @@ -1943,9 +1945,13 @@ public class NotificationPanelView extends PanelView implements EventLogConstants.SYSUI_LOCKSCREEN_GESTURE_SWIPE_DIALER, lengthDp, velocityDp); mKeyguardBottomArea.launchLeftAffordance(); } else { if (KeyguardBottomAreaView.CAMERA_LAUNCH_SOURCE_AFFORDANCE.equals( mLastCameraLaunchSource)) { EventLogTags.writeSysuiLockscreenGesture( EventLogConstants.SYSUI_LOCKSCREEN_GESTURE_SWIPE_CAMERA, lengthDp, velocityDp); mKeyguardBottomArea.launchCamera(); EventLogConstants.SYSUI_LOCKSCREEN_GESTURE_SWIPE_CAMERA, lengthDp, velocityDp); } mKeyguardBottomArea.launchCamera(mLastCameraLaunchSource); } mStatusBar.startLaunchTransitionTimeout(); mBlockTouches = true; Loading Loading @@ -2383,7 +2389,17 @@ public class NotificationPanelView extends PanelView implements return !mDozing; } public void launchCamera(boolean animate) { public void launchCamera(boolean animate, int source) { if (source == StatusBarManager.CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP) { mLastCameraLaunchSource = KeyguardBottomAreaView.CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP; } else if (source == StatusBarManager.CAMERA_LAUNCH_SOURCE_WIGGLE) { mLastCameraLaunchSource = KeyguardBottomAreaView.CAMERA_LAUNCH_SOURCE_WIGGLE; } else { // Default. mLastCameraLaunchSource = KeyguardBottomAreaView.CAMERA_LAUNCH_SOURCE_AFFORDANCE; } // If we are launching it when we are occluded already we don't want it to animate, // nor setting these flags, since the occluded state doesn't change anymore, hence it's // never reset. Loading