From 250e991df096951998de709b0e47d78dee20f6cc Mon Sep 17 00:00:00 2001 From: hayk Date: Fri, 15 Dec 2023 09:17:40 -0300 Subject: [PATCH] Android demo app updated --- app/src/main/AndroidManifest.xml | 42 ++++- app/src/main/assets/fonts/comic_neue.ttf | Bin 0 -> 54848 bytes app/src/main/assets/fonts/comic_neue_bold.ttf | Bin 0 -> 53384 bytes .../ColorsCustomizationActivity.java | 40 +++++ .../matiintegrationdemo/CooldownActivity.java | 30 ++++ .../EncryptionConfigActivity.java | 23 +++ .../FaceMatchActivity.java | 28 ++++ .../FontCustomizationActivity.java | 38 +++++ .../LanguageConfigActivity.java | 30 ++++ .../matiintegrationdemo/MainActivity.java | 148 ++++++++---------- .../matiintegrationdemo/MetadataActivity.java | 30 ++++ .../MetamapButtonActivity.java | 19 +++ .../MethodCallActivity.java | 31 ++++ .../OnActivityResultActivity.java | 57 +++++++ .../OnDemandConfigActivity.java | 23 +++ .../ResultApiActivity.java | 58 +++++++ .../SmartCaptureActivity.java | 21 +++ app/src/main/res/layout/activity_main.xml | 101 +++++++++++- .../res/layout/activity_metamap_button.xml | 15 ++ .../res/layout/activity_simple_button.xml | 14 ++ app/src/main/res/values/colors.xml | 6 +- 21 files changed, 660 insertions(+), 94 deletions(-) create mode 100644 app/src/main/assets/fonts/comic_neue.ttf create mode 100644 app/src/main/assets/fonts/comic_neue_bold.ttf create mode 100644 app/src/main/java/com/matilock/matiintegrationdemo/ColorsCustomizationActivity.java create mode 100644 app/src/main/java/com/matilock/matiintegrationdemo/CooldownActivity.java create mode 100644 app/src/main/java/com/matilock/matiintegrationdemo/EncryptionConfigActivity.java create mode 100644 app/src/main/java/com/matilock/matiintegrationdemo/FaceMatchActivity.java create mode 100644 app/src/main/java/com/matilock/matiintegrationdemo/FontCustomizationActivity.java create mode 100644 app/src/main/java/com/matilock/matiintegrationdemo/LanguageConfigActivity.java create mode 100644 app/src/main/java/com/matilock/matiintegrationdemo/MetadataActivity.java create mode 100644 app/src/main/java/com/matilock/matiintegrationdemo/MetamapButtonActivity.java create mode 100644 app/src/main/java/com/matilock/matiintegrationdemo/MethodCallActivity.java create mode 100644 app/src/main/java/com/matilock/matiintegrationdemo/OnActivityResultActivity.java create mode 100644 app/src/main/java/com/matilock/matiintegrationdemo/OnDemandConfigActivity.java create mode 100644 app/src/main/java/com/matilock/matiintegrationdemo/ResultApiActivity.java create mode 100644 app/src/main/java/com/matilock/matiintegrationdemo/SmartCaptureActivity.java create mode 100644 app/src/main/res/layout/activity_metamap_button.xml create mode 100644 app/src/main/res/layout/activity_simple_button.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 5d701d9..76e84cd 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -9,7 +9,8 @@ android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> - @@ -17,6 +18,45 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/assets/fonts/comic_neue.ttf b/app/src/main/assets/fonts/comic_neue.ttf new file mode 100644 index 0000000000000000000000000000000000000000..d454f4693a74261051bbfae316e65128034684b5 GIT binary patch literal 54848 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

