The Vidus SDK comes with a set of screens and configurations to record live video of customers. Each of the recording options in the SDK are called nodes which can be configured by developers.
You can find the release history at Changelog
‼ ATTENTION ‼ → BREAKING CHANGE introduced at Vidus SDK v3.1.0. We have introduced a new license format. If you are using versions prior to v3.1.0 and intend to update to v3.1.0 or above, contact support@frslabs.com for an updated license.
- Prerequisite
- Android SDK Requirements
- Download
- Setup
- Quick Start
- Vidus Result
- Vidus Error Codes
- Help
You will need a valid license to use the Vidus SDK, which can be obtained by contacting support@frslabs.com
.
Depending on the license - offline or online - you have opted for, the ping functionality to billing servers will be disabled or enabled. For instance, if you have opted for the offline SDK model, then there will be no server ping needed to our billing server to bill you. However, if you have chosen a transaction based pricing, then after each transaction, a ping request will be made to our billing server. This cannot be overrided by the App. A point to note is that if the ping transaction fails for any reason, the whole transaction will be void without any results from the SDK.
Once you have the license , follow the below instructions for a successful integration of Vidus SDK onto your Android Application.
This section lists the Vidus SDK Libraries that are available for Android with their gradle dependencies, latest version and their size.
SDK Library | Gradle dependency | Latest version | Size |
---|---|---|---|
Vidus SDK (Required) | com.frslabs.android.sdk:vidus | 550 KB | |
Core Face Bundled SDK (Required) | com.frslabs.android.sdk:core-face-bundled | 6.2 MB |
Vidus uses Face detection capabilities via either of these two dependencies, and it is required to include any one of them. Core Face Bundled SDK and Core Face Unbundled SDK. If size is not an issue, we recommend going with the Core Face Bundled SDK. More details about these dependencies are found below.
Include this dependency if size of the SDK is not an issue (Adds ~6.2 MB to the app size). This is the recommended approach.
Include this dependency if increase in SDK size is a concern (Adds ~600 KB to the app size). However, upon first run (and only on first run), the face dependencies are downloaded while users are shown a screen with a progress bar. The Core Face Bundled SDK does not have this behaviour as all associated files are bundled during compile time itself (hence the increase in size).
Minimum SDK Version - 21 or higher
Add the following code to your project
level build.gradle
file
allprojects {
repositories {
//'vidus-android' and 'common-core-android' is required for vidus and core face SDKs.
// 'torus-android' is required for vidus billing dependencies
['torus-android' , 'vidus-android' , 'common-core-android'].each { value->
maven {
url "https://${value}.repo.frslabs.space/"
credentials {
username '<YOUR_USERNAME>'
password '<YOUR_PASSOWRD>'
}
}
}
}
}
After that, add the following code to your app
level build.gradle
file
// ...
defaultConfig {
// ...
vectorDrawables.useSupportLibrary true
}
// ...
And then, add the dependencies
// ...
dependencies {
/* Dependencies for Vidus SDK */
implementation 'androidx.appcompat:appcompat:<lastest verison>'
implementation 'androidx.constraintlayout:constraintlayout:<lastest verison>'
implementation 'androidx.legacy:legacy-support-v4:<lastest verison>'
implementation 'com.google.android.material:material:<lastest verison>'
// Vidus Core Dependency
implementation 'com.frslabs.android.sdk:vidus:3.2.3'
// REQUIRED : Use ANY ONE of the below core-face modules, i.e either core-face-bundled OR core-face-unbundled
// Recommended over core-face-unbundled
implementation 'com.frslabs.android.sdk:core-face-bundled:1.0.0'
// Uncomment the below line and remove core-face-bundled mentioned above to use core-face-unbundled dependency.
//implementation 'com.frslabs.android.sdk:core-face-unbundled:1.0.0'
// OPTIONAL - Required if transaction based billing is enabled
// Vidus billing dependencies
implementation 'com.frslabs.android.sdk:torus:1.2.1'
implementation 'androidx.multidex:multidex:2.0.1'
implementation 'com.google.code.gson:gson:2.8.5'
}
Vidus requires the following permission to operate properly
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="your.package.name" >
<!-- Required by Vidus -->
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<!-- Optional - Required if transaction based billing is enabled -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-feature android:name="android.hardware.camera" android:required="true" />
<uses-feature android:name="android.hardware.camera.front" android:required="false" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-feature android:name="android.hardware.microphone" />
<application>
...
</application>
</manifest>
Initialize the Vidus
instance with the appropriate configurations to invoke the Vidus Sdk
Here, only the SimpleRecorderNode
is being invoked
public class MainActivity extends AppCompatActivity implements VidusResultCallback {
// ...
/* Enter the Vidus license key here */
private String VIDUS_LICENSE_KEY = "ENTER_YOUR_LICENSE_KEY_HERE";
/* Node ID - required to identify the node in the result */
int SIMPLE_NODE_1 = 100;
/* (OPTIONAL) Enter the Vidus api credentials here */
private String VIDUS_API_BASE_URL = "ENTER_BASE_URL_HERE"
, VIDUS_API_REFERENCE_ID = "ENTER_REF_ID_HERE"
, VIDUS_API_CRED1 = "ENTER_API_CRED1_HERE"
, VIDUS_API_CRED2 = "ENTER_API_CRED2_HERE";
/* (OPTIONAL) Enter the Vidus encryption key here */
private String VIDUS_ENCRYPTION_KEY = "ENTER_ENCRYPTION_KEY_HERE";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button callSdk = findViewById(R.id.call_sdk);
callSdk.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
/* Invoke the Vidus Sdk */
callVidusSdk();
}
});
}
public void callVidusSdk() {
//Initialize the Vidus Node object with the appropriate nodes and parameters
VidusNode vidusNode = new VidusNodeBuilder()
.addNode(SIMPLE_NODE_1, new SimpleRecorderNode().setVideoRecordTime(5))
.build();
//Build the Vidus Sdk Config object with the appropriate configurations
VidusConfig vidusConfig = new VidusConfig.Builder()
.setLicenseKey(VIDUS_LICENSE_KEY)
.setShowInstruction(false)
//If the user wants preivew enabled to true
.showPreview(false)
.setEncryptionKey(VIDUS_ENCRYPTION_KEY)
.setVidusNode(vidusNode)
.setApiCredentials(new VidusApiCredentials(VIDUS_API_BASE_URL
, VIDUS_API_REFERENCE_ID
, VIDUS_API_CRED1
, VIDUS_API_CRED2))
.build();
//Call the Vidus Sdk
Vidus vidus = new Vidus(vidusConfig);
vidus.start(this, this);
}
// ...
}
Your activity must implement VidusResultCallback
to receive the result.
// ...
@Override
public void onVidusSuccess(VidusResult vidusResult) {
String videoPath = vidusResult.getVideoPath();
String referenceId = vidusResult.getReferenceId(); //Optional
SimpleRecorderNodeResult simpleRecorderNode = vidusResult.getSimpleRecorderNodeById(SIMPLE_NODE_1);
/* Handle the Vidus Sdk result here */
Log.d(TAG, "onVidusSuccess: VideoPath:"+videoPath+" NodeResult:"+simpleRecorderNode.toString());
}
@Override
public void onVidusFailure(int errorCode) {
/* Handle the Vidus Sdk failure result here */
Log.d(TAG, "onVidusFailure: "+errorCode);
}
// ...
For details of the available nodes refer Vidus Parameters
The nodes will be processed in the order in which they are added to VidusNode
Initialise VidusNode
to include all the nodes as given below
//...
VidusNode vidusNode = new VidusNodeBuilder()
.addNode(SIMPLE_NODE, new SimpleRecorderNode()
.setVideoRecordTime(5))
.addNode(CHALLENGE_CODE_NODE, new ChallengeCodeNode()
.setVideoChallengeCodeText("Please tell secret number")
.setVideoChallengeCodeVoiceType(VidusUtility.VOICE_TYPE_FEMALE))
.addNode(CHALLENGE_TEXT_NODE, new ChallengeTextNode()
.setVideoChallengeText("Please tell your date of birth")
.setVideoChallengeTextTime(5)
.setVideoChallengeTextVoiceType(VidusUtility.VOICE_TYPE_FEMALE))
.addNode(DECLARATION_NODE, new DeclarationNode()
.setVideoDeclarationText("PLACE_TEXT_HERE")
.setVideoDeclarationSpokenMethod(VidusUtility.SPOKEN_BY_MACHINE)
//Lesser the value greater the text scroll speed (user can specify from 10.0 to 50.0)
.setShowFaceOverlay(true) //OPTIONAL: default value true
.setVideoTextSpeed(35.0)//35.0f
.setVideoDeclarationVoiceType(VidusUtility.VOICE_TYPE_FEMALE))
.addNode(OSV_RECORDER_NODE, new OSVRecorderNode()
.setVideoRecordTime(5))
.addNode(OSV_TEXT_RECORDER_NODE, new OSVChallengeTextNode()
.setVideoChallengeText("Please show you PAN card")
.setVideoChallengeTextTime(8)
.setVideoChallengeTextVoiceType(VidusUtility.VOICE_TYPE_FEMALE))
.addNode(PIV_NODE, new PIVNode()
.setVideoChallengeText("Enter your question here. Prompt to confirm.")
.setVideoChallengeTextVoiceType(VidusUtility.VOICE_TYPE_FEMALE)
.setVideoChallengeTextToSpeak("पाठ को अंग्रेजी में फॉलबैक के रूप में बोला जाए।")
.setFallbackVideoChallengeTextToSpeak("Enter text to be spoken as fallback in english. Prompt to confirm. ")
.setLanguage("hi_IN")
.setPositiveButtonText("Yes")
.setNegativeButtonText("No")) .addNode(PIVC_NODE,com.frslabs.android.sdk.vidus.utils.FileUtils.getPIVCNode(com.frslabs.android.sdk.vidus.utils.FileUtils.readFromfileInputStream(this.getResources().getAssets().open("en_US")), templateJsonString, "en_US")) # Template JsonString
.build();
// ...
For handling the result of all the nodes, refer the code below
// ...
@Override
public void onVidusSuccess(VidusResult vidusResult) {
String videoPath = vidusResult.getVideoPath();
String referenceId = vidusResult.getReferenceId(); //Optional
String imagePath = vidusResult.getImagePath();// Optional
SimpleRecorderNodeResult simpleRecorderNodeResult = vidusResult.getSimpleRecorderNodeById(SIMPLE_NODE_1);
ChallengeCodeNodeResult challengeCodeNodeResult = vidusResult.getChallengeCodeNodeById(CHALLENGE_CODE_NODE);
ChallengeTextNodeResult challengeTextNodeResult = vidusResult.getChallengeTextNodeById(CHALLENGE_TEXT_NODE);
DeclarationNodeResult declarationNodeResult = vidusResult.getDeclarationNodeById(DECLARATION_NODE);
OSVRecorderNodeResult osvRecorderNodeResult = vidusResult.getOSVRecorderNodeById(OSV_RECORDER_NODE);
OSVChallengeTextNodeResult osvChallengeTextNodeResult = vidusResult.getOSVChallengeTextNodeById(OSV_TEXT_RECORDER_NODE);
PIVNodeResult pivNodeResult = vidusResult.getPIVNodeById(PIV_NODE);
PIVCNodeResult pivcNodeResult = vidusResult.getPIVCNodeById(PIVC_NODE);
/* Handle the Vidus Sdk result here */
Log.i(TAG, "onActivityResult: VideoPath:" + videoPath);
Log.i(TAG, "onActivityResult: " + simpleRecorderNodeResult.toString());
Log.i(TAG, "onActivityResult: " + challengeCodeNodeResult.toString());
Log.i(TAG, "onActivityResult: " + challengeTextNodeResult.toString());
Log.i(TAG, "onActivityResult: " + declarationNodeResult.toString());
Log.i(TAG, "onActivityResult: " + osvRecorderNodeResult.toString());
Log.i(TAG, "onActivityResult: " + osvChallengeTextNodeResult.toString());
Log.i(TAG, "onActivityResult: " + pivNodeResult.toString());
Log.i(TAG, "onActivityResult: " + pivcNodeResult.toString());
}
@Override
public void onVidusFailure(int errorCode) {
/* Handle the Vidus Sdk failure result here */
Log.d(TAG, "onVidusFailure: "+errorCode);
}
// ...
The result is obtained through the VidusResult
object , which has the results of each nodes in their respective result classes .
Given below are the Result classes in brief.
Public Methods | ||
---|---|---|
String | getVideoPath() | Gets the path of video which was recorded |
BaseNodeResult | getNodeById() | Gets the exact node result by Id. (Once retrieved should be casted to appropriate node class) |
String | getReferenceId() | Gets the Reference Id |
SimpleRecorderNodeResult | getSimpleRecorderNodeById() | Gets the exact SimpleRecorderNode result by Id |
ChallengeCodeNodeResult | getChallengeCodeNodeById() | Gets the exact ChallengeCodeNode result by Id |
ChallengeTextNodeResult | getChallengeTextNodeById() | Gets the exact ChallengeTextNode result by Id |
DeclarationNodeResult | getDeclarationNodeById() | Gets the exact DeclarationNode result by Id |
OSVRecorderNodeResult | getOSVRecorderNodeById() | Gets the exact OSVRecorderNode result by Id |
OSVChallengeTextNodeResult | getOSVChallengeTextNodeById() | Gets the exact OSVChallengeTextNode result by Id |
PIVNodeResult | getPIVNodeById() | Gets the exact PIVNode result by Id |
PIVCNodeResult | getPIVCNodeById() | Gets the exact PIVCNode result by Id |
Each of the individual Node result classes are briefed below
Public Methods | ||
---|---|---|
int | getStartTime() | Gets the time(seconds) when the node started |
int | getStopTime() | Gets the time(seconds) when the node stopped |
Public Methods | ||
---|---|---|
int | getStartTime() | Gets the time(seconds) when the node started |
int | getStopTime() | Gets the time(seconds) when the node stopped |
int | getCodeRecordStartTime() | Gets the time(seconds) when the user-spoken code starts to get recorded |
String | getVideoChallengeCodeText() | Gets the prompt text which was displayed |
String | getVideoChallengeCode() | Gets the code which was prompted to be spoken |
boolean | isCodeVerified() | Returns whether the code spoken matches with the challenge code displayed |
Public Methods | ||
---|---|---|
int | getStartTime() | Gets the time(seconds) when the node started |
int | getStopTime() | Gets the time(seconds) when the node stopped |
int | getTextRecordStartTime() | Gets the time(seconds) when the user-spoken code starts to get recorded |
String | getVideoChallengeText() | Gets the prompt text which was displayed |
Public Methods | ||
---|---|---|
int | getStartTime() | Gets the time(seconds) when the node started |
int | getStopTime() | Gets the time(seconds) when the node stopped |
String | getVideoDeclarationText() | Gets the text which was displayed |
int | getVideoDeclarationSpokenMethod() | Gets the spoken method type |
Public Methods | ||
---|---|---|
int | getStartTime() | Gets the time(seconds) when the node started |
int | getStopTime() | Gets the time(seconds) when the node stopped |
Public Methods | ||
---|---|---|
int | getStartTime() | Gets the time(seconds) when the node started |
int | getStopTime() | Gets the time(seconds) when the node stopped |
int | getTextRecordStartTime() | Gets the time(seconds) when the user-spoken code starts to get recorded |
String | getVideoChallengeText() | Gets the prompt text which was displayed |
Public Methods | ||
---|---|---|
int | getStartTime() | Gets the time(seconds) when the node started |
int | getStopTime() | Gets the time(seconds) when the node stopped |
String | getVideoChallengeQuestion() | Gets the question which was displayed |
String | getVideoChallengeAnswer() | Gets the value of button clicked |
String | getVideoChallengeTextToSpeak() | Gets the text which was spoken |
String | getFallbackVideoChallengeTextToSpeak() | Gets the fallback text (English) which was spoken. (Fallback text is spoken only if speaking VideoChallengeText in a different language failed) |
Public Methods | ||
---|---|---|
int | getStartTime() | Gets the time(seconds) when the node started |
int | getStopTime() | Gets the time(seconds) when the node stopped |
String | getVideoChallengeQuestion() | Gets the question which was displayed |
String | getVideoChallengeAnswer() | Gets the value of button clicked |
String | getVideoChallengeTextToSpeak() | Gets the text which was spoken |
String | getFallbackVideoChallengeTextToSpeak() | Gets the fallback text (English) which was spoken. (Fallback text is spoken only if speaking VideoChallengeText in a different language failed) |
String | getDisplayText() | Gets display question text |
Following error codes will be returned on the onVidusFailure
method of the callback
CODE | DESCRIPTION |
---|---|
803 | Permission denied |
804 | SDK was interrupted |
805 | Vidus SDK License expired |
806 | Vidus SDK License was invalid |
807 | Invalid Config |
808 | Transaction Failed |
809 | No Internet Available |
810 | Timeout Error |
811 | Network Error |
812 | Camera Error |
See the below table for the public APIs of Vidus SDK,
Method/Constructor | Comments |
---|---|
Vidus(VidusConfig var1) | Instantiates the Vidus Object |
start(Context activityContext, VidusResultCallback vidusResultCallback) | Starts the Vidus SDK |
VidusConfig.Builder()
allows to instantiate the VidusConfig
object with customisable features. VidusConfig
is to be set when instantiating Vidus
object , See Vidus
Method | Default | Required | Comments |
---|---|---|---|
setLicenceKey(String licenseKey) | NULL | Yes | Sets the License Key needed for Vidus SDK |
setShowInstruction(boolean showInstructions) | false | Optional | If it is true then the instruction screen will be shown to the user before showing the capture screen. |
setVidusNode(VidusNode vidusNode) | NULL | Yes | Refer Vidus Parameters |
setCamera(Boolean var) | Utility.CAMERA_FRONT | Optional | For front camera Utility.CAMERA_FRONT and for back camera Utility.CAMERA_BACK |
showPreview(Boolean var) | false | Optional | Show preview of the captured video before finish. |
screenRecord(Boolean var) | false | Optional | Enable or disable screen reording |
build() | - | - | Builds VidusConfig Instance |
The Vidus SDK has APIs to capture interactive realtime selfie video with customizable actions. Each functionality is separated into unique nodes
. The APIs are contained in the following input nodes
-
PIV Node (Pre-Issuance Verification Node)
The Input Nodes are explained below,
Captures a video recording with a user defined time
Public Methods | |
---|---|
setVideoRecordTime(int videoRecordTime) | Sets the time(seconds) taken for the recording of the node.
Values should be between 1 and 100 |
Captures a video recording which will include a user-read 4 digit code prompted by a customizable machine-read question
Public Methods | |
---|---|
setVideoChallengeCodeText(String videoChallengeCodeText) | Sets the text that will be spoken prior to displaying the code. |
setVideoChallengeCodeVoiceType(int videoChallengeCodeVoiceType) | (OPTIONAL) Sets the voice type for the machine-read text. Values are VideoSdkUtility.VOICE_TYPE_MALE VideoSdkUtility.VOICE_TYPE_FEMALE (Default Value) |
Captures a video recording which will include a user-prompted answer with a customizable machine-read question
Public Methods | |
---|---|
setVideoChallengeText(String videoChallengeText) | Sets the text that will be spoken. |
setVideoChallengeTextTime(int videoChallengeTextTime) | Sets the recording time(seconds) for the node after the text is spoken.
Values should be between 1 and 100 |
setVideoChallengeTextVoiceType(int videoChallengeTextVoiceType) | (OPTIONAL) Sets the voice type for the machine-read text. Values are VideoSdkUtility.VOICE_TYPE_MALE VideoSdkUtility.VOICE_TYPE_FEMALE (Default Value) |
Captures a video recording which will include a user-read or machine-read text/declaration
Public Methods | |
---|---|
setVideoDeclarationText(String videoDeclarationText) | Sets the text that will be displayed. |
setVideoDeclarationVoiceType(int videoDeclarationVoiceType) | (OPTIONAL) Sets the voice type for the machine-read text. Values are VideoSdkUtility.VOICE_TYPE_MALE VideoSdkUtility.VOICE_TYPE_FEMALE(Default Value) |
setVideoTextSpeed(int VideoTextSpeed) | (OPTIONAL) Lesser the value greater the text scroll speed. Values are 10.0 60.0(Default Value is 35.0) |
setShowFaceOverlay(boolean showFaceOverlay) | (OPTIONAL) Show or hide face overlay. Values are true or false(Default Value is true) |
setVideoDeclarationSpokenMethod(int videoDeclarationSpokenMethod) | (OPTIONAL) Sets the way the text is to be spoken, Either by the user or by the machine. Values are VideoSdkUtility.SPOKEN_BY_MACHINE VideoSdkUtility.SPOKEN_BY_USER (Default Value) |
Captures a video recording with a user defined time
Public Methods | |
---|---|
setVideoRecordTime(int videoRecordTime) | Sets the time(seconds) taken for the recording of the node.
Values should be between 1 and 100 |
Public Methods | |
---|---|
setVideoRecordTime(int videoRecordTime) | Sets the text that will be spoken. |
setVideoRecordTime(int videoRecordTime) | Sets the time(seconds) taken for the recording of the node.
Values should be between 1 and 100 |
setVideoChallengeTextVoiceType(int videoChallengeTextVoiceType) | (OPTIONAL) Sets the voice type for the machine-read text. Values are VideoSdkUtility.VOICE_TYPE_MALE VideoSdkUtility.VOICE_TYPE_FEMALE(Default Value) |
Public Methods | |
---|---|
setVideoChallengeText(String videoChallengeText) | Sets the text that will be displayed. |
setVideoChallengeTextTime(int videoChallengeTextTime) | Sets the time(seconds) taken for the recording of the node.
Values should be between 1 and 100 |
setVideoChallengeTextToSpeak(String videoChallengeTextToSpeak) | Sets the text(In English) that will be spoken. In PIV node, clients should ensure that currencies are written in full for the speech to text function to work correctly. For example 2Cr should be written as 2 Crores. And currency symbols should be written in full. For example, Rs should be written as Rupees. Any number over 6 digits will be treated as a monetary number when spoken by the machine. |
setFallbackVideoChallengeTextToSpeak(String fallbackVideoChallengeTextToSpeak) | Sets the text (Vernacular) that will be spoken, with a necessary fallback text (In English) that will be spoken if speaking the former text failed. In PIV node, clients should ensure that currencies are written in full for the speech to text function to work correctly. For example 2Cr should be written as 2 Crores. And currency symbols should be written in full. For example, Rs should be written as Rupees. Any number over 6 digits will be treated as a monetary number when spoken by the machine. |
setLanguage(String language) | Sets the language in which text set in setVideoChallengeTextToSpeak has to be spoken |
setPositiveButtonText(String positiveButtonText) | Sets the text to be shown in the Positive action button. |
setNegativeButtonText(String negativeButtonText) | Sets the text to be shown in the Negative action button. |
setVideoChallengeTextVoiceType(int videoChallengeTextVoiceType) | (OPTIONAL) Sets the voice type for the machine-read text. Values are VideoSdkUtility.VOICE_TYPE_MALE VideoSdkUtility.VOICE_TYPE_FEMALE(Default Value) |
Public Methods | |
---|---|
setVideoChallengeText(String videoChallengeText) | Sets the text that will be displayed. |
setVideoChallengeTextTime(int videoChallengeTextTime) | Sets the time(seconds) taken for the recording of the node.
Values should be between 1 and 100 |
setVideoChallengeTextToSpeak(String videoChallengeTextToSpeak) | Sets the text(In English) that will be spoken. In PIV node, clients should ensure that currencies are written in full for the speech to text function to work correctly. For example 2Cr should be written as 2 Crores. And currency symbols should be written in full. For example, Rs should be written as Rupees. Any number over 6 digits will be treated as a monetary number when spoken by the machine. |
setFallbackVideoChallengeTextToSpeak(String fallbackVideoChallengeTextToSpeak) | Sets the text (Vernacular) that will be spoken, with a necessary fallback text (In English) that will be spoken if speaking the former text failed. In PIV node, clients should ensure that currencies are written in full for the speech to text function to work correctly. For example 2Cr should be written as 2 Crores. And currency symbols should be written in full. For example, Rs should be written as Rupees. Any number over 6 digits will be treated as a monetary number when spoken by the machine. |
setLanguage(String language) | Sets the language in which text set in setVideoChallengeTextToSpeak has to be spoken |
setPositiveButtonText(String positiveButtonText) | Sets the text to be shown in the Positive action button. |
setNegativeButtonText(String negativeButtonText) | Sets the text to be shown in the Negative action button. |
setVideoChallengeTextVoiceType(int videoChallengeTextVoiceType) | (OPTIONAL) Sets the voice type for the machine-read text. Values are VideoSdkUtility.VOICE_TYPE_MALE VideoSdkUtility.VOICE_TYPE_FEMALE(Default Value) |
setDisplayText(String displayText) | Sets the text that will be displayed. |
For any queries/feedback , contact us at support@frslabs.com