安卓正式引入指纹模块,是在API23版本中,所以本文只针对API23以上的,不对API23以下,各大厂商的各自的Rom指纹做说明.
首先在清单文件中加入指纹权限:
<uses-permission android:name="android.permission.USE_FINGERPRINT" />
注:我的studio版本是2.3.0,在使用中 清单文件中有这么一行代码
android:roundIcon="@mipmap/ic_launcher_round"
会导致指纹无法识别到,我删去了这行代码就可以了.如果各位也遇到这种情况 不妨试试.
public class ShuangMianActivity extends BaseActivity {
private FingerHelper fingerHelper;
private ImageView imageViewPic;
private int type = 0;
@Override
protected int getLayout() {
return R.layout.activity_shuang_mian;
}
@Override
protected void initView() {
imageViewPic = (ImageView) findViewById(R.id.iv_shuangmianzhiwen_pic);
}
@Override
protected void initData() {
initFingerPrint();
}
private void initFingerPrint() {
fingerPrintUiHelper = new FingerPrintUiHelper(this);
fingerPrintUiHelper.startFingerPrintListen(new FingerprintManagerCompat.AuthenticationCallback() {
@Override
public void onAuthenticationSucceeded(FingerprintManagerCompat.AuthenticationResult result) {
Toast.makeText(ShuangMianActivity.this, "指纹识别成功", Toast.LENGTH_SHORT).show();
}
@Override
public void onAuthenticationFailed() {
// Toast.makeText(MainActivity.this, "指纹识别失败", Toast.LENGTH_SHORT).show();
}
@Override
public void onAuthenticationHelp(int helpMsgId, CharSequence helpString) {
Toast.makeText(ShuangMianActivity.this, helpString, Toast.LENGTH_SHORT).show();
}
@Override
public void onAuthenticationError(int errMsgId, CharSequence errString) {
//但多次指纹密码验证错误后,进入此方法;并且,不能短时间内调用指纹验证
Toast.makeText(ShuangMianActivity.this, "您尝试次数过多,请稍后再试", Toast.LENGTH_SHORT).show();
}
});
}
}
import android.app.Activity;
import android.support.v4.hardware.fingerprint.FingerprintManagerCompat;
import android.support.v4.os.CancellationSignal;
public class FingerHelper {
private CancellationSignal signal;
private FingerprintManagerCompat fingerprintManager;
public FingerHelper(Activity activity) {
signal = new CancellationSignal();
fingerprintManager = FingerprintManagerCompat.from(activity);
}
public void startFingerPrintListen(FingerprintManagerCompat.AuthenticationCallback callback) {
fingerprintManager.authenticate(null, 0, signal, callback, null);
}
}