示例#1
0
        private void HandleFingerprintKeyInvalidated()
        {
            var btn = FindViewById <ImageButton>(Resource.Id.fingerprintbtn);

//key invalidated permanently
            btn.SetImageResource(Resource.Drawable.ic_fingerprint_error);
            btn.Tag = GetString(Resource.String.fingerprint_unlock_failed) + " " + GetString(Resource.String.fingerprint_reenable2);
            _fingerprintIdentifier = null;
        }
示例#2
0
        protected override void OnPause()
        {
            if (_fingerprintIdentifier != null)
            {
                Kp2aLog.Log("FP: Stop listening");
                _fingerprintIdentifier.StopListening();
                _fingerprintIdentifier = null;
            }

            base.OnPause();
        }
示例#3
0
        public override void    OnRequestPermissionsResult(int requestCode, string[] permissions, Permission[] grantResults)
        {
            Kp2aLog.Log("OnRequestPermissionsResult " + (requestCode == FingerprintPermissionRequestCode) +
                        ((grantResults.Length > 0) && (grantResults[0] == Permission.Granted)));

            if ((requestCode == FingerprintPermissionRequestCode) && (grantResults.Length > 0) && (grantResults[0] == Permission.Granted))
            {
                var btn = FindViewById <ImageButton>(Resource.Id.fingerprintbtn);
                btn.Click += (sender, args) =>
                {
                    AlertDialog.Builder b = new AlertDialog.Builder(this);
                    b.SetTitle(Resource.String.fingerprint_prefs);
                    b.SetMessage(btn.Tag.ToString());
                    b.SetPositiveButton(Android.Resource.String.Ok, (o, eventArgs) => ((Dialog)o).Dismiss());
                    if (_fingerprintIdentifier != null)
                    {
                        b.SetNegativeButton(Resource.String.disable_sensor, (senderAlert, alertArgs) =>
                        {
                            btn.SetImageResource(Resource.Drawable.ic_fingerprint_error);
                            _fingerprintIdentifier?.StopListening();
                            _fingerprintIdentifier = null;
                        });
                    }
                    else
                    {
                        b.SetNegativeButton(Resource.String.enable_sensor, (senderAlert, alertArgs) =>
                        {
                            InitFingerprintUnlock();
                        });
                    }
                    b.Show();
                };
                _fingerprintPermissionGranted = true;
                Kp2aLog.Log("_fingerprintPermissionGranted");
                if (_onResumeDone)
                {
                    //it seems the permission result is called after onResume sometimes. Repeat fingerprint unlock then.
                    InitFingerprintUnlock();
                }
            }
        }
示例#4
0
        private bool InitFingerprintUnlock()
        {
            Kp2aLog.Log("InitFingerprintUnlock");

            if (_fingerprintIdentifier != null)
            {
                Kp2aLog.Log("Already listening for fingerprint!");
                return(true);
            }


            var btn = FindViewById <ImageButton>(Resource.Id.fingerprintbtn);

            try
            {
                FingerprintUnlockMode um;
                Enum.TryParse(PreferenceManager.GetDefaultSharedPreferences(this).GetString(App.Kp2a.GetDbForQuickUnlock().CurrentFingerprintModePrefKey, ""), out um);
                btn.Visibility = (um != FingerprintUnlockMode.Disabled) ? ViewStates.Visible : ViewStates.Gone;

                if (um == FingerprintUnlockMode.Disabled)
                {
                    _fingerprintIdentifier = null;
                    return(false);
                }

                if (_fingerprintPermissionGranted)
                {
                    FingerprintModule fpModule = new FingerprintModule(this);
                    Kp2aLog.Log("fpModule.FingerprintManager.IsHardwareDetected=" + fpModule.FingerprintManager.IsHardwareDetected);
                    if (fpModule.FingerprintManager.IsHardwareDetected)                     //see FingerprintSetupActivity
                    {
                        _fingerprintIdentifier = new FingerprintDecryption(fpModule, App.Kp2a.GetDbForQuickUnlock().CurrentFingerprintPrefKey, this,
                                                                           App.Kp2a.GetDbForQuickUnlock().CurrentFingerprintPrefKey);
                    }
                }
                if ((_fingerprintIdentifier == null) && (!FingerprintDecryption.IsSetUp(this, App.Kp2a.GetDbForQuickUnlock().CurrentFingerprintPrefKey)))
                {
                    try
                    {
                        Kp2aLog.Log("trying Samsung Fingerprint API...");
                        _fingerprintIdentifier = new FingerprintSamsungIdentifier(this);
                        btn.Click += (sender, args) =>
                        {
                            if (_fingerprintIdentifier.Init())
                            {
                                _fingerprintIdentifier.StartListening(this, this);
                            }
                        };
                        Kp2aLog.Log("trying Samsung Fingerprint API...Seems to work!");
                    }
                    catch (Exception)
                    {
                        Kp2aLog.Log("trying Samsung Fingerprint API...failed.");
                        _fingerprintIdentifier = null;
                    }
                }
                if (_fingerprintIdentifier == null)
                {
                    FindViewById <ImageButton>(Resource.Id.fingerprintbtn).Visibility = ViewStates.Gone;
                    return(false);
                }
                btn.Tag = GetString(Resource.String.fingerprint_unlock_hint);

                if (_fingerprintIdentifier.Init())
                {
                    Kp2aLog.Log("successfully initialized fingerprint.");
                    btn.SetImageResource(Resource.Drawable.ic_fp_40px);
                    _fingerprintIdentifier.StartListening(this, this);
                    return(true);
                }
                else
                {
                    Kp2aLog.Log("failed to initialize fingerprint.");
                    HandleFingerprintKeyInvalidated();
                }
            }
            catch (Exception e)
            {
                Kp2aLog.Log("Error initializing Fingerprint Unlock: " + e);
                btn.SetImageResource(Resource.Drawable.ic_fingerprint_error);
                btn.Tag = "Error initializing Fingerprint Unlock: " + e;

                _fingerprintIdentifier = null;
            }
            return(false);
        }