آموزش درج ویژگی اثر انگشت در اپلیکیشن با اندروید استودیو

دسته بندی ها : اندروید استودیو 17 مرداد 1398 مجتبی قاسمی 3028 بازدید

در این پست قصد داریم آموزش درج ویژگی اثر انگشت در اپلیکیشن در Android studio (اندروید استودیو) را به شما آموزش بدیم.

با اومدن نسخه اندروید 9.0 (SDK 28 با اسم کد “Pie”)، گوگل برای افرادی که نرم افزارها را توسعه میدهند، یک BiometricPrompt API قرار داد که آن افراد بتوانند احراز هویت بیومتریک را داخل اپلیکیشن شان به صورت دستی و با روش ماژولار وارد کنند. فقط تا الان توانسته احراز هویت با اثر انگشت را قرار دهد، اما به زودی آپدیت های جدید میرسد و برای امکانات دیگر هم منتشر میشود، مثلا تشخیص چهره، تعیین رنگ چشم و امثال اینها.

در این آموزش، بطور خلاصه به شما گفته ایم که این بسته باید در کجا قرار بگیرد و چگونه در داخل دستگاه و در حضور کاربر استفاده شود. بعد به عنوان یک توسعه گر نرم افزار، ما اینگونه مثائل را تشخیص میدهیم: اگر API احراز هویت بیومتریک شما، پشتیبانی شده باشد و اگر دستگاه شما سخت افزار سنسور اثر انگشت داشته باشد. در آخر، اگر نیازی به بررسی باشد، ما آن را بررسی میکنیم و به شما نشان میدهیم که چگونه از یک API در یک مثال کاری استفاده کنید.

کجا و چطوری از احراز هویت اثر انگشت در گوشی تان استفاده کنید؟

قبل از اینکه بخواهیم در هر نرم افزاری ویژگی احراز هویت را پیاده سازی کنیم، بگذارید به اینکه کجا میتوانیم محل این یوز کیس را در دستگاه های اندرویدی مشخص کنیم، یک نگاهی بندازیم. به منوی سیستم یا تنظیمات (setting) برید. پایین امنیت و مکان (Security and location)، تب چاپ (Imprint) را حالا پیدا کنید که یک نشانه از اینکه چند اثر انگشت را میتوانید تنظیم و روی دستگاه تان قرار دهید وجود دارد، که در شکل 1 به شما نشان دادیم. چون مدل گوشی من اندروید پیکسل (Android Pixel) هست، تب من را به شکل پیکسل چاپ (Pixel Imprint) نمایش میدهد؛ البته ممکن است بعضی افراد این تب را به شکل نکسوز چاپ (Nexus Imprint) هم ببینند.

اگر شما بخواهید یک اثر انگشت جدیدی را اضافه کنید، اسکرین شاتی که در شکل 2 میبینید، به شما نشان میدهد که چگونه این مراحل را بروید و این نتایج را با دستورالعمل هایی که روی صفحه گوشی تان آمده است، ذخیره کنید. وقتی که هیچ اثر انگشتی روی گوشی تان ذخیره نکرده اید، به سادگی میتوانید از این روش برای باز کردن گوشی تان، اونم به یه شکل آسانتر استفاده کنید.

آموزش سورس درج ویژگی اثر انگشت

شکل 1: قابلیت اثر انگشت

آموزش سورس درج ویژگی اثر انگشت

شکل 2: اضافه کردن یک اثر انگشت جدید

 

چجوری بفهمیم که یک دستگاه موبایل قابلیت احراز هویت اثر انگشت را ساپورت (پشتیبانی) میکند؟

اول باید بررسی کنیم که این گوشی به سخت افزار سنسور اثر انگشت مجهز است یا نه. بعدش اگر مطمئن شدیم که حتما این سخت افزار در این گوشی وجود دارد، باید بینیم که آیا اثر انگشتی روی آن تنظیم و ثبت شده یا نه. قبل از اینکه به این سخت افزار برای انجام هر عملی دسترسی پیدا کنید، برنامه شما نیاز به اجازه و بررسی دارد و مخصوصا باید از ویژگی AndroidManifest.xml هم برای اجرای کارهای بعدی عبور کند (یعنی تا تایید این گزینه را نداشته باشید، نمیتوانید کاری انجام دهید). حالا ما میتوانیم به وسیله کد زیر که در لیست 1 نمایش داده، احراز هویت اثر انگشت را اجرا و بررسی کنیم.

 

