public void launchCamera(Handler worker, Runnable onSecureCameraStarted) {
    LockPatternUtils lockPatternUtils = getLockPatternUtils();

    // Workaround to avoid camera release/acquisition race when resuming face unlock
    // after showing lockscreen camera (bug 11063890).
    KeyguardUpdateMonitor updateMonitor = KeyguardUpdateMonitor.getInstance(getContext());
    updateMonitor.setAlternateUnlockEnabled(false);

    if (mustLaunchSecurely()) {
      // Launch the secure version of the camera
      if (wouldLaunchResolverActivity(SECURE_CAMERA_INTENT)) {
        // TODO: Show disambiguation dialog instead.
        // For now, we'll treat this like launching any other app from secure keyguard.
        // When they do, user sees the system's ResolverActivity which lets them choose
        // which secure camera to use.
        launchActivity(SECURE_CAMERA_INTENT, false, false, null, null);
      } else {
        launchActivity(SECURE_CAMERA_INTENT, true, false, worker, onSecureCameraStarted);
      }
    } else {
      // Launch the normal camera
      launchActivity(INSECURE_CAMERA_INTENT, false, false, null, null);
    }
  }