Search in sources :

Example 1 with Fingerprint

use of android.hardware.fingerprint.Fingerprint in project android_frameworks_base by ResurrectionRemix.

the class AuthenticationClient method onAuthenticated.

@Override
public boolean onAuthenticated(int fingerId, int groupId) {
    boolean result = false;
    boolean authenticated = fingerId != 0;
    IFingerprintServiceReceiver receiver = getReceiver();
    if (receiver != null) {
        try {
            MetricsLogger.action(getContext(), MetricsEvent.ACTION_FINGERPRINT_AUTH, authenticated);
            if (!authenticated) {
                receiver.onAuthenticationFailed(getHalDeviceId());
            } else {
                if (DEBUG) {
                    Slog.v(TAG, "onAuthenticated(owner=" + getOwnerString() + ", id=" + fingerId + ", gp=" + groupId + ")");
                }
                Fingerprint fp = !getIsRestricted() ? new Fingerprint("", /* TODO */
                groupId, fingerId, getHalDeviceId()) : null;
                receiver.onAuthenticationSucceeded(getHalDeviceId(), fp, getTargetUserId());
            }
        } catch (RemoteException e) {
            Slog.w(TAG, "Failed to notify Authenticated:", e);
            // client failed
            result = true;
        }
    } else {
        // client not listening
        result = true;
    }
    if (!authenticated) {
        if (receiver != null) {
            FingerprintUtils.vibrateFingerprintError(getContext());
        }
        // allow system-defined limit of number of attempts before giving up
        boolean inLockoutMode = handleFailedAttempt();
        // send lockout event in case driver doesn't enforce it.
        if (inLockoutMode) {
            try {
                Slog.w(TAG, "Forcing lockout (fp driver code should do this!)");
                receiver.onError(getHalDeviceId(), FingerprintManager.FINGERPRINT_ERROR_LOCKOUT);
            } catch (RemoteException e) {
                Slog.w(TAG, "Failed to notify lockout:", e);
            }
        }
        result |= inLockoutMode;
    } else {
        if (receiver != null) {
            FingerprintUtils.vibrateFingerprintSuccess(getContext());
        }
        // we have a valid fingerprint, done
        result |= true;
        resetFailedAttempts();
    }
    return result;
}
Also used : Fingerprint(android.hardware.fingerprint.Fingerprint) IFingerprintServiceReceiver(android.hardware.fingerprint.IFingerprintServiceReceiver) RemoteException(android.os.RemoteException)

Example 2 with Fingerprint

use of android.hardware.fingerprint.Fingerprint in project android_frameworks_base by ResurrectionRemix.

the class FingerprintsUserState method getUniqueName.

/**
     * Finds a unique name for the given fingerprint
     * @return unique name
     */
private String getUniqueName() {
    int guess = 1;
    while (true) {
        // Not the most efficient algorithm in the world, but there shouldn't be more than 10
        String name = mCtx.getString(com.android.internal.R.string.fingerprint_name_template, guess);
        if (isUnique(name)) {
            return name;
        }
        guess++;
    }
}
Also used : Fingerprint(android.hardware.fingerprint.Fingerprint)

Example 3 with Fingerprint

use of android.hardware.fingerprint.Fingerprint in project android_frameworks_base by ResurrectionRemix.

the class FingerprintsUserState method doWriteState.

private void doWriteState() {
    AtomicFile destination = new AtomicFile(mFile);
    ArrayList<Fingerprint> fingerprints;
    synchronized (this) {
        fingerprints = getCopy(mFingerprints);
    }
    FileOutputStream out = null;
    try {
        out = destination.startWrite();
        XmlSerializer serializer = Xml.newSerializer();
        serializer.setOutput(out, "utf-8");
        serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true);
        serializer.startDocument(null, true);
        serializer.startTag(null, TAG_FINGERPRINTS);
        final int count = fingerprints.size();
        for (int i = 0; i < count; i++) {
            Fingerprint fp = fingerprints.get(i);
            serializer.startTag(null, TAG_FINGERPRINT);
            serializer.attribute(null, ATTR_FINGER_ID, Integer.toString(fp.getFingerId()));
            serializer.attribute(null, ATTR_NAME, fp.getName().toString());
            serializer.attribute(null, ATTR_GROUP_ID, Integer.toString(fp.getGroupId()));
            serializer.attribute(null, ATTR_DEVICE_ID, Long.toString(fp.getDeviceId()));
            serializer.endTag(null, TAG_FINGERPRINT);
        }
        serializer.endTag(null, TAG_FINGERPRINTS);
        serializer.endDocument();
        destination.finishWrite(out);
    // Any error while writing is fatal.
    } catch (Throwable t) {
        Slog.wtf(TAG, "Failed to write settings, restoring backup", t);
        destination.failWrite(out);
        throw new IllegalStateException("Failed to write fingerprints", t);
    } finally {
        IoUtils.closeQuietly(out);
    }
}
Also used : Fingerprint(android.hardware.fingerprint.Fingerprint) AtomicFile(android.util.AtomicFile) FileOutputStream(java.io.FileOutputStream) Fingerprint(android.hardware.fingerprint.Fingerprint) XmlSerializer(org.xmlpull.v1.XmlSerializer)

