OSDN Git Service

DO NOT MERGE Cherry picking from MR0 cl 147215
authorDanielle Millett <dmillett@google.com>
Wed, 2 Nov 2011 15:12:21 +0000 (11:12 -0400)
committerDanielle Millett <dmillett@google.com>
Mon, 14 Nov 2011 21:40:40 +0000 (16:40 -0500)
Adding an improve face matching settings option for Face Unlock

Adding an option which will launch a version of setup where faces
can be added to the current gallery.  It requires the user to first
confirm their password before launching addToSetup.

Patch 3 - Updated for renaming of FackLockTutorial to SetupIntro.
Now it is called every time regardless of it it's showing the tutorial
and a flag is passed in to determine whether or not SetupIntro shows
the tutorial.

Patch 4 - Removed 'Setup Complete' toast at the end of screen lock
setups since it was primarily for Face Unlock and the congratulations
screen removes the need for it.

Change-Id: Idc5f960809d992ec7bbce59ef1e13b95ef7cce45

res/values/strings.xml
res/xml/security_settings_biometric_weak.xml
src/com/android/settings/ChooseLockGeneric.java
src/com/android/settings/ChooseLockPassword.java
src/com/android/settings/ChooseLockPattern.java
src/com/android/settings/SecuritySettings.java

index 1428145..6723cf2 100644 (file)
 
     <!-- Security Settings --><skip />
 
+    <!-- Security settings screen when using face unlock, setting option name to start an activity that allows the user to improve accuracy by adding additional enrollment faces -->
+    <string name="biometric_weak_improve_matching_title">Improve face matching</string>
+
     <!-- Security settings screen, setting option name to change screen timeout -->
     <string name="lock_after_timeout">Automatically lock</string>
     <!-- Security settings screen, setting option summary to change screen timeout -->
index 14d28f2..7d832e4 100644 (file)
             android:summary="@string/unlock_set_unlock_mode_biometric_weak"
             android:persistent="false"/>
 
+        <PreferenceScreen
+            android:key="biometric_weak_improve_matching"
+            android:title="@string/biometric_weak_improve_matching_title"/>
+
         <CheckBoxPreference
             android:key="visiblepattern"
             android:title="@string/lockpattern_settings_enable_visible_pattern_title"/>
index 990b6cc..4322f41 100644 (file)
@@ -276,7 +276,7 @@ public class ChooseLockGeneric extends PreferenceActivity {
                     KEY_UNLOCK_SET_PATTERN.equals(key) || KEY_UNLOCK_SET_PIN.equals(key);
         }
 
