BiometricPrompt kullanarak uygulamanıza parmak izi kimlik doğrulaması ekleyin

Yazar: Lewis Jackson
Yaratılış Tarihi: 13 Mayıs Ayı 2021
Güncelleme Tarihi: 1 Temmuz 2024
Anonim
Android Studio Emulator’deki Parmak İzi Sensörünü Kullanma
Video: Android Studio Emulator’deki Parmak İzi Sensörünü Kullanma

İçerik


Kullanıcının kimliğini bir parmak izi kullanarak onaylamasını sağlayacak bir uygulama oluşturmak için BiometricPrompt API'sini kullanalım.

Android Studio'yu açın ve “Boş Etkinlik” şablonunu kullanarak yeni bir proje oluşturun. Sorulduğunda, projenizin minimum SDK'sını 28 veya daha yükseğe ayarlayın; bu, uygulamanızın Android Pie'den önceki birşeye yüklenmesini önler.

Uygulamanızı daha geniş bir yelpazedeki Android cihazlarına erişilebilir hale getirmek istiyorsanız, uygulamanızın şu anda hangi Android sürümünde yüklü olduğunu kontrol etmeniz ve ardından cihazın API seviyesine bağlı olarak biyometrik kimlik doğrulamasını farklı şekilde yapmanız gerekir.

Biyometrik kütüphaneyi ekle

Başlamak için, modül düzeyinde build.gradle dosyanızı açın ve Biyometrik kütüphanenin en son sürümünü bir proje bağımlılığı olarak ekleyin:


