Skip to main content

Camera X

MyAnalyzer.kt

// Step 1: Create an Analyzer
class MyAnalyzer : ImageAnalysis.Analyzer {

override fun analyze(image: ImageProxy, rotationDegrees: Int) {
// Your Machine Learning Code here!
}
}

CameraFragment.kt

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
// Step 2: Create an Analyzer Config
val analyzerConfig = ImageAnalysisConfig.Builder().apply {
val analyzerThread = HandlerThread("MyAnalysis").apply {
start()
}
setCallbackHandler(Handler(analyzerThread.looper))
// Analyze latest image rather than *every* image
setImageReaderMode(ImageAnalysisUseCase.ImageReaderMode.ACQUIRE_LATEST_IMAGE)
}.build()

// Step 3: Apply declared config to CameraX using the same lifecycle owner
val analyzerUseCase = ImageAnalysis(analyzerConfig).apply {
analyzer = MyAnalyzer()
}

// STEP 4: Bind to the Lifecycle owner, e.g. AppCompatActivity, Fragment, etc.
CameraX.bindToLifecycle(this, analyzerUseCase)
}