کتابخانه‌ی CameraX یک کتابخانه‌ی Android Jetpack است که برای ساده‌تر و قدرتمندتر کردن توسعه‌ی اپلیکیشن‌های دوربین در Android استفاده می‌شود. این کتابخانه، مزیت‌هایی نظیر پشتیبانی از اندروید‌های مختلف و دسترسی آسان به ویژگی‌های دوربین فراهم می‌کند. در زیر، مراحل کلی برای استفاده از CameraX در کاتلین آورده شده‌اند:
 

افزودن وابستگی‌ها: 

به فایل build.gradle ماژول شما این خطوط را اضافه کنید:

implementation "androidx.camera.camera2:camera-camera2:1.1.0"
implementation "androidx.camera.lifecycle:camera-lifecycle:1.1.0"
implementation "androidx.camera.core:camera-core:1.1.0"
implementation "androidx.camera.view:camera-view:1.1.0-alpha05"

اضافه کردن ویو CameraView به XML:

به لایه‌ی XML فعلی یا یک لایه‌ی جدید، یک ویو CameraView اضافه کنید:

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

استفاده در کاتلین: 

در فعالیت یا فرگمنت خود، CameraX را مدیریت کنید. مثلاً:

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.Manifest
import android.content.pm.PackageManager
import android.util.Log
import android.widget.Toast
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
import androidx.camera.core.Camera
import androidx.camera.core.CameraSelector
import androidx.camera.lifecycle.ProcessCameraProvider
import androidx.camera.view.CameraView
import com.google.common.util.concurrent.ListenableFuture

class CameraActivity : AppCompatActivity() {

    private lateinit var cameraView: CameraView

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

        cameraView = findViewById(R.id.cameraView)

        if (allPermissionsGranted()) {
            startCamera()
        } else {
            ActivityCompat.requestPermissions(
                this,
                REQUIRED_PERMISSIONS,
                REQUEST_CODE_PERMISSIONS
            )
        }
    }

    private fun startCamera() {
        val cameraProviderFuture: ListenableFuture<ProcessCameraProvider> =
            ProcessCameraProvider.getInstance(this)

        cameraProviderFuture.addListener({
            // CameraProvider is now guaranteed to be available
            val cameraProvider: ProcessCameraProvider = cameraProviderFuture.get()

            // Set up the viewfinder use case to display camera preview
            val preview = androidx.camera.core.Preview.Builder().build()
                .also {
                    it.setSurfaceProvider(cameraView.surfaceProvider)
                }

            // Choose the camera by requiring a lens facing
            val cameraSelector = CameraSelector.DEFAULT_BACK_CAMERA

            try {
                // Unbind use cases before rebinding
                cameraProvider.unbindAll()

                // Bind use cases to camera
                val camera = cameraProvider.bindToLifecycle(
                    this, cameraSelector, preview
                )

            } catch (exc: Exception) {
                Log.e(TAG, "Use case binding failed", exc)
            }

        }, ContextCompat.getMainExecutor(this))
    }

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

    override fun onRequestPermissionsResult(
        requestCode: Int, permissions: Array<String>, grantResults:
        IntArray
    ) {
        if (requestCode == REQUEST_CODE_PERMISSIONS) {
            if (allPermissionsGranted()) {
                startCamera()
            } else {
                Toast.makeText(
                    this,
                    "Permissions not granted by the user.",
                    Toast.LENGTH_SHORT
                ).show()
                finish()
            }
        }
    }

    companion object {
        private const val TAG = "CameraXExample"
        private const val REQUEST_CODE_PERMISSIONS = 10
        private val REQUIRED_PERMISSIONS = arrayOf(Manifest.permission.CAMERA)
    }
}

در اینجا، یک CameraView به XML اضافه شده و در کد کاتلین، دوربین با استفاده از CameraX مدیریت شده است. نکات زیر را در نظر داشته باشید: قبل از استفاده از دوربین، اطمینان حاصل کنید که مجوز دسترسی به دوربین در فایل AndroidManifest.xml اعطا شده باشد. در این مثال، یک افزونه برای بررسی و اعطای مجوزها اضافه شده است. این کار را می‌توانید به شیوه‌های مختلف انجام دهید. این مثال از CameraSelector.DEFAULT_BACK_CAMERA برای انتخاب دوربین پشتیبانی‌شده است. شما می‌توانید از CameraSelector.DEFAULT_FRONT_CAMERA استفاده کنید تا دوربین جلو را انتخاب کنید.

 

مقالات مرتبط

نرم افزار مدیریت باسکول ( هوشمند )
نرم افزار مدیریت باسکول ( هوشمند )

سیستم مدیریت باسکول بارگو – هوشمندسازی توزین در کارخانه‌ها و معادن پشتیبانی از حالت آفلاین و آنلاین حتی در شرایط قطع اینترنت، سیستم بدون وقفه به کار خود ادامه داده و پس از برقراری ارتباط، اطلاعات را به‌طور کامل با سرور آنلاین همگام‌سازی می‌کند. قابلیت اتصال به انواع باسکول‌ها سازگاری کامل با باسکول‌های دیجیتال و آنالوگ، بدون نیاز به تغییرات سخت‌افزاری. تعاریف و تنظیمات پیشرفته امکان تعریف کالاها، مشتریان، رانندگان، وسایل نقلیه و اپراتورها با دسترسی‌های متفاوت. گزارش‌گیری دقیق و متنوع گزارشات وزنی روزانه، هفتگی و ماهانه گزارشات مالی و حسابداری گزارشات سفارشی بر اساس بازه زمانی و نوع کالا رابط کاربری ساده و کاربرپسند طراحی به گونه‌ای که اپراتور باسکول بتواند در کمترین زمان عملیات توزین را انجام دهد. هوش مصنوعی و پلاک‌خوان خودکار شناسایی لحظه‌ای پلاک خودرو هنگام ورود به باسکول ذخیره تصویر خودرو و پلاک در سیستم کاهش خطا و جلوگیری از ورود اطلاعات نادرست

3 ماه قبل نوشته شده

دیدگاهی برای این مطلب ثبت نشده است.