التعرف على بصمات الأصابع الروبوت، APP تعزيز تجربة المستخدم، تبدأ هنا

التحرير

بصمات الجميع على دراية، والآن معظم هواتف أندرويد أحدث الحصول على دعم التعرف على الوجه، التعرف على بصمات الأصابع هو التيار الرئيسي الروبوت الهاتف ميزة قياسية. هذه الميزات اثنين يمكن استخدامها مثلا جيدا أن أقول، مريحة حقا.

لكننا ننظر سوف تجد هذه الهواتف التعرف على بصمات الأصابع والتعرف على الوجه معتمد من قبل شاشة قفل الهاتف لفتحه، وعدد كبير من طلبات الحصول على APP يمكن أن يقال هذه التقنيات اثنين صغير نسبيا. APP هذا ليس تجربة جيدة من الخسارة؟

لحسن الحظ، وجوجل API لتحقيق المهام الأساسية للالتعرف على بصمات الأصابع واستنادا ليست معقدة.

القضايا الأمنية التوافق التعرف على بصمات الأصابع و

بالإضافة إلى تنفيذ المهام الأساسية للالتعرف على بصمات الأصابع، وأعتقد أن تحتاج للمطورين أيضا إلى التركيز على القضايا والمعاملة الانتقائية من اثنين: التوافق والأمن.

لماذا معالجة انتقائية؟

أولا، أن التوافق API التعرف على بصمات الأصابع هو في العراء جوجل الروبوت 6.0.

6.0 على نظام أندرويد، وبعض مصنعي الهواتف النقالة تدعم بصمة خاصة بهم، وإذا كان لدينا APP لتكون متوافقة مع هذه الأجهزة، بل هو أيضا متكاملة الشركة المصنعة لSDK التعرف على بصمات الأصابع، والتي هي أكبر قضايا التوافق. الآن، ومع ذلك، فإن أجهزة أندرويد 6.0 التالية صغيرة جدا، والذي دعم الجهاز التعرف على بصمات الأصابع وحتى أقل من ذلك، لا تكون متوافقة، وأعتقد أن ذلك ممكن.

على نظام أندرويد 6.0 أو أعلى، ويرجع ذلك إلى الشركات المصنعة حسب الطلب واسعة النطاق لنظام الروبوت وحدة التعرف على بصمات الأصابع، وسوف يسبب بعض مشاكل التوافق. هذه ليست طريقة جيدة، ونحن بحاجة إلى مطور اعتمدت مجزأة. وصعدت على الكثير من المطور حفرة، يمكنك الذهاب على الانترنت للبحث عن رؤية المواد ذات الصلة.

ثم يشير إلى أمن المقبل منذ تم إضافة بصمات الأصابع بعد أن عوائد صحيح على الهاتف، وجوجل API للتحقق بصمة تخزين فقط أو خاطئة، ونحن نعتقد أن هذا أمر صعب جدا على الاعتراف دون قيد أو شرط النتائج. على سبيل المثال، والهاتف المحمول المستخدم الجذر أو المعدات حسب الطلب، التعرف على بصمات الأصابع غير المرجح أن يتم اختطاف ومن ثم إرجاع نتيجة لتحديد الخطأ.

لحسن الحظ، فإن احتمال حدوث ذلك منخفضة نسبيا. إذا كان البصمات من عدم دفع سيناريوهات غير المتاجرة، تماما مثل "تبدأ APP التحقق من بصماته" هذا هو الحال، بصمات جوجل API يوفر كافية.

أسئلة أخرى حول التوافق والأمن، والورق، ولكن أكثر لاستكشاف، والتوصية مقال، يرجى بالقلق أيضا إزاء ذلك Alipay المذكورة في هذه المادة والعلاج تينسنت، والوضع مفتوح المصدر لها:

نسخة API بصمة التطور

