Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Сгенерируйте тестовую лицензию самостоятельно здесь (внимание, страница на английском языке) или свяжитесь с нами по email для выпуска продуктивной лицензии. Для подготовки лицензии потребуется applicationId (bundle id).
Для добавления файла лицензии в SDK вызовите метод OzLivenessSDK.init с одним из параметров LicenseSources:
LicenseSource.LicenseAssetId должен содержать путь к файлу forensics.license, расположенному в проекте в папке res/raw.
LicenseSource.LicenseFilePath должен содержать пусть к файлу на устройстве (вне проекта).
Если при обработке лицензии возникнут ошибки, вы получите сообщение с описанием этих ошибок. Если ошибок нет, система выведет данные о лицензии. Вы также можете запросить эти данные с помощью метода getLicensePayload.
Мастер-лицензия – это оффлайн-лицензия, с которой можно использовать мобильные SDK без ограничений по bundle_id, в отличие от обычных лицензий. Для получения мастер-лицензии нужно создать пару ключей, как описано ниже. Отправьте нам публичный ключ по электронной почте, и вскоре после этого мы отправим вам мастер-лицензию.
Вашему приложению нужно будет подписать свой bundle_id приватным ключом. Мобильные SDK проверяют подпись с помощью публичного ключа из мастер-лицензии. Действие таких лицензий ограничено по времени.
В этом разделе описано, как создавать приватный и публичный ключи.
License error. License at (your_URI) not found
Отсутствует файл лицензии. Проверьте наименование и путь к файлу.
License error. Cannot parse license from (your_URI), invalid format
Файл лицензии поврежден. Пожалуйста, отправьте его нам по электронной почте.
License error. Bundle company.application.id is not in the list allowed by license (bundle.id1, bundle.id2)
Идентификатор приложения отсутствует в списке разрешенных для данной лицензии идентификаторов. Проверьте написание, если все корректно, нужна новая лицензия.
License error. Current date yyyy-mm-dd hh:mm:ss is later than license expiration date yyyy-mm-dd hh:mm:ss
Срок действия лицензии истек. Пожалуйста, свяжитесь с нами.
License is not initialized. Call 'OzLivenessSDK.init before using SDK
Лицензия не устанавливалась. Вызовите метод OzLivenessSDK.init, как показано выше в этой статье
OzLivenessSDK.init(context,
listOf(
LicenseSource.LicenseAssetId(R.raw.your_license_name),
LicenseSource.LicenseFilePath("абсолютный путь к файлу лицензии")
),
object : StatusListener<LicensePayload> {
override fun onSuccess(result: LicensePayload) { /*проверка информации о лицензии*/ }
override fun onError(error: OzException) { /*обработка исключения */ }
}
)OzLivenessSDK.INSTANCE.getConfig().setBaseURL(BASE_URL);
OzLivenessSDK.INSTANCE.init(context,
Arrays.asList(
new LicenseSource.LicenseAssetId(R.raw.forensics),
new LicenseSource.LicenseFilePath("aбсолютный путь к файлу лицензии")
),
new StatusListener<LicensePayload>() {
@Override public void onStatusChanged(@Nullable String s) {}
@Override public void onSuccess(LicensePayload licensePayload) { /*проверка информации о лицензии*/ }
@Override public void onError(@NonNull OzException e) { /*обработка исключения */ }
}
);Чтобы создать приватный ключ, последовательно запустите следующие команды:
Вы получите два файла:
privateKey.der – приватный ключ .der;
privateKey.txt – privateKey.der в кодировке base64. Содержимое этого файла используется в качестве подписи bundle_id хостового приложения.
Спецификация команд OpenSSL: https://www.openssl.org/docs/man1.1.1/man1/openssl-pkcs8.html
Чтобы создать публичный ключ, запустите команду:
Вы получите публичный ключ publicKey.pub. Отправьте его нам по электронной почте. В ответ мы пришлем вам лицензию.
Инициализация SDK:
Перед инициализацией SDK создайте закодированную base64 подпись для bundle_id хостового приложения с помощью приватного ключа.
Пример создания подписи:
Передайте подпись как параметр masterLicenseSignature во время инициализации SDK.
Если подпись невалидна, инициализация продолжится по стандартной схеме: проверка включенных в лицензию bundle_id.
KohJ1rsUgLMzZHpHGAZDK2efHPnMj9tw9VIedBLvyZt0B2JH3SWfJLJ8X6JNz3bR2sce6PR2wdEIFln0r1pUnD+6WBCgexKIHAv7esiRVQZoZOEANDBwDvJVv73H/0qL2LGlhxKzbBg5CxGPClTBQdLo1P+7HsTXHHG/Hf6m3rdu1OUeGXVPoaS2NzE8kiRH6gb8Nhr7PBLTUeMKTeLoiX13hvwjOqhV1ANhgS97T4hC2+ZilZt4RektgRY/+fGmWnOqErNeYuz/WSInfaJS0YEWhJW3gXKPjdCzNGIBIqbxaFSjU46wu/alh2+tBRFnrYFl1dRQVcTlW0VwwZHcug==openssl genpkey -algorithm RSA -outform DER -out privateKey.der -pkeyopt rsa_keygen_bits:2048
# for MacOS
base64 -i privateKey.der -o privateKey.txt
# for Linux
base64 -w 0 privateKey.der > privateKey.txtopenssl rsa -pubout -in privateKey.der -out publicKey.pubfun init(
context: Context,
licenseSources: List<LicenseSource>,
masterLicenseSignature: String,
statusListener: StatusListener<LicensePayload>? = null,
)private fun getMasterSignature(): String {
Security.insertProviderAt(org.spongycastle.jce.provider.BouncyCastleProvider(), 1)
val privateKeyBase64String = "содержимое файла privateKey.txt"
val sig = Signature.getInstance("SHA512WithRSA")
val keySpec = PKCS8EncodedKeySpec(Base64.decode(privateKeyBase64String, Base64.DEFAULT))
val keyFactory = KeyFactory.getInstance("RSA")
sig.initSign(keyFactory.generatePrivate(keySpec))
sig.update(packageName.toByteArray(Charsets.UTF_8))
return Base64.encodeToString(sig.sign(), Base64.DEFAULT).replace("\n", "")
}Работа с OZ Mobile SDK в операционной системе «Android»
Чтобы начать пользоваться нашим SDK, нужно выполнить следующие шаги.
Добавьте SDK в проект, как описано здесь.
Получите лицензию на SDK – сгенерируйте тестовую самостоятельно на нашем сайте или запросите «боевую» по электронной почте. Для лицензии потребуется application id. Добавьте лицензию в проект, как описано здесь.
SDK к API. Это необязательный шаг, он выполняется, только если вам нужно обрабатывать какие-либо данные на сервере.
Для съемки видео используйте методы, описанные – вы получите медиафайлы, которые потом можно будет отправить на анализ.
Запустите нужные вам проверки для полученных на предыдущем шаге медиафайлов. описано, как выполнять проверки.
Если вы хотите настроить внешний вид SDK, написано, как это делается.
Рекомендуемая версия Android: 5+ (чем новее смартфон, тем быстрее выполняются анализы).
Рекомендуемые версии компонентов:
Мы не поддерживаем эмуляторы.
Доступные языки: EN, RU, ES, HY, KK, KY, TR.
Исходные коды примеров приложений с использованием Oz Liveness SDK расположены в репозитории GitLab:
Список методов и полей SDK:
Актуальную сборку демо-приложения Вы можете загрузить по .
В build.gradle проекта добавьте строки:
allprojects {
repositories {
maven { url "https://ozforensics.jfrog.io/artifactory/main" }
}
}В build.gradle модуля добавьте строки (VERSION – версия, которую вы планируете добавить. Список версий можно найти в Журнале изменений):
dependencies {
implementation 'com.ozforensics.liveness:sdk:VERSION'
}Обратите внимание: размер выходного файла будет больше.
Вне зависимости от выбранного режима, добавьте еще:
Обратите внимание: описанная ниже функциональность работает, начиная с версии 8.1.0.
Чтобы добавить или обновить языковой пакет для Oz Android SDK, сделайте следующие шаги:
Перейдите в папку для нужной локали или создайте такую папку. Детально процесс описан
Создайте файл и назовите его strings.xml.
Скопируйте строки из приложенного файла в только что созданный.
Переопределите в переводах строки, которые вам нужны.
Список переводов для Android:
Ключи вида action_*_go относятся к соответствующим жестам. Остальные – к подсказкам для всех жестов, информационным сообщениям или ошибкам.
Когда вместе с новыми версиями появляются новые ключи, если вы не переопределите соответствующие строки в вашем файле, текст для новых ключей будет показываться на английском языке.
dependencies {
implementation 'com.ozforensics.liveness:full:VERSION'
}android {
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}Версия Gradle
7.5.1
Версия Kotlin
1.7.21
Версия AGP
7.3.1
Java Target Level
1.8
Версия JDK
17
Если вы при обновлении с прежних версий (до 6.4.2 включительно) хотите сохранить привычный для клиентов дизайн, сбросьте настройки интерфейса экрана съемки до значений по умолчанию и примените следующие параметры (приведены только те параметры, которые нужно изменить):
OzLivenessSDK.config.customization = UICustomization(
// параметры настройки верхней панели
toolbarCustomization = ToolbarCustomization(
closeIconTint = Color.ColorHex("#FFFFFF"),
backgroundColor = Color.ColorHex("#000000"),
backgroundAlpha =
OzLivenessSDK.INSTANCE.getConfig().setCustomization(new UICustomization(
// параметры настройки верхней панели
new ToolbarCustomization(
R.drawable.ib_close,
new Color.ColorHex("#FFFFFF"),
new Color.ColorHex("#000000"),
100, // непрозрачность фона верхней панели (в %)
),
// параметры настройки текста подсказки
new CenterHintCustomization(
70, // положение по вертикали (в %)
),
// параметры настройки анимации подсказки
new HintAnimation(
hideAnimation = true
),
// параметры настройки рамки вокруг лица
new FaceFrameCustomization(
new Color.ColorHex("#EC574B"),
new Color.ColorHex("#00FF00"),
6, // ширина линии рамки (в dp)
),
// параметры настройки фона за рамкой
new BackgroundCustomization(
100 // непрозрачность фона (в %)
),
)
);Для старта записи видео используется метод startActivityForResult:
val intent = OzLivenessSDK.createStartIntent(listOf(OzAction.Smile, OzAction.Blank))
startActivityForResult(intent, REQUEST_CODE)List<OzAction> actions = Arrays.asList(OzAction.Smile, OzAction.Scan);
Intent intent = OzLivenessSDK.createStartIntent(actions);
startActivityForResult(intent, REQUEST_CODE);actions – перечень действий пользователя при записи видео.
Для представления Fragment код приведен ниже. LivenessFragment – Fragment для экрана Liveness.
Для корректной работы лицензии мы рекомендуем сначала инициализировать SDK, и только потом вызывать открытие экрана Liveness.
Для получения результатов записи видео используется метод onActivityResult:
sdkMediaResult – объект с результатами записи видео () для дальнейшего использования при взаимодействии с Oz API.
sdkErrorString – описание в случае их возникновения.
Если пользователь прервет запись видео (закроет экран), resultCode примет значение Activity.RESULT_CANCELED.
Пример кода для обработки:
Для авторизации в Oz API используйте адрес API и токен доступа, как показано ниже.
OzLivenessSDK.setApiConnection(OzConnection.fromServiceToken(host, token))OzLivenessSDK.INSTANCE.setApiConnection(
OzConnection.Companion.fromServiceToken(host, token),
null
);Мы рекомендуем:
Указывать адрес API в вашем приложении на экране, предшествующем проверке Liveness. После установки адреса происходит служебный вызов API, и если вы устанавливаете адрес при запуске или инициализации приложения, нагрузка на сервер может быть слишком высокой.
Убедиться, что перед вызовом метода createStartIntent вы инициализировали SDK и подключили его к API. Порядок действий значения не имеет, но они должны успешно завершиться к моменту начала работы createStartIntent.
Второй вариант: логин и пароль.
Мы рекомендуем использовать метод аутентификации по токену доступа, как более безопасный.
По умолчанию логи сохраняются вместе с данными по анализам. Если вы планируете хранить логи отдельно от этих данных, настройте отдельное подключение для :
Очистка авторизации:
Проверка наличия сохраненного access-токена Oz API:
LogOut:
Если наш SDK используется только для съемки, пропустите этот шаг.
Чтобы выполнить проверку, нужно загрузить в систему медиафайлы, а затем запустить для них анализы.
Пример работы:
analysisCancelable = AnalysisRequest.Builder()
// mediaToAnalyze – массив объектов OzAbstractMedia
.addAnalysis(Analysis(Analysis.Type.QUALITY, Analysis.Mode.SERVER_BASED, mediaToAnalyze))// ON_DEVICE для анализа на устройстве
.build()
//запуск анализов и установка обработчиков
.run(object : AnalysisRequest.AnalysisListener {
analysisCancelable = new AnalysisRequest.Builder()
//mediaToAnalyze – массив объектов OzAbstractMedia
.addMedia(mediaToAnalyze)
.addAnalysis(new Analysis(Analysis.Type.QUALITY, Analysis.Mode.SERVER_BASED
Для удаления медиафайлов после выполнения всех проверок используйте метод clearActionVideos.
Для добавления метаданных используйте метод addFolderMeta.
В структуре Analysis можно передать дополнительные параметры, например, для извлечения на сервере лучшего кадра.
Чтобы использовать медиафайлы, снятые не Oz Android SDK, укажите путь к ним в структуре :
Для добавления медиафайлов в определенную папку используйте метод setFolderId:
childFragmentManager.beginTransaction()
.replace(R.id.content, LivenessFragment.create(actions))
.commit()
// подписка на результат Fragment
childFragmentManager.setFragmentResultListener(OzLivenessSDK.Extra.REQUEST_CODE, this) { _, result ->
when (result.getInt(OzLivenessSDK.Extra.EXTRA_RESULT_CODE)) {
OzLivenessResultCode.SUCCESS -> { /* запуск анализа */ }
else -> { /* вывод ошибки */ }
}
}getSupportFragmentManager().beginTransaction()
.replace(R.id.content, LivenessFragment.Companion.create(actions, null, null, false))
.addToBackStack(null)
.commit();
// подписка на результат Fragment
getSupportFragmentManager().setFragmentResultListener(OzLivenessSDK.Extra.REQUEST_CODE, this, (requestKey, result) -> {
switch (result.getInt(OzLivenessSDK.Extra.EXTRA_RESULT_CODE)) {
case OzLivenessResultCode.SUCCESS: {/* запуск анализа */}
default: {/* вывод ошибки */}
}
});override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == REQUEST_CODE) {
sdkMediaResult = OzLivenessSDK.getResultFromIntent(data)
sdkErrorString = OzLivenessSDK.getErrorFromIntent(data)
}
}@Override
protected void onActivityResult(int requestCode, int resultCode, @androidx.annotation.Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE) {
List<OzAbstractMedia> sdkMediaResult = OzLivenessSDK.INSTANCE.getResultFromIntent(data);
String sdkErrorString = OzLivenessSDK.INSTANCE.getErrorFromIntent(data);
}OzLivenessSDK.setApiConnection(
OzConnection.fromCredentials(host, username, password),
statusListener(
{ token -> /* токен */ },
{ ex -> /* ошибка */ }
)
)OzLivenessSDK.INSTANCE.setApiConnection(
OzConnection.Companion.fromCredentials(host, username, password),
new StatusListener<String>() {
@Override
public void onStatusChanged(@Nullable String s) {}
@Override
public void onSuccess(String token) { /* токен */ }
@Override
public void onError(@NonNull OzException e) { /* ошибка */ }
}
);OzLivenessSDK.setEventsConnection(
OzConnection.fromCredentials(
"https://echo.cdn.ozforensics.com/",
"<[email protected]>",
"your_telemetry_password"
)
)OzLivenessSDK.setEventsConnection(
OzConnection.fromCredentials(
"https://tm.ozforensics.com/",
"<[email protected]>",
"your_telemetry_password"
)
);when (resultCode) {
Activity.RESULT_CANCELED -> *USER CLOSED THE SCREEN*
OzLivenessResultCode.SUCCESS -> {
val sdkMediaResult = OzLivenessSDK.getResultFromIntent(data)
*SUCCESS*
}
else -> {
val errorMessage = OzLivenessSDK.getErrorFromIntent(data)
*FAILURE*
}
}OzLivenessSDK.setApiConnection(null)OzLivenessSDK.INSTANCE.setApiConnection(null, null);val isLoggedIn = OzLivenessSDK.isLoggedInboolean isLoggedIn = OzLivenessSDK.INSTANCE.isLoggedIn();OzLivenessSDK.logout()OzLivenessSDK.INSTANCE.logout(); .addFolderMeta(
mapOf(
"key1" to "value1",
"key2" to "value2"
)
).addFolderMeta(Collections.singletonMap("key", "value")) mapOf("extract_best_shot" to true) val file = File(context.filesDir, "media.mp4") // замените context.filesDir на context.getExternalFilesDir(null) для внешнего хранилища смартфона
val media = OzAbsractMedia.OzVideo(OzMediaTag.VideoSelfieSmile, file.absolutePath) .setFolderId(folderId)Применять настройки рекомендуется при старте приложения.
// подключение к серверу API
OzLivenessSDK.setApiConnection(OzConnection.fromServiceToken(HOST, TOKEN))
// настройка количества попыток обнаружить действие
OzLivenessSDK.config.attemptSettings = attemptSettings
// возможность отображения дополнительной информации для отладки (чтобы увидеть данные, нажмите на номер версии SDK)
OzLivenessSDK.config.allowDebugVisualization = allowDebugVisualization
// настройки журналирования
OzLivenessSDK.config.logging = ozLogging OzConfig config = OzLivenessSDK.INSTANCE.getConfig();
// подключение к серверу API
OzLivenessSDK.setApiConnection(OzConnection.fromServiceToken(HOST, TOKEN));
// настройка количества попыток обнаружить действие
config.setAttemptSettings(attemptSettings);
// возможность отображения дополнительной информации для отладки (чтобы увидеть данные, нажмите на номер версии SDK)
Чтобы настроить интерфейс Oz Liveness, воспользуйтесь UICustomization. Полный список полей находится .
По умолчанию SDK использует локаль устройства. Чтобы сменить локаль, используйте код ниже:
OzLivenessSDK.config.customization = UICustomization(
// параметры настройки верхней панели
toolbarCustomization = ToolbarCustomization(
closeIconRes = R.drawable.ib_close,
closeIconTint = Color.ColorRes(R.color.white),
titleTextFont = R.font.roboto,
titleTextSize = 18,
titleTextAlpha = 100,
titleTextColor = Color.ColorRes(R.color.white),
backgroundColor = Color.ColorRes(R.color.black),
backgroundAlpha = 60,
isTitleCentered = true,
title = "Analysis"
),
// параметры настройки текста подсказки
centerHintCustomization = CenterHintCustomization(
textFont = R.font.roboto,
textColor = Color.ColorRes(R.color.text_color),
textSize = 20,
verticalPosition = 50,
textStyle = R.style.Sdk_Text_Primary,
backgroundColor = Color.ColorRes(R.color.color_surface),
backgroundOpacity = 56,
backgroundCornerRadius = 14,
textAlpha = 100
),
// параметры настройки анимации подсказки
hintAnimation = HintAnimation(
hintGradientColor = Color.ColorRes(R.color.red),
hintGradientOpacity = 80,
animationIconSize = 120,
hideAnimation = false
),
// параметры настройки рамки вокруг лица
faceFrameCustomization = FaceFrameCustomization(
geometryType = GeometryType.Rectangle(10), // 10 – радиус скругления углов
strokeDefaultColor = Color.ColorRes(R.color.error_red),
strokeFaceInFrameColor = Color.ColorRes(R.color.success_green),
strokeAlpha = 100,
strokeWidth = 5,
strokePadding = 3,
),
// параметры настройки фона за рамкой
backgroundCustomization = BackgroundCustomization(
backgroundColor = Color.ColorRes(R.color.black),
backgroundAlpha = 60
),
// параметры настройки текста версии SDK
versionTextCustomization = VersionTextCustomization(
textFont = R.font.roboto,
textSize = 12,
textColor = Color.ColorRes(R.color.white),
textAlpha = 100,
),
// параметры настройки дополнительной защиты от мошенничества
antiScamCustomization = AntiScamCustomization(
textMessage = "",
textFont = R.font.roboto,
textSize = 14,
textColor = Color.ColorRes(R.color.text_color),
textAlpha = 100,
backgroundColor = Color.ColorRes(R.color.color_surface),
backgroundOpacity = 100,
cornerRadius = 20,
flashColor = Color.ColorRes(R.color.green)
),
// параметры настройки логотипа,
// если лицензия предусматривает возможность его изменения
logoCustomization = LogoCustomization(
image = Image.Drawable(R.drawable.ic_logo),
size = Size(176, 64),
)
)OzLivenessSDK.INSTANCE.getConfig().setCustomization(new UICustomization(
// параметры настройки верхней панели
new ToolbarCustomization(
R.drawable.ib_close,
new Color.ColorRes(R.color.white),
R.style.Sdk_Text_Primary,
new Color.ColorRes(R.color.white),
R.font.roboto,
Typeface.NORMAL,
100, // непрозрачность текста на верхней панели (в %)
18, // размер текста на верхней панели (в sp)
new Color.ColorRes(R.color.black),
60, // непрозрачность фона верхней панели (в %)
"Liveness", // текст на верхней панели
true // центрировать текст на верхней панели
),
// параметры настройки текста подсказки
new CenterHintCustomization(
50, // положение по вертикали (в %)
R.style.Sdk_Text_Primary,
R.drawable.bg_center_hint_badge,
new Color.ColorRes(R.color.color_surface),
100, // непрозрачность фона
14, // угловой радиус подложки
100 // непрозрачность текста
),
// параметры настройки анимации подсказки
new HintAnimation(
new Color.ColorRes(R.color.red), // цвет градиента
80, // непрозрачность цвета градиента (в %)
120, // размер квадрата, в который вписан значок анимации
false // скрывать ли анимацию
),
// параметры настройки рамки вокруг лица
new FaceFrameCustomization( GeometryType.RECTANGLE,
10, // угловой радиус для прямоугольника
new Color.ColorRes(R.color.error_red),
new Color.ColorRes(R.color.success_green),
100, // непрозрачность рамки (в %)
5, // ширина линии рамки (в dp)
3 // отступ от рамки до области для позиционирования лица (в dp)
),
// параметры настройки фона за рамкой
new BackgroundCustomization(
new Color.ColorRes(R.color.black),
60 // непрозрачность фона (в %)
),
// параметры настройки текста версии SDK
new VersionTextCustomization(
R.style.Sdk_Text_Primary,
R.font.roboto,
12, // размер шрифта текста версии (в sp)
new Color.ColorRes(R.color.white),
100 // непрозрачность текста версии (в %)
),
// параметры настройки дополнительной защиты от мошенничества
new AntiScamCustomization(
"Recording .. ",
R.font.roboto,
12,
new Color.ColorRes(R.color.text_color),
100,
R.style.Sdk_Text_Primary,
new Color.ColorRes(R.color.color_surface),
100,
14,
new Color.ColorRes(R.color.green)
),
// параметры настройки логотипа
new LogoCustomization(
new Image.Drawable(R.drawable.ic_logo),
new Size(176, 64)
)
)
);OzLivenessSDK.config.localizationCode = OzLivenessSDK.OzLocalizationCode.RUOzLivenessSDK.INSTANCE.getConfig().setLocalizationCode(OzLivenessSDK.OzLocalizationCode.RU);Журнал изменений для Android.
Исправили ошибку, связанную с вылетом SDK из-за ошибок “Invalid to call at Released state” и “Pending dequeue output buffer request cancelled”.
Исправили ошибку, связанную с вылетом SDK из-за "java.util.concurrent.TimeoutException".
Android SDK теперь передаёт теги ориентации и типа медиа вместе с тегом действия.
Повысили безопасность.
Исправили незначительную ошибку.
Исправили ошибки, из-за которых SDK мог иногда вылетать на некоторых моделях телефонов.
Повысили безопасность.
Улучшили производительность SDK на некоторых устройствах.
Обновили SDK в рамках подготовки к внедрению новой функциональности, связанной с безопасностью.
Исправили ошибку, из-за которой на некоторых моделях телефонов могли записываться зеленые видео.
Исправили ошибку с mediaId = null.
Повысили безопасность.
Исправили ошибку, из-за которой при запуске Fragment могло появляться предупреждение.
SDK больше не вылетает при вызове copyPlane.
Если при гибридном анализе вы выбираете отправку сжатых видео, оригинальные видео больше не сохраняются вместе со сжатыми.
Обновили ссылку на сайт Oz Forensics.
Чтобы обеспечить поддержку размера страниц памяти в 16 КБ, перевели TensorFlow на Lite RT.
Настоятельно рекомендуем обновиться до этой версии.
Исправили ошибку с увеличением длительности и размера видео.
Теперь поддерживаем Google Dynamic Feature Delivery.
Исправили ошибку, из-за которой SDK мог вылететь при нажатии кнопки закрытия экрана Liveness.
Исправили ошибку вылета SDK с исключением CameraDevice was already closed.
Обновления безопасности и телеметрии.
Устранили проблему несовместимости версий OkHttp.
Исправили ошибку с Fragment, который не мог обнаружить контекст.
Исправили ошибку доступа к камере, которая иногда возникала на некоторых моделях смартфонов.
Обновления безопасности.
Обновления безопасности.
Обновления безопасности.
Исправили ошибку, из-за которой SDK мог вылететь при закрытии экрана съемки.
Обновления безопасности.
Обновили логику авторизации.
Улучшили логику озвучивания подсказок.
Исправили наблюдавшуюся на некоторых устройствах ошибку с зависанием SDK после завершения съемки видео.
SDK больше не вылетает при попытке обратиться к закрытым или не инициализированным ресурсам.
Обновления безопасности.
Валидацию видео – опцию, которая запускает запись видео заново, если получившийся файл состоит из 3 кадров и менее – теперь можно отключить. Воспользуйтесь настройкой .
Исправили ошибку, из-за которой на некоторых моделях телефонов могли записываться зеленые видео.
Обновления безопасности.
Исправили ошибки, из-за которых на некоторых моделях телефонов могли возникать сбои.
Добавлен правильный порядок фокусировки для VoiceOver при включенной антискам-подсказке.
Добавлена публичная настройка extract_action_shot в Демо Приложении.
Исправили ошибки.
Обновления безопасности.
Исправили ошибку, из-за которой некоторые записанные SDK видео были зелеными.
Исправили проблемы с кодеками, появлявшиеся на некоторых моделях смартфонов.
Обновления доступности для пользователей с инвалидностью согласно требованиям WCAG: можно настроить озвучивание подсказок SDK и элементов управления.
Упростили прохождение проверки для жестов, включающих движение головы.
Сжатие больших видео теперь происходит позже: на этапе закрытия экрана Liveness.
Исправили ошибку, из-за которой изображение с закрытыми глазами могло быть выбрано в качестве лучшего кадра.
Обновления безопасности и телеметрии.
Обновления безопасности.
Обновления безопасности.
Обновления безопасности и телеметрии.
Исправили ошибку RuntimeException, появлявшуюся в режиме серверного Liveness на некоторых моделях телефонов.
Обновления безопасности.
Обновления безопасности.
Исправили ошибки.
Подняли версию плагина Android Gradle до 8.0.0.
Улучшили работу SDK.
Улучшили работу SDK.
Обновления безопасности.
Обновления безопасности.
Обновления безопасности.
Обновления безопасности.
При попытке передать пустую строку в качестве аргумента для метода setFolderId теперь показывается информативная ошибка.
Исправили ошибку с бесконечно крутящимся спиннером, который появлялся при переключении пользователя на другое приложение во время прохождения проверки Liveness.
Исправили несколько ошибок, появлявшихся только на определенных моделях смартфонов.
Улучшили модель Liveness для проверки на устройстве.
Обновления безопасности.
Длительность жеста Селфи теперь можно (размер видеофайла также изменится).
Вы можете логотип Oz своим, если ваша лицензия это предусматривает.
Убрали паузу после жеста Сканирование.
Если размер записанного видеофайла больше 10 Мбайт, видео будет сжато.
Изменили алгоритм валидации для мастер-лицензии.
Снизили требования к compileSdkVersion с 34 до 33.
Обновления безопасности.
Обновили модель Liveness для проверки на устройстве.
Исправили ошибки.
Улучшили работу механизмов лицензирования.
Улучшили работу SDK.
Исправили ошибки.
Добавили возможность использования мастер-лицензии, которая работает с любым bundle_id.
Исправили ошибку со сжатием видео при гибридном анализе, которая возникала на некоторых моделях телефонов.
Исправили ошибки.
Добавили в структуру Analysis поле sizeReductionStrategy. Оно определяет размер файла, отправляемого на сервер после успешного завершения проверки на устройстве в составе гибридного анализа.
Настройка toFrameGradientColor для кастомизации подсказки hintAnimationCustomization больше не используется. Вместо нее используйте hintGradientColor.
Если несколько анализов назначаются на папку одновременно, система отправляет их группой. Таким образом, выбирается “худший” результат среди всех анализов, а не последний назначенный. Прочитать про отправку анализов группой можно .
В анализе Liveness для количественного результата теперь берется максимальный из вычисленных. Прочитать о результате можно .
Обновили модель Liveness для проверки на устройстве.
Добавили португальский язык (бразильский вариант).
Вы теперь можете добавить язык или изменить текущие переводы самостоятельно. Как это сделать, описано .
Если медиафайл по каким-то причинам не загрузился, система повторяет загрузку.
Исправили ошибки.
При установке baseURL = null SDK теперь работает корректно.
Версии зависимостей SDK приведены в соответствие с версией Kotlin.
Добавлен новый тип анализа – гибридный (сейчас работает только для Liveness). В случае спорных результатов анализа на устройстве проводится дополнительная проверка на сервере.
Требования к версии Kotlin понижены до 1.7.21.
Обновлены модели для анализов на устройстве.
На некоторых моделях телефонов исправлена ошибка fatal device.
Обновили экран настроек.
Добавили настройки для фона подсказки.
Добавили новые формы рамки (круг, квадрат).
Добавили виджет для защиты от мошенничества и к нему. С помощью этого виджета вы можете уведомлять пользователей, что ведется съемка видео для, например, отправления заявки на кредит. Таким образом вы сможете защитить пользователей, если мошенники попытаются убедить их подтвердить такой запрос.
Улучшили работу алгоритмов SDK.
Обновили модель для выполнения анализов на устройстве.
Обновили анимацию для солнечных очков / маски.
Немного уменьшили размеры овала для Liveness.
Исправили ошибку, появлявшуюся при выполнении серверных анализов после использования для авторизации permanentAccessToken.
Добавили возможность .
Полосу статуса и системные кнопки теперь можно скрывать (работает с версии 7.0.0).
В метод OzLivenessSDK.init теперь нужно первым параметром передавать context.
Исправили ошибку с вылетами на версиях Android <6.
Поправили расположение овала для некоторых моделей телефонов.
Улучшили работу SDK.
Обновили систему безопасности.
Добавили некоторые внутренние улучшения.
Метод addMedia больше не работает. Для загрузки медиафайлов воспользуйтесь методом uploadMedia.
Из соображений безопасности мы теперь поставляем два типа библиотек: sdk только для серверного анализа и full для серверного анализа и анализа на устройстве.
Заменили OzCustomization на UICustomization.
Значительно расширили и обновили дизайн. Если вы хотите вернуть дизайн из прошлых версий, соответствующие настройки описаны .
Исправили ошибку с зависаниями на некоторых моделях телефонов.
SDK теперь снимает видео в разрешении 720p (с 6.4.2.3).
Наименование режимов анализа приведено в соответствие с iOS: SERVER_BASED и ON_DEVICE.
Исправили ошибку с отображением настроек локализации.
Теперь в качестве Liveness-экрана можно использовать Fragment.
Добавили новое поле params в структуру Analysis – с его помощью можно задавать дополнительные параметры, например, для извлечения на сервере лучшего кадра. Алгоритм "лучший кадр" выбирает из видеозаписи наиболее качественный и удачный кадр с лицом.
Жесты отдаления и приближения больше не поддерживаются.
Обновили биометрическую модель.
Добавили новую упрощенную структуру AnalysisRequest – теперь конструировать запросы на анализы стало проще и удобнее.
Добавили модуль для выполнения анализов локально на устройстве. Подключите модуль:
Для запуска анализов biometry и liveness используйте соответствующие методы класса OzLivenessSDK: runOnDeviceBiometryAnalysis и runOnDeviceLivenessAnalysis.
Liveness теперь работает плавнее.
На устройствах Xiaomi больше не зависает камера.
Оптимизировали преобразования изображений с камеры.
В OzLivenessSDK.uploadMedia добавили параметр metadata и методы OzLivenessSDK.uploadMediaAndAnalyze для передачи metadata в папки.
Добавили функции для инициализации SDK с лицензиями LicenseSources: LicenseSource.LicenseAssetId иLicenseSource.LicenseFilePath. Для инициализации используйте метод OzLivenessSDK.init.
Добавили возможность получения информации о лицензии после инициализации val licensePayload = OzLivenessSDK.getLicensePayload().
Добавили киргизский язык.
Добавили функции для локальных анализов.
Добавили конфигурацию рамки вокруг лица.
Номер версии на экране Liveness теперь отображается корректно.
Добавили поддержку основной камеры.
Добавили жест OneShot.
Добавили состояний в OzAnalysisResult.Resolution.
Добавили метод uploadMediaAndAnalyze – он загружает список изображений/видео на сервер и сразу отправляет их на анализ.
Токен доступа теперь обновляется автоматически.
Переименовали accessToken в permanentAccessToken.
Добавили правила R8.
Исправили овальную рамку.
Убрали неиспользуемые параметры params из AnalyseRequest.
Убрали лимит по умолчанию на количество попыток.
Убрали свойства конфигурации - baseURL, accessToken и так далее. Заменили их на свойство config, которое нужно инициализировать с помощью OzConfig.Builder.
Добавили поддержку лицензий. Их нужно устанавливать как raw ресурсы и передавать в OzConfig через setLicenseResourceId.
Повысили безопасность.
Обновления безопасности.
Исправили незначительные ошибки.
Обновления телеметрии.
Обновления безопасности и журналирования.
Сообщения для получаемых из API ошибок теперь детализированы.
Добавили новый метод для получения идентификатора телеметрии (логирования): getEventSessionId.
Методы auth и login больше не используются. Вместо них, пожалуйста, используйте метод setApiConnection.
OzConfig.baseURL и OzConfig.permanentAccessToken больше не используются.
Если пользователь закрывает экран во время съемки видео, соответствующая ошибка обрабатывается SDK.
Исправили ошибки и улучшили работу SDK.
Текст подсказки теперь может выходить за границы рамки для лица по горизонтали (для основной камеры).
Фото, снятые во время однокадрового анализа, теперь передаются на сервер в оригинальном размере.
Удален класс OzAnalysisResult. В параметре onSuccess метода AnalysisRequest.run вместо списка OzAnalysisResult теперь передается структура RequestResult.
Все исключения перенесены в папку com.ozforensics.liveness.sdk.core.exceptions (детальная информация ниже).
Связанные с AnalysisRequest классы перенесены в com.ozforensics.liveness.sdk.analysis (детальная информация ниже).
Прекращена поддержка методов:
AnalysisRequest.Builder.uploadMedia
com.ozforensics.liveness.sdk.analysis.entityAnalysisError в com.ozforensics.liveness.sdk.analysis.entity
SourceMedia в com.ozforensics.liveness.sdk.analysis.entity
ResultMedia в com.ozforensics.liveness.sdk.analysis.entity
RequestResult в com.ozforensics.liveness.sdk.analysis.entity
NoAnalysisException из com.ozforensics.liveness.sdk.exceptions в com.ozforensics.liveness.sdk.core.exceptions
NoNetworkException из com.ozforensics.liveness.sdk.exceptions в com.ozforensics.liveness.sdk.core.exceptions
TokenException из com.ozforensics.liveness.sdk.exceptions в com.ozforensics.liveness.sdk.core.exceptions
NoMediaInAnalysisException из com.ozforensics.liveness.sdk.exceptions в com.ozforensics.liveness.sdk.core.exceptions
EmptyMediaListException из com.ozforensics.liveness.sdk.exceptions в com.ozforensics.liveness.sdk.core.exceptions
NoSuchMediaException из com.ozforensics.liveness.sdk.exceptions в com.ozforensics.liveness.sdk.core.exceptions
LicenseException из com.ozforensics.liveness.sdk.exceptions в com.ozforensics.liveness.sdk.security.exception
Analysis из com.ozforensics.liveness.sdk.analysis.entity в com.ozforensics.liveness.sdk.core.model
AnalysisRequest из com.ozforensics.liveness.sdk.analysis в com.ozforensics.liveness.sdk.core
AnalysisListener из com.ozforensics.liveness.sdk.analysis в com.ozforensics.liveness.sdk.core
AnalysisStatus из com.ozforensics.liveness.sdk.analysis в com.ozforensics.liveness.sdk.core
AnalysisRequest.Builder из com.ozforensics.liveness.sdk.analysis в com.ozforensics.liveness.sdk.core
OzException из com.ozforensics.liveness.sdk.exceptions в com.ozforensics.liveness.sdk.core.exceptions
OzLivenessSDK
Удален метод uploadMediaAndAnalyze
Удален метод uploadMedia
Удален метод runOnDeviceBiometryAnalysis
Удален метод runOnDeviceLivenessAnalysis
AnalysisRequest
Удален метод build(): AnalysisRequest
AnalysisRequest.Builder
Удален метод addMedia
Удален метод onSuccess(result: List<OzAnalysisResult>)
Добавлен метод onSuccess(result: RequestResult)
Метод OzLivenessSDK::init при передаче параметра StatusListener теперь работает корректно.
Изменили анимацию жеста "Сканирование".
OzAnalysisResult теперь корректно показывает оценки по серверным анализам.
Исправлены ошибки инициализации и некорректного отображения настроек кастомизации, а также ошибки некорректной авторизации на версиях Android < 7.1.1.
Добавили испанский язык.
OzMedia превратили в OzAbstractMedia и добавили подклассы изображений и видео.
Исправили ошибки камеры на некоторых устройствах.
config теперь можно менять.Анализ изображений теперь работает лучше.
Убрали ненужные зависимости.
Поправили ошибки журналирования.
Удаленный метод
Замена
OzLivenessSDK.uploadMediaAndAnalyze
AnalysisRequest.run
OzLivenessSDK.uploadMedia
AnalysisRequest.Builder.uploadMedia
OzLivenessSDK.runOnDeviceBiometryAnalysis
AnalysisRequest.run
OzLivenessSDK.runOnDeviceLivenessAnalysis
AnalysisRequest.run
AnalysisRequest.build(): AnalysisRequest
-
AnalysisRequest.Builder.addMedia
implementation 'com.ozforensics.liveness:on-device:6.3.4'val mediaList: List<OzAbstractMedia> = ...
val biometryAnalysisResult: OzAnalysisResult = OzLivenessSDK.runOnDeviceBiometryAnalysis(mediaList)
val livenessAnalysisResult: OzAnalysisResult = OzLivenessSDK.runOnDeviceLivenessAnalysis(mediaList)Синглтон (шаблон-одиночка) для Oz SDK.
Удаляет все видеоролики.
Параметры
-
Возвращает
-
Создает намерение (intent) для запуска Liveness.
Возвращает
-
Запрашивает ошибку из намерения (intent) OnActivityResult (при наличии).
Возвращает
Текст ошибки.
Запрашивает информацию о лицензии SDK.
Параметры
-
Возвращает
Полную информацию о лицензии – объект .
Запрашивает медиафайлы из намерения (intent) OnActivityResult.
Возвращает
Массив объектов .
Инициализирует SDK, используя данные лицензии.
Возвращает
-
Включает журналирование, запуская соответствующие механизмы Oz Liveness SDK.
Возвращает
-
Подключение к API.
Подключение к серверу телеметрии.
Удаляет сохраненный токен.
Параметры
-
Возвращает
-
Запрашивает идентификатор сессии телеметрии.
Параметры
-
Возвращает
Идентификатор сессии телеметрии (String).
Запрашивает версию SDK.
Параметры
-
Возвращает
Номер версии SDK (String).
Создает payload с подписями медиафайлов.
Возвращает
payload для загрузки вместе с медиафайлами, для которых он был сгенерирован.
Класс для выполнения проверок.
Запускает анализы.
Конструктор для AnalysisRequest.
Создает AnalysisRequest.
Параметры
-
Возвращает
Экземпляр класса AnalysisRequest.
Добавляет в запрос анализ.
Возвращает
Ошибку в случае ее появления.
Добавляет в запрос список анализов (можно назначить несколько анализов для одной папки).
Возвращает
Ошибку в случае ее появления.
Добавляет метаданные в создаваемую папку (только для анализа на сервере).
Возвращает
Ошибку в случае ее появления.
Добавляет один или несколько медиафайлов в папку для последующего выполнения проверок.
Возвращает
Ошибку в случае ее появления.
Устанавливает идентификатор для ранее созданной папки. Эта папка должна существовать на сервере, иначе создастся новая.
Возвращает
Ошибку в случае ее появления.
Конфигурация OzLivenessSDK (используйте OzLivenessSDK.config).
Устанавливает длительность жеста Селфи (в миллисекундах).
Возвращает
Ошибку в случае ее появления.
Возможность отображать дополнительную отладочную информацию при нажатии на текст версии.
Количество попыток выполнить анализы, после которого SDK выдаст ошибку.
URL сервера API для работы с телеметрией.
Время, в течение которого нужно поместить лицо в рамку и выполнить жест (в миллисекундах).
Настройки повторной отправки медиафайлов.
Интерфейс для обработки ошибок.
Локализация текста.
Настройки журналирования.
Включает использование основной (задней) камеры для съемки вместо фронтальной.
Отключает опцию, которая запускает запись видео заново, если получившийся файл состоит из 3 кадров и менее.
Настройки кастомизации OzLivenessSDK (используйте OzLivenessSDK.config.customization).
Скрывает системные части экрана: полосу статуса и кнопки. По умолчанию имеет значение True.
Настройки кастомизации верхней панели.
Настройки кастомизации текста подсказки, ориентируясь на который, пользователь снимает фото или видео.
Настройки кастомизации для анимации подсказки.
Настройки кастомизации рамки вокруг лица.
Настройки кастомизации фона за рамкой.
Настройки кастомизации текста версии SDK.
Настройки кастомизации для защиты от мошенничества (сообщение о том, что идет запись).
Параметры настройки логотипа, если лицензия предусматривает возможность его изменения.
Действие, представленное на видео.
Содержит расширенную информацию о параметрах лицензии.
Класс для снятого фото или видео, может быть:
Фото документа.
Набор кадров (shot set) в архиве.
Видео с проверкой Liveness.
Тег в соответствии с жестом на видео.
Класс для хранения лицензии, может быть:
Содержит идентификатор лицензии.
Содержит путь к лицензии.
Класс для статуса анализа, может быть:
Статус означает, что анализы запущены.
Статус означает, что в настоящее время загружаются медиафайлы.
Тип анализа.
Режим анализа.
Содержит информацию о том, какие анализы и к каким медиафайлам применять.
Сводный статус по выполненным анализам.
Количество попыток выполнения анализов, после которого SDK выдаст ошибку.
Код языка SDK в соответствии с .
Настройки журналирования.
Настройки цвета, в зависимости от принимаемого значения могут быть:
Форма рамки.
Класс для описания ошибок.
Описывает отправленный на анализ медиафайл.
Описывает результат анализа для одного медиафайла.
Сводный результат анализа для всех медиафайлов.
Описывает результаты анализов для всех медиафайлов в папке.
Определяет метод авторизации.
Авторизация по токену.
Авторизация по логину и паролю.
Настройки повторной отправки медиафайлов.
Определяет размер файла, отправляемого на сервер после успешного завершения проверки на устройстве в составе гибридного анализа. По умолчанию отправляется сжатое видео.
Int
Размер текста на верхней панели (в sp, 12-18)
titleTextAlpha
Int
Непрозрачность текста на верхней панели (в %, 0-100)
titleTextColor
Цвет текста на верхней панели
backgroundColor
Цвет фона верхней панели
backgroundAlpha
Int
Непрозрачность фона верхней панели (в %, 0-100)
isTitleCentered
Boolean
Центрирует текст на верхней панели
title
String
Текст на верхней панели
Int
Непрозрачность текста подсказки (в %, 0-100)
verticalPosition
Int
Положение подсказки по вертикали (от нижнего края экрана, в %, 0-100)
backgroundColor
Цвет фона
backgroundOpacity
Int
Непрозрачность фона
backgroundCornerRadius
Int
Радиус скругления углов рамки фона (в dp, 0-20)
Int
Непрозрачность рамки (в %, 0-100)
strokeWidth
Int
Толщина линии (в dp, 0-20)
strokePadding
Int
Отступ от рамки до овала, куда нужно поместить лицо (в dp, 0-10)
Int
Непрозрачность текста сообщения (в %, 0-100)
backgroundColor
Цвет фона сообщения
backgroundOpacity
Int
Непрозрачность фона сообщения
cornerRadius
Int
Радиус скругления углов рамки фона (в px, 0-20)
flashColor
Цвет мигающего индикатора рядом с сообщением
Подъем головы вверх
EyeBlink
Моргание
Smile
Улыбка
String
Дополнительные теги, если требуются (в том числе не из перечисления OzMediaTag)
metaData
Map<String, String>
Метаданные медиафайлам
Видео с жестом «подъем головы наверх»
VideoSelfieDown
Видео с жестом «наклон головы вниз»
VideoSelfieRight
Видео с жестом «поворот головы направо»
VideoSelfieLeft
Видео с жестом «поворот головы налево»
PhotoIdPortrait
Фото, извлеченное из документа
PhotoIdBack
Фото оборотной стороны документа
PhotoIdFront
Фото лицевой стороны документа
Определяет размер файла, отправляемого на сервер после успешного завершения проверки на устройстве в составе гибридного анализа
Испанский
PT-BR
Португальский
List<String>
Теги файла
Тип анализа
Float
Итоговая оценка
analysisId
String
Идентификатор анализа
params
@RawValue Map<String, Any>
Дополнительные параметры папки
error
Ошибка
serverRawResponse
String
Ответ сервера
Error. Liveness activity is force closed from client application.
Клиент закрыл экран Liveness во время работы
DEVICE_HAS_NO_FRONT_CAMERA = 8
Error. Device has not front camera.
Фронтальная камера на устройстве не найдена
DEVICE_HAS_NO_MAIN_CAMERA = 9
Error. Device has not main camera.
Задняя (основная) камера на устройстве не найдена
DEVICE_CAMERA_CONFIGURATION_NOT_SUPPORTED = 10
Error. Device camera configuration is not supported.
Liveness не поддерживает конфигурацию камеры на устройстве
FACE_ALIGNMENT_TIMEOUT = 12
Error. Face alignment timeout in OzLivenessSDK.config.faceAlignmentTimeout milliseconds
Время подготовки, выделенное на съемку, истекло
ERROR = 13
The check was interrupted by user
Пользователь закрыл экран Liveness во время проверки
Параметр
Тип
Описание
actions
Список возможных действий
Параметр
Тип
Описание
data
Intent
Проверяемое намерение
Параметр
Тип
Описание
data
Intent
Проверяемое намерение
Параметр
Тип
Описание
context
Context
Базовый класс Context
licenseSources
Список источников лицензий
statusListener (опционально)
StatusListener
Обработчик для проверки результата
Параметр
Тип
Описание
tag
String
Метка сообщения
log
String
Тело сообщения
Параметр
Тип
Описание
connection
Тип подключения
statusListener
StatusListener<String?>
Обработчик
Параметр
Тип
Описание
connection
Тип подключения
statusListener
StatusListener<String?>
Обработчик
Параметр
Тип
Описание
media
Массив медиафайлов
folderMeta (опционально)
[String: any]
Дополнительные метаданные папки
Параметр
Тип
Описание
onStatusChange
,
Callback-функция:
onStatusChange(status: AnalysisRequest.AnalysisStatus) { handleStatus() }
Вызывается при изменении статуса AnalysisRequest. Текущий статус отображается в AnalysisStatus.
onError
Callback-функция:
onError(error: OzException) { handleError() }
Вызывается в случае ошибки.
onSuccess
Callback-функция:
onSuccess(result: RequestResult) {
handleResults() }
Вызывается по завершении анализов. В качестве результата передается объект RequestResult.
Параметр
Тип
Описание
analysis
Структура с данными об анализе
Параметр
Тип
Описание
analysis
[Analysis]
Массив структур Analysis
Параметр
Тип
Описание
key
String
Ключ
value
String
Значение
Параметр
Тип
Описание
mediaList
Объект или массив объектов OzAbstractMedia
Параметр
Тип
Описание
folderID
String
Идентификатор папки
Параметр
Тип
Описание
selfieLength
Int
Длительность жеста Селфи (в миллисекундах). Должна быть в пределах 500-5000, по умолчанию – 700
Параметр
Тип
Описание
allowDebugVisualization
Boolean
Включает / выключает отображение дополнительной информации
Параметр
Тип
Описание
attemptsSettings
Количество попыток
Параметр
Тип
Описание
baseURL
String
Адрес сервера
Параметр
Тип
Описание
faceAlignmentTimeout
Long
Значение тайм-аута
Parameter
Type
Description
uploadMediaSettings
Устанавливает количество попыток и интервал между ними
Параметр
Тип
Описание
livenessErrorCallback
ErrorHandler
Callback для обработки ошибок
localizationCode
Код языка SDK
logging
Настройки журналирования
Параметр
Тип
Описание
useMainCamera
Boolean
True – используется основная камера,
False – фронтальная
Параметр
Тип
Описание
disableFramesCountValidation
Boolean
True – опция отключена,
False – опция включена
Параметр
Тип
Описание
closeIconRes
Int (@DrawableRes)
Иконка кнопки закрытия
closeIconTint
Цвет кнопки закрытия
titleTextFont
Int (@FontRes)
Шрифт текста на верхней панели
titleTextFontStyle
Int (значения из android.graphics.Typeface, например Typeface.BOLD)
Стиль шрифта текста на верхней панели
Параметр
Тип
Описание
textFont
String
Шрифт текста подсказки
textStyle
Int (значения из android.graphics.Typeface, например Typeface.BOLD)
Стиль текста подсказки
textSize
Int
Размер шрифта текста подсказки (в sp, 12-34)
textColor
Color
Цвет текста подсказки
Параметр
Тип
Описание
hintGradientColor
Цвет градиента
hintGradientOpacity
Int
Непрозрачность градиента
animationIconSize
Int
Размер квадрата, в который вписан значок анимации
hideAnimation
Boolean
Настройки скрытия анимации, при значении True анимация скрывается
Параметр
Тип
Описание
geometryType
Форма рамки (oval, rectangle, circle или square)
cornerRadius
Int
Угловой радиус прямоугольника (в dp, 0-20)
strokeDefaultColor
Color
Цвет рамки, когда лицо не в кадре
strokeFaceInFrameColor
Color
Цвет рамки, когда лицо в кадре
Параметр
Тип
Описание
backgroundColor
Color
Цвет фона
backgroundAlpha
Int
Непрозрачность фона (в %, 0-100)
Параметр
Тип
Описание
textFont
Int (@FontRes)
Шрифт текста версии SDK
textSize
Int
SDK version text size (в sp, 12-16)
textColor
Color
Цвет текста версии SDK
textAlpha
Int
Непрозрачность текста версии SDK (в %, 20-100)
Параметр
Тип
Описание
textMessage
String
Текст сообщения
textFont
String
Шрифт текста сообщения
textSize
Int
Размер шрифта сообщения (в px, 12-18)
textColor
Цвет текста сообщения
Parameter
Type
Description
image
Bitmap (@DrawableRes)
Изображение для лого
size
Size
Размер лого (в dp)
Значение
Описание
OneShot
Лучший кадр из снятого видео
Blank
Селфи с проверкой позиционирования лица
Scan
Сканирование
HeadRight
Поворот головы направо
HeadLeft
Поворот головы налево
HeadDown
Наклон головы вниз
Параметр
Тип
Описание
expires
Float
Период времени, спустя который срок действия лицензии истечет
features
Features
Особенности лицензии
appIDS
[String]
Массив идентификаторов приложений
Параметр
Тип
Описание
tag
Тег для фото документа
photoPath
String
Абсолютный путь к фото
additionalTags (опционально)
String
Дополнительные теги, если требуются (в том числе не из перечисления OzMediaTag)
metaData
Map<String, String>
Метаданные медиафайла
Параметр
Тип
Описание
tag
Тег для shot set
archivePath
String
Путь к архиву
additionalTags (опционально)
String
Дополнительные теги, если требуются (в том числе не из перечисления OzMediaTag)
metaData
Map<String, String>
Метаданные медиафайла
Параметр
Тип
Описание
tag
Тег видео
videoPath
String
URL видео с проверкой Liveness
bestShotPath (optional)
String
URL лучшего кадра в формате PNG
preferredMediaPath (optional)
String
URL медиаконтейнера API
Значение
Описание
Blank
Видео без определенного жеста
PhotoSelfie
Селфи-фото
VideoSelfieOneShot
Видео с извлекаемым лучшим кадром
VideoSelfieScan
Видео с жестом «сканирование»
VideoSelfieEyes
Видео с жестом «моргание»
VideoSelfieSmile
Видео с жестом «улыбка»
Параметр
Тип
Описание
id
Int
Идентификатор лицензии
Параметр
Тип
Описание
path
String
Абсолютный путь к лицензии
Параметр
Тип
Описание
analysis
Информация о том, какие анализы и к каким медиафайлам применять.
Параметр
Тип
Описание
media
Объект, который загружается в данный момент
index
Int
Номер объекта в списке
from
Int
Количество объектов
percentage
Int
Процент завершения
Значение
Описание
BIOMETRY
Позволяет сравнить несколько фото или видео и оценить уровень схожести запечатленных на них людей.
QUALITY
Проверяет наличие живого человека в кадре
DOCUMENTS
Определяет наличие документа в кадре и проверяет корректность полей документа согласно его типу.
Значение
Описание
ON_DEVICE
Анализ на устройстве. Мы рекомендуем использовать режим анализа на сервере, поскольку он обеспечивает более точные результаты
SERVER_BASED
Анализ на сервере
HYBRID
Гибридный анализ для Liveness: если итоговая оценка анализа на устройстве больше определенного порога, медиафайл дополнительно анализируется на сервере
Параметр
Тип
Описание
type
Тип анализа
mode
Режим анализа
mediaList
Массив объектов OzAbstractMedia
params (опционально)
Map<String, Any>
Дополнительные параметры
Значение
Описание
FAILED
Один или более анализов не удалось завершить из-за ошибок
DECLINED
Проверка не пройдена (лица не совпадают или замечена спуфинг-атака)
SUCCESS
Проверка успешно пройдена
OPERATOR_REQUIRED
Результат анализов должен быть дополнительно перепроверен оператором
Параметр
Тип
Описание
singleCount
Int
Количество попыток для одного действия/жеста
commonCount
Int
Суммарное количество попыток для всех действий/жестов, если используется последовательность (комбо)
Значение
Описание
EN
Английский
RU
Русский
HY
Армянский
KK
Казахский
KY
Кыргызский
TR
Турецкий
Параметр
Тип
Описание
allowDefaultLogging
Boolean
Включает запись в LogCat
allowFileLogging
Boolean
Включает запись в файл
journalObserver
StatusListener
Обработчик для получения событий на стороне приложения
Параметр
Тип
Описание
resId
Int
Ссылка на цвет в системе ресурсов Android
Параметр
Тип
Описание
hex
String
Цвет в формате HEX (например #FFFFFF)
Параметр
Тип
Описание
color
Int
Int-значение цвета в Android
Значение
Описание
Oval
Овал
Rectangle
Прямоугольник
Circle
Круг
Square
Квадрат
Параметр
Тип
Описание
apiErrorCode
Int
Код ошибки
message
String
Сообщение
Параметр
Тип
Описание
mediaId
String
Идентификатор медиафайла
mediaType
String
Тип медиа
originalName
String
Первоначальное название файла
ozMedia
Медиафайл
Параметр
Тип
Описание
confidenceScore
Float
Итоговая оценка
isOnDevice
Boolean
Режим анализа
resolution
Общий результат анализа
sourceMedia
Анализируемый медиафайл
Параметр
Тип
Описание
analysisResults
List<AnalysisResult>
Результат анализа
folderId
String
Идентификатор
resolution
Общий результат анализа
Параметр
Тип
Описание
resolution
Общий результат анализа
type
Тип анализа
mode
Режим анализа
resultMedia
List<ResultMedia>
Список результатов отдельных анализов
Параметр
Тип
Описание
host
String
Адрес сервера API
token
String
Токен доступа
Параметр
Тип
Описание
host
String
Адрес сервера API
username
String
Логин
password
String
Пароль
Параметр
Тип
Описание
attemptsCount
Int
Количество попыток отправки медиафайлов
attemptsTimeout
Int
Интервал времени между попытками
Значение
Описание
UPLOAD_ORIGINAL
Исходное видео
UPLOAD_COMPRESSED
Сжатое видео
UPLOAD_BEST_SHOT
Полученный из видео лучший кадр
UPLOAD_NOTHING
Ничего (в этом случае на сервер не отправляется ничего, папка не создается)
Код ошибки
Сообщение
Описание
ERROR = 3
Error.
Неизвестная ошибка
ATTEMPTS_EXHAUSTED_ERROR = 4
Error. Attempts exhausted for liveness action.
Превышено количество попыток анализа
VIDEO_RECORD_ERROR = 5
Error by video record.
Ошибка записи видео
NO_ACTIONS_ERROR = 6
Error. OzLivenessSDK started without actions.
Жесты на видео не найдены
titleTextSize
textAlpha
strokeAlpha
textAlpha
HeadUp
additionalTags (опционально)
VideoSelfieHigh
sizeReductionStrategy
ES
tags
type
confidenceScore
FORCE_CLOSED = 7