[向前一小步]Android简单实现指纹识别登录

指纹识别在Android的开发中可以说是不怎么常见,但是Google对于生物识别缺失很重视,显示废弃了以往的Android6.0推出的FingerprintManager ,后针对Android9.0以上更新推出了BiometricPrompt。

Android指纹识别的应用场景其实还算挺多,只不过区别于ios系统,Android手机的硬件都是由各厂商生产的,手机档次也参差不齐,对于指纹开发来说还需要适配进行,显得比较麻烦,但针对于一些小型app开发或者是某个应用场景的特殊性以及某app指纹的必要性如指纹支付,指纹登录来说是非常重要的,接下来我们实现一个简单的指纹验证登录案例

1.引入依赖

implementation "androidx.biometric:biometric:1.1.0"

2.编写布局代码

编写main_layout.xml相关布局代码

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">


    <Button
        android:id="@+id/but"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="指纹识别"
        android:layout_gravity="center"/>



</LinearLayout>

3.使用androidx BiometricPrompt实现指纹验证功能”

在BiometricPrompt的使用中,因为它是针对api29,Android10升级的生物识别,所以无需再判断Androd版本api,直接引入应用即可

public class MainActivity extends AppCompatActivity {
  private Button button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initfinger();
    }

    private void initfinger() {
        button=findViewById(R.id.but);
        //指纹登录点击事件
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                BiometricPrompt.PromptInfo promptInfo=new BiometricPrompt.PromptInfo.Builder()
                        .setTitle("指纹登录")
                        .setDescription("用户指纹验证")
                        .setNegativeButtonText("取消")
                        .build();
                getprompt().authenticate(promptInfo);
            }
        });
    }

    //我这里写了一个方法,也可以不写,直接把这个里面的代码放在上面的点击事件里也是可以的
    private BiometricPrompt getprompt(){
        Executor executor = ContextCompat.getMainExecutor(this);
        BiometricPrompt.AuthenticationCallback callback=new BiometricPrompt.AuthenticationCallback() {
            //指纹验证错误
            @Override
            public void onAuthenticationError(int errorCode, @NonNull CharSequence errString) {
                super.onAuthenticationError(errorCode, errString);
                Toast.makeText(MainActivity.this,errString.toString(), Toast.LENGTH_SHORT).show();
            }
            //指纹验证成功
            @Override
            public void onAuthenticationSucceeded(@NonNull BiometricPrompt.AuthenticationResult result) {
                super.onAuthenticationSucceeded(result);
                Toast.makeText(MainActivity.this, "指纹验证成功", Toast.LENGTH_SHORT).show();
                Intent intent = new Intent(MainActivity.this, MainActivity2.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(intent);
            }
            //指纹验证失败
            @Override
            public void onAuthenticationFailed() {
                super.onAuthenticationFailed();
                Toast.makeText(MainActivity.this,"指纹验证失败", Toast.LENGTH_SHORT).show();
            }
        };
        BiometricPrompt biometricPrompt=new BiometricPrompt(this,executor,callback);
        return  biometricPrompt;
    }


}

简单说明下,就是利用BiometricPrompt去进行指纹验证,在getprompt中监听回掉验证返回结果,进行页面的跳转。

4.最终效果图

 

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值