The minimum API level required to run the application

Explore workouts, and achieving AB Data
Post Reply
ishanijerin1
Posts: 42
Joined: Tue Jan 07, 2025 4:27 am

The minimum API level required to run the application

Post by ishanijerin1 »

Android 6.0 (API Level 22) or higher
How to implement
1. Adding dependencies
First, app/build.gradleadd dependencies for the CameraX and ML Kit libraries:

dependencies {
// CameraX
def camerax_version = "1.4.0-beta01"
implementation "androidx.camera:camera-camera2: ${camerax_version} "
implementation "androidx.camera:camera-lifecycle: ${camerax_version} "
implementation "androidx.camera :camera-view: ${camerax_version} "
implementation "androidx.camera:camera-mlkit-vision: ${camerax_version} "

// ML Kit barcode-scanning
implementation 'mlkit:barcode-scanning:17.2.0'
}
2. Adding permissions
Next, AndroidManifest.xmladd camera syria email address permissions to .

<uses-feature android : name = "android.hardware.camera.any" />
<uses-permission android : name = "android.permission.CAMERA" />
3. Create a layout
layoutPreviewViewAdd it to your XML file .

<androidx . camera . view . PreviewView
android : id = "@+id/preview_view" android : layout_width = "match_parent" android : layout_height = "match_parent" />


4. Camera permission check
Add code to check camera permissions.

companion object {
private val REQUIRED_PERMISSIONS = arrayOf(android.Manifest.permission.CAMERA)
private const val REQUEST_CODE_PERMISSIONS = 10 // Any value is acceptable
}

override fun onCreate(savedInstanceState: Bundle?) {
super .onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

// Check camera permissions
if (allPermissionsGranted()) {
startCamera()
} else {
ActivityCompat.requestPermissions( this , REQUIRED_PERMISSIONS, REQUEST_CODE_PERMISSIONS)
}
}

private fun allPermissionsGranted() = REQUIRED_PERMISSIONS.all {
ContextCompat.checkSelfPermission(baseContext, it) == PackageManager.PERMISSION_GRANTED
}

override fun onRequestPermissionsResult(
requestCode: Int , permissions: Array < out String >, grantResults: IntArray
) {
super .onRequestPermissionsResult(requestCode, permissions, grantResults)
if (requestCode == REQUEST_CODE_PERMISSIONS) {
if (allPermissionsGranted()) {
startCamera()
} else {
Toast.makeText( this , "Camera permission not granted." , Toast.LENGTH_SHORT).show()
finish()
}
}
}
5. ML Kit Analyzer Implementation
Finally, we will implement the ML Kit Analyzer to read the barcode.

private lateinit var barcodeScanner: BarcodeScanner

private fun startCamera() {
val cameraController = LifecycleCameraController(baseContext)
val previewView: PreviewView = findViewById(R.id.preview_view)

// Set the barcode format to be detected
val options = BarcodeScannerOptions.Builder()
.setBarcodeFormats(Barcode.FORMAT_ALL_FORMATS)
.build()

barcodeScanner = BarcodeScanning.getClient(options)

cameraController.setImageAnalysisAnalyzer(
ContextCompat.getMainExecutor( this ),
MlKitAnalyzer(
listOf(barcodeScanner),
COORDINATE_SYSTEM_VIEW_REFERENCED,
ContextCompat.getMainExecutor( this )
) { result: MlKitAnalyzer. Result ? ->
val barcodeResults = result?.getValue(barcodeScanner)
if (barcodeResults.isNullOrEmpty() || barcodeResults.first() == null ) {
return @MlKitAnalyzer
}
Log.d( "TAG" , "rawValue = ${ barcodeResults[ 0 ].rawValue } " )
}
)

cameraController.bindToLifecycle( this )
previewView.controller = cameraController
}
resultThe value of the barcode that was read is entered in the . In the above source code, the received value is output to the log.
Post Reply