في أندرويد 6.0 (الروبوت M Api23)، الروبوت بصمة نظام تحديد API المفتوحة، وجود حزمة android.hardware.fingerprint في الطبقة الأساسية هي FingerprintManager، توفر أساسا لوظائف التعرف على بصمات الأصابع. لاحظ أنه FingerprintManager في الروبوت 9.0 (الروبوت P Api28) لمDeprecated علامة، سيتم إهمال.

وفي وقت لاحق، في حزمة android.support.v4.hardware.fingerprint وحزمة androidx.core.hardware.fingerprint، FingerprintManager الترقية إلى FingerprintManagerCompat، وقد تم تعزيز وظيفة، ولكن أيضا جعل بعض التوافق من المعالجة، مثل زيادة عدد إصدار نظام القاضي، بصمة تدعم معالجة التشفير. في الواقع قراءة استدعاء شفرة المصدر سوف تجد الوظيفة الأساسية له FingerprintManager تحقيق.

ثم بعد، في أندرويد 9.0 (الروبوت P واجهة برمجة التطبيقات 28)، وجوجل على القياسات الحيوية قد تعززت أكثر، مفتوحة للBiometricPrompt جوهر API جديدة، موجود في حزمة androidx.biometric وandroid.hardware.biometrics حزمة، وجوجل في تطوير وأوضح الوثائق على هذا النحو:

على أجهزة تعمل بنظام التشغيل P فما فوق، وهذا سوف تظهر مصادقة المتوفرة من قبل النظام موجه، وذلك باستخدام جهاز دعم البيومترية ( بصمات الأصابع، القزحية، والوجه، الخ ).

مفادها أن الروبوت P والنظام المذكور أعلاه، BiometricPrompt سوف تظهر المطالبات التحقق التي يقدمها النظام، ودعم الأجهزة البيومترية المقدمة، بما في ذلك بصمات الأصابع وقزحية العين والوجه ومثل.

في الوقت الراهن، مثل الوجه وقزحية العين واجهة برمجة التطبيقات البيومترية لم يفتح، ويدعم فقط التعرف على بصمات الأصابع، ولكن كانت موحدة في التعرف على بصمات الأصابع، مثل التعرف على بصمات الأصابع يتطلب استخدام واجهة موحدة، فإنه لا يسمح للمطورين لتخصيص.

المفتاح التعرف على بصمات الأصابع طريقة مصادقة

هذا هو جوهر طريقة التعرف على بصمات الأصابع لسحب ما يصل إلى التعرف على بصمات الأصابع بصمة الماسح الضوئي.

من أجل مصادقة طريقة ()، على سبيل المثال، يتم تعريف FingerprintManagerCompat وثائق المطور على النحو التالي:

شرح معايير مختلفة:

  • FingerprintManagerCompat.CryptoObject التشفير

وأوضح شفرة المصدر على النحو التالي:

 / ** * فئة المجمع لتشفير الأجسام التي تدعمها FingerprintManager. في الوقت الراهن * يدعم الإطار {link التوقيع} و {link الصفر} الكائنات. * /

ومفادها أن هذا هو رمز الكائن فئة المجمع، والحالية دعم تشفير كلمة المرور التوقيع شكل الأشياء وشكل الصفر.

وسيكون دور الماسح الضوئي بصمة استخدام هذا الكائن لتحديد شرعية نتائج المصادقة على بصمات الأصابع. الروبوت 6.0 هوNullable، ولكن لا ينصح تمريرة لاغية، وبعد الروبوت 9.0NonNull تصل.

يتم تقديم قانون بلدي لمساعدة فئة من الصفر، ويمكن استخدامه لإنشاء كائن الصفر، ويمكن استخدام والمرجعية.

  • أعلام كثافة العمليات

العلم اختياري، لا فائدة، يمكنك تمرير 0. فقط لالروبوت 6.0.

  • CancellationSignal إلغاء

