Skip to content

Commit dbe24b7

Browse files
author
John Spurlock
committed
Cancel camera launch on screen off.
Bug: 7452793 Change-Id: Ic043a0076154d2ce4dcb0b26bae3958c35a6cd67
1 parent 6e36f10 commit dbe24b7

File tree

3 files changed

+28
-2
lines changed

3 files changed

+28
-2
lines changed

policy/src/com/android/internal/policy/impl/keyguard/CameraWidgetFrame.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,10 @@ interface Callbacks {
6464
private final Runnable mLaunchCameraRunnable = new Runnable() {
6565
@Override
6666
public void run() {
67+
if (!mTransitioning)
68+
return;
6769
mLaunchCameraStart = SystemClock.uptimeMillis();
70+
if (DEBUG) Log.d(TAG, "Launching camera at " + mLaunchCameraStart);
6871
mActivityLauncher.launchCamera();
6972
}};
7073

@@ -274,7 +277,7 @@ public boolean onUserInteraction(int action) {
274277

275278
@Override
276279
protected void onFocusLost() {
277-
Log.d(TAG, "onFocusLost");
280+
if (DEBUG) Log.d(TAG, "onFocusLost");
278281
cancelTransitionToCamera();
279282
super.onFocusLost();
280283
}
@@ -293,6 +296,11 @@ public void onChallengeActive(boolean challengeActive) {
293296
}
294297
}
295298

299+
public void onScreenTurnedOff() {
300+
if (DEBUG) Log.d(TAG, "onScreenTurnedOff");
301+
reset();
302+
}
303+
296304
private void rescheduleTransitionToCamera() {
297305
if (DEBUG) Log.d(TAG, "rescheduleTransitionToCamera at " + SystemClock.uptimeMillis());
298306
mHandler.removeCallbacks(mTransitionToCameraRunnable);

policy/src/com/android/internal/policy/impl/keyguard/KeyguardActivityLauncher.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import android.content.pm.ResolveInfo;
2626
import android.os.Bundle;
2727
import android.os.RemoteException;
28+
import android.os.SystemClock;
2829
import android.os.UserHandle;
2930
import android.provider.MediaStore;
3031
import android.util.Log;
@@ -132,6 +133,8 @@ public void launchActivity(final Intent intent, boolean showsWhileLocked, boolea
132133
Log.w(TAG, "can't dismiss keyguard on launch");
133134
}
134135
try {
136+
if (DEBUG) Log.d(TAG, String.format("Starting activity for intent %s at %s",
137+
intent, SystemClock.uptimeMillis()));
135138
context.startActivityAsUser(intent, animation,
136139
new UserHandle(UserHandle.USER_CURRENT));
137140
} catch (ActivityNotFoundException e) {

policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
import android.os.Looper;
4040
import android.os.Parcel;
4141
import android.os.Parcelable;
42+
import android.os.SystemClock;
4243
import android.os.UserHandle;
4344
import android.os.UserManager;
4445
import android.util.AttributeSet;
@@ -708,13 +709,18 @@ public void onScreenTurnedOn() {
708709

709710
@Override
710711
public void onScreenTurnedOff() {
711-
if (DEBUG) Log.d(TAG, "screen off, instance " + Integer.toHexString(hashCode()));
712+
if (DEBUG) Log.d(TAG, String.format("screen off, instance %s at %s",
713+
Integer.toHexString(hashCode()), SystemClock.uptimeMillis()));
712714
// Once the screen turns off, we no longer consider this to be first boot and we want the
713715
// biometric unlock to start next time keyguard is shown.
714716
KeyguardUpdateMonitor.getInstance(mContext).setAlternateUnlockEnabled(true);
715717
saveStickyWidgetIndex();
716718
showPrimarySecurityScreen(true);
717719
getSecurityView(mCurrentSecuritySelection).onPause();
720+
CameraWidgetFrame cameraPage = findCameraPage();
721+
if (cameraPage != null) {
722+
cameraPage.onScreenTurnedOff();
723+
}
718724
}
719725

720726
@Override
@@ -1140,6 +1146,15 @@ private void showAppropriateWidgetPage() {
11401146
mAppWidgetContainer.setCurrentPage(pageToShow);
11411147
}
11421148

1149+
private CameraWidgetFrame findCameraPage() {
1150+
for (int i = mAppWidgetContainer.getChildCount() - 1; i >= 0; i--) {
1151+
if (isCameraPage(i)) {
1152+
return (CameraWidgetFrame) mAppWidgetContainer.getChildAt(i);
1153+
}
1154+
}
1155+
return null;
1156+
}
1157+
11431158
private boolean isCameraPage(int pageIndex) {
11441159
View v = mAppWidgetContainer.getChildAt(pageIndex);
11451160
return v != null && v instanceof CameraWidgetFrame;

0 commit comments

Comments
 (0)