牙叔教程 简单易懂
效果展示
环境
Autojs版本: 9.0.5
Android版本: 10.0.0
MIUI版本: 12.5.1
autojs9没有指纹验证权限, 需要用mt管理器在AndroidManifest.xml中添加权限
android.permission.USE_BIOMETRIC
你将学到以下知识点
- 指纹验证
- imgView更换颜色
代码讲解
1. 导入类
importClass("android.hardware.fingerprint.FingerprintManager");
importClass("android.os.CancellationSignal");
importClass("android.graphics.PorterDuff");
2. UI界面
ui.layout(
<vertical>
<text text="指纹验证" margin="0 0 0 10" textColor="#d9000000" textSize="35sp" w="*" gravity="center"></text>
<text
text="--牙叔教程 简单易懂"
margin="0 0 0 10"
textColor="#80000000"
textSize="25sp"
w="*"
gravity="center"
></text>
<frame w="*" h="*">
<img id="img" layout_gravity="center" src="@drawable/ic_fingerprint_black_48dp" w="100dp" h="100dp"></img>
</frame>
</vertical>
);
3. 主逻辑
// 判断设备是否有指纹验证
let r = judgeFingerprintIsCorrect();
if (r) {
log("开始指纹验证");
let authenticationCallback = createAuthenticationCallback();
mManager.authenticate(null, mCancellationSignal, 0, authenticationCallback, null);
}
4. 释放资源
ui.emitter.on("pause", function () {
release();
});
function release() {
if (mCancellationSignal != null) {
mCancellationSignal.cancel();
mCancellationSignal = null;
}
}
5. 验证回调
function createAuthenticationCallback() {
let mSelfCancelled = new FingerprintManager.AuthenticationCallback({
onAuthenticationError: function (errorCode, errString) {
//多次指纹密码验证错误后,进入此方法;并且,不可再验(短时间)
//errorCode是失败的次数
toastLog("尝试次数过多,请稍后重试");
},
onAuthenticationHelp: function (helpCode, helpString) {
//指纹验证失败,可再验,可能手指过脏,或者移动过快等原因。
toastLog("指纹验证失败");
failureEffect(imgView);
},
onAuthenticationSucceeded: function (result) {
toastLog("指纹验证成功");
release();
engines.myEngine().forceStop();
},
onAuthenticationFailed: function () {
//指纹验证失败,指纹识别失败,可再验,错误原因为:该指纹不是系统录入的指纹。
toastLog("指纹验证失败");
failureEffect(imgView);
},
});
return mSelfCancelled;
}
6. 判断是否有指纹验证
function judgeFingerprintIsCorrect() {
if (!mFingerprintManager.isHardwareDetected()) {
toastLog("没有指纹识别模块");
return false;
} else {
log("有指纹识别模块");
}
if (!mKeyManager.isKeyguardSecure()) {
toastLog("没有开启锁屏密码");
return false;
} else {
log("有开启锁屏密码");
}
if (!mManager.hasEnrolledFingerprints()) {
toastLog("没有指纹录入");
return false;
} else {
log("有指纹录入");
}
return true;
}
名人名言
思路是最重要的, 其他的百度, bing, stackoverflow, 安卓文档, autojs文档, 最后才是群里问问
--- 牙叔教程
声明
部分内容来自网络
本教程仅用于学习, 禁止用于其他用途