يتم استخدام دور هذا الكائن لإلغاء ماسحة البصمات المسح الضوئي. على سبيل المثال، بعد نقر المستخدم على مربع للتعرف على زر "إلغاء" الزر أو "كلمة السر التوثيق"، ونحن يجب إلغاء فورا عملية المسح الضوئي من الماسح الضوئي.

لم تلغ في الوقت المناسب، لكان قد تم تفحص الماسح الضوئي بصمات الأصابع حتى انقضاء المهلة. هذا يسبب مشكلتين:

(1) استهلاك الطاقة

(2) ضمن فترة المهلة، سوف يكون المستخدمون غير قادر على إعادة ضبط من البصمات .

مرة أخرى، هذه المعلمة في الروبوت 6.0 هوNullable، بعد الروبوت 9.0NonNull، وذلك للأسباب المذكورة أعلاه، لا ننصح مرور فارغة.

  • FingerprintManagerCompat.AuthenticationCallback رد

التعرف على بصمات الأصابع واجهة نتيجة الاستدعاء هيNonNull، حيث البيان التالي طرق:

التركيز على ما onAuthenticationError () وonAuthenticationHelp () طريقتين، يحدث التعرف على بصمات الأصابع عندما الشاذ هو رد:

(1) وhelpString errString المعلمات المعلومات شذوذ محددة، مثل "التحركات الإصبع بسرعة كبيرة"، "فشل التحقق" وهلم جرا. تقدم المعلومات استثناء من قبل النظام، ترى الوضع الحالي هو نظام غير طبيعي سوف تطابق المعلومات ذات الصلة على أساس اللغة المستخدمة من قبل التطبيق.

التطبيق لديه للقيام الشركاء الدوليين قليلا، ونظام معلومات غير طبيعي يطابق لغة المقابلة لا تقلق، العلاج الذاتي وفقا لerrMsgId وhelpMsgId.

(2) المعلمات errMsgId وhelpMsgId هو هوية رقم غير عادية، وهناك العديد لا يمكن سردها هنا، يرجى الاطلاع على وثائق المطور لديك. ملاحظة ملاحظة أن هناك اختلافات على الروبوت 9.0 وأندرويد 6.0.

  • معالج معالج

يتم استخدام هذه المعلمة لالروبوت 6.0، غيرNullable، ودور لنقول للنظام لاستخدام وبير رسالة معالجة من التعرف على بصمات الأصابع للمعالج. وبير هي العملية الافتراضية للموضوع الرئيسي، فإنه يمكن تمرير فارغة.

  • المنفذ المنفذ  (الملحق هو)

هذه المعلمة أندرويد 9.0 واجهة برمجة التطبيقات BiometricPrompt.authenticate () المعلماتNonNull، ودور والحجة معالج معالج يشبه توزيع رد التعرف على بصمات الأصابع.

عندما وزعت من قبل موضوع الرئيسي، يمكن أن ينتقل عن طريق إشارة السياق # getMainExecutor ()؛

عند توزيعها من خلال تجمع مؤشرات الترابط المشترك من خلال المشاركة الجماعية AsyncTask # THREAD_POOL_EXECUTOR.

ممارسة التعرف على بصمات الأصابع

في الممارسة العملية، التعرف على بصمات الأصابع، وسوف جعله مكتبة مفتوحة المصدر صدر يوم جيثب، قد يكون تعتمد من قبل gradle، وذلك باستخدام بسيطة نسبيا، واثنين أو ثلاثة خطوط للقانون، ومن ثم تمرير نتائج الاستماع إلى التحقق.

هنا على جزء من عملية التنفيذ للقيام ببعض المقدمة، مصدر مفصل من المعهد ومكان جيثب.

عنوان جيثب: الشبكي: //github.com/ZuoHailong/BiometricPrompt

أمثلة

الروبوت إطار اعتراف 6.0 بصمة والمطورين مخصص:

