
Sparkscan Android
Wire Scandit SparkScan into an Android app so users get a production-style barcode capture UI with lifecycle-safe setup.
Install
npx skills add https://github.com/scandit/skills --skill sparkscan-androidWhat is this skill?
- End-to-end Android pattern: DataCaptureContext, SparkScanSettings, SparkScan listener, and SparkScanView in the layout.
- Lifecycle pairing: sparkScanView.onResume() / onPause() wired to Activity resume and pause.
- SparkScanListener callback flow for scan sessions and frame data from the Scandit capture pipeline.
- Symbology configuration via SparkScanSettings for barcode types your app accepts.
- MainActivity-oriented template suitable for copy-paste into greenfield or existing AppCompat projects.
Adoption & trust: 1 installs on skills.sh; 12 GitHub stars; 2/3 security scanners passed (skills.sh audits); trending (+100% hot-view momentum).
Recommended Skills
Vercel React Native Skillsvercel-labs/agent-skills
Firebase Basicsfirebase/agent-skills
Building Native Uiexpo/skills
Firebase Ai Logic Basicsfirebase/agent-skills
Native Data Fetchingexpo/skills
Firebase Firestorefirebase/agent-skills
Journey fit
Primary fit
Mobile barcode UX is product build work on the frontend shelf where solo builders ship the client experience. SparkScanView, DataCaptureContext, and Activity lifecycle hooks are Android UI/SDK integration, not backend APIs or store launch copy.
Common Questions / FAQ
Is Sparkscan Android safe to install?
skills.sh reports 2 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.
SKILL.md
READMESKILL.md - Sparkscan Android
import android.os.Bundle import androidx.appcompat.app.AppCompatActivity class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) } } import android.os.Bundle import android.view.ViewGroup import androidx.appcompat.app.AppCompatActivity import com.scandit.datacapture.barcode.data.Symbology import com.scandit.datacapture.barcode.spark.capture.SparkScan import com.scandit.datacapture.barcode.spark.capture.SparkScanListener import com.scandit.datacapture.barcode.spark.capture.SparkScanSession import com.scandit.datacapture.barcode.spark.capture.SparkScanSettings import com.scandit.datacapture.barcode.spark.ui.SparkScanView import com.scandit.datacapture.barcode.spark.ui.SparkScanViewSettings import com.scandit.datacapture.core.capture.DataCaptureContext import com.scandit.datacapture.core.data.FrameData class MainActivity : AppCompatActivity(), SparkScanListener { private lateinit var dataCaptureContext: DataCaptureContext private lateinit var sparkScan: SparkScan private lateinit var sparkScanView: SparkScanView override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) setupScanning() } override fun onResume() { super.onResume() sparkScanView.onResume() } override fun onPause() { sparkScanView.onPause() super.onPause() } private fun setupScanning() { dataCaptureContext = DataCaptureContext.forLicenseKey("-- ENTER YOUR SCANDIT LICENSE KEY HERE --") val settings = SparkScanSettings().apply { enableSymbologies(setOf(Symbology.EAN13_UPCA, Symbology.CODE128)) } sparkScan = SparkScan(settings) sparkScan.addListener(this) val viewSettings = SparkScanViewSettings() sparkScanView = SparkScanView.newInstance( findViewById<ViewGroup>(android.R.id.content), dataCaptureContext, sparkScan, viewSettings ) } override fun onBarcodeScanned( sparkScan: SparkScan, session: SparkScanSession, data: FrameData?, ) { val barcode = session.newlyRecognizedBarcode ?: return runOnUiThread { println("Scanned: ${barcode.data}") } } } import android.os.Bundle import android.view.ViewGroup import android.widget.ArrayAdapter import android.widget.ListView import android.widget.TextView import androidx.appcompat.app.AppCompatActivity class ProductListActivity : AppCompatActivity() { private lateinit var listView: ListView private lateinit var totalLabel: TextView private val scannedProducts = mutableListOf<String>() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_product_list) listView = findViewById(R.id.listView) totalLabel = findViewById(R.id.totalLabel) setupList() } private fun setupList() { listView.adapter = ArrayAdapter(this, android.R.layout.simple_list_item_1, scannedProducts) } private fun addProduct(barcode: String) { scannedProducts.add(barcode) (listView.adapter as ArrayAdapter<*>).notifyDataSetChanged() updateTotal() } private fun updateTotal() { totalLabel.text = "Total: ${scannedProducts.size}" } } import android.os.Bundle import android.view.ViewGroup import androidx.appcompat.app.AppCompatActivity import com.scandit.datacapture.barcode.data.Symbology import com.scandit.datacapture.barcode.spark.capture.SparkScan import com.scandit.datacapture.barcode.spark.capture.SparkScanListener import com.scandit.datacapture.barcode.spark.capture.SparkScanSession import com.scandit.datacapture.barcode.spark.capture.SparkScanSettings import com.scand