mobiler 0.20.0

Build mobile apps in Rust — one core, native UI on Android, iOS, and the web (CLI)
package {{PACKAGE}}

import android.content.Intent
import android.os.Bundle
import android.provider.MediaStore
import androidx.activity.ComponentActivity
import androidx.activity.result.contract.ActivityResultContracts

/** Relay between VideoPlugin (app context only) and this transient Activity. */
object VideoRelay {
    var onResult: ((String?) -> Unit)? = null
}

/** Transparent helper Activity: launches the system camera in video mode (ACTION_VIDEO_CAPTURE),
 *  relays the recorded video's content:// URI, and finishes. Shipped by the plugin — no MainActivity edit. */
class VideoCaptureActivity : ComponentActivity() {
    private val capture = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
        val uri = if (result.resultCode == RESULT_OK) result.data?.data else null
        VideoRelay.onResult?.invoke(uri?.toString())
        VideoRelay.onResult = null
        finish()
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        capture.launch(Intent(MediaStore.ACTION_VIDEO_CAPTURE))
    }
}