Implement additional fingerprint flows in Settings.

- new onboarding flow ("locate sensor")
- changed sensor location image
- changed in-app sensor icon
- remove fingerprint animation since it caused people to
want to tap on it.
- remove enrolled fingerprint templates when switching back to "none" or "slide"
- use real in-app icon for fingerprint
- much improved layout
- basic landscape layout working
- added 250ms delay to final enrollment step so it's not so jarring
- delete is now working
- rename wired, but not functional yet

Bug 19592835

Change-Id: Ie3e73a2fc8f834f1b90e2746c4cc841216aa6031
This commit is contained in:
Jim Miller
2015-03-04 18:07:32 -08:00
parent 5455bb540a
commit 9218687e4b
32 changed files with 514 additions and 161 deletions

View File

@@ -35,6 +35,8 @@ import android.os.UserManager;
import android.preference.Preference;
import android.preference.PreferenceScreen;
import android.security.KeyStore;
import android.service.fingerprint.FingerprintManager;
import android.service.fingerprint.FingerprintManagerReceiver;
import android.util.EventLog;
import android.util.Log;
import android.util.MutableBoolean;
@@ -102,11 +104,14 @@ public class ChooseLockGeneric extends SettingsActivity {
private boolean mEncryptionRequestDisabled;
private boolean mRequirePassword;
private LockPatternUtils mLockPatternUtils;
private FingerprintManager mFingerprintManager;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mFingerprintManager =
(FingerprintManager) getActivity().getSystemService(Context.FINGERPRINT_SERVICE);
mDPM = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
mKeyStore = KeyStore.getInstance();
mChooseLockSettingsHelper = new ChooseLockSettingsHelper(this.getActivity());
@@ -391,13 +396,36 @@ public class ChooseLockGeneric extends SettingsActivity {
} else if (quality == DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED) {
mChooseLockSettingsHelper.utils().clearLock();
mChooseLockSettingsHelper.utils().setLockScreenDisabled(disabled);
removeAllFingerprintTemplates();
getActivity().setResult(Activity.RESULT_OK);
finish();
} else {
removeAllFingerprintTemplates();
finish();
}
}
// TODO: This is only required because we used to enforce clients have a listener,
// which is no longer required in the new API. Remove when that happens.
FingerprintManagerReceiver mReceiver = new FingerprintManagerReceiver() {
public void onRemoved(int fingerprintId) {
Log.v(TAG, "onRemoved(id=" + fingerprintId + ")");
}
};
private void removeAllFingerprintTemplates() {
mFingerprintManager.startListening(mReceiver);
if (mFingerprintManager != null) {
mFingerprintManager.remove(0 /* all fingerprint templates */);
}
}
@Override
public void onDestroy() {
super.onDestroy();
mFingerprintManager.stopListening();
}
@Override
protected int getHelpResource() {
return R.string.help_url_choose_lockscreen;