Merge "Refine FingerprintEnrollmentActivity"
This commit is contained in:
committed by
Android (Google) Code Review
commit
b39a71e434
@@ -29,6 +29,7 @@ import androidx.lifecycle.viewmodel.CreationExtras;
|
||||
import com.android.internal.widget.LockPatternUtils;
|
||||
import com.android.settings.biometrics.fingerprint.FingerprintUpdater;
|
||||
import com.android.settings.biometrics2.data.repository.FingerprintRepository;
|
||||
import com.android.settings.biometrics2.ui.model.EnrollmentRequest;
|
||||
import com.android.settings.biometrics2.ui.viewmodel.AutoCredentialViewModel;
|
||||
import com.android.settings.biometrics2.ui.viewmodel.AutoCredentialViewModel.ChallengeGenerator;
|
||||
import com.android.settings.biometrics2.ui.viewmodel.DeviceFoldedViewModel;
|
||||
@@ -47,8 +48,11 @@ public class BiometricsViewModelFactory implements ViewModelProvider.Factory {
|
||||
|
||||
private static final String TAG = "BiometricsViewModelFact";
|
||||
|
||||
public static final CreationExtras.Key<ChallengeGenerator> CHALLENGE_GENERATOR =
|
||||
new CreationExtras.Key<ChallengeGenerator>() {};
|
||||
public static final CreationExtras.Key<ChallengeGenerator> CHALLENGE_GENERATOR_KEY =
|
||||
new CreationExtras.Key<>() {};
|
||||
public static final CreationExtras.Key<EnrollmentRequest> ENROLLMENT_REQUEST_KEY =
|
||||
new CreationExtras.Key<>() {};
|
||||
public static final CreationExtras.Key<Integer> USER_ID_KEY = new CreationExtras.Key<>() {};
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
@@ -68,7 +72,7 @@ public class BiometricsViewModelFactory implements ViewModelProvider.Factory {
|
||||
if (modelClass.isAssignableFrom(AutoCredentialViewModel.class)) {
|
||||
final LockPatternUtils lockPatternUtils =
|
||||
featureFactory.getSecurityFeatureProvider().getLockPatternUtils(application);
|
||||
final ChallengeGenerator challengeGenerator = extras.get(CHALLENGE_GENERATOR);
|
||||
final ChallengeGenerator challengeGenerator = extras.get(CHALLENGE_GENERATOR_KEY);
|
||||
if (challengeGenerator != null) {
|
||||
return (T) new AutoCredentialViewModel(application, lockPatternUtils,
|
||||
challengeGenerator);
|
||||
@@ -79,21 +83,31 @@ public class BiometricsViewModelFactory implements ViewModelProvider.Factory {
|
||||
} else if (modelClass.isAssignableFrom(DeviceRotationViewModel.class)) {
|
||||
return (T) new DeviceRotationViewModel(application);
|
||||
} else if (modelClass.isAssignableFrom(FingerprintEnrollFindSensorViewModel.class)) {
|
||||
return (T) new FingerprintEnrollFindSensorViewModel(application);
|
||||
final EnrollmentRequest request = extras.get(ENROLLMENT_REQUEST_KEY);
|
||||
if (request != null) {
|
||||
return (T) new FingerprintEnrollFindSensorViewModel(application, request.isSuw());
|
||||
}
|
||||
} else if (modelClass.isAssignableFrom(FingerprintEnrollIntroViewModel.class)) {
|
||||
final FingerprintRepository repository = provider.getFingerprintRepository(application);
|
||||
if (repository != null) {
|
||||
return (T) new FingerprintEnrollIntroViewModel(application, repository);
|
||||
final EnrollmentRequest request = extras.get(ENROLLMENT_REQUEST_KEY);
|
||||
final Integer userId = extras.get(USER_ID_KEY);
|
||||
if (repository != null && request != null && userId != null) {
|
||||
return (T) new FingerprintEnrollIntroViewModel(application, repository, request,
|
||||
userId);
|
||||
}
|
||||
} else if (modelClass.isAssignableFrom(FingerprintEnrollmentViewModel.class)) {
|
||||
final FingerprintRepository repository = provider.getFingerprintRepository(application);
|
||||
if (repository != null) {
|
||||
final EnrollmentRequest request = extras.get(ENROLLMENT_REQUEST_KEY);
|
||||
if (repository != null && request != null) {
|
||||
return (T) new FingerprintEnrollmentViewModel(application, repository,
|
||||
application.getSystemService(KeyguardManager.class));
|
||||
application.getSystemService(KeyguardManager.class), request);
|
||||
}
|
||||
} else if (modelClass.isAssignableFrom(FingerprintEnrollProgressViewModel.class)) {
|
||||
return (T) new FingerprintEnrollProgressViewModel(application,
|
||||
new FingerprintUpdater(application));
|
||||
final Integer userId = extras.get(USER_ID_KEY);
|
||||
if (userId != null) {
|
||||
return (T) new FingerprintEnrollProgressViewModel(application,
|
||||
new FingerprintUpdater(application), userId);
|
||||
}
|
||||
}
|
||||
return create(modelClass);
|
||||
}
|
||||
|
||||
@@ -82,7 +82,10 @@ public final class CredentialModel {
|
||||
@Nullable
|
||||
private Long mClearGkPwHandleMillis = null;
|
||||
|
||||
public CredentialModel(@NonNull Bundle bundle, @NonNull Clock clock) {
|
||||
public CredentialModel(@Nullable Bundle bundle, @NonNull Clock clock) {
|
||||
if (bundle == null) {
|
||||
bundle = new Bundle();
|
||||
}
|
||||
mUserId = bundle.getInt(Intent.EXTRA_USER_ID, UserHandle.myUserId());
|
||||
mSensorId = bundle.getInt(EXTRA_KEY_SENSOR_ID, INVALID_SENSOR_ID);
|
||||
mChallenge = bundle.getLong(EXTRA_KEY_CHALLENGE, INVALID_CHALLENGE);
|
||||
|
||||
@@ -163,7 +163,7 @@ public class FingerprintEnrollIntroFragment extends Fragment {
|
||||
mIconShield.setVisibility(View.GONE);
|
||||
}
|
||||
mSecondaryFooterButton.setText(context,
|
||||
mViewModel.getEnrollmentRequest().isAfterSuwOrSuwSuggestedAction()
|
||||
mViewModel.getRequest().isAfterSuwOrSuwSuggestedAction()
|
||||
? R.string.security_settings_fingerprint_enroll_introduction_cancel
|
||||
: R.string.security_settings_fingerprint_enroll_introduction_no_thanks);
|
||||
|
||||
@@ -209,16 +209,9 @@ public class FingerprintEnrollIntroFragment extends Fragment {
|
||||
public void onAttach(@NonNull Context context) {
|
||||
mViewModel = new ViewModelProvider(getActivity())
|
||||
.get(FingerprintEnrollIntroViewModel.class);
|
||||
getLifecycle().addObserver(mViewModel);
|
||||
super.onAttach(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDetach() {
|
||||
getLifecycle().removeObserver(mViewModel);
|
||||
super.onDetach();
|
||||
}
|
||||
|
||||
@NonNull
|
||||
private PorterDuffColorFilter getIconColorFilter(@NonNull Context context) {
|
||||
if (mIconColorFilter == null) {
|
||||
|
||||
@@ -19,7 +19,9 @@ package com.android.settings.biometrics2.ui.view;
|
||||
import static androidx.activity.result.contract.ActivityResultContracts.StartActivityForResult;
|
||||
import static androidx.lifecycle.ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY;
|
||||
|
||||
import static com.android.settings.biometrics2.factory.BiometricsViewModelFactory.CHALLENGE_GENERATOR;
|
||||
import static com.android.settings.biometrics2.factory.BiometricsViewModelFactory.CHALLENGE_GENERATOR_KEY;
|
||||
import static com.android.settings.biometrics2.factory.BiometricsViewModelFactory.ENROLLMENT_REQUEST_KEY;
|
||||
import static com.android.settings.biometrics2.factory.BiometricsViewModelFactory.USER_ID_KEY;
|
||||
import static com.android.settings.biometrics2.ui.viewmodel.AutoCredentialViewModel.CREDENTIAL_FAIL_NEED_TO_CHOOSE_LOCK;
|
||||
import static com.android.settings.biometrics2.ui.viewmodel.AutoCredentialViewModel.CREDENTIAL_FAIL_NEED_TO_CONFIRM_LOCK;
|
||||
import static com.android.settings.biometrics2.ui.viewmodel.AutoCredentialViewModel.CREDENTIAL_IS_GENERATING_CHALLENGE;
|
||||
@@ -37,9 +39,11 @@ import android.annotation.StyleRes;
|
||||
import android.app.Application;
|
||||
import android.content.Intent;
|
||||
import android.content.res.ColorStateList;
|
||||
import android.content.res.Configuration;
|
||||
import android.content.res.Resources;
|
||||
import android.graphics.Color;
|
||||
import android.os.Bundle;
|
||||
import android.os.SystemClock;
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.activity.result.ActivityResult;
|
||||
@@ -63,9 +67,11 @@ import com.android.settings.biometrics.fingerprint.FingerprintEnrollEnrolling;
|
||||
import com.android.settings.biometrics.fingerprint.SetupFingerprintEnrollEnrolling;
|
||||
import com.android.settings.biometrics2.data.repository.FingerprintRepository;
|
||||
import com.android.settings.biometrics2.factory.BiometricsViewModelFactory;
|
||||
import com.android.settings.biometrics2.ui.model.CredentialModel;
|
||||
import com.android.settings.biometrics2.ui.model.EnrollmentRequest;
|
||||
import com.android.settings.biometrics2.ui.viewmodel.AutoCredentialViewModel;
|
||||
import com.android.settings.biometrics2.ui.viewmodel.AutoCredentialViewModel.FingerprintChallengeGenerator;
|
||||
import com.android.settings.biometrics2.ui.viewmodel.DeviceFoldedViewModel;
|
||||
import com.android.settings.biometrics2.ui.viewmodel.FingerprintEnrollFindSensorViewModel;
|
||||
import com.android.settings.biometrics2.ui.viewmodel.FingerprintEnrollIntroViewModel;
|
||||
import com.android.settings.biometrics2.ui.viewmodel.FingerprintEnrollProgressViewModel;
|
||||
@@ -126,7 +132,6 @@ public class FingerprintEnrollmentActivity extends FragmentActivity {
|
||||
mViewModelProvider = new ViewModelProvider(this);
|
||||
|
||||
mViewModel = mViewModelProvider.get(FingerprintEnrollmentViewModel.class);
|
||||
mViewModel.setRequest(new EnrollmentRequest(getIntent(), getApplicationContext()));
|
||||
mViewModel.setSavedInstanceState(savedInstanceState);
|
||||
|
||||
mAutoCredentialViewModel = mViewModelProvider.get(AutoCredentialViewModel.class);
|
||||
@@ -173,7 +178,6 @@ public class FingerprintEnrollmentActivity extends FragmentActivity {
|
||||
}
|
||||
|
||||
// observe LiveData
|
||||
getLifecycle().addObserver(mViewModel);
|
||||
mViewModel.getSetResultLiveData().observe(this, this::onSetActivityResult);
|
||||
|
||||
mAutoCredentialViewModel.getGenerateChallengeFailedLiveData().observe(this,
|
||||
@@ -193,9 +197,6 @@ public class FingerprintEnrollmentActivity extends FragmentActivity {
|
||||
final FingerprintEnrollIntroViewModel introViewModel =
|
||||
mViewModelProvider.get(FingerprintEnrollIntroViewModel.class);
|
||||
|
||||
introViewModel.setEnrollmentRequest(mViewModel.getRequest());
|
||||
introViewModel.setUserId(mAutoCredentialViewModel.getUserId());
|
||||
|
||||
// Clear ActionLiveData in FragmentViewModel to prevent getting previous action during
|
||||
// recreate, like press 'Agree' then press 'back' in FingerprintEnrollFindSensor activity.
|
||||
introViewModel.clearActionLiveData();
|
||||
@@ -224,12 +225,10 @@ public class FingerprintEnrollmentActivity extends FragmentActivity {
|
||||
if (initProgressViewModel) {
|
||||
final FingerprintEnrollProgressViewModel progressViewModel =
|
||||
mViewModelProvider.get(FingerprintEnrollProgressViewModel.class);
|
||||
progressViewModel.setUserId(mAutoCredentialViewModel.getUserId());
|
||||
progressViewModel.setToken(mAutoCredentialViewModel.getToken());
|
||||
}
|
||||
final FingerprintEnrollFindSensorViewModel findSensorViewModel =
|
||||
mViewModelProvider.get(FingerprintEnrollFindSensorViewModel.class);
|
||||
findSensorViewModel.setIsSuw(mViewModel.getRequest().isSuw());
|
||||
getSupportFragmentManager().beginTransaction()
|
||||
.setReorderingAllowed(true)
|
||||
.setCustomAnimations(R.anim.sud_slide_next_in, R.anim.sud_slide_next_out,
|
||||
@@ -408,9 +407,19 @@ public class FingerprintEnrollmentActivity extends FragmentActivity {
|
||||
super.getDefaultViewModelCreationExtras().get(APPLICATION_KEY);
|
||||
final MutableCreationExtras ret = new MutableCreationExtras();
|
||||
ret.set(APPLICATION_KEY, application);
|
||||
|
||||
final FingerprintRepository repository = FeatureFactory.getFactory(application)
|
||||
.getBiometricsRepositoryProvider().getFingerprintRepository(application);
|
||||
ret.set(CHALLENGE_GENERATOR, new FingerprintChallengeGenerator(repository));
|
||||
ret.set(CHALLENGE_GENERATOR_KEY, new FingerprintChallengeGenerator(repository));
|
||||
|
||||
ret.set(ENROLLMENT_REQUEST_KEY, new EnrollmentRequest(getIntent(),
|
||||
getApplicationContext()));
|
||||
|
||||
Bundle extras = getIntent().getExtras();
|
||||
final CredentialModel credentialModel = new CredentialModel(extras,
|
||||
SystemClock.elapsedRealtimeClock());
|
||||
ret.set(USER_ID_KEY, credentialModel.getUserId());
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -433,9 +442,9 @@ public class FingerprintEnrollmentActivity extends FragmentActivity {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
getLifecycle().removeObserver(mViewModel);
|
||||
super.onDestroy();
|
||||
public void onConfigurationChanged(@NonNull Configuration newConfig) {
|
||||
mViewModelProvider.get(DeviceFoldedViewModel.class).onConfigurationChanged(newConfig);
|
||||
super.onConfigurationChanged(newConfig);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -201,8 +201,7 @@ public class AutoCredentialViewModel extends AndroidViewModel {
|
||||
} else {
|
||||
bundle = intent.getExtras();
|
||||
}
|
||||
mCredentialModel = new CredentialModel(bundle != null ? bundle : new Bundle(),
|
||||
SystemClock.elapsedRealtimeClock());
|
||||
mCredentialModel = new CredentialModel(bundle, SystemClock.elapsedRealtimeClock());
|
||||
|
||||
if (DEBUG) {
|
||||
Log.d(TAG, "setCredentialModel " + mCredentialModel + ", savedInstanceState exist:"
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
package com.android.settings.biometrics2.ui.viewmodel;
|
||||
|
||||
import android.content.res.Configuration;
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
@@ -51,6 +52,13 @@ public class DeviceFoldedViewModel extends ViewModel {
|
||||
mScreenSizeFoldProvider.registerCallback(mIsFoldedCallback, executor);
|
||||
}
|
||||
|
||||
/**
|
||||
* Calls this method when activity gets configuration change
|
||||
*/
|
||||
public void onConfigurationChanged(@NonNull Configuration newConfig) {
|
||||
mScreenSizeFoldProvider.onConfigurationChange(newConfig);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns FoldedLiveData
|
||||
*/
|
||||
|
||||
@@ -29,17 +29,25 @@ import androidx.lifecycle.AndroidViewModel;
|
||||
import androidx.lifecycle.LiveData;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
import com.android.internal.annotations.VisibleForTesting;
|
||||
|
||||
/**
|
||||
* ViewModel explaining the fingerprint sensor location for fingerprint enrollment.
|
||||
*/
|
||||
public class DeviceRotationViewModel extends AndroidViewModel {
|
||||
|
||||
private static final boolean DEBUG = false;
|
||||
private static final String TAG = "RotationViewModel";
|
||||
private static final String TAG = "DeviceRotationViewModel";
|
||||
|
||||
private final DisplayManager mDisplayManager;
|
||||
private final boolean mIsReverseDefaultRotation;
|
||||
@NonNull private final DisplayInfo mDisplayInfo = new DisplayInfo();
|
||||
private final DisplayListener mDisplayListener = new DisplayListener() {
|
||||
|
||||
/** {@link android.hardware.display.DisplayManager} is a final class, set this member visibility
|
||||
* to 'protected' for testing
|
||||
*/
|
||||
@VisibleForTesting
|
||||
protected final DisplayListener mDisplayListener = new DisplayListener() {
|
||||
@Override
|
||||
public void onDisplayAdded(int displayId) {
|
||||
}
|
||||
@@ -58,29 +66,43 @@ public class DeviceRotationViewModel extends AndroidViewModel {
|
||||
}
|
||||
};
|
||||
|
||||
@NonNull private final MutableLiveData<Integer> mLiveData =
|
||||
new MutableLiveData<>(getRotation());
|
||||
@NonNull private final MutableLiveData<Integer> mLiveData = new MutableLiveData<>();
|
||||
|
||||
public DeviceRotationViewModel(@NonNull Application application) {
|
||||
super(application);
|
||||
mDisplayManager = application.getSystemService(DisplayManager.class);
|
||||
mDisplayManager.registerDisplayListener(mDisplayListener,
|
||||
application.getMainThreadHandler());
|
||||
mIsReverseDefaultRotation = application.getResources().getBoolean(
|
||||
com.android.internal.R.bool.config_reverseDefaultRotation);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns current rotation
|
||||
* Returns current rotation.
|
||||
*
|
||||
* {@link android.view.Display} is a final class, set this method visibility to "protected" for
|
||||
* inheriting it in test
|
||||
*/
|
||||
@VisibleForTesting
|
||||
@Surface.Rotation
|
||||
private int getRotation() {
|
||||
protected int getRotation() {
|
||||
getApplication().getDisplay().getDisplayInfo(mDisplayInfo);
|
||||
return mDisplayInfo.rotation;
|
||||
if (mIsReverseDefaultRotation) {
|
||||
return (mDisplayInfo.rotation + 1) % 4;
|
||||
} else {
|
||||
return mDisplayInfo.rotation;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns RotationLiveData
|
||||
*/
|
||||
public LiveData<Integer> getLiveData() {
|
||||
if (mLiveData.getValue() == null) {
|
||||
// Init data here because if we set it through getDisplay().getRotation() or through
|
||||
// getDisplay().getDisplayInfo() in constructor(), we always get incorrect value.
|
||||
mLiveData.setValue(getRotation());
|
||||
}
|
||||
return mLiveData;
|
||||
}
|
||||
|
||||
|
||||
@@ -62,18 +62,12 @@ public class FingerprintEnrollFindSensorViewModel extends AndroidViewModel {
|
||||
|
||||
private final AccessibilityManager mAccessibilityManager;
|
||||
|
||||
private boolean mIsSuw = false;
|
||||
private final boolean mIsSuw;
|
||||
@NonNull private final MutableLiveData<Integer> mActionLiveData = new MutableLiveData<>();
|
||||
|
||||
public FingerprintEnrollFindSensorViewModel(@NonNull Application application) {
|
||||
public FingerprintEnrollFindSensorViewModel(@NonNull Application application, boolean isSuw) {
|
||||
super(application);
|
||||
mAccessibilityManager = application.getSystemService(AccessibilityManager.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets isSetupWizard or not
|
||||
*/
|
||||
public void setIsSuw(boolean isSuw) {
|
||||
mIsSuw = isSuw;
|
||||
}
|
||||
|
||||
|
||||
@@ -22,13 +22,10 @@ import static com.android.settings.biometrics2.ui.model.FingerprintEnrollIntroSt
|
||||
|
||||
import android.annotation.IntDef;
|
||||
import android.app.Application;
|
||||
import android.os.UserHandle;
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.lifecycle.AndroidViewModel;
|
||||
import androidx.lifecycle.DefaultLifecycleObserver;
|
||||
import androidx.lifecycle.LifecycleOwner;
|
||||
import androidx.lifecycle.LiveData;
|
||||
import androidx.lifecycle.MediatorLiveData;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
@@ -43,8 +40,7 @@ import java.lang.annotation.RetentionPolicy;
|
||||
/**
|
||||
* Fingerprint intro onboarding page view model implementation
|
||||
*/
|
||||
public class FingerprintEnrollIntroViewModel extends AndroidViewModel
|
||||
implements DefaultLifecycleObserver {
|
||||
public class FingerprintEnrollIntroViewModel extends AndroidViewModel {
|
||||
|
||||
private static final String TAG = "FingerprintEnrollIntroViewModel";
|
||||
private static final boolean HAS_SCROLLED_TO_BOTTOM_DEFAULT = false;
|
||||
@@ -82,13 +78,16 @@ public class FingerprintEnrollIntroViewModel extends AndroidViewModel
|
||||
private final MediatorLiveData<FingerprintEnrollIntroStatus> mPageStatusLiveData =
|
||||
new MediatorLiveData<>();
|
||||
private final MutableLiveData<Integer> mActionLiveData = new MutableLiveData<>();
|
||||
private int mUserId = UserHandle.myUserId();
|
||||
private EnrollmentRequest mEnrollmentRequest = null;
|
||||
private final int mUserId;
|
||||
@NonNull private final EnrollmentRequest mRequest;
|
||||
|
||||
public FingerprintEnrollIntroViewModel(@NonNull Application application,
|
||||
@NonNull FingerprintRepository fingerprintRepository) {
|
||||
@NonNull FingerprintRepository fingerprintRepository,
|
||||
@NonNull EnrollmentRequest request, int userId) {
|
||||
super(application);
|
||||
mFingerprintRepository = fingerprintRepository;
|
||||
mRequest = request;
|
||||
mUserId = userId;
|
||||
|
||||
mPageStatusLiveData.addSource(
|
||||
mEnrollableStatusLiveData,
|
||||
@@ -108,27 +107,21 @@ public class FingerprintEnrollIntroViewModel extends AndroidViewModel
|
||||
enrollableValue != null ? enrollableValue : ENROLLABLE_STATUS_DEFAULT);
|
||||
mPageStatusLiveData.setValue(status);
|
||||
});
|
||||
}
|
||||
|
||||
public void setUserId(int userId) {
|
||||
mUserId = userId;
|
||||
}
|
||||
|
||||
public void setEnrollmentRequest(@NonNull EnrollmentRequest enrollmentRequest) {
|
||||
mEnrollmentRequest = enrollmentRequest;
|
||||
updateEnrollableStatus();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get enrollment request
|
||||
*/
|
||||
public EnrollmentRequest getEnrollmentRequest() {
|
||||
return mEnrollmentRequest;
|
||||
public EnrollmentRequest getRequest() {
|
||||
return mRequest;
|
||||
}
|
||||
|
||||
private void updateEnrollableStatus() {
|
||||
final int num = mFingerprintRepository.getNumOfEnrolledFingerprintsSize(mUserId);
|
||||
final int max =
|
||||
mEnrollmentRequest.isSuw() && !mEnrollmentRequest.isAfterSuwOrSuwSuggestedAction()
|
||||
mRequest.isSuw() && !mRequest.isAfterSuwOrSuwSuggestedAction()
|
||||
? mFingerprintRepository.getMaxFingerprintsInSuw(getApplication().getResources())
|
||||
: mFingerprintRepository.getMaxFingerprints();
|
||||
mEnrollableStatusLiveData.postValue(num >= max
|
||||
@@ -208,10 +201,4 @@ public class FingerprintEnrollIntroViewModel extends AndroidViewModel
|
||||
public void onSkipOrCancelButtonClick() {
|
||||
mActionLiveData.postValue(FINGERPRINT_ENROLL_INTRO_ACTION_SKIP_OR_CANCEL);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart(@NonNull LifecycleOwner owner) {
|
||||
updateEnrollableStatus();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -25,7 +25,6 @@ import android.hardware.fingerprint.FingerprintManager.EnrollReason;
|
||||
import android.hardware.fingerprint.FingerprintManager.EnrollmentCallback;
|
||||
import android.os.CancellationSignal;
|
||||
import android.os.SystemClock;
|
||||
import android.os.UserHandle;
|
||||
import android.util.Log;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
@@ -58,7 +57,7 @@ public class FingerprintEnrollProgressViewModel extends AndroidViewModel {
|
||||
new MutableLiveData<>();
|
||||
|
||||
private byte[] mToken = null;
|
||||
private int mUserId = UserHandle.myUserId();
|
||||
private final int mUserId;
|
||||
|
||||
private final FingerprintUpdater mFingerprintUpdater;
|
||||
private final MessageDisplayController mMessageDisplayController;
|
||||
@@ -90,9 +89,11 @@ public class FingerprintEnrollProgressViewModel extends AndroidViewModel {
|
||||
};
|
||||
|
||||
public FingerprintEnrollProgressViewModel(@NonNull Application application,
|
||||
@NonNull FingerprintUpdater fingerprintUpdater) {
|
||||
@NonNull FingerprintUpdater fingerprintUpdater, int userId) {
|
||||
super(application);
|
||||
mFingerprintUpdater = fingerprintUpdater;
|
||||
mUserId = userId;
|
||||
|
||||
final Resources res = application.getResources();
|
||||
mMessageDisplayController =
|
||||
res.getBoolean(R.bool.enrollment_message_display_controller_flag)
|
||||
@@ -112,10 +113,6 @@ public class FingerprintEnrollProgressViewModel extends AndroidViewModel {
|
||||
mToken = token;
|
||||
}
|
||||
|
||||
public void setUserId(int userId) {
|
||||
mUserId = userId;
|
||||
}
|
||||
|
||||
/**
|
||||
* clear progress
|
||||
*/
|
||||
|
||||
@@ -33,7 +33,6 @@ import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
import androidx.lifecycle.AndroidViewModel;
|
||||
import androidx.lifecycle.DefaultLifecycleObserver;
|
||||
import androidx.lifecycle.LiveData;
|
||||
import androidx.lifecycle.MutableLiveData;
|
||||
|
||||
@@ -47,8 +46,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
|
||||
/**
|
||||
* Fingerprint enrollment view model implementation
|
||||
*/
|
||||
public class FingerprintEnrollmentViewModel extends AndroidViewModel implements
|
||||
DefaultLifecycleObserver {
|
||||
public class FingerprintEnrollmentViewModel extends AndroidViewModel {
|
||||
|
||||
private static final String TAG = "FingerprintEnrollmentViewModel";
|
||||
|
||||
@@ -60,32 +58,23 @@ public class FingerprintEnrollmentViewModel extends AndroidViewModel implements
|
||||
|
||||
private final AtomicBoolean mIsWaitingActivityResult = new AtomicBoolean(false);
|
||||
private final MutableLiveData<ActivityResult> mSetResultLiveData = new MutableLiveData<>();
|
||||
|
||||
/**
|
||||
* Even this variable may be nullable, but activity will call setIntent() immediately during
|
||||
* its onCreate(), we do not assign @Nullable for this variable here.
|
||||
*/
|
||||
private EnrollmentRequest mRequest = null;
|
||||
@NonNull private final EnrollmentRequest mRequest;
|
||||
|
||||
public FingerprintEnrollmentViewModel(
|
||||
@NonNull Application application,
|
||||
@NonNull FingerprintRepository fingerprintRepository,
|
||||
@Nullable KeyguardManager keyguardManager) {
|
||||
@Nullable KeyguardManager keyguardManager,
|
||||
@NonNull EnrollmentRequest request) {
|
||||
super(application);
|
||||
mFingerprintRepository = fingerprintRepository;
|
||||
mKeyguardManager = keyguardManager;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set EnrollmentRequest
|
||||
*/
|
||||
public void setRequest(@NonNull EnrollmentRequest request) {
|
||||
mRequest = request;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get EnrollmentRequest
|
||||
*/
|
||||
@NonNull
|
||||
public EnrollmentRequest getRequest() {
|
||||
return mRequest;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user