public class BioAuthActivity extends AppCompatActivity {
   TextView tvstatus;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);

      setContentView(R.layout.activity_main);

      // This is to display the status message
      tvstatus = (TextView)findViewById(R.id.tv1);

      if (ActivityCompat.checkSelfPermission(this,
         Manifest.permission.USE_BIOMETRIC) != PackageManager
            .PERMISSION_GRANTED) {
               tvstatus.setText("Step 1: Biometric authentication
               permission not granted.");
      } else {
            FingerprintManagerCompat fmc =
               FingerprintManagerCompat.from(this);

            if (!fmc.isHardwareDetected()) {
                tvstatus.setText("Step 1: There is no fingerprint
                sensor hardware found.");
            } else if (!fmc.hasEnrolledFingerprints()) {
                tvstatus.setText("Step 1: There are no fingerprints
                   currently enrolled.");
            } else {
                tvstatus.setText("Step 1: Fingerprint
                   authentication is ready for testing.");
                ...
            }
      }
   }
   ...
}

لیست 1: بررسی کردن قابلیت احراز هویت اثر انگشت

 

BiometricPrompt API و شرایط لازم آن

دستورات زیر را با BiometricPrompt API معمول خودتان دنبال کنید:

    ■ android.hardware.biometrics.BiometricPrompt: بعد از اندروید نسخه 9.0، به شما توصیه میکنم که از این API به جای android.hardware.fingerprint.FingerprintManager منسوخ شده، استفاده کنید.

    ■ کتابخانه مربوطه ای که از آن پشتیبانی میکند، در مدت طولانی نیاز به مشخص شدن یا نیاز به فایل gradle در این API را ندارد، به این خاطر که این ویژگی ها از پلت فرم آن می آید.

    ■ android.permission.USE_BIOMETRIC: این اجازه باید بعد از اندروید نسخه 9.0 به جای android.permission.USE_FINGERPRINT منسوخ شده در فایل پیکربندی AndroidManifest.xml استفاده شود. گرچه با بررسی سخت افزار سنسور اثر انگشت در مثال ما، FingerprintManagerCompat هنوز به نظر میرسد که نیازمند این اجازه میباشد و در همین لحظه، من هیچ راه بهتری برای انجام این کار سراغ ندارم. اندروید از لایه انتزاعی سخت افزار اثر انگشت (HAL) برای اتصال به یک فروشنده خاص در کتابخانه و برای ارتباط با سخت افزار اثر انگشت استفاده میکند.

 

مثال پیاده روی

در ابتدا، قبل از اینکه کارهای دیگه اجرا شوند، اول باید بررسی کنیم که آیا قابلیت احراز هویت اثر انگشت را دارد یا خیر. سپس با BiometricPrompt، توضیحات دیالوگ به صورت کلی که مربوط به اهداف برنامه میباشد را تنظیم میکنیم. رویداد listener در ()CancellationSignal برای واکنش به پیام های لغو شده ارائه شده است. BiometricPrompt.AuthenticationCallback() نیاز به اجرا برای تطبیق به نتایج ممکن را دارد که در onAuthenticationError()، onAuthenticationHelp()، onAuthenticationFailed() () و onAuthenticationSucceeded قبلا گرفته شده است.

نتایج این کدها در این نرم افزار، در شکل های 3 و 4 و 5 نمایش داده شده است.

 

public class BioAuthActivity extends AppCompatActivity {
   TextView tvstatus;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);

      setContentView(R.layout.activity_main);

      // This is to display the status message
      tvstatus = (TextView)findViewById(R.id.tv1);

      if (ActivityCompat.checkSelfPermission(this,
         Manifest.permission.USE_BIOMETRIC) != PackageManager
               .PERMISSION_GRANTED) {
            tvstatus.setText("Step 1: Biometric authentication
               permission not granted.");
      } else {
         FingerprintManagerCompat fmc =
            FingerprintManagerCompat.from(this);

         if (!fmc.isHardwareDetected()) {
            tvstatus.setText("Step 1: There is no fingerprint
               sensor hardware found.");
         } else if (!fmc.hasEnrolledFingerprints()) {
            tvstatus.setText("Step 1: There are no fingerprints
               currently enrolled.");
         } else {
            tvstatus.setText("Step 1: Fingerprint authentication
               is ready for testing.");

            // Set up the authentication dialog
            BiometricPrompt biometricPrompt = new BiometricPrompt
               .Builder(this)
               .setTitle("Biometric Authentication")
               .setSubtitle("Please authenticate to continue")
               .setDescription("Fingerprinting in biometric
                  authentication API is being tested.")
               .setNegativeButton("Cancel", this.getMainExecutor(),
                  new DialogInterface.OnClickListener() {
                     @Override
                     public void onClick(DialogInterface
                           dialogInterface, int i) {
                        tvstatus.setText(tvstatus.getText() +
                           "\n\nStep 2: Fingerprint authentication
                           cancelled.");
                     }
                  })
               .build();

            // Authenticate with callback functions
            biometricPrompt.authenticate(getCancellationSignal(),
               getMainExecutor(),
               getAuthenticationCallback());
         }
      }
   }

   private BiometricPrompt.AuthenticationCallback
         getAuthenticationCallback() {
      return new BiometricPrompt.AuthenticationCallback() {
         @Override
         public void onAuthenticationError(int errorCode,
               CharSequence errString) {
            tvstatus.setText(tvstatus.getText() + "\n\nStep 2:
               Fingerprint authentication error: " + errString);
            super.onAuthenticationError(errorCode, errString);
         }

         @Override
         public void onAuthenticationHelp(int helpCode,
               CharSequence helpString) {
            super.onAuthenticationHelp(helpCode, helpString);
         }

         @Override
         public void onAuthenticationFailed() {
            super.onAuthenticationFailed();
         }

         @Override
         public void onAuthenticationSucceeded(
            BiometricPrompt.AuthenticationResult result) {
               tvstatus.setText(tvstatus.getText() + "\n\nStep 2:
                  Fingerprint authentication Succeeded.");
               super.onAuthenticationSucceeded(result);
         }
      };
   }

   private CancellationSignal cancellationSignal;
   private CancellationSignal getCancellationSignal() {
      cancellationSignal = new CancellationSignal();
      cancellationSignal.setOnCancelListener(new
            CancellationSignal.OnCancelListener() {
         @Override
         public void onCancel() {
            tvstatus.setText(tvstatus.getText() + "\n\nStep 2:
               Fingerprint authentication cancelled by signal.");
         }
     });

     return cancellationSignal;
   }
}

لیست 2: مثال احراز هویت اثر انگشت

 

آموزش سورس درج ویژگی اثر انگشت

شکل 3: احراز هویت اثر انگشت در حال انجام

 

آموزش سورس

شکل 4: احراز هویت اثر انگشت وقتی تطبیق شده نیست

 

آموزش سورس

شکل 5: احراز هویت اثر انگشت وقتی با موفقیت تطبیق شده

 

سخن آخر

BiometricPrompt API توسط پلت فرم اندروید گوگل ارائه شده که خیلی به راحتی کار احراز هویت بیومتریک در برنامه شما را کامل کرده است، پس باید گنجاندن آن را موقعی که با مخاطبانتان، داده های شخصی حساسی را معامله میکنید هم در نظر بگیرید. با اضافه کردن احراز هویت اثر انگشت، بیشتر APIهای مربوط به احراز هویت در آینده پشتیبانی خواهند شد، اما چارچوب اجرای آن که شبیه سازی شده است، باید به طور مستقیم با این ویژگی های جدید هم مرتبط باشد. APIها یک رابط کاربری ثابت را در سراسر سیستم فراهم میکنند، و یک راه مناسب برای دسترسی به دستگاه تان، و یک ایمپوستر پایین تر و امکان پذیرتر.

 

برای دیدن مطلب اصلی و انگلیسی مقاله آموزش درج ویژگی اثر انگشت در اپلیکیشن لطفا ⇐اینجا⇒ کلیک کنید.

سخن مدیر سایت

در پست های دیگر ما، میتوانید از امکانات دیگر سایت مثل آموزش اندروید استودیو، آموزش جاوا اسکریپت، آموزش php، آموزش B4A و آموزش های دیگر و همچنین محصولات سایت که با قیمتی ارزان و رایگان در داخل سایت قرار دادیم بهره مند شوید. همچنین بخش وبلاگ ما که بروزترین مطالب و سایت های خارجی و مقاله های علمی و آموزشی در آن موجود است هم استفاده کنید.

تیم سایت سورس سیتی، برای شما کاربران عزیز آموزش درج ویژگی اثر انگشت در اپلیکیشن با اندروید استودیو را فراهم کرده است. لطفا نظرات خود را با ما در این صفحه به اشتراک بگذارید.

به آدرس اینستاگرام ما هم مراجعه نمایید.

مجتبی قاسمی
مجتبی قاسمی

راه آسان‌تری برای ارتباط با کاربران‌مان پیدا کرده‌ایم :) عضویت در کانال

مطالب زیر را حتما بخوانید:

  چنانچه دیدگاهی توهین آمیز باشد و متوجه اشخاص مدیر، نویسندگان و سایر کاربران باشد تایید نخواهد شد. چنانچه دیدگاه شما جنبه ی تبلیغاتی داشته باشد تایید نخواهد شد. چنانچه از لینک سایر وبسایت ها و یا وبسایت خود در دیدگاه استفاده کرده باشید تایید نخواهد شد. چنانچه در دیدگاه خود از شماره تماس، ایمیل و آیدی تلگرام استفاده کرده باشید تایید نخواهد شد. چنانچه دیدگاهی بی ارتباط با موضوع آموزش مطرح شود تایید نخواهد شد.  

نظرات کاربران

    دیدگاهتان را بنویسید

    نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

    لینک کوتاه :
    0