2 ユーザーガイド

2.1 サンプルプロジェクト

テスト用のサンプルプロジェクトは、AndroidStudioで提供されています。インポートするには、次の手順を参照してください。

  • File > New > Import Projectをクリックし、Sampleを選択してAndroidStudioにインポートしてください。

  • アカウント情報API_KEYAPI_SECRETを入力してください。

SDKを使用する前に、API_KEYAPI_SECRETを構成する必要があります。 SilentLivenessActivityのコードを参照してください:

 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')

common-silentのassetsディレクトリにあるモデルファイル(.model)とライセンスファイル(.lic)が正常に読み込まれたことをご確認ください。

  • プロジェクト(アプリプロジェクトと同じレベル)の下にリポジトリを作成し、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を呼び出すことで使用できます。詳細については、サンプルのStartPageFragmentstartDetectionActivity()メソッドを参照してください。

2.2.2 方法2:libsメソッドを使用した高度な統合とcommon-silentの代わりにSDKを利用するカスタマイズ開発

該当するアプリモジュールの下に新しいlibsフォルダーを作成し(libsフォルダーが既に存在する場合は不要)、liveness-silent-online-cn-release.aarlibsにコピーしてください。 アプリケーションモジュールの下にあるbuild.gradleに次の構成を追加してください。

dependencies {
  ...
  implementation fileTree(dir: 'libs', include: ['*.aar'])
 }

そうすると、SDKを直接呼び出して開発することができます。

2.3 コードの難読化を解消

コードの難読化後にクラッシュが発生する可能性があるため、最初に難読化の構成によってコードの難読化の問題を解決することを推奨します。

具体的には、次のコードがproguardファイルに追加されることで、この問題を解決します。

-keep class com.sensetime.** { *; }

2.4 インターフェース呼び出しプロセス

2.4.1 初期化

ライセンスファイルとモデルファイルは、事前に端末にコピーする必要があります。

FileUtil.copyAssetsToFileを呼び出すか、他のメソッドを使用してサンプルを参照してください。その後、SilentLivenessApiinitメソッドを呼び出してください。

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節 生体検知のオプション条件設定を参照してください。

詳細については、OnLivenessListenerのライブラリを参照してください。

品質検出の設定

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ではない、かつfarRatecloseRateより大きい場合は、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);

メソッドの説明:生体検知が成功しました。

詳細については、OnLivenessListenerのライブラリを参照してください。

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マニュアルを参照してください。

最終更新