2 ユーザーガイド
2.1 サンプルプロジェクト
テスト用のサンプルプロジェクトは、AndroidStudioで提供されています。インポートするには、次の手順を参照してください。
File > New > Import Projectをクリックし、Sampleを選択してAndroidStudioにインポートしてください。
アカウント情報
API_KEY
とAPI_SECRET
を入力してください。
private static final String API_KEY = "Please input API_KEY";
private static final String API_SECRET = "Please input API_Secret";
ライセンスファイルの名前を変更し、指定したディレクトリに配置してください。(1.5節 ライセンス概要にご参照ください)
2.2 Android Studioへの統合
2.2.1 方法1:モジュール依存の簡易統合
File > New > Import Module ...
から../Sample/common-silent
を選択し、 Import common-silentをインポートモジュールとしてプロジェクトにインポートし、アプリケーションプロジェクトのbuild.gradleに依存関係を追加します。
implementation project(':common-silent')
プロジェクト(アプリプロジェクトと同じレベル)の下にリポジトリを作成し、liveness-silent-online-cn-release.aarをこのディレクトリにコピーしてください。ルートディレクトリのbuild.gradleを変更し、次のようにリポジトリに構成を追加してください。
allprojects {
repositories {
google()
jcenter()
flatDir {
dirs '../repositories'
}
}
}
次の例のように、AndroidManifest.xmlに権限ステートメントを追加してください。
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
次の例のように、AndroidManifest.xmlにActivityステートメントを追加してください。
<activity android:name="com.sensetime.liveness.silent.SilentLivenessActivity"
android:screenOrientation="portrait"
android:launchMode="singleTop"
android:theme="@android:style/Theme.NoTitleBar"/>
静的生体検知は、
SilentLivenessActivity
を呼び出すことで使用できます。詳細については、サンプルのStartPageFragment
のstartDetectionActivity()
メソッドを参照してください。
2.2.2 方法2:libsメソッドを使用した高度な統合とcommon-silentの代わりにSDKを利用するカスタマイズ開発
該当するアプリモジュールの下に新しいlibs
フォルダーを作成し(libs
フォルダーが既に存在する場合は不要)、liveness-silent-online-cn-release.aar
をlibs
にコピーしてください。 アプリケーションモジュールの下にあるbuild.gradleに次の構成を追加してください。
dependencies {
...
implementation fileTree(dir: 'libs', include: ['*.aar'])
}
そうすると、SDKを直接呼び出して開発することができます。
2.3 コードの難読化を解消
コードの難読化後にクラッシュが発生する可能性があるため、最初に難読化の構成によってコードの難読化の問題を解決することを推奨します。
具体的には、次のコードがproguardファイルに追加されることで、この問題を解決します。
-keep class com.sensetime.** { *; }
2.4 インターフェース呼び出しプロセス
2.4.1 初期化
ライセンスファイルとモデルファイルは、事前に端末にコピーする必要があります。
FileUtil.copyAssetsToFile
を呼び出すか、他のメソッドを使用してサンプルを参照してください。その後、SilentLivenessApi
でinit
メソッドを呼び出してください。
public static void init(@NonNull final Context context, @NonNull final String licenseFilePath, @NonNull final String detectionModelFilePath, @NonNull final String alignmentModelFilePath, @NonNull final String qualityModelFilePath, @NonNull final String frameSelectorModelFilePath, @NonNull final String antiSpoofingModelFilePath, @NonNull final OnLivenessListener listener)
生体検知にパスできる最小検出時間と最小検出フレーム数を設定する必要がある場合は、init
メソッドを調整してからsetPassCondition
メソッドを呼び出すことで設定できます。メソッドの説明については、2.4.2節 生体検知のオプション条件設定を参照してください。
品質検出の設定
SilentLivenessApi.setBlurryFilterEnable(true, 1.4F);
SilentLivenessApi.setIlluminationFilterEnable(true, 1.899F, 4.997F);
SilentLivenessApi.setEyeOpenThreshold(0.47F);
2.4.2 生体検知のオプション条件設定
SilentLivenessApi
の中から、次のメソッドを呼び出して設定します。
生体検知パスの条件を設定します。
setPassCondition(final int minDuration, final int minFrames)
タイムアウト時間を秒単位で設定します。デフォルトのタイムアウト時間は10秒です。
setDetectTimeout(int timeout)
顔との距離の判定条件を設定します。 パラメータ値の範囲内にない場合また、
closeRate
は0ではない、かつfarRate
はcloseRate
より大きい場合は、STID_E_FARCLOSE_INVALID
のエラーが発生します:setFaceDistanceRate(float farRate, float closeRate)
眉毛の遮蔽検知機能が必要かどうかを設定します。デフォルトはfalseです。:
setBrowOcclusionEnable(final boolean enable)
顔の遮蔽検知機能が必要かどうかを設定します。デフォルトはfalseです。:
setOcclusionEnable(final boolean enable)
生体検知のしきい値を設定します。
setThreshold(final float threshold)
目の開き状態のしきい値を設定します。
setEyeOpenThreshold(final float threshold)
ぼやけさ検知機能が必要かどうかとそのしきい値を設定します。
setBlurryFilterEnable(final boolean enable, final float threshold)
照明条件検知機能が必要かどうかとそのしきい値を設定します。
setIlluminationFilterEnable(final boolean enable, final float lowLightThreshold, final float brightThreshold)
2.4.3 テスト開始の準備
SilentLivenessApi start()
メソッドを呼び出して、テストを開始する準備をします。
public static void start()
メソッドの説明:テストを開始する準備をします。
2.4.4 データを入力して検出を開始
SilentLivenessApi inputData
メソッドを呼び出して、検出用の画像データやその他のパラメーターを入力します。
public static void inputData(byte[] image, PixelFormat format, Size previewSize, Rect containerRect,
boolean frontCameraOrNot, int cameraOrientation);
メソッドの説明:検出用画像の入力。
2.4.5 テスト結果を取得
OnLivenessListener
にメソッドを実装して、検出結果を取得します。
void onInitialized();
メソッドの説明:完全な初期化。
void onFaceStatusChanged(int facePosition, final FaceOcclusion faceOcclusion, int faceDistance)
メソッドの説明:照準ステータスを更新します。
void onFailure(ResultCode errorCode, byte[] protobufData, List images, List faceRects, final String requestId, final int statusCode);
メソッドの説明:生体検知が失敗しました。
void onSuccess(byte[] protobufData, List images, List faceRects, final String requestId, final int statusCode);
メソッドの説明:生体検知が成功しました。
2.4.6 検出を停止し、ステータスをリセット
SilentLivenessApistop
メソッドを呼び出します。
public static void stop()
メソッドの説明:現在の検出を停止し、検出ステータスをリセットします。 このメソッドは、失敗後に再試行するために使用されます。 init
が成功した後、release
が呼び出される前に呼び出す必要があります。 呼び出された後、start
を使用してdetection.silentlivenessapi.md
を再開できます)
2.4.7 検出をキャンセルしてリソースを解放
SilentLivenessApi
リリースメソッドを呼び出します。
public static void release();
メソッドの説明:検出をキャンセルし、リソースを解放します。
2.5 顔比較のためにプライベートクラウドインターフェースを呼び出し
生体検知が成功すると、SDKは対応する顔画像と暗号化されたバイナリファイルを返します。戻り値は、顔を比較するためのプライベートクラウドインターフェイスのパラメーターとして使用できます。
プライベートクラウドインターフェースの具体的な説明については、SenseIDプライベートクラウドAPIマニュアルを参照してください。
Last updated