Flutter: Stamps and Visage SDK Android in Flutter

Description

Guide to integrating Android Stamps SDK and Visage SDK of JAAK in a Flutter project using Platform Channels for native communication.

Special care

  • Flutter 3.x or more
  • JDK 17
  • Android Studio set up
  • Physical Android device ( SDKs are bad at emulators)

Visits Required

SpecificationVersion
Kotlin1.9.22
Hilt2.46
JavaVERSION _ 17
minSdk24
compileSandk35
Stamps SDK1.0.0.beta
Visage SDK1.0.0.beta

Setup Steps

1. Maven Repository

Add to android/build.gradle.kts:

  • Google and Maren Central
  • JitPack
  • JAAK Platform Maren: https://us-maven.pkg.dev/jaak-platform/jaak-android

2. Fat Setup

Configure plugins at settings.gradle.kts and app/build.gradle.kts with appropriate Hilt and Kotlin configuration.

3. Units

  • AndroidX Core Bookstores
  • Hill for Unit Injection (required)
  • SDKs of JAAK
  • Google ML Kit and CameraX
  • Guava

4. Permissions at AndroidManifest

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

5. Native Activities

// MyApplication.kt
@HiltAndroidApp
class MyApplication : Application()

// StampsActivity.kt
@AndroidEntryPoint
class StampsActivity : AppCompatActivity(), StampsListener { ... }

// VisageActivity.kt
@AndroidEntryPoint
class VisageActivity : AppCompatActivity(), VisageListener { ... }

6. Platform Hannels

// MainActivistity.kt - Established Flutter-Android communication channels
class MainActivity : FlutterActivity() {
    override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
        MethodChannel(flutterEngine.dartExecutor.binaryMessenger, "jaak/stamps")
            .setMethodCallHandler { call, result ->
                if (call.method == "startStampsCapture") {
                    // Start StampsActivity
                }
            }
        // Similar for Visage
    }
}

7. Dart Services

class StampsService {
    static const platform = MethodChannel('jaak/stamps');

    Future<StampsResult> startCapture() async {
        final result = await platform.invokeMethod('startStampsCapture');
        return StampsResult.fromMap(result);
    }
}

Critical Notes

Hilt's an OBLIGATORY: The SDKs Stamps and Visage require Hilt for Unit Injection.

  • The consistency of versions prevents conflicts
  • Physical devices required
  • All Activities require notation @AndroidEntryPoint

Common problems

ProblemResolution
@HiltAndroidApp missingCauses Hilt's initialization faults
Wrong Repository SetupBlockup SDKs
Excipators without camera supportUsing physical device
Missing permitsPrevent implementation of SDK

Integration Verification List

  • Reg.
  • Repositories set up correctly
  • Retiring Units
  • Reported permits
  • Retirement
  • Fully registered Platform Hannels
  • ∞ FileProvider appropriately configured