android 指纹识别调用实现方法及示例代码
activity_main.xml源码
<?xmlversion="1.0"encoding="utf-8"?> <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.liu.finger.MainActivity"> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="HelloWorld!" android:textSize="18sp"/> <Button android:id="@+id/btn_activity_main_finger" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentStart="true" android:layout_below="@+id/textView" android:layout_marginTop="54dp" android:text="指纹识别"/> </LinearLayout>
MainActivity.java源码
packagecom.liu.finger; importandroid.Manifest; importandroid.app.KeyguardManager; importandroid.content.Context; importandroid.content.Intent; importandroid.content.pm.PackageManager; importandroid.hardware.fingerprint.FingerprintManager; importandroid.os.Bundle; importandroid.os.CancellationSignal; importandroid.support.v4.app.ActivityCompat; importandroid.support.v4.app.FragmentActivity; importandroid.util.Log; importandroid.view.View; importandroid.widget.Button; importandroid.widget.Toast; publicclassMainActivityextendsFragmentActivity{ FingerprintManagermanager; KeyguardManagermKeyManager; privatefinalstaticintREQUEST_CODE_CONFIRM_DEVICE_CREDENTIALS=0; privatefinalstaticStringTAG="finger_log"; @Override protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); manager=(FingerprintManager)this.getSystemService(Context.FINGERPRINT_SERVICE); mKeyManager=(KeyguardManager)this.getSystemService(Context.KEYGUARD_SERVICE); Buttonbtn_finger=(Button)findViewById(R.id.btn_activity_main_finger); btn_finger.setOnClickListener(newView.OnClickListener(){ @Override publicvoidonClick(Viewv){ if(isFinger()){ Toast.makeText(MainActivity.this,"请进行指纹识别",Toast.LENGTH_LONG).show(); Log(TAG,"keyi"); startListening(null); } } }); } publicbooleanisFinger(){ //androidstudio上,没有这个会报错 if(ActivityCompat.checkSelfPermission(this,Manifest.permission.USE_FINGERPRINT)!=PackageManager.PERMISSION_GRANTED){ Toast.makeText(this,"没有指纹识别权限",Toast.LENGTH_SHORT).show(); returnfalse; } Log(TAG,"有指纹权限"); //判断硬件是否支持指纹识别 if(!manager.isHardwareDetected()){ Toast.makeText(this,"没有指纹识别模块",Toast.LENGTH_SHORT).show(); returnfalse; } Log(TAG,"有指纹模块"); //判断是否开启锁屏密码 if(!mKeyManager.isKeyguardSecure()){ Toast.makeText(this,"没有开启锁屏密码",Toast.LENGTH_SHORT).show(); returnfalse; } Log(TAG,"已开启锁屏密码"); //判断是否有指纹录入 if(!manager.hasEnrolledFingerprints()){ Toast.makeText(this,"没有录入指纹",Toast.LENGTH_SHORT).show(); returnfalse; } Log(TAG,"已录入指纹"); returntrue; } CancellationSignalmCancellationSignal=newCancellationSignal(); //回调方法 FingerprintManager.AuthenticationCallbackmSelfCancelled=newFingerprintManager.AuthenticationCallback(){ @Override publicvoidonAuthenticationError(interrorCode,CharSequenceerrString){ //但多次指纹密码验证错误后,进入此方法;并且,不能短时间内调用指纹验证 Toast.makeText(MainActivity.this,errString,Toast.LENGTH_SHORT).show(); showAuthenticationScreen(); } @Override publicvoidonAuthenticationHelp(inthelpCode,CharSequencehelpString){ Toast.makeText(MainActivity.this,helpString,Toast.LENGTH_SHORT).show(); } @Override publicvoidonAuthenticationSucceeded(FingerprintManager.AuthenticationResultresult){ Toast.makeText(MainActivity.this,"指纹识别成功",Toast.LENGTH_SHORT).show(); } @Override publicvoidonAuthenticationFailed(){ Toast.makeText(MainActivity.this,"指纹识别失败",Toast.LENGTH_SHORT).show(); } }; publicvoidstartListening(FingerprintManager.CryptoObjectcryptoObject){ //androidstudio上,没有这个会报错 if(ActivityCompat.checkSelfPermission(this,Manifest.permission.USE_FINGERPRINT)!=PackageManager.PERMISSION_GRANTED){ Toast.makeText(this,"没有指纹识别权限",Toast.LENGTH_SHORT).show(); return; } manager.authenticate(cryptoObject,mCancellationSignal,0,mSelfCancelled,null); } /** *锁屏密码 */ privatevoidshowAuthenticationScreen(){ Intentintent=mKeyManager.createConfirmDeviceCredentialIntent("finger","测试指纹识别"); if(intent!=null){ startActivityForResult(intent,REQUEST_CODE_CONFIRM_DEVICE_CREDENTIALS); } } @Override protectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata){ if(requestCode==REQUEST_CODE_CONFIRM_DEVICE_CREDENTIALS){ //Challengecompleted,proceedwithusingcipher if(resultCode==RESULT_OK){ Toast.makeText(this,"识别成功",Toast.LENGTH_SHORT).show(); }else{ Toast.makeText(this,"识别失败",Toast.LENGTH_SHORT).show(); } } } privatevoidLog(Stringtag,Stringmsg){ Log.d(tag,msg); } }
通过此文希望能帮助开发Android指纹识别的朋友,谢谢大家对本站的支持!