الروبوت 9.0 بصمة كتلة تحديد الهوية، ويوفر هذا النظام:

حيث لون النص رمز بصمة وإلغاء الأزرار، ويتم تحديد اللون من قيمة colorPrimary الممتلكات.

إدارة التعرف على بصمات الأصابع

FingerprintVerifyManager مدخل بصمة إدارة المكتبات التعرف على بصمات الأصابع، والتعرف على بصمات الأصابع تهيئة من قبل FingerprintVerifyManager.Builder.

في هذه الفئة، وهناك أنظمة تعتمد على إصدارات مختلفة من المعهد تحديد المكالمات الهاتفية بصمة (FingerprintManagerCompat أو BiometricPrompt)، الذي دعم BiometricPrompt أو إيقاف تشغيله، إيقاف افتراضيا.

الجمهور FingerprintVerifyManager (باني) { IFingerprint بصمة؛ // > = الروبوت P إذا (AndrVersionUtil.isAboveAndrP ()) { // ما إذا كان نظام تحديد عرض إطار المقدمة على الروبوت P إذا (builder.enableAndroidP) بصمة = FingerprintAndrP.newInstance ()؛ آخر بصمة = FingerprintAndrM.newInstance ()؛ } آخر إذا (AndrVersionUtil.isAboveAndrM ()) {// الروبوت 6.0 = <  نص بصمة = FingerprintAndrM.newInstance ()؛ } {عدا // <  الروبوت 6.0، هذه الحالة ليست مفتوحة البصمات الرسمية، وبعض النماذج تفعل الدعم الذاتي ولا يتم معالجتها حتى الآن builder.callback.onError (builder.context.getString (R.string.biometricprompt_verify_error_below_m))؛ العودة؛ } ...... fingerprint.authenticate (builder.context، والفاصوليا، builder.callback)؛ }

حيث IFingerprint اجهة التعرف على بصمات الأصابع، متوافق FingerprintAndrM أندرويد 6.0 ومتوافق FingerprintAndrP أندرويد 9.0  تنفيذ هذه الواجهة.

الواجهة العمومية IFingerprint { / ** * تهيئة وضبط من البصمات * * السياقparam *param verificationDialogStyleBean بصمة تحديد نمط مربع *param رد إخطار مطور النتائج التعرف على بصمات الأصابع * / مصادقة باطلة (سياق آخر، VerificationDialogStyleBean verificationDialogStyleBean، FingerprintCallback رد)؛ }

وبناء على الروبوت 6.0 تحقيق التعرف على بصمات الأصابع

هناك ذكر أعلاه، ويستند FingerprintAndrM البصمات على الطبقة تنفيذ معينة من أندرويد 6.0:

RequiresApi (API = Build.VERSION_CODES.M) الطبقة العامة FingerprintAndrM تنفذ IFingerprint { خاص TAG سلسلة النهائي = FingerprintAndrM.class.getName ()؛ سياق آخر الخاص؛ ساكنة الخاص FingerprintAndrM fingerprintAndrM. // مربع التحقق من بصماته ساكنة الخاص FingerprintDialog fingerprintDialog. // نقطة لبصمات رد المتصل خاصة FingerprintCallback fingerprintCallback. // العمل لإلغاء الماسح الضوئي لمسح خاصة CancellationSignal cancellationSignal. // التشفير بصمات الأصابع ساكنة الخاص FingerprintManagerCompat.CryptoObject cryptoObject. // الروبوت 6.0 إدارة بصمات الأصابع خاصة FingerprintManagerCompat fingerprintManagerCompat. Override مصادقة العامة باطلة (سياق آخر، الفول VerificationDialogStyleBean، FingerprintCallback رد) { // يحدد ما إذا كان بصمة متاح إذا (! canAuthenticate (السياق، رد)) العودة؛ this.context = السياق؛ this.fingerprintCallback = رد. // الروبوت 6.0 بصمة مثيل إدارة fingerprintManagerCompat = FingerprintManagerCompat.from (السياق). // إلغاء المسح الضوئي، والحاجة إلى إعادة إنشاء نموذج جديد بعد إلغاء كل cancellationSignal = CancellationSignal جديدة ()؛ cancellationSignal.setOnCancelListener (() - >  fingerprintDialog.dismiss ())؛ // استحضار بصمة التحقق fingerprintManagerCompat.authenticate (cryptoObject، 0، cancellationSignal، authenticationCallback، لاغية)؛ // مربع التحقق من بصماته fingerprintDialog = FingerprintDialog.newInstance (السياق) .setActionListener (dialogActionListener) .setDialogStyle (الفاصوليا)؛ fingerprintDialog.show (context.getFragmentManager ()، TAG)؛ } ساكنة العام FingerprintAndrM newInstance () { إذا (fingerprintAndrM == فارغة) { تزامن (FingerprintAndrM.class) { إذا (fingerprintAndrM == فارغة) { fingerprintAndrM = FingerprintAndrM جديدة ()؛ } } } // التشفير بصمات الأصابع، مسبقا الصفر التهيئة، المصادقة على بصمات الأصابع إذا لم نتمكن من منع استكمال التهيئة محاولة { cryptoObject = FingerprintManagerCompat.CryptoObject الجديدة (CipherHelper الجديدة () createCipher ())؛ } صيد (استثناء ه) { e.printStackTrace ()؛ } العودة fingerprintAndrM. } / ** * بصمات الأصابع التحقق مربع المفتاح المستمع * / خاصة FingerprintDialog.OnDialogActionListener dialogActionListener = FingerprintDialog.OnDialogActionListener الجديدة () { Override onUsepwd الفراغ الجمهور () { إذا (fingerprintCallback! = فارغة) fingerprintCallback.onUsepwd ()؛ } Override onCancle الفراغ الجمهور () {// إلغاء التحقق من بصماته وإبلاغ المتصل إذا (fingerprintCallback! = فارغة) fingerprintCallback.onCancel ()؛ } Override الجمهور الفراغ onDismiss () {// التحقق يختفي مربع، إلغاء التحقق من بصماته إذا (cancellationSignal! = فارغة &&! cancellationSignal.isCanceled ()) cancellationSignal.cancel ()؛ } }؛ / ** * بصمات الأصابع نتيجة التحقق رد * / خاصة FingerprintManagerCompat.AuthenticationCallback authenticationCallback = FingerprintManagerCompat.AuthenticationCallback الجديدة () { Override onAuthenticationError الفراغ الجمهور (الباحث errMsgId، CharSequence errString) { super.onAuthenticationError (errMsgId، errString)؛ fingerprintDialog.setTip (errString.toString ()، R.color.biometricprompt_color_FF5555)؛ } Override onAuthenticationHelp الفراغ الجمهور (الباحث helpMsgId، CharSequence helpString) { super.onAuthenticationHelp (helpMsgId، helpString)؛ fingerprintDialog.setTip (helpString.toString ()، R.color.biometricprompt_color_FF5555)؛ } Override onAuthenticationSucceeded الفراغ العام (نتيجة FingerprintManagerCompat.AuthenticationResult) { super.onAuthenticationSucceeded (نتيجة). fingerprintDialog.setTip (context.getString (R.string.biometricprompt_verify_success)، R.color.biometricprompt_color_82C785)؛ fingerprintCallback.onSucceeded ()؛ fingerprintDialog.dismiss ()؛ } Override الفراغ onAuthenticationFailed الجمهور () { super.onAuthenticationFailed ()؛ fingerprintDialog.setTip (context.getString (R.string.biometricprompt_verify_failed)، R.color.biometricprompt_color_FF5555)؛ fingerprintCallback.onFailed ()؛ } }؛ / * * في الروبوت Q، يوفر اجهة برمجة تطبيقات Google BiometricManager.canAuthenticate () يستخدم للكشف عن التعرف على بصمات الأصابع للأجهزة متوفرة وما إذا كنت تريد إضافة بصمة * ولكن لم يفتح، وضعت "العقب" (كعب) * نحن لا نزال في حاجة إلى استخدام Andorid 6.0 من القاضي واجهة برمجة التطبيقات * * / canAuthenticate الخاص منطقية (السياق السياق، FingerprintCallback fingerprintCallback) { / * * الأجهزة تحديد الدعم بصمة * * / إذا (! FingerprintManagerCompat.from (السياق) .isHardwareDetected ()) { fingerprintCallback.onError (FingerprintManager.FINGERPRINT_ERROR_HW_NOT_PRESENT، context.getString (R.string.biometricprompt_verify_error_no_hardware))؛ عودة كاذبة. } // تم إضافة بصمة إذا (! FingerprintManagerCompat.from (السياق) .hasEnrolledFingerprints ()) { fingerprintCallback.onNoneEnrolled ()؛ عودة كاذبة. } العودة الحقيقية. } }

هناك التركيز على التعرف على بصمات الأصابع المرتبطة مربع CancellationSignal، وهو يختفي مربع تحديد الهوية، يجب إلغاء الماسح الضوئي بصمة المسح، وإلا ضمن المهلة المحددة، وسوف يكون المستخدمون غير قادر على سحب ما يصل إلى بصمة مرة أخرى (على الرغم من أنك يمكن البوب التعرف على بصمات الأصابع مربع).

وبناء على الروبوت 9.0 تحقيق التعرف على بصمات الأصابع

هناك ذكر أعلاه، ويستند FingerprintAndrP البصمات على الطبقة تنفيذ معينة من أندرويد 9.0:

RequiresApi (API = Build.VERSION_CODES.P) الطبقة العامة FingerprintAndrP تنفذ IFingerprint { ساكنة الخاص FingerprintAndrP fingerprintAndrP. // نقطة لبصمات رد المتصل خاصة FingerprintCallback fingerprintCallback. // العمل لإلغاء الماسح الضوئي لمسح خاصة CancellationSignal cancellationSignal. // التشفير بصمات الأصابع ساكنة الخاص BiometricPrompt.CryptoObject cryptoObject. Override مصادقة باطلة العامة (سياق آخر، VerificationDialogStyleBean verificationDialogStyleBean، FingerprintCallback رد) { // يحدد ما إذا كان بصمة متاح إذا (! canAuthenticate (السياق، رد)) العودة؛ this.fingerprintCallback = رد. / * * تهيئة BiometricPrompt.Builder * / ...... // بناء BiometricPrompt BiometricPrompt biometricPrompt = builder.build ()؛ // إلغاء المسح الضوئي، والحاجة إلى إعادة إنشاء نموذج جديد بعد إلغاء كل cancellationSignal = CancellationSignal جديدة ()؛ cancellationSignal.setOnCancelListener (() - >  { })؛ / * * وحدة سحب التحقق من بصماته والتحقق انتظار * المنفذ: * Context.getMainExecutor () * / biometricPrompt.authenticate (cryptoObject، cancellationSignal، context.getMainExecutor ()، authenticationCallback)؛ } ساكنة العام FingerprintAndrP newInstance () { إذا (fingerprintAndrP == فارغة) { تزامن (FingerprintAndrM.class) { إذا (fingerprintAndrP == فارغة) { fingerprintAndrP = FingerprintAndrP جديدة ()؛ } } } // التشفير بصمات الأصابع، مسبقا الصفر التهيئة، المصادقة على بصمات الأصابع إذا لم نتمكن من منع استكمال التهيئة محاولة { cryptoObject = BiometricPrompt.CryptoObject الجديدة (CipherHelper الجديدة () createCipher ())؛ } صيد (استثناء ه) { e.printStackTrace ()؛ } العودة fingerprintAndrP. } / ** * استدعاء نتيجة المصادقة * / خاصة BiometricPrompt.AuthenticationCallback authenticationCallback = BiometricPrompt.AuthenticationCallback الجديدة () { Override onAuthenticationError الجمهور باطلة (رمز الخطأ كثافة العمليات، CharSequence errString) { super.onAuthenticationError (رمز الخطأ، errString)؛ إذا (fingerprintCallback! = فارغة) { إذا (رمز الخطأ == 5) {// المستخدم إلغاء المصادقة على بصمات الأصابع، لم يكن لدى المستخدمين لرمي نصائح fingerprintCallback.onCancel ()؛ العودة؛ } fingerprintCallback.onError (رمز الخطأ، errString.toString ())؛ } } Override onAuthenticationHelp الجمهور باطلة (helpCode كثافة العمليات، CharSequence helpString) { super.onAuthenticationHelp (helpCode، helpString)؛ إذا (fingerprintCallback! = فارغة) fingerprintCallback.onError (helpCode، helpString.toString ())؛ } Override onAuthenticationSucceeded الفراغ العام (نتيجة BiometricPrompt.AuthenticationResult) { super.onAuthenticationSucceeded (نتيجة). إذا (fingerprintCallback! = فارغة) fingerprintCallback.onSucceeded ()؛ } Override الفراغ onAuthenticationFailed الجمهور () { super.onAuthenticationFailed ()؛ إذا (fingerprintCallback! = فارغة) fingerprintCallback.onFailed ()؛ } }؛ / * * في الروبوت Q، يوفر اجهة برمجة تطبيقات Google BiometricManager.canAuthenticate () يستخدم للكشف عن التعرف على بصمات الأصابع للأجهزة متوفرة وما إذا كنت تريد إضافة بصمة * ولكن لم يفتح، وضعت "العقب" (كعب) * نحن لا نزال في حاجة إلى استخدام Andorid 6.0 من القاضي واجهة برمجة التطبيقات * * / canAuthenticate الخاص منطقية (السياق السياق، FingerprintCallback fingerprintCallback) { / * * الأجهزة تحديد الدعم بصمة * * / إذا (! FingerprintManagerCompat.from (السياق) .isHardwareDetected ()) { fingerprintCallback.onError (FingerprintManager.FINGERPRINT_ERROR_HW_NOT_PRESENT، context.getString (R.string.biometricprompt_verify_error_no_hardware))؛ عودة كاذبة. } // تم إضافة بصمة إذا (! FingerprintManagerCompat.from (السياق) .hasEnrolledFingerprints ()) { fingerprintCallback.onNoneEnrolled ()؛ عودة كاذبة. } العودة الحقيقية. } }

هنا تحتاج المطورين إلى التركيز على نقطتين:

(1) الروبوت 9.0 لا تسمح للمطورين لتخصيص إطار التعرف على بصمات الأصابع ، ولكن مرونة النظام لتوفير بصمة مربع تحديد القلق. على سبيل المثال، فإن الوضع الراهن، فإن النظام يسمح فقط يظهر زر في مربع تحديد ووضع "إلغاء" لا يمكنك وضع "مصادقة كلمة المرور"، ووضع "مصادقة كلمة المرور" لا يمكن وضع "إلغاء". (الوجه بالحرج ......)

(2) نظام يوفر التعرف على بصمات الأصابع واجهة كتلة أسفل فقط ، وليس عن طريق الوسط. ولكن في بعض الهواتف (على سبيل المثال ممن لهم رينو)، واستشعار بصمة في الجزء السفلي من الشاشة، عندما انسحبت التعرف على بصمات الأصابع، وبصمة رمز يعرض بصمة الاستشعار الموقع، لمطالبة المستخدم حيث الاصبع. ومع ذلك، هناك بصمة على رمز التعرف على بصمات الأصابع التي يوفرها نظام الإطار، والذي يحدث اثنين بصمات تتزامن أو رموز غير المباشرة. (الوجه بالحرج ......)

على سبيل المثال:

وبالنظر إلى المشاكل المذكورة أعلاه، تقدم مكتبة بصمة مفتوحة المصدر وسيلة builder.enableAndroidP (منطقية enableAndroidP)، ويسمح للطالب لفتح أو إغلاق توفر مربع الروبوت 9.0 أنظمة التعرف على بصمات الأصابع. عندما أغلقت، واستخدام التعرف على بصمات الأصابع واجهة برمجة تطبيقات أندرويد 6.0، واستخدام العرف إطار التعرف على بصمات الأصابع.

مكتبة التعرف على بصمات الأصابع جيثب عنوان: الشبكي: //github.com/ZuoHailong/BiometricPrompt

أخيرا

إذا كنت ترى هنا، أشعر مقالات مكتوبة بشكل جيد تعطي الانشوده الثناء؟ إذا كنت تعتقد أن هناك حاجة إلى تحسين، يرجى إعطاء لي رسالة. سوف يكون تحقيق جدي، تصحيح كاف. شكرا لك.

وأخيرا مبرمج الروبوت، أعطى الجميع هنا وضعت بعض المعلومات، بما في ذلك سبيل المثال لا الحصر UI رفيع المستوى، وتحسين الأداء، مهندس المحمول، NDK والتنمية الهجينة (ReactNative + Weex) الصغيرة إلكتروني صغير، الروبوت، وما إلى ذلك في جميع جوانب الرفرفة أساليب الممارسة النظام؛ أملا في مساعدة الجميع، ولكن أيضا يوفر الوقت الجميع على الانترنت بحثا عن معلومات للتعلم، ويمكنك أيضا الأصدقاء المقربين لتبادل ديناميكية التعلم معا!

الحاجة إلى توسيع الخرائط تلاحظ الدراسة العمارة الخلفية يمكن أن يكون إلكتروني خاص الرد، "بيانات أندروز" حرية الوصول ~

رانى الحفل ارتفاع شعبية، ثم مجموعة من النمذجة، وتشكيل قوة من مجموعة كبيرة ومتنوعة من الأساليب

الجولة الثالثة من المقابلة، والمقابلة هو في الواقع تاريخ أعمى قبل الرجال، قبل التركيز على لي يكرهه؟

الطقس الحار يجب أن لا تخرج، قدمت الولايات المتحدة والشرطة الإعلانات: يومين وبعد ذلك المجرم، تبريد لنا وداعا

الملك الحلو نادر منخفضة مفتاح عيد ميلاد، يرتدي صغير الرياح عبق صالح العملاق، سوبر حلوة وساحرة والشخص كله أنيقة

بعض الاستنتاجات من الأمثل خمسة مجلدات مهندس الروبوت APK

ناتالي جميلة وحقا من السهل! يمكن خطوة البالغة من العمر 65 عاما على "مرتفع يوم الكراهية" للذهاب إلى المطار الذي كان يرتدي تنورة زرقاء مقنعة جدا

هندسة بايت الضرب مقابلة في الاعتبار، وقد تم تعيين لاتخاذ العرض

Dilly ريبا حقا أن ارتداء، مع ملء مزاجه بسيط، هو في الواقع 90 الزي الزهور

الخريف الأولي 2019 تطوير الروبوت عصابة الخطوة سوف يطلب 30+ العليا أسئلة المقابلة (يرافقه شرح مفصل من)

تحت الشمس الحارقة للعمال

"طفل الغد" منغ Meiqi والحصول على نمط جديد، يرتدي قرانيا قطعة الوردي تظهر السراويل الساقين، جميل ومتميز

الروبوت تحميل لفشل قوة من المقابلة: آخر على وضع بدء التشغيل