Y3+Zu@>oR_c!jV<>@rmdf)>CIO#K^m^EXK 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 literal 0 HcmV?d00001 diff --git a/app/src/main/java/com/matilock/matiintegrationdemo/ColorsCustomizationActivity.java b/app/src/main/java/com/matilock/matiintegrationdemo/ColorsCustomizationActivity.java new file mode 100644 index 0000000..6db4308 --- /dev/null +++ b/app/src/main/java/com/matilock/matiintegrationdemo/ColorsCustomizationActivity.java @@ -0,0 +1,40 @@ +package com.matilock.matiintegrationdemo; + +import android.os.Bundle; + +import androidx.appcompat.app.AppCompatActivity; +import androidx.core.content.ContextCompat; + +import com.metamap.metamap_sdk.Metadata; +import com.metamap.metamap_sdk.MetamapButton; +import com.metamap.metamap_sdk.metadata.UIConfig; + +public class ColorsCustomizationActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_metamap_button); + + MetamapButton btn = findViewById(R.id.metamapButton); + + int accentColor = ContextCompat.getColor(this, R.color.colorAccent); + int titleTextColor = ContextCompat.getColor(this, R.color.titleTextColor); + int subtitleTextColor = ContextCompat.getColor(this, R.color.subtitleTextColor); + int backgroundColor = ContextCompat.getColor(this, R.color.backgroundColor); + int lineColor = ContextCompat.getColor(this, R.color.lineColor); + + btn.setParams( + this, + "YOUR_CLIENT_ID", + "YOUR_FLOW_ID", + new Metadata.Builder() + .uiConfig( + new UIConfig( + null, null, null, accentColor, titleTextColor, //These colors are used in the loading screen, + subtitleTextColor, backgroundColor, lineColor //Other screens apply the colors from the dashboard configuration + ) + ) + .build()); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/matilock/matiintegrationdemo/CooldownActivity.java b/app/src/main/java/com/matilock/matiintegrationdemo/CooldownActivity.java new file mode 100644 index 0000000..27d8ac4 --- /dev/null +++ b/app/src/main/java/com/matilock/matiintegrationdemo/CooldownActivity.java @@ -0,0 +1,30 @@ +package com.matilock.matiintegrationdemo; + +import android.os.Bundle; + +import androidx.appcompat.app.AppCompatActivity; + +import com.metamap.metamap_sdk.Metadata; +import com.metamap.metamap_sdk.MetamapButton; + +public class CooldownActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_metamap_button); + + MetamapButton btn = findViewById(R.id.metamapButton); + + btn.setParams( + this, + "YOUR_CLIENT_ID", + "YOUR_FLOW_ID", + new Metadata.Builder() + .additionalData("phoneNumber", "USER_PHONE_NUMBER") //Any of the fields is valid +// .additionalData("email", "USER_EMAIL") +// .additionalData("documentNumber", "USER_DOCUMENT_NUMBER") + .build() + ); + } +} diff --git a/app/src/main/java/com/matilock/matiintegrationdemo/EncryptionConfigActivity.java b/app/src/main/java/com/matilock/matiintegrationdemo/EncryptionConfigActivity.java new file mode 100644 index 0000000..59fdd75 --- /dev/null +++ b/app/src/main/java/com/matilock/matiintegrationdemo/EncryptionConfigActivity.java @@ -0,0 +1,23 @@ +package com.matilock.matiintegrationdemo; + +import android.os.Bundle; + +import androidx.appcompat.app.AppCompatActivity; + +import com.metamap.metamap_sdk.MetamapButton; +import com.metamap.metamap_sdk.MetamapSdk; + +public class EncryptionConfigActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_metamap_button); + + MetamapButton btn = findViewById(R.id.metamapButton); + + btn.setParams(this, "YOUR_CLIENT_ID", "YOUR_FLOW_ID", null, + MetamapSdk.DEFAULT_REQUEST_CODE, null, "YOUR_ENCRYPTION_CONFIGURATION_ID"); + + } +} diff --git a/app/src/main/java/com/matilock/matiintegrationdemo/FaceMatchActivity.java b/app/src/main/java/com/matilock/matiintegrationdemo/FaceMatchActivity.java new file mode 100644 index 0000000..527e625 --- /dev/null +++ b/app/src/main/java/com/matilock/matiintegrationdemo/FaceMatchActivity.java @@ -0,0 +1,28 @@ +package com.matilock.matiintegrationdemo; + +import android.os.Bundle; + +import androidx.appcompat.app.AppCompatActivity; + +import com.metamap.metamap_sdk.Metadata; +import com.metamap.metamap_sdk.MetamapButton; + +public class FaceMatchActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_metamap_button); + + MetamapButton btn = findViewById(R.id.metamapButton); + + btn.setParams( + this, + "YOUR_CLIENT_ID", + "YOUR_FLOW_ID", + new Metadata.Builder() + .identityId("USER_IDENTITY_ID") + .build() + ); + } +} diff --git a/app/src/main/java/com/matilock/matiintegrationdemo/FontCustomizationActivity.java b/app/src/main/java/com/matilock/matiintegrationdemo/FontCustomizationActivity.java new file mode 100644 index 0000000..970999c --- /dev/null +++ b/app/src/main/java/com/matilock/matiintegrationdemo/FontCustomizationActivity.java @@ -0,0 +1,38 @@ +package com.matilock.matiintegrationdemo; + +import android.os.Bundle; + +import androidx.appcompat.app.AppCompatActivity; + +import com.metamap.metamap_sdk.Metadata; +import com.metamap.metamap_sdk.MetamapButton; +import com.metamap.metamap_sdk.metadata.FontConfig; +import com.metamap.metamap_sdk.metadata.UIConfig; + +public class FontCustomizationActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_metamap_button); + + MetamapButton btn = findViewById(R.id.metamapButton); + + btn.setParams( + this, + "YOUR_CLIENT_ID", + "YOUR_FLOW_ID", + new Metadata.Builder() + .uiConfig( + new UIConfig(null, null, null, null, null, null, null, null, + new FontConfig( + "comic_neue.ttf", + "comic_neue_bold.ttf" + ) + ) + ) + .build() + ); + + } +} \ No newline at end of file diff --git a/app/src/main/java/com/matilock/matiintegrationdemo/LanguageConfigActivity.java b/app/src/main/java/com/matilock/matiintegrationdemo/LanguageConfigActivity.java new file mode 100644 index 0000000..4943f4c --- /dev/null +++ b/app/src/main/java/com/matilock/matiintegrationdemo/LanguageConfigActivity.java @@ -0,0 +1,30 @@ +package com.matilock.matiintegrationdemo; + +import android.os.Bundle; + +import androidx.appcompat.app.AppCompatActivity; + +import com.metamap.metamap_sdk.Metadata; +import com.metamap.metamap_sdk.MetamapButton; +import com.metamap.metamap_sdk.metadata.MetamapLanguage; +import com.metamap.metamap_sdk.metadata.UIConfig; + +public class LanguageConfigActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_metamap_button); + + MetamapButton btn = findViewById(R.id.metamapButton); + + btn.setParams( + this, + "YOUR_CLIENT_ID", + "YOUR_FLOW_ID", + new Metadata.Builder() + .uiConfig(new UIConfig(MetamapLanguage.SPANISH)) + .build() + ); + } +} diff --git a/app/src/main/java/com/matilock/matiintegrationdemo/MainActivity.java b/app/src/main/java/com/matilock/matiintegrationdemo/MainActivity.java index ae8a7ee..a7083b3 100644 --- a/app/src/main/java/com/matilock/matiintegrationdemo/MainActivity.java +++ b/app/src/main/java/com/matilock/matiintegrationdemo/MainActivity.java @@ -1,17 +1,11 @@ package com.matilock.matiintegrationdemo; -import android.app.Activity; import android.content.Intent; import android.os.Bundle; -import android.widget.Toast; +import android.view.View; import androidx.appcompat.app.AppCompatActivity; -import com.metamap.metamap_sdk.Metadata; -import com.metamap.metamap_sdk.MetamapButton; -import com.metamap.metamap_sdk.MetamapSdk; -import com.metamap.smartcapture.SmartCaptureManager; - public class MainActivity extends AppCompatActivity { @@ -19,83 +13,71 @@ public class MainActivity extends AppCompatActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); - - MetamapSdk.INSTANCE.setSmartCaptureProvider(new SmartCaptureManager()); - MetamapButton btn = findViewById(R.id.metamapButton); - - btn.setParams( - this, - "YOUR_CLIENT_ID", - "YOUR_FLOW_ID", - new Metadata.Builder() - .with("userId", "qwfguweo") - .with("type", 2) - .build()); - + findViewById(R.id.methodCall).setOnClickListener(listener); + findViewById(R.id.metamapButton).setOnClickListener(listener); + findViewById(R.id.metadata).setOnClickListener(listener); + findViewById(R.id.onActivityResult).setOnClickListener(listener); + findViewById(R.id.resultApi).setOnClickListener(listener); + findViewById(R.id.colorsCustomization).setOnClickListener(listener); + findViewById(R.id.fontCustomization).setOnClickListener(listener); + findViewById(R.id.facematch).setOnClickListener(listener); + findViewById(R.id.cooldown).setOnClickListener(listener); + findViewById(R.id.onDemandConfig).setOnClickListener(listener); + findViewById(R.id.encryptionConfig).setOnClickListener(listener); + findViewById(R.id.smartCapture).setOnClickListener(listener); } - @Override - protected void onActivityResult(int requestCode, int resultCode, Intent data) { - if (requestCode == MetamapSdk.DEFAULT_REQUEST_CODE) { - if (resultCode == Activity.RESULT_OK && data != null) { - // There are no request codes - Toast.makeText( - this, - "onActivityResult Verification success! " + - "VerificationId:" + data.getStringExtra(MetamapSdk.ARG_VERIFICATION_ID) + - "IdentityId: " + data.getStringExtra(MetamapSdk.ARG_IDENTITY_ID), - Toast.LENGTH_SHORT - ).show(); - } else { - if (data != null) { - Toast.makeText( - this, - "onActivityResult Verification cancelled! " + - "VerificationId:" + data.getStringExtra(MetamapSdk.ARG_VERIFICATION_ID) + - "IdentityId: " + data.getStringExtra(MetamapSdk.ARG_IDENTITY_ID), - Toast.LENGTH_SHORT - ).show(); - } else { - Toast.makeText( - this, - "onActivityResult Verification cancelled!", - Toast.LENGTH_SHORT - ).show(); - } - } - } else { - super.onActivityResult(requestCode, resultCode, data); + private final View.OnClickListener listener = v -> { + Intent intent; + switch (v.getId()) { + case R.id.methodCall: + intent = new Intent(MainActivity.this, MethodCallActivity.class); + startActivity(intent); + break; + case R.id.metamapButton: + intent = new Intent(MainActivity.this, MetamapButtonActivity.class); + startActivity(intent); + break; + case R.id.metadata: + intent = new Intent(MainActivity.this, MetadataActivity.class); + startActivity(intent); + break; + case R.id.onActivityResult: + intent = new Intent(MainActivity.this, OnActivityResultActivity.class); + startActivity(intent); + break; + case R.id.resultApi: + intent = new Intent(MainActivity.this, ResultApiActivity.class); + startActivity(intent); + break; + case R.id.colorsCustomization: + intent = new Intent(MainActivity.this, ColorsCustomizationActivity.class); + startActivity(intent); + break; + case R.id.fontCustomization: + intent = new Intent(MainActivity.this, FontCustomizationActivity.class); + startActivity(intent); + break; + case R.id.facematch: + intent = new Intent(MainActivity.this, FaceMatchActivity.class); + startActivity(intent); + break; + case R.id.cooldown: + intent = new Intent(MainActivity.this, CooldownActivity.class); + startActivity(intent); + break; + case R.id.onDemandConfig: + intent = new Intent(MainActivity.this, OnDemandConfigActivity.class); + startActivity(intent); + break; + case R.id.encryptionConfig: + intent = new Intent(MainActivity.this, EncryptionConfigActivity.class); + startActivity(intent); + break; + case R.id.smartCapture: + intent = new Intent(MainActivity.this, SmartCaptureActivity.class); + startActivity(intent); + break; } - } - - /* - * In case you want to use Activity Result API - */ -// ActivityResultLauncher resultLauncher = registerForActivityResult( -// new ActivityResultContracts.StartActivityForResult(), -// result -> { -// Intent data = result.getData(); -// if (data == null) { -// Toast.makeText(MainActivity.this, "Verification cancelled", Toast.LENGTH_SHORT).show(); -// return; -// } -// if (result.getResultCode() == Activity.RESULT_OK) { -// // There are no request codes -// Toast.makeText( -// MainActivity.this, -// "Verification success! " + -// "VerificationId:" + data.getStringExtra(MetamapSdk.ARG_VERIFICATION_ID) + -// "IdentityId: " + data.getStringExtra(MetamapSdk.ARG_IDENTITY_ID), -// Toast.LENGTH_SHORT -// ).show(); -// } else { -// Toast.makeText( -// MainActivity.this, -// "Verification cancelled! " + -// "VerificationId:" + data.getStringExtra(MetamapSdk.ARG_VERIFICATION_ID) + -// "IdentityId: " + data.getStringExtra(MetamapSdk.ARG_IDENTITY_ID), -// Toast.LENGTH_SHORT -// ).show(); -// } -// }); + }; } \ No newline at end of file diff --git a/app/src/main/java/com/matilock/matiintegrationdemo/MetadataActivity.java b/app/src/main/java/com/matilock/matiintegrationdemo/MetadataActivity.java new file mode 100644 index 0000000..8a90c34 --- /dev/null +++ b/app/src/main/java/com/matilock/matiintegrationdemo/MetadataActivity.java @@ -0,0 +1,30 @@ +package com.matilock.matiintegrationdemo; + +import android.os.Bundle; + +import androidx.appcompat.app.AppCompatActivity; + +import com.metamap.metamap_sdk.Metadata; +import com.metamap.metamap_sdk.MetamapButton; + +public class MetadataActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_metamap_button); + + MetamapButton btn = findViewById(R.id.metamapButton); + + btn.setParams( + this, + "YOUR_CLIENT_ID", + "YOUR_FLOW_ID", + new Metadata.Builder() + .additionalData("userId", "qwfguweo") + .additionalData("type", 2) + .build() + ); + + } +} diff --git a/app/src/main/java/com/matilock/matiintegrationdemo/MetamapButtonActivity.java b/app/src/main/java/com/matilock/matiintegrationdemo/MetamapButtonActivity.java new file mode 100644 index 0000000..bd78c25 --- /dev/null +++ b/app/src/main/java/com/matilock/matiintegrationdemo/MetamapButtonActivity.java @@ -0,0 +1,19 @@ +package com.matilock.matiintegrationdemo; + +import android.os.Bundle; + +import androidx.appcompat.app.AppCompatActivity; + +import com.metamap.metamap_sdk.MetamapButton; + +public class MetamapButtonActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_metamap_button); + + MetamapButton btn = findViewById(R.id.metamapButton); + btn.setParams(this, "YOUR_CLIENT_ID", "YOUR_FLOW_ID"); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/matilock/matiintegrationdemo/MethodCallActivity.java b/app/src/main/java/com/matilock/matiintegrationdemo/MethodCallActivity.java new file mode 100644 index 0000000..34a2f98 --- /dev/null +++ b/app/src/main/java/com/matilock/matiintegrationdemo/MethodCallActivity.java @@ -0,0 +1,31 @@ +package com.matilock.matiintegrationdemo; + +import android.os.Bundle; +import android.widget.Button; + +import androidx.appcompat.app.AppCompatActivity; + +import com.metamap.metamap_sdk.Metadata; +import com.metamap.metamap_sdk.MetamapSdk; + +public class MethodCallActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_simple_button); + + Button btn = findViewById(R.id.metamapButton); + btn.setOnClickListener(v -> { + MetamapSdk.INSTANCE.startFlow( + this, + "YOUR_CLIENT_ID", + "YOUR_FLOW_ID", + new Metadata.Builder() + .additionalData("userId", "qwfguweo") + .additionalData("type", 2) + .build() + ); + }); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/matilock/matiintegrationdemo/OnActivityResultActivity.java b/app/src/main/java/com/matilock/matiintegrationdemo/OnActivityResultActivity.java new file mode 100644 index 0000000..69fb4ca --- /dev/null +++ b/app/src/main/java/com/matilock/matiintegrationdemo/OnActivityResultActivity.java @@ -0,0 +1,57 @@ +package com.matilock.matiintegrationdemo; + +import android.app.Activity; +import android.content.Intent; +import android.os.Bundle; +import android.widget.Toast; + +import androidx.appcompat.app.AppCompatActivity; + +import com.metamap.metamap_sdk.MetamapButton; +import com.metamap.metamap_sdk.MetamapSdk; + +public class OnActivityResultActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_metamap_button); + + MetamapButton btn = findViewById(R.id.metamapButton); + btn.setParams(this, "YOUR_CLIENT_ID", "YOUR_FLOW_ID"); + } + + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + if (requestCode == MetamapSdk.DEFAULT_REQUEST_CODE) { + if (resultCode == Activity.RESULT_OK && data != null) { + // There are no request codes + Toast.makeText( + this, + "onActivityResult Verification success! " + + "VerificationId:" + data.getStringExtra(MetamapSdk.ARG_VERIFICATION_ID) + + "IdentityId: " + data.getStringExtra(MetamapSdk.ARG_IDENTITY_ID), + Toast.LENGTH_SHORT + ).show(); + } else { + if (data != null) { + Toast.makeText( + this, + "onActivityResult Verification cancelled! " + + "VerificationId:" + data.getStringExtra(MetamapSdk.ARG_VERIFICATION_ID) + + "IdentityId: " + data.getStringExtra(MetamapSdk.ARG_IDENTITY_ID), + Toast.LENGTH_SHORT + ).show(); + } else { + Toast.makeText( + this, + "onActivityResult Verification cancelled!", + Toast.LENGTH_SHORT + ).show(); + } + } + } else { + super.onActivityResult(requestCode, resultCode, data); + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/matilock/matiintegrationdemo/OnDemandConfigActivity.java b/app/src/main/java/com/matilock/matiintegrationdemo/OnDemandConfigActivity.java new file mode 100644 index 0000000..2ac7048 --- /dev/null +++ b/app/src/main/java/com/matilock/matiintegrationdemo/OnDemandConfigActivity.java @@ -0,0 +1,23 @@ +package com.matilock.matiintegrationdemo; + +import android.os.Bundle; + +import androidx.appcompat.app.AppCompatActivity; + +import com.metamap.metamap_sdk.MetamapButton; +import com.metamap.metamap_sdk.MetamapSdk; + +public class OnDemandConfigActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_metamap_button); + + MetamapButton btn = findViewById(R.id.metamapButton); + + btn.setParams(this, "YOUR_CLIENT_ID", "YOUR_FLOW_ID", null, + MetamapSdk.DEFAULT_REQUEST_CODE, "YOUR_CONFIGURATION_ID"); + + } +} diff --git a/app/src/main/java/com/matilock/matiintegrationdemo/ResultApiActivity.java b/app/src/main/java/com/matilock/matiintegrationdemo/ResultApiActivity.java new file mode 100644 index 0000000..d0daffa --- /dev/null +++ b/app/src/main/java/com/matilock/matiintegrationdemo/ResultApiActivity.java @@ -0,0 +1,58 @@ +package com.matilock.matiintegrationdemo; + +import android.app.Activity; +import android.content.Intent; +import android.os.Bundle; +import android.widget.Toast; + +import androidx.activity.result.ActivityResultLauncher; +import androidx.activity.result.contract.ActivityResultContracts; +import androidx.appcompat.app.AppCompatActivity; + +import com.metamap.metamap_sdk.MetamapButton; +import com.metamap.metamap_sdk.MetamapSdk; + +public class ResultApiActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_metamap_button); + + MetamapButton btn = findViewById(R.id.metamapButton); + btn.setParams(resultLauncher, this, "YOUR_CLIENT_ID", "YOUR_FLOW_ID"); + + } + + + /* + * In case you want to use Activity Result API + */ + private final ActivityResultLauncher resultLauncher = registerForActivityResult( + new ActivityResultContracts.StartActivityForResult(), + result -> { + Intent data = result.getData(); + if (data == null) { + Toast.makeText(this, "Verification cancelled", Toast.LENGTH_SHORT).show(); + return; + } + if (result.getResultCode() == Activity.RESULT_OK) { + // There are no request codes + Toast.makeText( + this, + "Verification success! " + + "VerificationId:" + data.getStringExtra(MetamapSdk.ARG_VERIFICATION_ID) + + "IdentityId: " + data.getStringExtra(MetamapSdk.ARG_IDENTITY_ID), + Toast.LENGTH_SHORT + ).show(); + } else { + Toast.makeText( + this, + "Verification cancelled! " + + "VerificationId:" + data.getStringExtra(MetamapSdk.ARG_VERIFICATION_ID) + + "IdentityId: " + data.getStringExtra(MetamapSdk.ARG_IDENTITY_ID), + Toast.LENGTH_SHORT + ).show(); + } + }); +} \ No newline at end of file diff --git a/app/src/main/java/com/matilock/matiintegrationdemo/SmartCaptureActivity.java b/app/src/main/java/com/matilock/matiintegrationdemo/SmartCaptureActivity.java new file mode 100644 index 0000000..3fca095 --- /dev/null +++ b/app/src/main/java/com/matilock/matiintegrationdemo/SmartCaptureActivity.java @@ -0,0 +1,21 @@ +package com.matilock.matiintegrationdemo; + +import android.os.Bundle; + +import androidx.appcompat.app.AppCompatActivity; + +import com.metamap.metamap_sdk.MetamapButton; +import com.metamap.metamap_sdk.MetamapSdk; + +public class SmartCaptureActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_metamap_button); + + MetamapSdk.INSTANCE.enableSmartCapture(); + MetamapButton btn = findViewById(R.id.metamapButton); + btn.setParams(this, "YOUR_CLIENT_ID", "YOUR_FLOW_ID"); + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 6278aa8..c7e0318 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,15 +1,100 @@ - + android:scrollbars="vertical" + android:theme="@style/AppTheme"> - + android:orientation="vertical" + android:layout_height="wrap_content"> - \ No newline at end of file +