Loading services/core/java/com/android/server/fingerprint/FingerprintService.java +9 −0 Original line number Diff line number Diff line Loading @@ -16,10 +16,12 @@ package com.android.server.fingerprint; import android.app.ActivityManager; import android.app.AppOpsManager; import android.content.ContentResolver; import android.content.Context; import android.os.Binder; import android.os.Environment; import android.os.Handler; import android.os.IBinder; import android.os.Looper; Loading @@ -38,6 +40,7 @@ import android.hardware.fingerprint.IFingerprintServiceReceiver; import static android.Manifest.permission.MANAGE_FINGERPRINT; import static android.Manifest.permission.USE_FINGERPRINT; import java.io.File; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; Loading Loading @@ -116,6 +119,7 @@ public class FingerprintService extends SystemService { static native int nativeCloseHal(); static native void nativeInit(MessageQueue queue, FingerprintService service); static native long nativeGetAuthenticatorId(); static native int nativeSetActiveGroup(int gid, byte[] storePath); static final class FpHalMsg { int type; // Type of the message. One of the constants in fingerprint.h Loading Loading @@ -628,6 +632,11 @@ public class FingerprintService extends SystemService { public void onStart() { publishBinderService(Context.FINGERPRINT_SERVICE, new FingerprintServiceWrapper()); mHalDeviceId = nativeOpenHal(); if (mHalDeviceId != 0) { int userId = ActivityManager.getCurrentUser(); File path = Environment.getUserSystemDirectory(userId); nativeSetActiveGroup(0, path.getAbsolutePath().getBytes()); } if (DEBUG) Slog.v(TAG, "Fingerprint HAL id: " + mHalDeviceId); } Loading services/core/jni/com_android_server_fingerprint_FingerprintService.cpp +16 −0 Original line number Diff line number Diff line Loading @@ -181,6 +181,21 @@ static jlong nativeGetAuthenticatorId(JNIEnv *, jobject clazz) { return gContext.device->get_authenticator_id(gContext.device); } static jint nativeSetActiveGroup(JNIEnv *env, jobject clazz, jint gid, jbyteArray path) { const int pathSize = env->GetArrayLength(path); jbyte* pathData = env->GetByteArrayElements(path, 0); if (pathSize >= PATH_MAX) { ALOGE("Path name is too long\n"); return -1; } char path_name[PATH_MAX] = {0}; memcpy(path_name, pathData, pathSize); ALOG(LOG_VERBOSE, LOG_TAG, "nativeSetActiveGroup() path: %s, gid: %d\n", path_name, gid); int result = gContext.device->set_active_group(gContext.device, gid, path_name); env->ReleaseByteArrayElements(path, pathData, 0); return result; } static jint nativeOpenHal(JNIEnv* env, jobject clazz) { ALOG(LOG_VERBOSE, LOG_TAG, "nativeOpenHal()\n"); int err; Loading Loading @@ -242,6 +257,7 @@ static const JNINativeMethod g_methods[] = { { "nativeAuthenticate", "(JI)I", (void*)nativeAuthenticate }, { "nativeStopAuthentication", "()I", (void*)nativeStopAuthentication }, { "nativeEnroll", "([BII)I", (void*)nativeEnroll }, { "nativeSetActiveGroup", "(I[B)I", (void*)nativeSetActiveGroup }, { "nativePreEnroll", "()J", (void*)nativePreEnroll }, { "nativeStopEnrollment", "()I", (void*)nativeStopEnrollment }, { "nativeRemove", "(II)I", (void*)nativeRemove }, Loading Loading
services/core/java/com/android/server/fingerprint/FingerprintService.java +9 −0 Original line number Diff line number Diff line Loading @@ -16,10 +16,12 @@ package com.android.server.fingerprint; import android.app.ActivityManager; import android.app.AppOpsManager; import android.content.ContentResolver; import android.content.Context; import android.os.Binder; import android.os.Environment; import android.os.Handler; import android.os.IBinder; import android.os.Looper; Loading @@ -38,6 +40,7 @@ import android.hardware.fingerprint.IFingerprintServiceReceiver; import static android.Manifest.permission.MANAGE_FINGERPRINT; import static android.Manifest.permission.USE_FINGERPRINT; import java.io.File; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; Loading Loading @@ -116,6 +119,7 @@ public class FingerprintService extends SystemService { static native int nativeCloseHal(); static native void nativeInit(MessageQueue queue, FingerprintService service); static native long nativeGetAuthenticatorId(); static native int nativeSetActiveGroup(int gid, byte[] storePath); static final class FpHalMsg { int type; // Type of the message. One of the constants in fingerprint.h Loading Loading @@ -628,6 +632,11 @@ public class FingerprintService extends SystemService { public void onStart() { publishBinderService(Context.FINGERPRINT_SERVICE, new FingerprintServiceWrapper()); mHalDeviceId = nativeOpenHal(); if (mHalDeviceId != 0) { int userId = ActivityManager.getCurrentUser(); File path = Environment.getUserSystemDirectory(userId); nativeSetActiveGroup(0, path.getAbsolutePath().getBytes()); } if (DEBUG) Slog.v(TAG, "Fingerprint HAL id: " + mHalDeviceId); } Loading
services/core/jni/com_android_server_fingerprint_FingerprintService.cpp +16 −0 Original line number Diff line number Diff line Loading @@ -181,6 +181,21 @@ static jlong nativeGetAuthenticatorId(JNIEnv *, jobject clazz) { return gContext.device->get_authenticator_id(gContext.device); } static jint nativeSetActiveGroup(JNIEnv *env, jobject clazz, jint gid, jbyteArray path) { const int pathSize = env->GetArrayLength(path); jbyte* pathData = env->GetByteArrayElements(path, 0); if (pathSize >= PATH_MAX) { ALOGE("Path name is too long\n"); return -1; } char path_name[PATH_MAX] = {0}; memcpy(path_name, pathData, pathSize); ALOG(LOG_VERBOSE, LOG_TAG, "nativeSetActiveGroup() path: %s, gid: %d\n", path_name, gid); int result = gContext.device->set_active_group(gContext.device, gid, path_name); env->ReleaseByteArrayElements(path, pathData, 0); return result; } static jint nativeOpenHal(JNIEnv* env, jobject clazz) { ALOG(LOG_VERBOSE, LOG_TAG, "nativeOpenHal()\n"); int err; Loading Loading @@ -242,6 +257,7 @@ static const JNINativeMethod g_methods[] = { { "nativeAuthenticate", "(JI)I", (void*)nativeAuthenticate }, { "nativeStopAuthentication", "()I", (void*)nativeStopAuthentication }, { "nativeEnroll", "([BII)I", (void*)nativeEnroll }, { "nativeSetActiveGroup", "(I[B)I", (void*)nativeSetActiveGroup }, { "nativePreEnroll", "()J", (void*)nativePreEnroll }, { "nativeStopEnrollment", "()I", (void*)nativeStopEnrollment }, { "nativeRemove", "(II)I", (void*)nativeRemove }, Loading