Example 4 with Fingerprint

use of android.hardware.fingerprint.Fingerprint in project android_frameworks_base by ResurrectionRemix.

the class FingerprintService method startEnrollment.

private void startEnrollment(IBinder token, byte[] cryptoToken, int userId, IFingerprintServiceReceiver receiver, int flags, boolean restricted, String opPackageName) {
    updateActiveGroup(userId, opPackageName);
    // default group for fingerprint enrollment
    final int groupId = userId;
    EnrollClient client = new EnrollClient(getContext(), mHalDeviceId, token, receiver, userId, groupId, cryptoToken, restricted, opPackageName) {

        @Override
        public IFingerprintDaemon getFingerprintDaemon() {
            return FingerprintService.this.getFingerprintDaemon();
        }

        @Override
        public void notifyUserActivity() {
            FingerprintService.this.userActivity();
        }
    };
    startClient(client, true);
}
Also used : Fingerprint(android.hardware.fingerprint.Fingerprint)

Example 5 with Fingerprint

use of android.hardware.fingerprint.Fingerprint in project Resurrection_packages_apps_Settings by ResurrectionRemix.

the class FingerprintSettings method getFingerprintPreferenceForUser.

public static Preference getFingerprintPreferenceForUser(Context context, final int userId) {
    FingerprintManager fpm = (FingerprintManager) context.getSystemService(Context.FINGERPRINT_SERVICE);
    if (fpm == null || !fpm.isHardwareDetected()) {
        Log.v(TAG, "No fingerprint hardware detected!!");
        return null;
    }
    Preference fingerprintPreference = new Preference(context);
    fingerprintPreference.setKey(KEY_FINGERPRINT_SETTINGS);
    fingerprintPreference.setTitle(R.string.security_settings_fingerprint_preference_title);
    final List<Fingerprint> items = fpm.getEnrolledFingerprints(userId);
    final int fingerprintCount = items != null ? items.size() : 0;
    final String clazz;
    if (fingerprintCount > 0) {
        fingerprintPreference.setSummary(context.getResources().getQuantityString(R.plurals.security_settings_fingerprint_preference_summary, fingerprintCount, fingerprintCount));
        clazz = FingerprintSettings.class.getName();
    } else {
        fingerprintPreference.setSummary(R.string.security_settings_fingerprint_preference_summary_none);
        clazz = FingerprintEnrollIntroduction.class.getName();
    }
    fingerprintPreference.setOnPreferenceClickListener(new OnPreferenceClickListener() {

        @Override
        public boolean onPreferenceClick(Preference preference) {
            final Context context = preference.getContext();
            final UserManager userManager = UserManager.get(context);
            if (Utils.startQuietModeDialogIfNecessary(context, userManager, userId)) {
                return false;
            }
            Intent intent = new Intent();
            intent.setClassName("com.android.settings", clazz);
            intent.putExtra(Intent.EXTRA_USER_ID, userId);
            context.startActivity(intent);
            return true;
        }
    });
    return fingerprintPreference;
}
Also used : Context(android.content.Context) Fingerprint(android.hardware.fingerprint.Fingerprint) Intent(android.content.Intent) SpannableString(android.text.SpannableString) TextPaint(android.text.TextPaint) Fingerprint(android.hardware.fingerprint.Fingerprint) OnPreferenceClickListener(android.support.v7.preference.Preference.OnPreferenceClickListener) Preference(android.support.v7.preference.Preference) FingerprintManager(android.hardware.fingerprint.FingerprintManager) UserManager(android.os.UserManager)

Aggregations

Fingerprint (android.hardware.fingerprint.Fingerprint)55 Context (android.content.Context)7 Intent (android.content.Intent)7 FingerprintManager (android.hardware.fingerprint.FingerprintManager)7 UserManager (android.os.UserManager)7 Preference (android.support.v7.preference.Preference)7 OnPreferenceClickListener (android.support.v7.preference.Preference.OnPreferenceClickListener)7 SpannableString (android.text.SpannableString)7 TextPaint (android.text.TextPaint)7 RemoteException (android.os.RemoteException)6 TwoTargetPreference (com.android.settingslib.TwoTargetPreference)6 FooterPreference (com.android.settingslib.widget.FooterPreference)6 UserInfo (android.content.pm.UserInfo)5 IFingerprintServiceReceiver (android.hardware.fingerprint.IFingerprintServiceReceiver)5 AtomicFile (android.util.AtomicFile)5 FileOutputStream (java.io.FileOutputStream)5 ArrayList (java.util.ArrayList)5 JSONArray (org.json.JSONArray)5 JSONException (org.json.JSONException)5 JSONObject (org.json.JSONObject)5