-        private Intent getBiometricSensorIntent(int quality) {
+        private Intent getBiometricSensorIntent() {
             Intent fallBackIntent = new Intent().setClass(getActivity(), ChooseLockGeneric.class);
             fallBackIntent.putExtra(LockPatternUtils.LOCKSCREEN_BIOMETRIC_WEAK_FALLBACK, true);
             fallBackIntent.putExtra(CONFIRM_CREDENTIALS, false);
@@ -287,9 +287,8 @@ public class ChooseLockGeneric extends PreferenceActivity {
             boolean showTutorial = ALWAY_SHOW_TUTORIAL ||
                     !mChooseLockSettingsHelper.utils().isBiometricWeakEverChosen();
             Intent intent = new Intent();
-            intent.setClassName("com.android.facelock", showTutorial
-                        ? "com.android.facelock.FaceLockTutorial"
-                        : "com.android.facelock.SetupFaceLock");
+            intent.setClassName("com.android.facelock", "com.android.facelock.SetupIntro");
+            intent.putExtra("showTutorial", showTutorial);
             PendingIntent pending = PendingIntent.getActivity(getActivity(), 0, fallBackIntent, 0);
             intent.putExtra("PendingIntent", pending);
             return intent;
@@ -353,7 +352,7 @@ public class ChooseLockGeneric extends PreferenceActivity {
                     startActivity(intent);
                 }
             } else if (quality == DevicePolicyManager.PASSWORD_QUALITY_BIOMETRIC_WEAK) {
-                Intent intent = getBiometricSensorIntent(quality);
+                Intent intent = getBiometricSensorIntent();
                 startActivity(intent);
             } else if (quality == DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED) {
                 mChooseLockSettingsHelper.utils().clearLock(false);
index abff0ae..2940442 100644 (file)
@@ -44,7 +44,6 @@ import android.view.inputmethod.EditorInfo;
 import android.widget.Button;
 import android.widget.TextView;
 import android.widget.TextView.OnEditorActionListener;
-import android.widget.Toast;
 
 public class ChooseLockPassword extends PreferenceActivity {
     public static final String PASSWORD_MIN_KEY = "lockscreen.password_min";
@@ -388,7 +387,6 @@ public class ChooseLockPassword extends PreferenceActivity {
                             LockPatternUtils.LOCKSCREEN_BIOMETRIC_WEAK_FALLBACK, false);
                     mLockPatternUtils.clearLock(isFallback);
                     mLockPatternUtils.saveLockPassword(pin, mRequestedQuality, isFallback);
-                    Toast.makeText(getActivity(), R.string.lock_setup, Toast.LENGTH_SHORT).show();
                     getActivity().finish();
                 } else {
                     updateStage(Stage.ConfirmWrong);
index 314a432..180eee1 100644 (file)
@@ -35,7 +35,6 @@ import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.TextView;
-import android.widget.Toast;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -513,8 +512,6 @@ public class ChooseLockPattern extends PreferenceActivity {
             utils.saveLockPattern(mChosenPattern, isFallback);
             utils.setLockPatternEnabled(true);
 
-            Toast.makeText(getActivity(), R.string.lock_setup, Toast.LENGTH_SHORT).show();
-
             if (lockVirgin) {
                 utils.setVisiblePatternEnabled(true);
                 utils.setTactileFeedbackEnabled(false);
index 5df5805..ab58dd5 100644 (file)
@@ -19,6 +19,7 @@ package com.android.settings;
 
 import static android.provider.Settings.System.SCREEN_OFF_TIMEOUT;
 
+import android.app.Activity;
 import android.app.AlertDialog;
 import android.app.admin.DevicePolicyManager;
 import android.content.Context;
@@ -50,12 +51,15 @@ public class SecuritySettings extends SettingsPreferenceFragment
 
     // Lock Settings
     private static final String KEY_UNLOCK_SET_OR_CHANGE = "unlock_set_or_change";
+    private static final String KEY_BIOMETRIC_WEAK_IMPROVE_MATCHING =
+            "biometric_weak_improve_matching";
     private static final String KEY_LOCK_ENABLED = "lockenabled";
     private static final String KEY_VISIBLE_PATTERN = "visiblepattern";
     private static final String KEY_TACTILE_FEEDBACK_ENABLED = "unlock_tactile_feedback";
     private static final String KEY_SECURITY_CATEGORY = "security_category";
     private static final String KEY_LOCK_AFTER_TIMEOUT = "lock_after_timeout";
     private static final int SET_OR_CHANGE_LOCK_METHOD_REQUEST = 123;
+    private static final int CONFIRM_EXISTING_FOR_BIOMETRIC_IMPROVE_REQUEST = 124;
 
     // Misc Settings
     private static final String KEY_SIM_LOCK = "sim_lock";
@@ -326,6 +330,13 @@ public class SecuritySettings extends SettingsPreferenceFragment
         if (KEY_UNLOCK_SET_OR_CHANGE.equals(key)) {
             startFragment(this, "com.android.settings.ChooseLockGeneric$ChooseLockGenericFragment",
                     SET_OR_CHANGE_LOCK_METHOD_REQUEST, null);
+        } else if (KEY_BIOMETRIC_WEAK_IMPROVE_MATCHING.equals(key)) {
+            ChooseLockSettingsHelper helper =
+                    new ChooseLockSettingsHelper(this.getActivity(), this);
+            if (!helper.launchConfirmationActivity(
+                    CONFIRM_EXISTING_FOR_BIOMETRIC_IMPROVE_REQUEST, null, null)) {
+                startBiometricWeakImprove(); // no password set, so no need to confirm
+            }
         } else if (KEY_LOCK_ENABLED.equals(key)) {
             lockPatternUtils.setLockPatternEnabled(isToggled(preference));
         } else if (KEY_VISIBLE_PATTERN.equals(key)) {
@@ -360,6 +371,11 @@ public class SecuritySettings extends SettingsPreferenceFragment
     @Override
     public void onActivityResult(int requestCode, int resultCode, Intent data) {
         super.onActivityResult(requestCode, resultCode, data);
+        if (requestCode == CONFIRM_EXISTING_FOR_BIOMETRIC_IMPROVE_REQUEST &&
+                resultCode == Activity.RESULT_OK) {
+            startBiometricWeakImprove();
+            return;
+        }
         createPreferenceHierarchy();
     }
 
@@ -376,4 +392,10 @@ public class SecuritySettings extends SettingsPreferenceFragment
         }
         return true;
     }
+
+    public void startBiometricWeakImprove(){
+        Intent intent = new Intent();
+        intent.setClassName("com.android.facelock", "com.android.facelock.AddToSetup");
+        startActivity(intent);
+    }
 }