“指纹识别API”的版本间的差异

来自Flyme开放平台
跳转至: 导航搜索
(以“ '''一、概述''' 1、目的<br> 本文档针对说明第三方应用如何使用魅族手机的指纹服务。 2、架构<br> APP => FingerprintManager => Finge...”为内容创建页面)
 
 
第1行: 第1行:
  
'''一、概述'''
+
[http://open.res.flyme.cn/fileserver/upload/file/201607/63296acad439470d87c7a92d0d7fad0c.zip 下载fingerprint.zip]
  
1、目的<br>
+
[http://open.res.flyme.cn/fileserver/upload/file/201607/3ca99f13606243acb629750055b2d808.pdf 下载fingerprint.pdf]
本文档针对说明第三方应用如何使用魅族手机的指纹服务。
+
 
 +
 
 +
'''1 概述'''
 +
 
 +
'''1.1 目的'''
 +
 
 +
本文档针对说明第三方应用如何使用魅族手机的指纹服务。
 +
 
 +
 
 +
'''1.2 架构'''
  
2、架构<br>
 
 
APP => FingerprintManager => FingerprintService => Fingerprint JNI
 
APP => FingerprintManager => FingerprintService => Fingerprint JNI
  
=='''二、指纹API'''==
 
  
1、open<br>
+
'''2 指纹API'''
函数原型:public static FingerprintManager open()<br>
+
 
功能描述:创建FingerprintManager实例化对象,从而使用指纹服务。获取的实例化对象需要由调用者主动调用release接口将其释放。<br>
+
'''2.1 open'''
参数描述:无<br>
+
 
返回值:<br>
+
函数原型:public static FingerprintManager open()
FingerprintManager:返回实例化对象表示成功,后续可通过该对象的方法进行其他操作;<br>
+
 
null:失败。<br>
+
功能描述:创建FingerprintManager实例化对象,从而使用指纹服务。获取的实例化对象需要由调用者主动调用release接口将其释放。
 +
 
 +
参数描述:无
 +
 
 +
返回值:
 +
 
 +
:*FingerprintManager:返回实例化对象表示成功,后续可通过该对象的方法进行其他操作;
 +
 
 +
:*null:失败。
 +
 
 +
 
 +
'''2.2 release'''
 +
 
 +
函数原型:void release();
 +
 
 +
功能说明:释放调用者通过open获取的实例化对象。当应用完成所需要的操作后,无需进行其他指纹识别操作,必须调用该接口进行释放,应与open成对出现。
 +
 
 +
参数说明:无
 +
 
 +
返回值:无
 +
 
 +
'''2.3 abort'''
 +
 
 +
函数原型:void abort() ;
 +
 
 +
功能说明:取消正在进行的指纹操作。
 +
 
 +
参数说明:无
 +
 
 +
返回值:无
 +
 
 +
 
 +
 
 +
'''2.4 setCaptureCallback'''
 +
 
 +
函数原型:public void setCaptureCallback(CaptureCallback captureCallback) ;
 +
 
 +
功能说明:设置图像捕获的回调函数。
 +
 
 +
参数说明:
 +
 
 +
:*captureCallback:图像捕获回调函数,其接口如下
 +
 
 +
<source lang="java">
 +
        public static interface CaptureCallback {
 +
            /**
 +
            * Called when the sensor is waiting for the user to touch the sensor with the finger.
 +
            */
 +
            void onWaitingForInput();
 +
            /**
 +
            * Called when the user has put down the finger and the image capture procedure has started.
 +
            */
 +
            void onInput();
 +
            /**
 +
 
 +
            * Called when the image capture procedure has completed.
 +
 
 +
            */
 +
            void onCaptureCompleted();
 +
 
 +
            void onCaptureFailed(int reason);
 +
        }
 +
</source>
 +
 
 +
返回值:无
 +
 
 +
 
 +
'''2.5 startIdentify'''
 +
 
 +
函数原型:public void startIdentify(IdentifyCallback identifyCallback, int[] ids) ;
 +
 
 +
功能说明:进行指纹认证。
 +
 
 +
参数说明:
 +
 
 +
:*identifyCallback:指纹认证的回调函数,应用需要自己实现,其接口定义如下
 +
 
 +
<source lang="java">
 +
        public static interface IdentifyCallback {
 +
            /**
 +
            * Called when the identification/verification procedure has succeeded to find a match.
 +
            * @param fingerId the identifier of the matched fignerprint.
 +
            * @param updated set if the fingerprint data acquired during identification was used to improve
 +
            * the biometric data record for this identity.
 +
            */
 +
            void onIdentified(int fingerId, boolean updated);
 +
 
 +
            /**
 +
            * Called when the identification/verification procedure has failed to find a match.
 +
            */
 +
            void onNoMatch();
 +
        }
 +
</source>
 +
 
 +
:*ids:已经注册的指纹ID数组,可通过getIds()获得。
 +
 
 +
返回值:无
 +
 
 +
 
 +
'''2.6 getIds'''
 +
 
 +
函数原型:public int[] getIds() ;
 +
 
 +
功能说明:获取已经注册的指纹ID列表。
 +
 
 +
参数说明:无
 +
 
 +
返回值:
 +
 
 +
:*数组:返回已经注册的指纹ID数组,最多支持5个指纹。
 +
 
 +
:*null:获取指纹ID失败。
 +
 
 +
 
 +
 
 +
'''3 demo'''
 +
 
 +
以上所示接口仅使用与魅族MX5, POR5, MA01, MA01C, 魅蓝3S等android L机型, 对于魅族android M机型来说, 指纹接口与android原生接口保持一致,具体使用方式请参照android官方文档.
 +
 
 +
一般来讲, 第三方应用主要使用的是指纹识别的功能, 所以这里针对指纹识别给出demo.首先加入指纹的SDK fingerprint.jar如下图所示:
 +
 
 +
[[Image:20160714001.png | 271px]]
 +
 
 +
然后在AndroidManifest里面配置使用指纹的权限如下:
 +
 
 +
<source lang="java">
 +
<uses-permission android:name="com.fingerprints.service.ACCESS_FINGERPRINT_MANAGER" />
 +
</source>
  
2、release<br>
+
调用接口如下所示:
函数原型:void release();<br>
+
功能说明:释放调用者通过open获取的实例化对象。当应用完成所需要的操作后,无需进行其他指纹识别操作,必须调用该接口进行释放,应与open成对出现。<br>
+
参数说明:无<br>
+
返回值:无<br>
+
  
3、abort<br>
+
<source lang="java">
函数原型:void abort() ;<br>
+
private void initFingPrintManager() {
功能说明:取消正在进行的指纹操作。<br>
+
if (mFM == null) {
参数说明:无<br>
+
mFM = FingerprintManager.open(); //调用open方法得到FingerprintManager
返回值:无<br>
+
}
 +
}
  
4、setCaptureCallback<br>
+
public void startVerify() {
函数原型:public void setCaptureCallback(CaptureCallback captureCallback) ;<br>
+
Log.d(TAG, "startVerify");
功能说明:设置图像捕获的回调函数。<br>
+
initFingPrintManager(); //得到FingerprintManager实例
参数说明:<br>
+
if (mFM.getIds() == null) { //得到系统中已经录入的指纹个数
captureCallback:图像捕获回调函数,其接口如下<br>
+
Log.d(TAG, "no fingerprints enrolled");
public static interface CaptureCallback {
+
return;
  /**
+
}
  * Called when the sensor is waiting for the user to touch the senso
+
if (mIdentifyCallback == null) {
r with the finger.
+
mIdentifyCallback = createIdentifyCallback(); //创建指纹认证回调函数
*/
+
}
void onWaitingForInput();
+
  /**
+
  * Called when the user has put down the finger and the image captur e procedure has started.
+
  */
+
void onInput();
+
  /**
+
* Called when the image capture procedure has completed.
+
  */
+
  void onCaptureCompleted();
+
void onCaptureFailed(int reason);
+
  }
+
返回值:无<br>
+
  
5、startEnrol<br>
+
mFM.startIdentify(mIdentifyCallback, mFM.getIds()); //调用指纹认证接口
函数原型:public void startEnrol(EnrolCallback enrolCallback, int fingerId) ;<br>
+
}
功能说明:进行指纹注册。<br>
+
参数说明:<br>
+
EnrolCallback:指纹注册的回调函数,应用需要自己实现,接口定义如下<br>
+
public static interface EnrolCallback {
+
/**
+
* Called when the enrollment procedure has finished analyzing a fin gerprint image.
+
  * @param data see more info in GuidedData class
+
  */
+
void onProgress(GuidedData data);
+
  /**
+
  * Called when the enrollment procedure has finished.
+
* @param fingerId the identifier used to reference the newly enroll ed fingerprint.
+
  */
+
  void onEnrolled(int fingerId);
+
  /**
+
  * Called if the enrollment failed.
+
  */
+
  void onEnrollmentFailed();
+
  void onFingerDownTimeOut();
+
  }
+
fingerId:标识一个要注册的指纹ID。<br>
+
返回值:无<br>
+
  
6、 startIdentify<br>
+
private IdentifyCallback createIdentifyCallback() {
函数原型:public void startIdentify(IdentifyCallback identifyCallback,
+
return new FingerprintManager.IdentifyCallback() {
int[] ids) ;<br>
+
功能说明:进行指纹认证。<br>
+
参数说明:<br>
+
identifyCallback:指纹认证的回调函数,应用需要自己实现,其接口定义如下<br>
+
  public static interface IdentifyCallback {
+
/**
+
* Called when the identification/verification procedure has succeed ed to find a match.
+
* @param fingerId the identifier of the matched fignerprint.
+
* @param updated set if the fingerprint data acquired during identi fication was used to improve
+
* the biometric data record for this identity.
+
*/
+
  void onIdentified(int fingerId, boolean updated);
+
  /**
+
  * Called when the identification/verification procedure has failed to find a match.
+
  */
+
void onNoMatch();
+
  }
+
ids:已经注册的指纹ID数组,可通过getIds()获得。<br>
+
返回值:无<br>
+
  
7、getIds<br>
+
@Override
函数原型:public int[] getIds() ;<br>
+
public void onIdentified(int id, boolean updated) { //认证成功
功能说明:获取已经注册的指纹ID列表。<br>
+
Log.d(TAG, "onIdentified!, fingerId:" + id);
参数说明:无<br>
+
mFM.release(); //认证成功后release, 需要注意的是在不使用指纹功能后必须要调用release, 也就是说open和release严格配对
返回值:<br>
+
//否则会造成mBack不能使用, 因为只有调用release之后才能从指纹模式切换到back模式
数组:返回已经注册的指纹ID数组,最多支持5个指纹。<br>
+
}
null:获取指纹ID失败。<br>
+
  
8、deleteFingerData<br>
+
@Override
函数原型:public void deleteFingerData(int fingerId) ;<br>
+
public void onNoMatch() { //认证失败
功能说明:删除指定的指纹。<br>
+
Log.d(TAG, "onNoMatch! ");
参数说明:<br>
+
startVerify(); //一次认证失败后重新再次发起认证
fingerId:要删除的指纹ID。<br>
+
}
返回值:无<br>
+
};
 +
}
 +
</source>

2016年7月14日 (四) 16:15的最后版本

下载fingerprint.zip

下载fingerprint.pdf


1 概述

1.1 目的

本文档针对说明第三方应用如何使用魅族手机的指纹服务。


1.2 架构

APP => FingerprintManager => FingerprintService => Fingerprint JNI


2 指纹API

2.1 open

函数原型:public static FingerprintManager open()

功能描述:创建FingerprintManager实例化对象,从而使用指纹服务。获取的实例化对象需要由调用者主动调用release接口将其释放。

参数描述:无

返回值:

  • FingerprintManager:返回实例化对象表示成功,后续可通过该对象的方法进行其他操作;
  • null:失败。


2.2 release

函数原型:void release();

功能说明:释放调用者通过open获取的实例化对象。当应用完成所需要的操作后,无需进行其他指纹识别操作,必须调用该接口进行释放,应与open成对出现。

参数说明:无

返回值:无

2.3 abort

函数原型:void abort() ;

功能说明:取消正在进行的指纹操作。

参数说明:无

返回值:无


2.4 setCaptureCallback

函数原型:public void setCaptureCallback(CaptureCallback captureCallback) ;

功能说明:设置图像捕获的回调函数。

参数说明:

  • captureCallback:图像捕获回调函数,其接口如下
        public static interface CaptureCallback {
            /**
             * Called when the sensor is waiting for the user to touch the sensor with the finger.
             */
            void onWaitingForInput();
            /**
             * Called when the user has put down the finger and the image capture procedure has started.
             */
            void onInput();
            /**
 
             * Called when the image capture procedure has completed.
 
             */
            void onCaptureCompleted();
 
            void onCaptureFailed(int reason);
        }

返回值:无


2.5 startIdentify

函数原型:public void startIdentify(IdentifyCallback identifyCallback, int[] ids) ;

功能说明:进行指纹认证。

参数说明:

  • identifyCallback:指纹认证的回调函数,应用需要自己实现,其接口定义如下
        public static interface IdentifyCallback {
            /**
             * Called when the identification/verification procedure has succeeded to find a match.
             * @param fingerId the identifier of the matched fignerprint.
             * @param updated set if the fingerprint data acquired during identification was used to improve
             * the biometric data record for this identity.
             */
            void onIdentified(int fingerId, boolean updated);
 
            /**
             * Called when the identification/verification procedure has failed to find a match.
             */
            void onNoMatch();
        }
  • ids:已经注册的指纹ID数组,可通过getIds()获得。

返回值:无


2.6 getIds

函数原型:public int[] getIds() ;

功能说明:获取已经注册的指纹ID列表。

参数说明:无

返回值:

  • 数组:返回已经注册的指纹ID数组,最多支持5个指纹。
  • null:获取指纹ID失败。


3 demo

以上所示接口仅使用与魅族MX5, POR5, MA01, MA01C, 魅蓝3S等android L机型, 对于魅族android M机型来说, 指纹接口与android原生接口保持一致,具体使用方式请参照android官方文档.

一般来讲, 第三方应用主要使用的是指纹识别的功能, 所以这里针对指纹识别给出demo.首先加入指纹的SDK fingerprint.jar如下图所示:

20160714001.png

然后在AndroidManifest里面配置使用指纹的权限如下:

<uses-permission android:name="com.fingerprints.service.ACCESS_FINGERPRINT_MANAGER" />

调用接口如下所示:

 private void initFingPrintManager() {
	if (mFM == null) {
		mFM = FingerprintManager.open(); //调用open方法得到FingerprintManager
	}
}
 
public void startVerify() {
	Log.d(TAG, "startVerify");
	initFingPrintManager(); //得到FingerprintManager实例
	if (mFM.getIds() == null) { //得到系统中已经录入的指纹个数
		Log.d(TAG, "no fingerprints enrolled");
		return;
	}
	if (mIdentifyCallback == null) {
		mIdentifyCallback = createIdentifyCallback(); //创建指纹认证回调函数
	}
 
	mFM.startIdentify(mIdentifyCallback, mFM.getIds()); //调用指纹认证接口
}
 
private IdentifyCallback createIdentifyCallback() {
	return new FingerprintManager.IdentifyCallback() {
 
		@Override
		public void onIdentified(int id, boolean updated) { //认证成功
			Log.d(TAG, "onIdentified!, fingerId:" + id);
			mFM.release(); //认证成功后release, 需要注意的是在不使用指纹功能后必须要调用release, 也就是说open和release严格配对
			//否则会造成mBack不能使用, 因为只有调用release之后才能从指纹模式切换到back模式
		}
 
		@Override
		public void onNoMatch() { //认证失败
			Log.d(TAG, "onNoMatch! ");
			startVerify(); //一次认证失败后重新再次发起认证
		}
	};
}

导航菜单