vivo X21屏下指纹适配指南,点击此处可下载开发过程中所需的全部代码。文档具体内容如下:
一、FingerprintInsets
public final class FingerprintInsets
extends Object
java.lang.Object
↳ com.vivo.fingerprint.ud.FingerprintInsets
该类描述屏幕指纹相关信息,例如指纹图标位置,指纹图标显示状态等。该类会连接屏幕指纹服务获取状态信息,应用只有在 isReady() 返回 true 的时候才能通过该类的其它接口获取相关信息。使用本接口,需要应用声明com.vivo.fingerprint.permission.READ_STATE 权限,调用 create 方法后,应用不再使用该系列接口后应该调用 destroy 方法释放相关的资源,避免造成可能发生的内存泄露。
该类的方法都不是线程安全的,这就意味着所有方法都应该在同一线程中调用,create 方法会创建一个 Handler,因此该类的所有方法应该在主线程或者有 Looper 的线程中调用。
使用该类的 minSdkVersion 应该不小于 11(Android 3.0.x)。该类能够在 vivo 手机及其它 sdk version 不小于 11 的非 vivo 设备上使用。本类依赖 android-support-v4。
ICON_INVISIBLE
int ICON_INVISIBLE = 0
图标状态标记,表示指纹图标不可见。
值:0
ICON_VISIBLE
int ICON_VISIBLE = 1
图标状态标记,表示指纹图标可见。
static void setDebugEnable(boolean enable)
打开或者关闭内部日志
enable: 是否打开日志
static FingerprintInsets
create(Context context,FingerprintInsetsListener listener)
该类可以创建对象实例,如果多次调用该方法并且没有调用 destroy,则返回的是同一个对象,如果创建失败,则返回空,这种情况一般是在非 vivo 手机上调用该接口,如果创建成功,该方法会产生一个对 context 的弱引用对象,listener 可为 null。
context:组件上下文
listener:Insets 内部事件监听器
返回值:创建成功返回非空置,失败则为空
boolean isReady()
指纹相关状态是否初始化完毕,只有在初始化完毕后,才能调用其它接口获取正确的参数。
void destroy()
清理当前实例对象。
boolean hasUnderDisplayFingerprint()
当前机型是否有屏幕指纹,非 vivo 机型上始终返回 false
注意:该方法只有在 isReady 和 hasUnderDisplayFingerprint 返回 true 时返回有效值。
void setFingerprintInsetsListener(FingerprintInsetsListener listener)
设置 insets 事件监听器,用于 isReady 和 图标状态变化事件(显示,隐藏)监听。
listener:Insets 内部事件监听器
int getFingerprintIconState()
获取指纹图标状态,返回 ICON_INVISIBLE 或者 ICON_INVISIBLE
注意:该方法只有在 isReady 和 hasUnderDisplayFingerprint 返回 true 时返回有效值。
Rect getFingerprintIconPosition()
获取指纹图标位置,返回指纹图标 left, top, right, bottom四个维度,坐标值为屏幕绝对坐标。
注意:该方法只有在 isReady 和 hasUnderDisplayFingerprint 返回 true 时返回有效值。
int getFingerprintIconLeft()
获取指纹图标 left 值
注意:该方法只有在 isReady 和 hasUnderDisplayFingerprint 返回 true 时返回有效值。
int getFingerprintIconTop()
获取指纹图标 top 值
注意:该方法只有在 isReady 和 hasUnderDisplayFingerprint 返回 true 时返回有效值。
int getFingerprintIconRight()
获取指纹图标 right 值
注意:该方法只有在 isReady 和 hasUnderDisplayFingerprint 返回 true 时返回有效值。
int getFingerprintIconBottom()
获取指纹图标 bottom 值
注意:该方法只有在 isReady 和 hasUnderDisplayFingerprint 返回 true 时返回有效值。
二、FingerprintInsets.FingerprintInsetsListener
public interface FingerprintInsets.FingerprintInsetsListener
com.vivo.fingerprint.ud.FingerprintInsets.FingerprintInsetsListener
监听 FingerprintInsets 事件,包括 Insets 准备就绪,指纹图标显示或者隐藏。
void onReady()
Insets 准备就绪
void onIconStateChanged(int state)
指纹图标状态变化
state:FingerprintInsets.ICON_VISIBLE 可见,FingerprintInsets.ICON_VI自动生成appSIBLE 不可见,-1 状态更新中。
代码示例 ↓
private FingerprintInsets mInsets;
class InsetsListener implements
FingerprintInsets.FingerprintInsetsListener {
@Override
public void onReady() {
boolean hasUdFeature =
mInsets.hasUnderDisplayFingerprint();
if (hasUdFeature) {
 网站转app; final Rect rect =
mInsets.getFingerprintIconPosition();
Log.d(TAG, “iconRect:” +
rect.toShortString());
// TODO: vivo device support
// under display fingerprint.
} else {
// TODO: vivo device don’t
// support under display
// fingerprint.
}
}
@Override
public void onIconStateChanged(int state) {
Log.d(TAG, “onIconStateChanged ” + state);
}
}
mInsets = FingerprintInsets.create(
this, new InsetsListener());
if (mInsets == null) {
// TODO: Not vivo device.
}
// Later call destroy if needed.
if (mInsets != null) {
mInsets.setFingerprintInsetsListener(null);
mInsets.destroy();
mInsets = null;
}
编辑:yimen,如若转载,请注明出处:https://www.yimenapp.com/kb-yimen/11622/
部分内容来自网络投稿,如有侵权联系立删