bağımlılıklar {application androidx.biometric: biometric: 1.0.0-alpha03

USE_BIOMETRIC iznini ekleyin

BiometricPrompt API, tek bir izinle cihazın desteklediği tüm farklı biyometrik kimlik doğrulama yöntemlerinden yararlanmanızı sağlar.

Projenizin Manifestosunu açın ve “USE_BIOMETRIC” iznini ekleyin:

Uygulamanızın düzenini oluşturun

Ardından, uygulamamızın düzenini oluşturalım. Dokunulduğunda, parmak izi doğrulama iletişim kutusunu başlatacak tek bir düğme ekleyeceğim:

Projenizin strings.xml dosyasını açın ve “auth” string kaynağını ekleyin:


BiometricPromptSample Parmak izi ile doğrulayın

Kullanıcının kimliğini doğrulama

Şimdi, BiometricPrompt kullanarak, kullanıcının kimliğini nasıl doğruladığınıza bakalım.

Biyometrik bilgi istemi örneği oluşturun

BiometricPrompt sınıfı, bir BiometricPrompt örneği oluşturmak ve kimlik doğrulamayı başlatmak için kullanabileceğiniz bir arkadaşı Builder () sınıfı içerir:

son BiometricPrompt.PromptInfo promptInfo = new BiometricPrompt.PromptInfo.Builder ()

BiometricPrompt örneğinizi oluştururken, kimlik doğrulama iletişim kutusunda görünmesi gereken metni tanımlamanız ve kullanıcının kimlik doğrulamasını iptal etmesine izin veren düğme olan "negatif düğmesini" özelleştirmeniz gerekir.

Kimlik doğrulama iletişim kutusunu yapılandırmak için aşağıdakileri sağlamanız gerekir:

  • setTitle. Parmak izi doğrulama isteminin başlığı. (Gereklidir)
  • setSubtitle. Parmak izi doğrulama isteminin alt başlığı. (İsteğe bağlı)
  • AyarAçıklaması. Kimlik doğrulama iletişim kutunuzda görüntülenecek ek bir açıklama. (İsteğe bağlı)
  • setNegativeButton (metin, yürütücü, dinleyici). Bu, negatif düğmenin etiketidir, örneğin “İptal” veya “Çıkış”. Negatif düğmesini yapılandırırken, kullanıcının kimlik doğrulama iletişim kutusunu reddetmesi için bir Executor örneği ve OnClickListener sağlamanız gerekir.

Yazma sırasında, simgeyi veya kimlik doğrulama iletişiminde kullanılan hatayı özelleştirmek mümkün değildi.

Son olarak, build () işlevini çağırmanız gerekir. Bu bize aşağıdakileri verir:

final BiometricPrompt.PromptInfo promptInfo = yeni BiometricPrompt.PromptInfo.Builder () .setTitle ("Başlık metni buraya gider") .setSubtitle ("Subtitle buraya gider") .setDescription ("Bu, açıklamadır") .setNegativeButtonText ("Cancel"). .inşa etmek();

Kimlik doğrulama geri aramalarını ele al

BiometricPrompt örneğine, uygulamanıza kimlik doğrulama işleminin sonuçlarını bildiren bir kimlik doğrulama geri çağırma yöntemi atanır.

Bu geri aramaların tümünü bir BiometricPrompt.AuthenticationCallback sınıfı örneğine sarmanız gerekir:

final BiometricPrompt myBiometricPrompt = yeni BiometricPrompt (aktivite, yeniExecutor, yeni BiometricPrompt.AuthenticationCallback () {

Bir sonraki adım, aşağıdaki geri çağırma yöntemlerinin bazılarını veya tümünü uygulamaktır:

1. onAuthenticationSucceeded ()

Bu yöntem, parmak izi cihazda kayıtlı olan parmak izlerinden biri ile başarıyla eşlendiğinde çağrılır. Bu senaryoda, bir AuthenticationResult nesnesi onAuthenticationSucceeded callback öğesine iletilir ve uygulamanız bu başarılı kimlik doğrulamasına yanıt olarak bir görev gerçekleştirir.

İşleri kolaylaştırmaya yardımcı olmak için, uygulamamız bir Android Studio’nun Logcat’ine yazdırarak yanıt verecektir:

@ Genel geçersiz kılma onAuthenticationSucceeded (@ NoNull BiometricPrompt.AuthenticationResult sonucu) {super.onAuthenticationSucceeded (sonuç); Log.d (TAG, "Parmak izi başarıyla tanındı"); }

2. onAuthenticationFailed ()

Bu yöntem, tarama başarıyla tamamlandığında tetiklenir, ancak parmak izi cihazda kayıtlı baskıların hiçbiriyle eşleşmez. Yine, uygulamamız bu kimlik doğrulama olayına Logcat a yazarak yanıt verecektir:

@ Genel geçersizliği onAuthenticationFailed () geçersiz kılın () {super.onAuthenticationFailed (); Log.d (TAG, "Parmak izi tanınmadı"); }

3. onAuthenticationError

Bu geri arama, kurtarılamaz bir hata oluştuğunda tetiklenir ve kimlik doğrulama başarılı bir şekilde tamamlanamaz. Örneğin, cihazın dokunmatik sensörü kir veya yağla kaplı olabilir, kullanıcı bu cihaza herhangi bir parmak izi kaydetmedi veya tam bir biyometrik tarama yapmak için yeterli hafıza yok.

İşte uygulamamda kullanacağım kod:

@ Genel geçersizliği onAuthenticationError (int errorCode, @NonNull CharSequence errString) {super.onAuthenticationError (errorCode, errString); if (errorCode == BiometricPrompt.ERROR_NEGATIVE_BUTTON) {} else {Log.d (TAG, "Düzeltilemez bir hata oluştu"); }}

4. Kimlik Doğrulama Yardımı

Ölümcül olmayan bir hata oluştuğunda onAuthenticationHelp yöntemi çağrılır ve bir yardım kodu ile hata hakkında daha fazla bilgi sağlayan bir yöntem bulunur.

Kodumuzu basit tutmaya yardımcı olmak için, uygulamamızdaki OnententHelp'i kullanmayacağım, ancak bir uygulama şöyle görünür:

@Oirride public geçersiz onAuthenticationHelp (int helpCode, CharSequence helpString) {super.onAuthenticationHelp (helpCode, helpString); biometricCallback.onAuthenticationHelp (helpCode, helpString); }

Son olarak, BiometricPrompt örneğinin authenticate () yöntemini çağırmamız gerekir:

myBiometricPrompt.authenticate (promptInfo);

Android Pie’nin biyometrik kimlik doğrulamasını uygulama

Yukarıdaki tüm adımları tamamladığınızda, MainActivity'niz şöyle görünmelidir:

androidx.appcompat.app.AppCompatActivity dosyasını içe aktar; androidx.biometric.BiometricPrompt dosyasını içe aktarın; android.os.Bundle alma; ithalat java.util.concurrent.Executor; ithalat java.util.concurrent.Executors; androidx.fragment.app.FragmentActivity dosyasını içe aktar; android.util.Log dosyasını içe aktarın; android.view.View içeri aktar; androidx.annotation.NonNull dosyasını içe aktarın; genel sınıf MainActivity, AppCompatActivity'yi genişletir {private static final String TAG = MainActivity.class.getName (); @ Override korumalı geçersiz onCreate (Bundle savedInstanceState) {super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); // Tek iş parçacığı olan bir iş parçacığı havuzu oluşturun // Executor newExecutor = Executors.newSingleThreadExecutor (); FragmentActivity etkinliği = bu; // Kimlik doğrulama olaylarını dinlemeye başla // final BiometricPrompt myBiometricPrompt = yeni BiometricPrompt (aktivite, yeniExecutor, yeni BiometricPrompt.AuthenticationCallback () {@Override // onAuthenticationError, ölümcül bir hata meydana geldiğinde, //HopalFirionFirionFirionAffentNaler, onNameFirNameAntentAcion_Entror CharSequence errString) {super.onAuthenticationError (errorCode, errString); if (errorCode == BiometricPrompt.ERROR_NEGATIVE_BUTTON) {} else {// Logcat // Log.d (TAG, "Düzeltilemez bir hata oluştu")}}}; // onAuthenticationSucceeded, bir parmak izi başarılı bir şekilde eşleştiğinde çağrılır // @OffenticationSucceeded genel boşluğu geçersiz kıl (@NonNull BiometricPrompt.AuthenticationResult sonucu) {super.onAuthenticationSucceeded (result); // Logcat’a yazdırma // Log.d (TAG, "Parmak İzi başarıyla tanındı ");} // onAuthenticationFailed, parmak izi eşleşmediğinde çağrılır cat // Log.d (TAG, "Parmak izi tanınmadı"); }}); // BiometricPrompt örneği oluşturun // final BiometricPrompt.PromptInfo promptInfo = new BiometricPrompt.PromptInfo.Builder () // iletişim kutusuna bir metin ekleyin // .setTitle ("Başlık metni buraya giriyor") .setSubtitle ("Subtitle here" ".setSubtitle (" Subtitle here "). ) .setDescription ("Bu açıklama") .setNegativeButtonText ("Cancel") // İletişim kutusunu oluşturun // .build (); // Uygulamanın “Kimlik Doğrulama” düğmesine bir onClickListener atayın // findViewById (R.id.launchAuthentication) .setOnClickListener (yeni View.OnClickListener () {@Override public void onClick (Görünüm v) {myBiometricPrompt.authenticate (prompt); }); }}

Projenizi test etmek

Artık projenizi yarattınız, teste koymanın ve uygulamanıza gerçekten parmak izi kimlik doğrulaması ekleyip eklememediğini görme zamanı!

Bu projeyi çalıştırmak için Android Pastası çalıştıran fiziksel bir akıllı telefona veya tablete veya Android P önizlemesini veya daha üstünü kullanan bir Android Sanal Cihazı'na (AVD) ihtiyacınız olacak.

Cihazınıza en az bir parmak izi kaydetmeniz de gerekir. Fiziksel bir Android cihazı kullanıyorsanız, o zaman:

  • Önceden yapmadıysanız, kilit ekranınızı bir PIN, şifre veya model ile sabitleyin (“Ayarlar> Ekranı kilitle ve güvenlik> Ekran kilidi türü> Desen / İğne / Şifre” ye giderek ve ekrandaki talimatları izleyerek).
  • Cihazınızın “Ayarlar” uygulamasını başlatın.
  • “Ekranı ve güvenliği kilitle” seçeneğini seçin.
  • “Parmak izi tarayıcı” yı seçin.
  • Bir veya daha fazla parmak izi kaydetmek için talimatları izleyin.

Android sanal cihazlarında fiziksel bir dokunma sensörü yoktur, bu nedenle bir dokunma etkinliğini simüle etmeniz gerekir:

  • Daha önce yapmadıysanız, AVD’nizi başlatın.
  • AVD'nin yanında bir düğme şeridi göreceksiniz. Üç noktalı “Diğer” düğmesini bulun (imleç, aşağıdaki ekran görüntüsünde konumlandırılır) ve bir tıklama verin. Bu, “Genişletilmiş Kontroller” penceresini başlatır.
  • Genişletilmiş Kontroller penceresinde, “Parmak İzi” seçeneğini seçin. Bu, çeşitli dokunma olaylarını taklit edebileceğiniz bir dizi kontrol açar.
  • Açılır menüyü açın ve bu cihaza kaydetmek istediğiniz parmak izini seçin; “Parmak 1” kullanıyorum.
  • Şimdi dikkatimizi öykünmüş cihaza değiştirelim. AVD’nin “Ayarlar” uygulamasını başlatın ve “Güvenlik ve konum” seçeneğini seçin.
  • Henüz bir PIN, şifre veya desen ayarlamadıysanız, “Ekran kilidi” seçeneğini seçin ve ekran kilidinizi korumak için ekrandaki talimatları izleyin, ardından ana “Ayarlar> Güvenlik ve konum” ekranına dönün.
  • “Parmak izi” ni ve ardından “Parmak izi ekle” yi seçin.
  • Şimdi parmağınızı dokunmatik sensöre basmanız istenir. Bunun yerine, bir “Parmak izi eklendi” görene kadar “Sensöre Dokun” düğmesine basmaya devam edin.

  • "Bitti" yi tıklayın.
  • Ek parmak izlerini kaydetmek istiyorsanız, durulayın ve yukarıdaki adımları tekrarlayın.

En az bir parmak izi kaydettikten sonra, başvurunuzu test etmeye hazırsınız. Uygulamamızın üç farklı senaryoyu nasıl yönettiğini test edeceğim:

  • Kullanıcı kayıtlı bir parmak izi kullanarak kimlik doğrulaması yapmaya çalışır.
  • Kullanıcı bu cihaza kayıtlı olmayan bir parmak izi kullanarak kimlik doğrulaması yapmaya çalışır.
  • Kullanıcı, kaydedilmemiş parmak izlerini kullanarak, birden çok defa ve art arda kullanarak kimlik doğrulaması yapmaya çalışır.

Cihazımıza yeni kaydettiğimiz parmak izini kullanarak kimlik doğrulamayı deneyelim:

  • Uygulamanızın çeşitli ekranlarının görüneceği Android Studio’nun Logcat Monitor’ünü görüntülediğinizden emin olun.

  • Uygulamanızı test cihazına yükleyin.
  • Uygulamanızın “Parmak izi ile doğrula” düğmesine dokunun. Parmak izi doğrulama iletişim kutusu görünecektir.
  • Fiziksel bir cihaz kullanıyorsanız, parmak ucunuzu cihazın dokunmatik sensörüne doğru basılı tutun. Bir AVD kullanıyorsanız, bir dokunma olayını simüle etmek için “Sensöre dokunun” düğmesini kullanın.
  • Logcat Monitor'ü kontrol edin. Kimlik doğrulama başarılıysa, aşağıdakileri görmelisiniz: “Parmak izi başarıyla tanındı”

Ardından, bu cihaza kayıtlı olmayan bir parmak izini kullanarak kimlik doğrulaması yapmaya çalışırsak ne olacağını görelim:

  • Uygulamanın “Parmak izi ile doğrula” düğmesine tekrar dokunun.
  • Bir AVD kullanıyorsanız, bir parmak izi seçmek için “Genişletilmiş Kontroller” penceresini kullanın. değil bu cihaza kayıtlı; “Parmak 2” kullanıyorum. “Sensöre dokun” düğmesine bir kez tıklayın.
  • Fiziksel bir Android akıllı telefon veya tablet kullanıyorsanız, parmak ucunuzu cihazın dokunmatik sensörüne doğru basılı tutun - bu cihaza kayıtlı olmayan bir parmağınızı kullandığınızdan emin olun!
  • Android Studio’nun Logcat’ını kontrol edin, şimdi “Tanınmayan bir parmak izi” görüntülüyor olmalı.

Daha önce de belirtildiği gibi, BiometricPrompt API, aşırı başarısız doğrulama girişimlerini otomatik olarak gerçekleştirir. Bu işlevi test etmek için:

  • Uygulamanızın “Parmak izi ile kimlik doğrulaması” düğmesine dokunun.
  • Kayıtsız bir parmak izi kullanarak hızlı bir şekilde art arda birden fazla kez kimlik doğrulaması yapmaya çalışın.
  • Birkaç denemeden sonra, iletişim kutusu otomatik olarak kapanmalıdır. Android Studio’nun Logcat’ını kontrol edin ve şunları görmelisiniz: “Düzeltilemez bir hata oluştu.”

Uygulamanın tamamını GitHub'dan indirebilirsiniz.

Sarma

Bu yazıda, uygulamanıza kolayca parmak izi doğrulaması eklemenizi sağlayan Android Pie’nin yeni BiometricPrompt API'sini inceledik. BiometricPrompt'ın Android'in önceki parmak izi doğrulama yöntemlerinde bir gelişme olduğunu düşünüyor musunuz? Aşağıdaki yorumlarda bize bildirin!

MWC'de bir 5G ürününü tökezlemekizin bu yıl hareket edemeziniz. Komik trend takipçilerinden amung Galaxy 10 5G gibi ilk 5G akıllı telefonlara kadar, bu yeni neil ağ t...

Mart 2018’de piyaaya ürülen ARCore, Google’ın geliştiricilerin artırılmış gerçeklik uygulamaları oluşturmalarına olanak ağlayan yazılım geliştirme kitidir (DK). Google’a göre, 250 ...

Bizim Seçimimiz