Merge "Remove surface from fingerprint methods"
This commit is contained in:
committed by
Android (Google) Code Review
commit
1c69bac012
@@ -418,6 +418,18 @@ public class FingerprintManager implements BiometricAuthenticator, BiometricFing
|
||||
void onChallengeGenerated(int sensorId, long challenge);
|
||||
}
|
||||
|
||||
/**
|
||||
* Use the provided handler thread for events.
|
||||
* @param handler
|
||||
*/
|
||||
private void useHandler(Handler handler) {
|
||||
if (handler != null) {
|
||||
mHandler = new MyHandler(handler.getLooper());
|
||||
} else if (mHandler.getLooper() != mContext.getMainLooper()) {
|
||||
mHandler = new MyHandler(mContext.getMainLooper());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Request authentication of a crypto object. This call warms up the fingerprint hardware
|
||||
* and starts scanning for a fingerprint. It terminates when
|
||||
@@ -449,45 +461,15 @@ public class FingerprintManager implements BiometricAuthenticator, BiometricFing
|
||||
}
|
||||
|
||||
/**
|
||||
* Use the provided handler thread for events.
|
||||
* @param handler
|
||||
*/
|
||||
private void useHandler(Handler handler) {
|
||||
if (handler != null) {
|
||||
mHandler = new MyHandler(handler.getLooper());
|
||||
} else if (mHandler.getLooper() != mContext.getMainLooper()){
|
||||
mHandler = new MyHandler(mContext.getMainLooper());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Defaults to {@link FingerprintManager#authenticate(CryptoObject, CancellationSignal,
|
||||
* AuthenticationCallback, Handler, int, Surface)} with {@code surface} set to null.
|
||||
*
|
||||
* @see FingerprintManager#authenticate(CryptoObject, CancellationSignal,
|
||||
* AuthenticationCallback, Handler, int, Surface)
|
||||
*
|
||||
* Per-user version, see {@link FingerprintManager#authenticate(CryptoObject,
|
||||
* CancellationSignal, int, AuthenticationCallback, Handler)}. This version does not
|
||||
* display the BiometricPrompt.
|
||||
* @param userId the user ID that the fingerprint hardware will authenticate for.
|
||||
* @hide
|
||||
*/
|
||||
@RequiresPermission(anyOf = {USE_BIOMETRIC, USE_FINGERPRINT})
|
||||
public void authenticate(@Nullable CryptoObject crypto, @Nullable CancellationSignal cancel,
|
||||
@NonNull AuthenticationCallback callback, Handler handler, int userId) {
|
||||
authenticate(crypto, cancel, callback, handler, userId, null /* surface */);
|
||||
}
|
||||
|
||||
/**
|
||||
* Per-user version, see {@link FingerprintManager#authenticate(CryptoObject,
|
||||
* CancellationSignal, int, AuthenticationCallback, Handler)}. This version does not
|
||||
* display the BiometricPrompt.
|
||||
* @param userId the user ID that the fingerprint hardware will authenticate for.
|
||||
* @param surface for optical fingerprint sensors that require active illumination by the OLED
|
||||
* display. Should be null for devices that don't require illumination.
|
||||
* @hide
|
||||
*/
|
||||
@RequiresPermission(anyOf = {USE_BIOMETRIC, USE_FINGERPRINT})
|
||||
public void authenticate(@Nullable CryptoObject crypto, @Nullable CancellationSignal cancel,
|
||||
@NonNull AuthenticationCallback callback, Handler handler, int userId,
|
||||
@Nullable Surface surface) {
|
||||
if (callback == null) {
|
||||
throw new IllegalArgumentException("Must supply an authentication callback");
|
||||
}
|
||||
@@ -508,7 +490,7 @@ public class FingerprintManager implements BiometricAuthenticator, BiometricFing
|
||||
mCryptoObject = crypto;
|
||||
final long operationId = crypto != null ? crypto.getOpId() : 0;
|
||||
mService.authenticate(mToken, operationId, userId, mServiceReceiver,
|
||||
mContext.getOpPackageName(), surface);
|
||||
mContext.getOpPackageName());
|
||||
} catch (RemoteException e) {
|
||||
Slog.w(TAG, "Remote exception while authenticating: ", e);
|
||||
// Though this may not be a hardware issue, it will cause apps to give up or try
|
||||
@@ -527,7 +509,7 @@ public class FingerprintManager implements BiometricAuthenticator, BiometricFing
|
||||
*/
|
||||
@RequiresPermission(USE_BIOMETRIC_INTERNAL)
|
||||
public void detectFingerprint(@NonNull CancellationSignal cancel,
|
||||
@NonNull FingerprintDetectionCallback callback, int userId, @Nullable Surface surface) {
|
||||
@NonNull FingerprintDetectionCallback callback, int userId) {
|
||||
if (mService == null) {
|
||||
return;
|
||||
}
|
||||
@@ -543,27 +525,12 @@ public class FingerprintManager implements BiometricAuthenticator, BiometricFing
|
||||
|
||||
try {
|
||||
mService.detectFingerprint(mToken, userId, mServiceReceiver,
|
||||
mContext.getOpPackageName(), surface);
|
||||
mContext.getOpPackageName());
|
||||
} catch (RemoteException e) {
|
||||
Slog.w(TAG, "Remote exception when requesting finger detect", e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Defaults to {@link FingerprintManager#enroll(byte[], CancellationSignal, int,
|
||||
* EnrollmentCallback, Surface)} with {@code surface} set to null.
|
||||
*
|
||||
* @see FingerprintManager#enroll(byte[], CancellationSignal, int, EnrollmentCallback,
|
||||
* Surface)
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
@RequiresPermission(MANAGE_FINGERPRINT)
|
||||
public void enroll(byte [] hardwareAuthToken, CancellationSignal cancel, int userId,
|
||||
EnrollmentCallback callback) {
|
||||
enroll(hardwareAuthToken, cancel, userId, callback, null /* surface */);
|
||||
}
|
||||
|
||||
/**
|
||||
* Request fingerprint enrollment. This call warms up the fingerprint hardware
|
||||
* and starts scanning for fingerprints. Progress will be indicated by callbacks to the
|
||||
@@ -581,7 +548,7 @@ public class FingerprintManager implements BiometricAuthenticator, BiometricFing
|
||||
*/
|
||||
@RequiresPermission(MANAGE_FINGERPRINT)
|
||||
public void enroll(byte [] hardwareAuthToken, CancellationSignal cancel, int userId,
|
||||
EnrollmentCallback callback, @Nullable Surface surface) {
|
||||
EnrollmentCallback callback) {
|
||||
if (userId == UserHandle.USER_CURRENT) {
|
||||
userId = getCurrentUserId();
|
||||
}
|
||||
@@ -602,7 +569,7 @@ public class FingerprintManager implements BiometricAuthenticator, BiometricFing
|
||||
try {
|
||||
mEnrollmentCallback = callback;
|
||||
mService.enroll(mToken, hardwareAuthToken, userId, mServiceReceiver,
|
||||
mContext.getOpPackageName(), surface);
|
||||
mContext.getOpPackageName());
|
||||
} catch (RemoteException e) {
|
||||
Slog.w(TAG, "Remote exception in enroll: ", e);
|
||||
// Though this may not be a hardware issue, it will cause apps to give up or try
|
||||
|
||||
@@ -23,7 +23,6 @@ import android.hardware.fingerprint.IFingerprintServiceReceiver;
|
||||
import android.hardware.fingerprint.IUdfpsOverlayController;
|
||||
import android.hardware.fingerprint.Fingerprint;
|
||||
import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;
|
||||
import android.view.Surface;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@@ -42,12 +41,12 @@ interface IFingerprintService {
|
||||
// USE_FINGERPRINT/USE_BIOMETRIC permission. This is effectively deprecated, since it only comes
|
||||
// through FingerprintManager now.
|
||||
void authenticate(IBinder token, long operationId, int userId,
|
||||
IFingerprintServiceReceiver receiver, String opPackageName, in Surface surface);
|
||||
IFingerprintServiceReceiver receiver, String opPackageName);
|
||||
|
||||
// Uses the fingerprint hardware to detect for the presence of a finger, without giving details
|
||||
// about accept/reject/lockout.
|
||||
void detectFingerprint(IBinder token, int userId, IFingerprintServiceReceiver receiver,
|
||||
String opPackageName, in Surface surface);
|
||||
String opPackageName);
|
||||
|
||||
// This method prepares the service to start authenticating, but doesn't start authentication.
|
||||
// This is protected by the MANAGE_BIOMETRIC signatuer permission. This method should only be
|
||||
@@ -56,7 +55,7 @@ interface IFingerprintService {
|
||||
// startPreparedClient().
|
||||
void prepareForAuthentication(IBinder token, long operationId, int userId,
|
||||
IBiometricSensorReceiver sensorReceiver, String opPackageName, int cookie,
|
||||
int callingUid, int callingPid, int callingUserId, in Surface surface);
|
||||
int callingUid, int callingPid, int callingUserId);
|
||||
|
||||
// Starts authentication with the previously prepared client.
|
||||
void startPreparedClient(int cookie);
|
||||
@@ -74,7 +73,7 @@ interface IFingerprintService {
|
||||
|
||||
// Start fingerprint enrollment
|
||||
void enroll(IBinder token, in byte [] hardwareAuthToken, int userId, IFingerprintServiceReceiver receiver,
|
||||
String opPackageName, in Surface surface);
|
||||
String opPackageName);
|
||||
|
||||
// Cancel enrollment in progress
|
||||
void cancelEnrollment(IBinder token);
|
||||
|
||||
@@ -2102,7 +2102,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
|
||||
|
||||
if (isEncryptedOrLockdown(userId)) {
|
||||
mFpm.detectFingerprint(mFingerprintCancelSignal, mFingerprintDetectionCallback,
|
||||
userId, null /* surface */);
|
||||
userId);
|
||||
} else {
|
||||
mFpm.authenticate(null /* crypto */, mFingerprintCancelSignal,
|
||||
mFingerprintAuthenticationCallback, null /* handler */, userId);
|
||||
|
||||
@@ -439,7 +439,7 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase {
|
||||
mTestableLooper.processAllMessages();
|
||||
|
||||
verify(mFingerprintManager).authenticate(any(), any(), any(), any(), anyInt());
|
||||
verify(mFingerprintManager, never()).detectFingerprint(any(), any(), anyInt(), any());
|
||||
verify(mFingerprintManager, never()).detectFingerprint(any(), any(), anyInt());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -466,7 +466,7 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase {
|
||||
mTestableLooper.processAllMessages();
|
||||
|
||||
verify(mFingerprintManager, never()).authenticate(any(), any(), any(), any(), anyInt());
|
||||
verify(mFingerprintManager).detectFingerprint(any(), any(), anyInt(), any());
|
||||
verify(mFingerprintManager).detectFingerprint(any(), any(), anyInt());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -43,7 +43,7 @@ public final class FingerprintAuthenticator extends IBiometricAuthenticator.Stub
|
||||
String opPackageName, int cookie, int callingUid, int callingPid, int callingUserId)
|
||||
throws RemoteException {
|
||||
mFingerprintService.prepareForAuthentication(token, operationId, userId, sensorReceiver,
|
||||
opPackageName, cookie, callingUid, callingPid, callingUserId, null /* surface */);
|
||||
opPackageName, cookie, callingUid, callingPid, callingUserId);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -46,7 +46,6 @@ import android.os.Binder;
|
||||
import android.os.Build;
|
||||
import android.os.Handler;
|
||||
import android.os.IBinder;
|
||||
import android.os.NativeHandle;
|
||||
import android.os.Process;
|
||||
import android.os.RemoteException;
|
||||
import android.os.ServiceManager;
|
||||
@@ -56,7 +55,6 @@ import android.util.EventLog;
|
||||
import android.util.Pair;
|
||||
import android.util.Slog;
|
||||
import android.util.proto.ProtoOutputStream;
|
||||
import android.view.Surface;
|
||||
|
||||
import com.android.internal.R;
|
||||
import com.android.internal.util.DumpUtils;
|
||||
@@ -156,8 +154,7 @@ public class FingerprintService extends SystemService {
|
||||
|
||||
@Override // Binder call
|
||||
public void enroll(final IBinder token, final byte[] hardwareAuthToken, final int userId,
|
||||
final IFingerprintServiceReceiver receiver, final String opPackageName,
|
||||
Surface surface) {
|
||||
final IFingerprintServiceReceiver receiver, final String opPackageName) {
|
||||
Utils.checkPermission(getContext(), MANAGE_FINGERPRINT);
|
||||
|
||||
final Pair<Integer, ServiceProvider> provider = getSingleProvider();
|
||||
@@ -167,7 +164,7 @@ public class FingerprintService extends SystemService {
|
||||
}
|
||||
|
||||
provider.second.scheduleEnroll(provider.first, token, hardwareAuthToken, userId,
|
||||
receiver, opPackageName, surface);
|
||||
receiver, opPackageName);
|
||||
}
|
||||
|
||||
@Override // Binder call
|
||||
@@ -185,8 +182,7 @@ public class FingerprintService extends SystemService {
|
||||
|
||||
@Override // Binder call
|
||||
public void authenticate(final IBinder token, final long operationId, final int userId,
|
||||
final IFingerprintServiceReceiver receiver, final String opPackageName,
|
||||
final Surface surface) {
|
||||
final IFingerprintServiceReceiver receiver, final String opPackageName) {
|
||||
final int callingUid = Binder.getCallingUid();
|
||||
final int callingPid = Binder.getCallingPid();
|
||||
final int callingUserId = UserHandle.getCallingUserId();
|
||||
@@ -233,8 +229,7 @@ public class FingerprintService extends SystemService {
|
||||
|
||||
@Override
|
||||
public void detectFingerprint(final IBinder token, final int userId,
|
||||
final IFingerprintServiceReceiver receiver, final String opPackageName,
|
||||
final Surface surface) {
|
||||
final IFingerprintServiceReceiver receiver, final String opPackageName) {
|
||||
Utils.checkPermission(getContext(), USE_BIOMETRIC_INTERNAL);
|
||||
if (!Utils.isKeyguard(getContext(), opPackageName)) {
|
||||
Slog.w(TAG, "detectFingerprint called from non-sysui package: " + opPackageName);
|
||||
@@ -255,15 +250,14 @@ public class FingerprintService extends SystemService {
|
||||
}
|
||||
|
||||
provider.second.scheduleFingerDetect(provider.first, token, userId,
|
||||
new ClientMonitorCallbackConverter(receiver), opPackageName, surface,
|
||||
new ClientMonitorCallbackConverter(receiver), opPackageName,
|
||||
BiometricsProtoEnums.CLIENT_KEYGUARD);
|
||||
}
|
||||
|
||||
@Override // Binder call
|
||||
public void prepareForAuthentication(IBinder token, long operationId, int userId,
|
||||
IBiometricSensorReceiver sensorReceiver, String opPackageName,
|
||||
int cookie, int callingUid, int callingPid, int callingUserId,
|
||||
Surface surface) {
|
||||
int cookie, int callingUid, int callingPid, int callingUserId) {
|
||||
Utils.checkPermission(getContext(), MANAGE_BIOMETRIC);
|
||||
|
||||
final Pair<Integer, ServiceProvider> provider = getSingleProvider();
|
||||
@@ -729,6 +723,4 @@ public class FingerprintService extends SystemService {
|
||||
}
|
||||
return appOpsOk;
|
||||
}
|
||||
|
||||
private native NativeHandle convertSurfaceToNativeHandle(Surface surface);
|
||||
}
|
||||
|
||||
@@ -18,15 +18,14 @@ package com.android.server.biometrics.sensors.fingerprint;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
import android.annotation.Nullable;
|
||||
import android.hardware.fingerprint.Fingerprint;
|
||||
import android.hardware.biometrics.ITestSession;
|
||||
import android.hardware.fingerprint.Fingerprint;
|
||||
import android.hardware.fingerprint.FingerprintManager;
|
||||
import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;
|
||||
import android.hardware.fingerprint.IFingerprintServiceReceiver;
|
||||
import android.hardware.fingerprint.IUdfpsOverlayController;
|
||||
import android.os.IBinder;
|
||||
import android.util.proto.ProtoOutputStream;
|
||||
import android.view.Surface;
|
||||
|
||||
import com.android.server.biometrics.sensors.ClientMonitorCallbackConverter;
|
||||
import com.android.server.biometrics.sensors.LockoutTracker;
|
||||
@@ -62,7 +61,8 @@ public interface ServiceProvider {
|
||||
*/
|
||||
boolean containsSensor(int sensorId);
|
||||
|
||||
@NonNull List<FingerprintSensorPropertiesInternal> getSensorProperties();
|
||||
@NonNull
|
||||
List<FingerprintSensorPropertiesInternal> getSensorProperties();
|
||||
|
||||
void scheduleResetLockout(int sensorId, int userId, @Nullable byte[] hardwareAuthToken);
|
||||
|
||||
@@ -73,14 +73,13 @@ public interface ServiceProvider {
|
||||
@NonNull String opPackageName, long challenge);
|
||||
|
||||
void scheduleEnroll(int sensorId, @NonNull IBinder token, byte[] hardwareAuthToken, int userId,
|
||||
@NonNull IFingerprintServiceReceiver receiver, @NonNull String opPackageName,
|
||||
@Nullable Surface surface);
|
||||
@NonNull IFingerprintServiceReceiver receiver, @NonNull String opPackageName);
|
||||
|
||||
void cancelEnrollment(int sensorId, @NonNull IBinder token);
|
||||
|
||||
void scheduleFingerDetect(int sensorId, @NonNull IBinder token, int userId,
|
||||
@NonNull ClientMonitorCallbackConverter callback, @NonNull String opPackageName,
|
||||
@Nullable Surface surface, int statsClient);
|
||||
int statsClient);
|
||||
|
||||
void scheduleAuthenticate(int sensorId, @NonNull IBinder token, long operationId, int userId,
|
||||
int cookie, @NonNull ClientMonitorCallbackConverter callback,
|
||||
@@ -100,9 +99,11 @@ public interface ServiceProvider {
|
||||
|
||||
void rename(int sensorId, int fingerId, int userId, @NonNull String name);
|
||||
|
||||
@NonNull List<Fingerprint> getEnrolledFingerprints(int sensorId, int userId);
|
||||
@NonNull
|
||||
List<Fingerprint> getEnrolledFingerprints(int sensorId, int userId);
|
||||
|
||||
@LockoutTracker.LockoutMode int getLockoutModeForUser(int sensorId, int userId);
|
||||
@LockoutTracker.LockoutMode
|
||||
int getLockoutModeForUser(int sensorId, int userId);
|
||||
|
||||
long getAuthenticatorId(int sensorId, int userId);
|
||||
|
||||
@@ -118,5 +119,6 @@ public interface ServiceProvider {
|
||||
|
||||
void dumpInternal(int sensorId, @NonNull PrintWriter pw);
|
||||
|
||||
@NonNull ITestSession createTestSession(int sensorId, @NonNull String opPackageName);
|
||||
@NonNull
|
||||
ITestSession createTestSession(int sensorId, @NonNull String opPackageName);
|
||||
}
|
||||
|
||||
@@ -121,7 +121,7 @@ class BiometricTestSessionImpl extends ITestSession.Stub {
|
||||
Utils.checkPermission(mContext, TEST_BIOMETRIC);
|
||||
|
||||
mProvider.scheduleEnroll(mSensorId, new Binder(), new byte[69], userId, mReceiver,
|
||||
mContext.getOpPackageName(), null /* surface */);
|
||||
mContext.getOpPackageName());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -40,7 +40,6 @@ import android.os.UserManager;
|
||||
import android.util.Slog;
|
||||
import android.util.SparseArray;
|
||||
import android.util.proto.ProtoOutputStream;
|
||||
import android.view.Surface;
|
||||
|
||||
import com.android.server.biometrics.Utils;
|
||||
import com.android.server.biometrics.sensors.AuthenticationClient;
|
||||
@@ -341,7 +340,7 @@ public class FingerprintProvider implements IBinder.DeathRecipient, ServiceProvi
|
||||
@Override
|
||||
public void scheduleEnroll(int sensorId, @NonNull IBinder token, byte[] hardwareAuthToken,
|
||||
int userId, @NonNull IFingerprintServiceReceiver receiver,
|
||||
@NonNull String opPackageName, @Nullable Surface surface) {
|
||||
@NonNull String opPackageName) {
|
||||
mHandler.post(() -> {
|
||||
final IFingerprint daemon = getHalInstance();
|
||||
if (daemon == null) {
|
||||
@@ -387,7 +386,7 @@ public class FingerprintProvider implements IBinder.DeathRecipient, ServiceProvi
|
||||
@Override
|
||||
public void scheduleFingerDetect(int sensorId, @NonNull IBinder token, int userId,
|
||||
@NonNull ClientMonitorCallbackConverter callback, @NonNull String opPackageName,
|
||||
@Nullable Surface surface, int statsClient) {
|
||||
int statsClient) {
|
||||
mHandler.post(() -> {
|
||||
final IFingerprint daemon = getHalInstance();
|
||||
if (daemon == null) {
|
||||
|
||||
@@ -122,7 +122,7 @@ public class BiometricTestSessionImpl extends ITestSession.Stub {
|
||||
Utils.checkPermission(mContext, TEST_BIOMETRIC);
|
||||
|
||||
mFingerprint21.scheduleEnroll(mSensorId, new Binder(), new byte[69], userId, mReceiver,
|
||||
mContext.getOpPackageName(), null /* surface */);
|
||||
mContext.getOpPackageName());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -46,7 +46,6 @@ import android.os.UserHandle;
|
||||
import android.os.UserManager;
|
||||
import android.util.Slog;
|
||||
import android.util.proto.ProtoOutputStream;
|
||||
import android.view.Surface;
|
||||
|
||||
import com.android.internal.R;
|
||||
import com.android.internal.util.FrameworkStatsLog;
|
||||
@@ -539,8 +538,7 @@ public class Fingerprint21 implements IHwBinder.DeathRecipient, ServiceProvider
|
||||
@Override
|
||||
public void scheduleEnroll(int sensorId, @NonNull IBinder token,
|
||||
@NonNull byte[] hardwareAuthToken, int userId,
|
||||
@NonNull IFingerprintServiceReceiver receiver, @NonNull String opPackageName,
|
||||
@Nullable Surface surface) {
|
||||
@NonNull IFingerprintServiceReceiver receiver, @NonNull String opPackageName) {
|
||||
mHandler.post(() -> {
|
||||
scheduleUpdateActiveUserWithoutHandler(userId);
|
||||
|
||||
@@ -571,7 +569,7 @@ public class Fingerprint21 implements IHwBinder.DeathRecipient, ServiceProvider
|
||||
@Override
|
||||
public void scheduleFingerDetect(int sensorId, @NonNull IBinder token, int userId,
|
||||
@NonNull ClientMonitorCallbackConverter listener, @NonNull String opPackageName,
|
||||
@Nullable Surface surface, int statsClient) {
|
||||
int statsClient) {
|
||||
mHandler.post(() -> {
|
||||
scheduleUpdateActiveUserWithoutHandler(userId);
|
||||
|
||||
|
||||
@@ -78,12 +78,6 @@ static const JNINativeMethod method_table[] = {
|
||||
reinterpret_cast<void*>(convertSurfaceToNativeHandle)},
|
||||
};
|
||||
|
||||
int register_android_server_FingerprintService(JNIEnv* env) {
|
||||
return jniRegisterNativeMethods(env,
|
||||
"com/android/server/biometrics/sensors/fingerprint/FingerprintService",
|
||||
method_table, NELEM(method_table));
|
||||
}
|
||||
|
||||
int register_android_server_FaceService(JNIEnv* env) {
|
||||
return jniRegisterNativeMethods(env, "com/android/server/biometrics/sensors/face/FaceService",
|
||||
method_table, NELEM(method_table));
|
||||
|
||||
@@ -62,7 +62,6 @@ int register_com_android_server_soundtrigger_middleware_ExternalCaptureStateTrac
|
||||
int register_android_server_com_android_server_pm_PackageManagerShellCommandDataLoader(JNIEnv* env);
|
||||
int register_android_server_stats_pull_StatsPullAtomService(JNIEnv* env);
|
||||
int register_android_server_AdbDebuggingManager(JNIEnv* env);
|
||||
int register_android_server_FingerprintService(JNIEnv* env);
|
||||
int register_android_server_FaceService(JNIEnv* env);
|
||||
int register_android_server_GpuService(JNIEnv* env);
|
||||
};
|
||||
@@ -120,7 +119,6 @@ extern "C" jint JNI_OnLoad(JavaVM* vm, void* /* reserved */)
|
||||
register_android_server_com_android_server_pm_PackageManagerShellCommandDataLoader(env);
|
||||
register_android_server_stats_pull_StatsPullAtomService(env);
|
||||
register_android_server_AdbDebuggingManager(env);
|
||||
register_android_server_FingerprintService(env);
|
||||
register_android_server_FaceService(env);
|
||||
register_android_server_GpuService(env);
|
||||
return JNI_VERSION_1_4;
|
||||
|
||||
Reference in New Issue
Block a user